Ignore:
Timestamp:
Sep 30, 2014, 2:44:40 PM (5 years ago)
Author:
nmedfort
Message:

Replaced dynamic_cast with llvm::dyn_cast in pablo code; implemented make functions for pablo constructors. Disabled RTTI.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/pablo/pe_and.cpp

    r4199 r4200  
    66
    77#include "pe_and.h"
     8#include "pe_all.h"
     9#include "pe_not.h"
     10#include "pe_or.h"
     11
     12namespace pablo {
     13
     14PabloE * make_and(PabloE * expr1, PabloE *expr2) {
     15    if (All * all = dyn_cast<All>(expr1)) {
     16        if (all->getValue()) {
     17            return expr2;
     18        }
     19        else {
     20            return make_all(0);
     21        }
     22    }
     23    else if (All* all = dyn_cast<All>(expr2)) {
     24        if (all->getValue()) {
     25            return expr1;
     26        }
     27        else {
     28            return make_all(0);
     29        }
     30    }
     31    else if (equals(expr1, expr2)) {
     32        return expr1;
     33    }
     34    else if (Not * pe_not_e1 = dyn_cast<Not>(expr1)) {
     35        if (Not * pe_not_e2 = dyn_cast<Not>(expr2)) {
     36            return make_not(make_or(pe_not_e1->getExpr(), pe_not_e2->getExpr()));
     37        }
     38        else if (equals(pe_not_e1->getExpr(), expr2)) {
     39            return make_all(0);
     40        }
     41    }
     42    else if (Not * pe_not_e2 = dyn_cast<Not>(expr2)) {
     43        if (equals(expr1, pe_not_e2->getExpr())) {
     44            return make_all(0);
     45        }
     46    }
     47    return new And(expr1, expr2);
     48}
     49
     50}
Note: See TracChangeset for help on using the changeset viewer.