summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTuowen Zhao <ztuowen@gmail.com>2016-09-30 15:34:03 -0600
committerTuowen Zhao <ztuowen@gmail.com>2016-09-30 15:34:03 -0600
commit2028f3ddc680b3af6476ace8840d6bcc85b88d73 (patch)
tree974b38bcaac5ef599fb22d60d660529e1a000c01 /src
parent79b47d47c0c8ecdce651024b41b9109f05593010 (diff)
downloadchill-2028f3ddc680b3af6476ace8840d6bcc85b88d73.tar.gz
chill-2028f3ddc680b3af6476ace8840d6bcc85b88d73.tar.bz2
chill-2028f3ddc680b3af6476ace8840d6bcc85b88d73.zip
children cont.
Diffstat (limited to 'src')
-rw-r--r--src/ast/node.cpp10
-rw-r--r--src/chillASTs.cc481
-rwxr-xr-xsrc/ir_clang.cc12
-rw-r--r--src/printer/cfamily.cpp20
-rw-r--r--src/printer/dump.cpp24
5 files changed, 88 insertions, 459 deletions
diff --git a/src/ast/node.cpp b/src/ast/node.cpp
index deee5ba..3d28d97 100644
--- a/src/ast/node.cpp
+++ b/src/ast/node.cpp
@@ -261,7 +261,6 @@ void chillAST_Node::print(int indent, FILE *fp) {
}
chillAST_Node* chillAST_Node::constantFold(){
- CHILL_DEBUG_PRINT("Using generic\n");
for (int i = 0;i<getNumChildren();++i) {
if (getChild(i))
setChild(i,getChild(i)->constantFold());
@@ -270,56 +269,48 @@ chillAST_Node* chillAST_Node::constantFold(){
};
void chillAST_Node::gatherVarDecls(vector<chillAST_VarDecl*> &decls) {
- CHILL_DEBUG_PRINT("Using generic\n");
for (int i = 0;i<getNumChildren();++i) {
if (getChild(i))
getChild(i)->gatherVarDecls(decls);
}
}
void chillAST_Node::gatherArrayVarDecls(vector<chillAST_VarDecl*> &decls) {
- CHILL_DEBUG_PRINT("Using generic\n");
for (int i = 0;i<getNumChildren();++i) {
if (getChild(i))
getChild(i)->gatherArrayVarDecls(decls);
}
}
void chillAST_Node::gatherArrayRefs(vector<chillAST_ArraySubscriptExpr*> &refs, bool writtento) {
- CHILL_DEBUG_PRINT("Using generic\n");
for (int i = 0;i<getNumChildren();++i) {
if (getChild(i))
getChild(i)->gatherArrayRefs(refs,writtento);
}
}
void chillAST_Node::gatherScalarRefs(vector<chillAST_DeclRefExpr*> &refs, bool writtento) {
- CHILL_DEBUG_PRINT("Using generic\n");
for (int i = 0;i<getNumChildren();++i) {
if (getChild(i))
getChild(i)->gatherScalarRefs(refs,writtento);
}
}
void chillAST_Node::gatherDeclRefExprs(vector<chillAST_DeclRefExpr*> &refs) {
- CHILL_DEBUG_PRINT("Using generic\n");
for (int i = 0;i<getNumChildren();++i) {
if (getChild(i))
getChild(i)->gatherDeclRefExprs(refs);
}
}
void chillAST_Node::gatherVarUsage(vector<chillAST_VarDecl*> &decls) {
- CHILL_DEBUG_PRINT("Using generic\n");
for (int i = 0;i<getNumChildren();++i) {
if (getChild(i))
getChild(i)->gatherVarUsage(decls);
}
}
void chillAST_Node::gatherStatements(vector<chillAST_Node*> &statements) {
- CHILL_DEBUG_PRINT("using generic\n");
for (int i = 0;i<getNumChildren();++i) {
if (getChild(i))
getChild(i)->gatherStatements(statements);
}
}
void chillAST_Node::replaceVarDecls(chillAST_VarDecl* olddecl, chillAST_VarDecl *newdecl) {
- CHILL_DEBUG_PRINT("using generic\n");
for (int i = 0;i<getNumChildren();++i) {
if (getChild(i))
getChild(i)->replaceVarDecls(olddecl,newdecl);
@@ -327,7 +318,6 @@ void chillAST_Node::replaceVarDecls(chillAST_VarDecl* olddecl, chillAST_VarDecl
}
void chillAST_Node::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) {
- CHILL_DEBUG_PRINT("using generic\n");
for (int i = 0;i<getNumChildren();++i) {
if (getChild(i))
getChild(i)->gatherScalarVarDecls(decls);
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; // ??
}
diff --git a/src/ir_clang.cc b/src/ir_clang.cc
index cb4cbb8..61ba36c 100755
--- a/src/ir_clang.cc
+++ b/src/ir_clang.cc
@@ -2983,9 +2983,9 @@ IR_OPERATION_TYPE IR_clangCode::QueryExpOperation(const omega::CG_outputRepr *re
//fprintf(stderr, "chillAST node type %s\n", node->getTypeString());
// really need to be more rigorous than this hack // TODO
- if (node->isImplicitCastExpr()) node = ((chillAST_ImplicitCastExpr *) node)->subexpr;
- if (node->isCStyleCastExpr()) node = ((chillAST_CStyleCastExpr *) node)->subexpr;
- if (node->isParenExpr()) node = ((chillAST_ParenExpr *) node)->subexpr;
+ if (node->isImplicitCastExpr()) node = ((chillAST_ImplicitCastExpr *) node)->getSubExpr();
+ if (node->isCStyleCastExpr()) node = ((chillAST_CStyleCastExpr *) node)->getSubExpr();
+ if (node->isParenExpr()) node = ((chillAST_ParenExpr *) node)->getSubExpr();
if (node->isIntegerLiteral() || node->isFloatingLiteral()) return IR_OP_CONSTANT;
else if (node->isBinaryOperator() || node->isUnaryOperator()) {
@@ -3055,9 +3055,9 @@ std::vector<omega::CG_outputRepr *> IR_clangCode::QueryExpOperand(const omega::C
//e->print(); printf("\n"); fflush(stdout);
// really need to be more rigorous than this hack // TODO
- if (e->isImplicitCastExpr()) e = ((chillAST_ImplicitCastExpr *) e)->subexpr;
- if (e->isCStyleCastExpr()) e = ((chillAST_CStyleCastExpr *) e)->subexpr;
- if (e->isParenExpr()) e = ((chillAST_ParenExpr *) e)->subexpr;
+ if (e->isImplicitCastExpr()) e = ((chillAST_ImplicitCastExpr *) e)->getSubExpr();
+ if (e->isCStyleCastExpr()) e = ((chillAST_CStyleCastExpr *) e)->getSubExpr();
+ if (e->isParenExpr()) e = ((chillAST_ParenExpr *) e)->getSubExpr();
//if(isa<IntegerLiteral>(e) || isa<FloatingLiteral>(e) || isa<DeclRefExpr>(e)) {
diff --git a/src/printer/cfamily.cpp b/src/printer/cfamily.cpp
index 5c56bd7..3427c80 100644
--- a/src/printer/cfamily.cpp
+++ b/src/printer/cfamily.cpp
@@ -117,7 +117,7 @@ int CFamily::getPrecS(chillAST_CStyleAddressOf *n) {
void CFamily::printS(std::string ident, chillAST_CStyleAddressOf *n, std::ostream &o) {
int prec = getPrec(n);
- printPrec(ident, n->subexpr, o, prec);
+ printPrec(ident, n->getSubExpr(), o, prec);
}
int CFamily::getPrecS(chillAST_CStyleCastExpr *n) {
@@ -126,7 +126,7 @@ int CFamily::getPrecS(chillAST_CStyleCastExpr *n) {
void CFamily::printS(std::string ident, chillAST_CStyleCastExpr *n, std::ostream &o) {
o << "(" << n->towhat << ")";
- printPrec(ident, n->subexpr, o, getPrec(n));
+ printPrec(ident, n->getSubExpr(), o, getPrec(n));
}
void CFamily::printS(std::string ident, chillAST_CudaFree *n, std::ostream &o) {
@@ -139,9 +139,9 @@ void CFamily::printS(std::string ident, chillAST_CudaKernelCall *n, std::ostream
void CFamily::printS(std::string ident, chillAST_CudaMalloc *n, std::ostream &o) {
o << "cudaMalloc(";
- print(ident, n->devPtr, o);
+ print(ident, n->getDevPtr(), o);
o << ", ";
- print(ident, n->sizeinbytes, o);
+ print(ident, n->getSize(), o);
o << ")";
}
@@ -227,7 +227,7 @@ void CFamily::printS(std::string ident, chillAST_IfStmt *n, std::ostream &o) {
CHILL_ERROR("Then part is not a CompoundStmt!\n");
if (n->getElse()) {
o << "else ";
- print(ident, n->elsepart, o);
+ print(ident, n->getElse(), o);
}
}
@@ -236,7 +236,7 @@ void CFamily::printS(std::string ident, chillAST_IntegerLiteral *n, std::ostream
}
void CFamily::printS(std::string ident, chillAST_ImplicitCastExpr *n, std::ostream &o) {
- print(ident, n->subexpr, o);
+ print(ident, n->getSubExpr(), o);
}
void CFamily::printS(std::string ident, chillAST_MacroDefinition *n, std::ostream &o) {
@@ -254,7 +254,7 @@ void CFamily::printS(std::string ident, chillAST_MacroDefinition *n, std::ostrea
void CFamily::printS(std::string ident, chillAST_Malloc *n, std::ostream &o) {
o << "malloc(";
- print(ident, n->sizeexpr, o);
+ print(ident, n->getSize(), o);
o << ")";
}
@@ -276,7 +276,7 @@ void CFamily::printS(std::string ident, chillAST_NoOp *n, std::ostream &o) {}
void CFamily::printS(std::string ident, chillAST_ParenExpr *n, std::ostream &o) {
o << "(";
- print(ident, n->subexpr, o);
+ print(ident, n->getSubExpr(), o);
o << ")";
}
@@ -304,9 +304,9 @@ void CFamily::printS(std::string ident, chillAST_RecordDecl *n, std::ostream &o)
void CFamily::printS(std::string ident, chillAST_ReturnStmt *n, std::ostream &o) {
o << "return";
- if (n->returnvalue) {
+ if (n->getRetVal()) {
o << " ";
- print(ident, n->returnvalue, o);
+ print(ident, n->getRetVal(), o);
}
}
diff --git a/src/printer/dump.cpp b/src/printer/dump.cpp
index 059e56f..0e66f29 100644
--- a/src/printer/dump.cpp
+++ b/src/printer/dump.cpp
@@ -79,12 +79,12 @@ void Dump::printS(std::string ident, chillAST_CompoundStmt *n, std::ostream &o)
}
void Dump::printS(std::string ident, chillAST_CStyleAddressOf *n, std::ostream &o) {
- print(ident, n->subexpr, o);
+ print(ident, n->getSubExpr(), o);
}
void Dump::printS(std::string ident, chillAST_CStyleCastExpr *n, std::ostream &o) {
o << n->towhat << " ";
- print(ident, n->subexpr, o);
+ print(ident, n->getSubExpr(), o);
}
void Dump::printS(std::string ident, chillAST_CudaFree *n, std::ostream &o) {
@@ -96,8 +96,8 @@ void Dump::printS(std::string ident, chillAST_CudaKernelCall *n, std::ostream &o
}
void Dump::printS(std::string ident, chillAST_CudaMalloc *n, std::ostream &o) {
- print(ident, n->devPtr, o);
- print(ident, n->sizeinbytes, o);
+ print(ident, n->getDevPtr(), o);
+ print(ident, n->getSize(), o);
}
void Dump::printS(std::string ident, chillAST_CudaMemcpy *n, std::ostream &o) {
@@ -141,10 +141,10 @@ void Dump::printS(std::string ident, chillAST_FunctionDecl *n, std::ostream &o)
}
void Dump::printS(std::string ident, chillAST_IfStmt *n, std::ostream &o) {
- print(ident, n->cond, o);
- print(ident, n->thenpart, o);
- if (n->elsepart)
- print(ident, n->elsepart, o);
+ print(ident, n->getCond(), o);
+ print(ident, n->getThen(), o);
+ if (n->getElse())
+ print(ident, n->getElse(), o);
}
void Dump::printS(std::string ident, chillAST_IntegerLiteral *n, std::ostream &o) {
@@ -152,7 +152,7 @@ void Dump::printS(std::string ident, chillAST_IntegerLiteral *n, std::ostream &o
}
void Dump::printS(std::string ident, chillAST_ImplicitCastExpr *n, std::ostream &o) {
- print(ident, n->subexpr, o);
+ print(ident, n->getSubExpr(), o);
}
void Dump::printS(std::string ident, chillAST_MacroDefinition *n, std::ostream &o) {
@@ -162,7 +162,7 @@ void Dump::printS(std::string ident, chillAST_MacroDefinition *n, std::ostream &
}
void Dump::printS(std::string ident, chillAST_Malloc *n, std::ostream &o) {
- print(ident, n->sizeexpr, o);
+ print(ident, n->getSize(), o);
}
void Dump::printS(std::string ident, chillAST_MemberExpr *n, std::ostream &o) {
@@ -179,7 +179,7 @@ void Dump::printS(std::string ident, chillAST_NULL *n, std::ostream &o) {
void Dump::printS(std::string ident, chillAST_NoOp *n, std::ostream &o) {}
void Dump::printS(std::string ident, chillAST_ParenExpr *n, std::ostream &o) {
- print(ident, n->subexpr, o);
+ print(ident, n->getSubExpr(), o);
}
void Dump::printS(std::string ident, chillAST_Preprocessing *n, std::ostream &o) {}
@@ -192,7 +192,7 @@ void Dump::printS(std::string ident, chillAST_RecordDecl *n, std::ostream &o) {
}
void Dump::printS(std::string ident, chillAST_ReturnStmt *n, std::ostream &o) {
- if (n->returnvalue) print(ident, n->returnvalue, o);
+ if (n->getRetVal()) print(ident, n->getRetVal(), o);
}
void Dump::printS(std::string ident, chillAST_Sizeof *n, std::ostream &o) {