summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTuowen Zhao <ztuowen@gmail.com>2016-10-01 14:34:28 -0600
committerTuowen Zhao <ztuowen@gmail.com>2016-10-01 14:34:28 -0600
commitdb3ff28ba74ff76aaac9e73d1b208e17992864cb (patch)
tree5258b04388c57ea29f470f395996146149df682b
parentf7c9c6e95f5a7333db5cef9d92c6c3438adbd6ee (diff)
downloadchill-db3ff28ba74ff76aaac9e73d1b208e17992864cb.tar.gz
chill-db3ff28ba74ff76aaac9e73d1b208e17992864cb.tar.bz2
chill-db3ff28ba74ff76aaac9e73d1b208e17992864cb.zip
fixing output
-rw-r--r--include/chillAST/chillAST_def.hh2
-rw-r--r--include/chillAST/chillAST_node.hh1
-rw-r--r--include/chillAST/chillASTs.hh22
-rw-r--r--src/chillASTs.cc68
-rwxr-xr-xsrc/ir_clang.cc11
-rw-r--r--src/printer/cfamily.cpp2
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) {