diff options
-rw-r--r-- | include/chillAST/chillAST_def.hh | 2 | ||||
-rw-r--r-- | include/chillAST/chillAST_node.hh | 1 | ||||
-rw-r--r-- | include/chillAST/chillASTs.hh | 22 | ||||
-rw-r--r-- | src/chillASTs.cc | 68 | ||||
-rwxr-xr-x | src/ir_clang.cc | 11 | ||||
-rw-r--r-- | src/printer/cfamily.cpp | 2 |
6 files changed, 13 insertions, 93 deletions
diff --git a/include/chillAST/chillAST_def.hh b/include/chillAST/chillAST_def.hh index ca90561..acdce08 100644 --- a/include/chillAST/chillAST_def.hh +++ b/include/chillAST/chillAST_def.hh @@ -206,8 +206,6 @@ void chillindent(int i, FILE *fp); void insertNewDeclAtLocationOfOldIfNeeded(chillAST_VarDecl *newdecl, chillAST_VarDecl *olddecl); -chillAST_DeclRefExpr *buildDeclRefExpr(chillAST_VarDecl *); - chillAST_FunctionDecl *findFunctionDecl(chillAST_Node *node, const char *procname); #endif diff --git a/include/chillAST/chillAST_node.hh b/include/chillAST/chillAST_node.hh index dcaa9d0..95480a4 100644 --- a/include/chillAST/chillAST_node.hh +++ b/include/chillAST/chillAST_node.hh @@ -318,6 +318,7 @@ public: //! Actual declaration virtual void gatherScalarVarDecls(std::vector<chillAST_VarDecl *> &decls); + //! Actual declaration virtual void gatherArrayVarDecls(std::vector<chillAST_VarDecl *> &decls); virtual chillAST_VarDecl *findArrayDecl(const char *name) { // scoping TODO diff --git a/include/chillAST/chillASTs.hh b/include/chillAST/chillASTs.hh index ca3816f..9ae3617 100644 --- a/include/chillAST/chillASTs.hh +++ b/include/chillAST/chillASTs.hh @@ -83,7 +83,6 @@ public: chillAST_TypedefDecl(char *t, const char *nt, char *a); const char *getUnderlyingType() { - fprintf(stderr, "TypedefDecl getUnderLyingType()\n"); return underlyingtype; }; }; @@ -178,18 +177,12 @@ public: void gatherArrayVarDecls(std::vector<chillAST_VarDecl *> &decls); - void gatherVarUsage(std::vector<chillAST_VarDecl *> &decls) {}; // does nothing - void gatherDeclRefExprs(std::vector<chillAST_DeclRefExpr *> &refs) {}; // does nothing - void replaceVarDecls(chillAST_VarDecl *olddecl, chillAST_VarDecl *newdecl) {}; - bool findLoopIndexesToReplace(chillAST_SymbolTable *symtab, bool forcesync = false) { return false; }; // no loops under here const char *getUnderlyingType() { /* fprintf(stderr, "VarDecl getUnderLyingType()\n"); */return underlyingtype; }; virtual chillAST_VarDecl *getUnderlyingVarDecl() { return this; }; - chillAST_Node *constantFold(); - chillAST_Node *clone(); }; @@ -231,23 +224,12 @@ public: }; // required methods that I can't seem to get to inherit - chillAST_Node *constantFold(); - chillAST_Node *clone(); - void gatherArrayRefs(std::vector<chillAST_ArraySubscriptExpr *> &refs, bool writtento) {}; // do nothing void gatherScalarRefs(std::vector<chillAST_DeclRefExpr *> &refs, bool writtento); - // this is the AST node where these 2 differ - void gatherVarDecls( - std::vector<chillAST_VarDecl *> &decls) {}; // does nothing, to get the cvardecl using this method, the actual vardecl must be in the AST - void gatherVarDeclsMore( - std::vector<chillAST_VarDecl *> &decls); // returns the decl this declrefexpr references, even if the decl is not in the AST - - - void gatherScalarVarDecls(std::vector<chillAST_VarDecl *> &decls); - - void gatherArrayVarDecls(std::vector<chillAST_VarDecl *> &decls); + //! returns the decl this declrefexpr references, even if the decl is not in the AST + void gatherVarDeclsMore(std::vector<chillAST_VarDecl *> &decls); void gatherVarUsage(std::vector<chillAST_VarDecl *> &decls); diff --git a/src/chillASTs.cc b/src/chillASTs.cc index bea2360..a632441 100644 --- a/src/chillASTs.cc +++ b/src/chillASTs.cc @@ -1683,7 +1683,6 @@ chillAST_VarDecl *chillAST_MemberExpr::multibase() { } chillAST_DeclRefExpr::chillAST_DeclRefExpr(const char *vartype, const char *varname, chillAST_Node *d) { - //fprintf(stderr, "DRE::DRE2 0x%x %s %s 0x%x\n", this, vartype, varname, d ); if (vartype) declarationType = strdup(vartype); else declarationType = strdup("UNKNOWN"); if (varname) declarationName = strdup(varname); @@ -1691,37 +1690,20 @@ chillAST_DeclRefExpr::chillAST_DeclRefExpr(const char *vartype, const char *varn decl = d; } -chillAST_DeclRefExpr::chillAST_DeclRefExpr(chillAST_VarDecl *vd) { // variable def - //fprintf(stderr, "DRE::DRE3 (VD) 0x%x %s %s 0x%x\n", this, vd->vartype, vd->varname, vd ); - +chillAST_DeclRefExpr::chillAST_DeclRefExpr(chillAST_VarDecl *vd) { declarationType = strdup(vd->vartype); declarationName = strdup(vd->varname); decl = vd; - isFromSourceFile = true; // default - filename = NULL; } -chillAST_DeclRefExpr::chillAST_DeclRefExpr(chillAST_FunctionDecl *fd) { // function def +chillAST_DeclRefExpr::chillAST_DeclRefExpr(chillAST_FunctionDecl *fd) { declarationType = strdup(fd->returnType); declarationName = strdup(fd->functionName); decl = fd; - isFromSourceFile = true; // default - filename = NULL; -} - - -chillAST_DeclRefExpr *buildDeclRefExpr(chillAST_VarDecl *vd) { - chillAST_DeclRefExpr *dre = new chillAST_DeclRefExpr(vd); - return dre; -} - -class chillAST_Node *chillAST_DeclRefExpr::constantFold() { // can never do anything? - return this; } class chillAST_Node *chillAST_DeclRefExpr::clone() { - //fprintf(stderr, "chillAST_DeclRefExpr::clone()\n"); chillAST_DeclRefExpr *DRE = new chillAST_DeclRefExpr(declarationType, declarationName, decl); DRE->setParent(parent); DRE->isFromSourceFile = isFromSourceFile; @@ -1731,25 +1713,9 @@ class chillAST_Node *chillAST_DeclRefExpr::clone() { void chillAST_DeclRefExpr::gatherVarDeclsMore(vector<chillAST_VarDecl *> &decls) { - //fprintf(stderr, "chillAST_DeclRefExpr::gatherVarDeclsMore()\n"); decl->gatherVarDeclsMore(decls); } - -void chillAST_DeclRefExpr::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) { - //fprintf(stderr, "chillAST_DeclRefExpr::gatherScalarVarDecls()\n"); - decl->gatherScalarVarDecls(decls); - //fprintf(stderr, "now %d scalar vardecls\n", decls.size()); -} - - -void chillAST_DeclRefExpr::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) { - //fprintf(stderr, "chillAST_DeclRefExpr::gatherArrayVarDecls()\n"); - decl->gatherArrayVarDecls(decls); - //fprintf(stderr, "now %d Array vardecls\n", decls.size()); -} - - void chillAST_DeclRefExpr::gatherDeclRefExprs(vector<chillAST_DeclRefExpr *> &refs) { refs.push_back(this); } @@ -1759,37 +1725,30 @@ void chillAST_DeclRefExpr::gatherScalarRefs(std::vector<chillAST_DeclRefExpr *> } void chillAST_DeclRefExpr::gatherVarUsage(vector<chillAST_VarDecl *> &decls) { - //fprintf(stderr, "chillAST_DeclRefExpr::gatherVarUsage()\n"); for (int i = 0; i < decls.size(); i++) { if (decls[i] == decl) { - //fprintf(stderr, "decl was already there\n"); return; } if (streq(declarationName, decls[i]->varname)) { if (streq(declarationType, decls[i]->vartype)) { - //fprintf(stderr, "decl was already there\n"); + CHILL_ERROR("Deprecated\n"); return; } } } chillAST_VarDecl *vd = getVarDecl(); // null for functiondecl if (vd) decls.push_back(vd); - } void chillAST_DeclRefExpr::replaceVarDecls(chillAST_VarDecl *olddecl, chillAST_VarDecl *newdecl) { - //fprintf(stderr, "chillAST_DeclRefExpr::replaceVarDecls()\n"); if (decl == olddecl) { - //fprintf(stderr, "replacing old %s with %s\n", olddecl->varname, newdecl->varname); - //fprintf(stderr, "DRE was "); print(); decl = newdecl; declarationType = strdup(newdecl->vartype); declarationName = strdup(newdecl->varname); - //fprintf(stderr, "\nDRE is "); print(); fprintf(stderr, "\n\n"); } else { + CHILL_ERROR("Deprecated\n"); if (!strcmp(olddecl->varname, declarationName)) { - //fprintf(stderr, "uhoh, chillAST_DeclRefExpr::replaceVarDecls()\n"); decl = newdecl; declarationType = strdup(newdecl->vartype); declarationName = strdup(newdecl->varname); @@ -1809,15 +1768,13 @@ chillAST_VarDecl *chillAST_DeclRefExpr::multibase() { void chillAST_VarDecl::gatherVarDecls(vector<chillAST_VarDecl *> &decls) { - //fprintf(stderr, "chillAST_VarDecl::gatherVarDecls()\n"); for (int i = 0; i < decls.size(); i++) { if (decls[i] == this) { - //fprintf(stderr, "decl was already there\n"); return; } if (streq(decls[i]->varname, varname)) { if (streq(decls[i]->vartype, vartype)) { - //fprintf(stderr, "VarDecl (direct) decl was already there\n"); + CHILL_ERROR("Wrong\n"); return; } } @@ -1827,53 +1784,42 @@ void chillAST_VarDecl::gatherVarDecls(vector<chillAST_VarDecl *> &decls) { void chillAST_VarDecl::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) { - //fprintf(stderr, "chillAST_VarDecl::gatherScalarVarDecls(), %s numdimensions %d\n", varname, numdimensions); - if (numdimensions != 0) return; // not a scalar for (int i = 0; i < decls.size(); i++) { if (decls[i] == this) { - //fprintf(stderr, "decl was already there\n"); return; } - if (streq(decls[i]->varname, varname)) { // wrong. scoping. TODO if (streq(decls[i]->vartype, vartype)) { - //fprintf(stderr, "VarDecl (direct) decl was already there\n"); + CHILL_ERROR("Wrong\n"); return; } } } - //fprintf(stderr, "adding vardecl for %s to decls\n", varname); decls.push_back(this); } void chillAST_VarDecl::gatherArrayVarDecls(vector<chillAST_VarDecl *> &decls) { - //fprintf(stderr, "chillAST_VarDecl::gatherScalarVarDecls(), %s numdimensions %d\n", varname, numdimensions); - if (numdimensions == 0) return; // not an array for (int i = 0; i < decls.size(); i++) { if (decls[i] == this) { - //fprintf(stderr, "decl was already there\n"); return; } if (streq(decls[i]->varname, varname)) { // wrong. scoping. TODO if (streq(decls[i]->vartype, vartype)) { - //fprintf(stderr, "VarDecl (direct) decl was already there\n"); + CHILL_ERROR("Wrong\n"); return; } } } - //fprintf(stderr, "adding vardecl for %s to decls\n", varname); decls.push_back(this); } -chillAST_Node *chillAST_VarDecl::constantFold() { return this; } - chillAST_Node *chillAST_VarDecl::clone() { fprintf(stderr, "\nchillAST_VarDecl::clone() cloning vardecl for %s\n", varname); if (isAParameter) fprintf(stderr, "old vardecl IS a parameter\n"); diff --git a/src/ir_clang.cc b/src/ir_clang.cc index 61ba36c..3f70856 100755 --- a/src/ir_clang.cc +++ b/src/ir_clang.cc @@ -2265,22 +2265,15 @@ IR_clangCode::IR_clangCode(const char *fname, const char *proc_name) : IR_Code() IR_clangCode::~IR_clangCode() { //func_->print(llvm::outs(), 4); // printing as part of the destructor !! CHILL_DEBUG_PRINT("\n\toutput happening as part of the destructor !!\n"); - //chillfunc->dump(); - //chillfunc->print(); - //fprintf(stderr, "Constant Folding before\n"); chillfunc->constantFold(); - //fprintf(stderr, "\nConstant Folding after\n"); - //chillfunc->print(); chillfunc->cleanUpVarDecls(); - //chillfunc->dump(); // TODO should output the entire file, not just the function we're working on chillAST_SourceFile *src = chillfunc->getSourceFile(); - //chillAST_Node *p = chillfunc->parent; // should be translationDeclUnit if (src) { - //src->print(); // tmp + src->dump(); if (src->isSourceFile()) src->printToFile(); } } @@ -2408,7 +2401,7 @@ IR_ScalarRef *IR_clangCode::CreateScalarRef(const IR_ScalarSymbol *sym) { //DeclRefExpr *de = new (vd->getASTContext())DeclRefExpr(static_cast<ValueDecl*>(vd), vd->getType(), SourceLocation()); //fprintf(stderr, "sym 0x%x\n", sym); - IR_chillScalarRef *sr = new IR_chillScalarRef(this, buildDeclRefExpr( + IR_chillScalarRef *sr = new IR_chillScalarRef(this, new chillAST_DeclRefExpr( ((IR_chillScalarSymbol *) sym)->chillvd)); // uses VarDecl to mak a declrefexpr //fprintf(stderr, "returning ScalarRef with dre 0x%x\n", sr->dre); return sr; diff --git a/src/printer/cfamily.cpp b/src/printer/cfamily.cpp index d8f9057..738db47 100644 --- a/src/printer/cfamily.cpp +++ b/src/printer/cfamily.cpp @@ -322,7 +322,7 @@ void CFamily::printS(std::string ident, chillAST_Sizeof *n, std::ostream &o) { void CFamily::printS(std::string ident, chillAST_SourceFile *n, std::ostream &o) { o << "// this source is derived from CHILL AST originally from file '" - << n->filename << "' as parsed by frontend compiler " << n->frontend << "\n\n"; + << n->SourceFileName <<"' as parsed by frontend compiler " << n->frontend << "\n\n"; int nchild = n->getChildren()->size(); for (int i = 0; i < nchild; ++i) { if (n->getChild(i)->isFromSourceFile) { |