summaryrefslogtreecommitdiff
path: root/src/chillASTs.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/chillASTs.cc')
-rw-r--r--src/chillASTs.cc481
1 files changed, 60 insertions, 421 deletions
diff --git a/src/chillASTs.cc b/src/chillASTs.cc
index edbe221..70c37e8 100644
--- a/src/chillASTs.cc
+++ b/src/chillASTs.cc
@@ -1071,9 +1071,9 @@ void chillAST_ForStmt::loseLoopWithLoopVar(char *var) {
//fprintf(stderr, "loop condition RHS is ternary\nCondition RHS");
C->print();
chillAST_Node *l = C->getLHS();
- if (l->isParenExpr()) l = ((chillAST_ParenExpr *) l)->subexpr;
+ if (l->isParenExpr()) l = ((chillAST_ParenExpr *) l)->getSubExpr();
chillAST_Node *r = C->getRHS();
- if (r->isParenExpr()) r = ((chillAST_ParenExpr *) r)->subexpr;
+ if (r->isParenExpr()) r = ((chillAST_ParenExpr *) r)->getSubExpr();
//fprintf(stderr, "lhs is %s rhs is %s\n", l->getTypeString(), r->getTypeString());
@@ -1301,13 +1301,13 @@ chillAST_ArraySubscriptExpr::chillAST_ArraySubscriptExpr(chillAST_Node *bas, chi
parent = NULL;
metacomment = NULL;
if (bas) {
- if (bas->isImplicitCastExpr()) base = ((chillAST_ImplicitCastExpr *) bas)->subexpr; // probably wrong
+ if (bas->isImplicitCastExpr()) base = ((chillAST_ImplicitCastExpr *) bas)->getSubExpr(); // probably wrong
else base = bas;
base->setParent(this);
basedecl = multibase();
}
if (indx) {
- if (indx->isImplicitCastExpr()) index = ((chillAST_ImplicitCastExpr *) indx)->subexpr; // probably wrong
+ if (indx->isImplicitCastExpr()) index = ((chillAST_ImplicitCastExpr *) indx)->getSubExpr(); // probably wrong
else index = indx;
index->setParent(this);
}
@@ -1422,7 +1422,7 @@ chillAST_Node *chillAST_ArraySubscriptExpr::getIndex(int dim) {
chillAST_Node *curindex = index;
for (;;) {
if (b->getType() == CHILLAST_NODE_IMPLICITCASTEXPR)
- b = ((chillAST_ImplicitCastExpr *) b)->subexpr;
+ b = ((chillAST_ImplicitCastExpr *) b)->getSubExpr();
else if (b->getType() == CHILLAST_NODE_ARRAYSUBSCRIPTEXPR) {
ind.push_back(curindex);
curindex = ((chillAST_ArraySubscriptExpr *) b)->index;
@@ -1852,7 +1852,7 @@ void chillAST_DeclRefExpr::replaceVarDecls(chillAST_VarDecl *olddecl, chillAST_V
}
chillAST_VarDecl *chillAST_ImplicitCastExpr::multibase() {
- return subexpr->multibase();
+ return getSubExpr()->multibase();
}
@@ -2138,256 +2138,85 @@ int chillAST_UnaryOperator::evalAsInt() {
fprintf(stderr, "chillAST_UnaryOperator::evalAsInt() unhandled op '%s'\n", op);
exit(-1);
-
-}
-
-chillAST_ImplicitCastExpr::chillAST_ImplicitCastExpr(chillAST_Node *sub) {
- subexpr = sub;
- subexpr->setParent(this);
- //fprintf(stderr, "ImplicitCastExpr 0x%x has subexpr 0x%x", this, subexpr);
- //fprintf(stderr, " of type %s\n", subexpr->getTypeString());
}
-void chillAST_ImplicitCastExpr::replaceChild(chillAST_Node *old, chillAST_Node *newchild) {
- if (subexpr == old) { // should be the case for this to get called
- subexpr = newchild;
- subexpr->setParent(this);
- //old->parent = NULL;
- return;
- }
-
- fprintf(stderr, "chillAST_ImplicitCastExpr::replaceChild() called with bad 'old'\n");
- exit(-1); // ??
+chillAST_ImplicitCastExpr::chillAST_ImplicitCastExpr() {
+ children.push_back(NULL);
}
-class chillAST_Node *chillAST_ImplicitCastExpr::constantFold() {
- chillAST_Node *child = subexpr->constantFold();
- child->setParent(parent); // remove myself !! probably a bad idea. TODO
- return child;
+chillAST_ImplicitCastExpr::chillAST_ImplicitCastExpr(chillAST_Node *sub):chillAST_ImplicitCastExpr() {
+ setSubExpr(sub);
}
-
class chillAST_Node *chillAST_ImplicitCastExpr::clone() {
- chillAST_ImplicitCastExpr *ICE = new chillAST_ImplicitCastExpr(subexpr->clone());
- ICE->setParent(getParent());
+ chillAST_ImplicitCastExpr *ICE = new chillAST_ImplicitCastExpr(getSubExpr()->clone());
ICE->isFromSourceFile = isFromSourceFile;
if (filename) ICE->filename = strdup(filename);
return ICE;
}
-
-void chillAST_ImplicitCastExpr::gatherArrayRefs(std::vector<chillAST_ArraySubscriptExpr *> &refs, bool w) {
- subexpr->gatherArrayRefs(refs, w);
-}
-
-void chillAST_ImplicitCastExpr::gatherScalarRefs(std::vector<chillAST_DeclRefExpr *> &refs, bool writtento) {
- subexpr->gatherScalarRefs(refs, writtento);
-}
-
-void chillAST_ImplicitCastExpr::gatherVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherVarDecls(decls);
-}
-
-
-void chillAST_ImplicitCastExpr::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherScalarVarDecls(decls);
-}
-
-
-void chillAST_ImplicitCastExpr::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherArrayVarDecls(decls);
-}
-
-
-void chillAST_ImplicitCastExpr::gatherDeclRefExprs(vector<chillAST_DeclRefExpr *> &refs) {
- subexpr->gatherDeclRefExprs(refs);
-}
-
-
-void chillAST_ImplicitCastExpr::gatherVarUsage(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherVarUsage(decls);
+chillAST_CStyleCastExpr::chillAST_CStyleCastExpr() {
+ children.push_back(NULL);
}
-
-chillAST_CStyleCastExpr::chillAST_CStyleCastExpr(const char *to, chillAST_Node *sub) {
-
- //fprintf(stderr, "chillAST_CStyleCastExpr::chillAST_CStyleCastExpr( %s, ...)\n", to);
+chillAST_CStyleCastExpr::chillAST_CStyleCastExpr(const char *to, chillAST_Node *sub):chillAST_CStyleCastExpr() {
towhat = strdup(to);
- subexpr = sub;
- if (subexpr) subexpr->setParent(this);
- //fprintf(stderr, "chillAST_CStyleCastExpr (%s) sub 0x%x\n", towhat, sub );
-}
-
-void chillAST_CStyleCastExpr::replaceChild(chillAST_Node *old, chillAST_Node *newchild) {
- if (subexpr == old) { // should be the case for this to get called
- subexpr = newchild;
- subexpr->setParent(this);
- //old->parent = NULL;
- return;
- }
-
- fprintf(stderr, "chillAST_CStyleCastExpr::replaceChild() called with bad 'old'\n");
- exit(-1); // ??
-}
-
-void chillAST_CStyleCastExpr::replaceVarDecls(chillAST_VarDecl *olddecl, chillAST_VarDecl *newdecl) {
- subexpr->replaceVarDecls(olddecl, newdecl);
-}
-
-class chillAST_Node *chillAST_CStyleCastExpr::constantFold() {
- subexpr = subexpr->constantFold();
- return this;
+ setSubExpr(sub);
}
-
class chillAST_Node *chillAST_CStyleCastExpr::clone() {
- chillAST_CStyleCastExpr *CSCE = new chillAST_CStyleCastExpr(towhat, subexpr->clone());
+ chillAST_CStyleCastExpr *CSCE = new chillAST_CStyleCastExpr(towhat, getSubExpr()->clone());
CSCE->setParent(getParent());
CSCE->isFromSourceFile = isFromSourceFile;
if (filename) CSCE->filename = strdup(filename);
return CSCE;
}
-void chillAST_CStyleCastExpr::gatherArrayRefs(std::vector<chillAST_ArraySubscriptExpr *> &refs, bool w) {
- subexpr->gatherArrayRefs(refs, w);
-}
-
-void chillAST_CStyleCastExpr::gatherScalarRefs(std::vector<chillAST_DeclRefExpr *> &refs, bool writtento) {
- subexpr->gatherScalarRefs(refs, writtento);
-}
-
-
-void chillAST_CStyleCastExpr::gatherVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherVarDecls(decls);
-}
-
-
-void chillAST_CStyleCastExpr::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherScalarVarDecls(decls);
-}
-
-
-void chillAST_CStyleCastExpr::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherArrayVarDecls(decls);
-}
-
-
-void chillAST_CStyleCastExpr::gatherDeclRefExprs(vector<chillAST_DeclRefExpr *> &refs) {
- subexpr->gatherDeclRefExprs(refs);
-}
-
-
-void chillAST_CStyleCastExpr::gatherVarUsage(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherVarUsage(decls);
-}
-
-
-chillAST_CStyleAddressOf::chillAST_CStyleAddressOf(chillAST_Node *sub) {
- subexpr = sub;
- subexpr->setParent(this);
- //fprintf(stderr, "chillAST_CStyleCastExpr (%s) sub 0x%x\n", towhat, sub );
+chillAST_CStyleAddressOf::chillAST_CStyleAddressOf() {
+ children.push_back(NULL);
}
-
-class chillAST_Node *chillAST_CStyleAddressOf::constantFold() {
- subexpr = subexpr->constantFold();
- return this;
+chillAST_CStyleAddressOf::chillAST_CStyleAddressOf(chillAST_Node *sub):chillAST_CStyleAddressOf() {
+ setSubExpr(sub);
}
class chillAST_Node *chillAST_CStyleAddressOf::clone() {
- chillAST_CStyleAddressOf *CSAO = new chillAST_CStyleAddressOf(subexpr->clone());
+ chillAST_CStyleAddressOf *CSAO = new chillAST_CStyleAddressOf(getSubExpr()->clone());
CSAO->setParent(getParent());
CSAO->isFromSourceFile = isFromSourceFile;
if (filename) CSAO->filename = strdup(filename);
return CSAO;
}
-void chillAST_CStyleAddressOf::gatherArrayRefs(std::vector<chillAST_ArraySubscriptExpr *> &refs, bool w) {
- subexpr->gatherArrayRefs(refs, w);
-}
-
-void chillAST_CStyleAddressOf::gatherScalarRefs(std::vector<chillAST_DeclRefExpr *> &refs, bool writtento) {
- subexpr->gatherScalarRefs(refs, writtento);
-}
-
-void chillAST_CStyleAddressOf::gatherVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherVarDecls(decls);
-}
-
-void chillAST_CStyleAddressOf::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherScalarVarDecls(decls);
-}
-
-
-void chillAST_CStyleAddressOf::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherArrayVarDecls(decls);
-}
-
-
-void chillAST_CStyleAddressOf::gatherDeclRefExprs(vector<chillAST_DeclRefExpr *> &refs) {
- subexpr->gatherDeclRefExprs(refs);
-}
-
-
-void chillAST_CStyleAddressOf::gatherVarUsage(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherVarUsage(decls);
+chillAST_Malloc::chillAST_Malloc() {
+ children.push_back(NULL);
}
-
-chillAST_Malloc::chillAST_Malloc(chillAST_Node *numthings) {
- sizeexpr = numthings;
+chillAST_Malloc::chillAST_Malloc(chillAST_Node *numthings):chillAST_Malloc() {
+ setSize(numthings);
isFromSourceFile = true; // default
filename = NULL;
};
-chillAST_Node *chillAST_Malloc::constantFold() {
- sizeexpr->constantFold();
-}
-
chillAST_Node *chillAST_Malloc::clone() {
- chillAST_Malloc *M = new chillAST_Malloc(sizeexpr); // the general version
+ chillAST_Malloc *M = new chillAST_Malloc(getSize()->clone()); // the general version
M->setParent(getParent());
M->isFromSourceFile = isFromSourceFile;
if (filename) M->filename = strdup(filename);
return M;
};
-void chillAST_Malloc::gatherArrayRefs(std::vector<chillAST_ArraySubscriptExpr *> &refs, bool writtento) {
- sizeexpr->gatherArrayRefs(refs, writtento);
-};
-
-
-void chillAST_Malloc::gatherScalarRefs(std::vector<chillAST_DeclRefExpr *> &refs, bool writtento) {
- sizeexpr->gatherScalarRefs(refs, writtento);
-};
-
-void chillAST_Malloc::gatherVarDecls(vector<chillAST_VarDecl *> &decls) {
- sizeexpr->gatherVarDecls(decls);
-};
-
-void chillAST_Malloc::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) {
- sizeexpr->gatherScalarVarDecls(decls);
-};
-
-void chillAST_Malloc::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) {
- sizeexpr->gatherArrayVarDecls(decls);
-};
-
-void chillAST_Malloc::gatherVarUsage(vector<chillAST_VarDecl *> &decls) {
- sizeexpr->gatherVarUsage(decls);
-};
+chillAST_CudaMalloc::chillAST_CudaMalloc() {
+ children.push_back(NULL);
+ children.push_back(NULL);
+}
-chillAST_CudaMalloc::chillAST_CudaMalloc(chillAST_Node *devmemptr, chillAST_Node *size) {
- devPtr = devmemptr;
- sizeinbytes = size; // probably a multiply like sizeof(int) * 1024
+chillAST_CudaMalloc::chillAST_CudaMalloc(chillAST_Node *devmemptr, chillAST_Node *size):chillAST_CudaMalloc() {
+ setDevPtr(devmemptr);
+ setSize(size);
};
-class chillAST_Node *chillAST_CudaMalloc::constantFold() {
- devPtr = devPtr->constantFold();
- return this;
-}
-
class chillAST_Node *chillAST_CudaMalloc::clone() {
- chillAST_CudaMalloc *CM = new chillAST_CudaMalloc(devPtr->clone(), sizeinbytes->clone());
+ chillAST_CudaMalloc *CM = new chillAST_CudaMalloc(getDevPtr()->clone(), getSize()->clone());
CM->setParent(getParent());
CM->isFromSourceFile = isFromSourceFile;
if (filename) CM->filename = strdup(filename);
@@ -2395,39 +2224,13 @@ class chillAST_Node *chillAST_CudaMalloc::clone() {
}
void chillAST_CudaMalloc::gatherArrayRefs(std::vector<chillAST_ArraySubscriptExpr *> &refs, bool w) {
- devPtr->gatherArrayRefs(refs, false);
- sizeinbytes->gatherArrayRefs(refs, false);
+ chillAST_Node::gatherArrayRefs(refs,false);
}
void chillAST_CudaMalloc::gatherScalarRefs(std::vector<chillAST_DeclRefExpr *> &refs, bool writtento) {
- devPtr->gatherScalarRefs(refs, false);
- sizeinbytes->gatherScalarRefs(refs, false);
-}
-
-void chillAST_CudaMalloc::gatherVarDecls(vector<chillAST_VarDecl *> &decls) {
- devPtr->gatherVarDecls(decls);
- sizeinbytes->gatherVarDecls(decls);
-}
-
-
-void chillAST_CudaMalloc::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) {
- devPtr->gatherScalarVarDecls(decls);
- sizeinbytes->gatherScalarVarDecls(decls);
+ chillAST_Node::gatherScalarRefs(refs,false);
}
-
-void chillAST_CudaMalloc::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) {
- devPtr->gatherArrayVarDecls(decls);
- sizeinbytes->gatherArrayVarDecls(decls);
-}
-
-
-void chillAST_CudaMalloc::gatherVarUsage(vector<chillAST_VarDecl *> &decls) {
- devPtr->gatherVarUsage(decls);
- sizeinbytes->gatherVarUsage(decls);
-}
-
-
chillAST_CudaFree::chillAST_CudaFree(chillAST_VarDecl *var) {
variable = var;
};
@@ -2536,20 +2339,16 @@ void chillAST_CudaMemcpy::gatherVarUsage(vector<chillAST_VarDecl *> &decls) {
chillAST_CudaSyncthreads::chillAST_CudaSyncthreads() {
}
-chillAST_ReturnStmt::chillAST_ReturnStmt(chillAST_Node *retval) {
- returnvalue = retval;
- if (returnvalue) returnvalue->setParent(this);
+chillAST_ReturnStmt::chillAST_ReturnStmt() {
+ children.push_back(NULL);
}
-
-class chillAST_Node *chillAST_ReturnStmt::constantFold() {
- if (returnvalue) returnvalue = returnvalue->constantFold();
- return this;
+chillAST_ReturnStmt::chillAST_ReturnStmt(chillAST_Node *retval):chillAST_ReturnStmt() {
+ setRetVal(retval);
}
-
class chillAST_Node *chillAST_ReturnStmt::clone() {
chillAST_Node *val = NULL;
- if (returnvalue) val = returnvalue->clone();
+ if (getRetVal()) val = getRetVal()->clone();
chillAST_ReturnStmt *RS = new chillAST_ReturnStmt(val);
RS->setParent(getParent());
RS->isFromSourceFile = isFromSourceFile;
@@ -2557,32 +2356,6 @@ class chillAST_Node *chillAST_ReturnStmt::clone() {
return RS;
}
-
-void chillAST_ReturnStmt::gatherVarDecls(vector<chillAST_VarDecl *> &decls) {
- if (returnvalue) returnvalue->gatherVarDecls(decls);
-}
-
-
-void chillAST_ReturnStmt::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) {
- if (returnvalue) returnvalue->gatherScalarVarDecls(decls);
-}
-
-
-void chillAST_ReturnStmt::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) {
- if (returnvalue) returnvalue->gatherArrayVarDecls(decls);
-}
-
-
-void chillAST_ReturnStmt::gatherDeclRefExprs(vector<chillAST_DeclRefExpr *> &refs) {
- if (returnvalue) returnvalue->gatherDeclRefExprs(refs);
-}
-
-
-void chillAST_ReturnStmt::gatherVarUsage(vector<chillAST_VarDecl *> &decls) {
- if (returnvalue) returnvalue->gatherVarUsage(decls);
-}
-
-
chillAST_CallExpr::chillAST_CallExpr(chillAST_Node *c) { //, int numofargs, chillAST_Node **theargs ) {
//fprintf(stderr, "chillAST_CallExpr::chillAST_CallExpr callee type %s\n", c->getTypeString());
@@ -3188,75 +2961,25 @@ bool chillAST_CompoundStmt::findLoopIndexesToReplace(chillAST_SymbolTable *symta
*/
}
-
-chillAST_ParenExpr::chillAST_ParenExpr(chillAST_Node *sub) {
- subexpr = sub;
- subexpr->setParent(this);
-}
-
-void chillAST_ParenExpr::gatherArrayRefs(std::vector<chillAST_ArraySubscriptExpr *> &refs, bool writtento) {
- subexpr->gatherArrayRefs(refs, writtento);
-}
-
-void chillAST_ParenExpr::gatherScalarRefs(std::vector<chillAST_DeclRefExpr *> &refs, bool writtento) {
- subexpr->gatherScalarRefs(refs, writtento);
+chillAST_ParenExpr::chillAST_ParenExpr() {
+ children.push_back(NULL);
}
-
-
-chillAST_Node *chillAST_ParenExpr::constantFold() {
- subexpr = subexpr->constantFold();
- return this;
+chillAST_ParenExpr::chillAST_ParenExpr(chillAST_Node *sub) {
+ setSubExpr(sub);
}
-
chillAST_Node *chillAST_ParenExpr::clone() {
- chillAST_ParenExpr *PE = new chillAST_ParenExpr(subexpr->clone());
+ chillAST_ParenExpr *PE = new chillAST_ParenExpr(getSubExpr()->clone());
PE->setParent(getParent());
PE->isFromSourceFile = isFromSourceFile;
if (filename) PE->filename = strdup(filename);
return PE;
}
-void chillAST_ParenExpr::gatherVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherVarDecls(decls);
-}
-
-
-void chillAST_ParenExpr::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherScalarVarDecls(decls);
-}
-
-
-void chillAST_ParenExpr::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherArrayVarDecls(decls);
-}
-
-
-void chillAST_ParenExpr::gatherDeclRefExprs(vector<chillAST_DeclRefExpr *> &refs) {
- subexpr->gatherDeclRefExprs(refs);
-}
-
-void chillAST_ParenExpr::replaceVarDecls(chillAST_VarDecl *olddecl, chillAST_VarDecl *newdecl) {
- subexpr->replaceVarDecls(olddecl, newdecl);
-}
-
-void chillAST_ParenExpr::gatherVarUsage(vector<chillAST_VarDecl *> &decls) {
- subexpr->gatherVarUsage(decls);
-}
-
-
chillAST_Sizeof::chillAST_Sizeof(char *athing) {
thing = strdup(athing); // memory leak
}
-void chillAST_Sizeof::gatherArrayRefs(std::vector<chillAST_ArraySubscriptExpr *> &refs, bool writtento) {}
-
-void chillAST_Sizeof::gatherScalarRefs(std::vector<chillAST_DeclRefExpr *> &refs, bool writtento) {}
-
-chillAST_Node *chillAST_Sizeof::constantFold() {
- return this;
-}
-
chillAST_Node *chillAST_Sizeof::clone() {
chillAST_Sizeof *SO = new chillAST_Sizeof(thing);
SO->setParent(getParent());
@@ -3265,27 +2988,6 @@ chillAST_Node *chillAST_Sizeof::clone() {
return SO;
}
-void chillAST_Sizeof::gatherVarDecls(vector<chillAST_VarDecl *> &decls) { // TODO
-}
-
-
-void chillAST_Sizeof::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) { // TODO
-}
-
-
-void chillAST_Sizeof::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) { // TODO
-}
-
-
-void chillAST_Sizeof::gatherDeclRefExprs(vector<chillAST_DeclRefExpr *> &refs) {
- // TODO
-}
-
-
-void chillAST_Sizeof::gatherVarUsage(vector<chillAST_VarDecl *> &decls) {
-}
-
-
void insertNewDeclAtLocationOfOldIfNeeded(chillAST_VarDecl *newdecl, chillAST_VarDecl *olddecl) {
//fprintf(stderr, "insertNewDeclAtLocationOfOldIfNeeded( new 0x%x old 0x%x\n", newdecl, olddecl );
@@ -3375,94 +3077,31 @@ void gatherVarUsage(vector<chillAST_Node *> &code, vector<chillAST_VarDecl *> &d
chillAST_IfStmt::chillAST_IfStmt() {
- cond = thenpart = elsepart = NULL;
- isFromSourceFile = true; // default
- filename = NULL;
-}
-
-chillAST_IfStmt::chillAST_IfStmt(chillAST_Node *c, chillAST_Node *t, chillAST_Node *e) {
- cond = c;
- if (cond) cond->setParent(this);
- thenpart = t;
- if (thenpart) thenpart->setParent(this);
- elsepart = e;
- if (elsepart) elsepart->setParent(this);
-}
-
-void chillAST_IfStmt::gatherVarDecls(vector<chillAST_VarDecl *> &decls) {
- if (cond) cond->gatherVarDecls(decls);
- if (thenpart) thenpart->gatherVarDecls(decls);
- if (elsepart) elsepart->gatherVarDecls(decls);
-}
-
-
-void chillAST_IfStmt::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) {
- if (cond) cond->gatherScalarVarDecls(decls);
- if (thenpart) thenpart->gatherScalarVarDecls(decls);
- if (elsepart) elsepart->gatherScalarVarDecls(decls);
-}
-
-
-void chillAST_IfStmt::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) {
- if (cond) cond->gatherArrayVarDecls(decls);
- if (thenpart) thenpart->gatherArrayVarDecls(decls);
- if (elsepart) elsepart->gatherArrayVarDecls(decls);
-}
-
-
-void chillAST_IfStmt::gatherDeclRefExprs(vector<chillAST_DeclRefExpr *> &refs) {
- if (cond) cond->gatherDeclRefExprs(refs);
- if (thenpart) thenpart->gatherDeclRefExprs(refs);
- if (elsepart) elsepart->gatherDeclRefExprs(refs);
+ children.push_back(NULL);
+ children.push_back(NULL);
+ children.push_back(NULL);
}
-
-void chillAST_IfStmt::gatherVarUsage(vector<chillAST_VarDecl *> &decls) {
- if (cond) cond->gatherVarUsage(decls);
- if (thenpart) thenpart->gatherVarUsage(decls);
- if (elsepart) elsepart->gatherVarUsage(decls);
+chillAST_IfStmt::chillAST_IfStmt(chillAST_Node *c, chillAST_Node *t, chillAST_Node *e):chillAST_IfStmt() {
+ setCond(c);
+ setThen(t);
+ setElse(e);
}
-
void chillAST_IfStmt::gatherArrayRefs(std::vector<chillAST_ArraySubscriptExpr *> &refs, bool writtento) {
- cond->gatherArrayRefs(refs, 0); // 0 ??
- thenpart->gatherArrayRefs(refs, 0); // 0 ??
- if (elsepart) elsepart->gatherArrayRefs(refs, 0); // 0 ??
+ chillAST_Node::gatherArrayRefs(refs,0);
}
void chillAST_IfStmt::gatherScalarRefs(std::vector<chillAST_DeclRefExpr *> &refs, bool writtento) {
- cond->gatherScalarRefs(refs, 0); // 0 ??
- thenpart->gatherScalarRefs(refs, 0); // 0 ??
- if (elsepart) elsepart->gatherScalarRefs(refs, 0); // 0 ??
-}
-
-
-chillAST_Node *chillAST_IfStmt::constantFold() {
- if (cond) cond = cond->constantFold();
- if (thenpart) thenpart = thenpart->constantFold();
- if (elsepart) elsepart = elsepart->constantFold();
- return this;
+ chillAST_Node::gatherScalarRefs(refs,0);
}
-void chillAST_IfStmt::gatherStatements(std::vector<chillAST_Node *> &statements) {
-
- //print(); printf("\n"); fflush(stdout);
- thenpart->gatherStatements(statements);
- //fprintf(stderr, "ifstmt, after then, %d statements\n", statements.size());
- if (elsepart) {
- //fprintf(stderr, "there is an elsepart of type %s\n", elsepart->getTypeString());
- elsepart->gatherStatements(statements);
- }
- //fprintf(stderr, "ifstmt, after else, %d statements\n", statements.size());
-}
-
-
chillAST_Node *chillAST_IfStmt::clone() {
chillAST_Node *c, *t, *e;
c = t = e = NULL;
- if (cond) c = cond->clone(); // has to be one, right?
- if (thenpart) t = thenpart->clone();
- if (elsepart) e = elsepart->clone();
+ if (getCond()) c = getCond()->clone(); // has to be one, right?
+ if (getThen()) t = getThen()->clone();
+ if (getElse()) e = getElse()->clone();
chillAST_IfStmt *IS = new chillAST_IfStmt(c, t, e);
IS->setParent(getParent());
@@ -3472,8 +3111,8 @@ chillAST_Node *chillAST_IfStmt::clone() {
}
bool chillAST_IfStmt::findLoopIndexesToReplace(chillAST_SymbolTable *symtab, bool forcesync) {
- thenpart->findLoopIndexesToReplace(symtab);
- elsepart->findLoopIndexesToReplace(symtab);
+ getThen()->findLoopIndexesToReplace(symtab);
+ getElse()->findLoopIndexesToReplace(symtab);
return false; // ??
}