diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ast/node.cpp | 8 | ||||
-rwxr-xr-x | src/ir_clang.cc | 7 | ||||
-rw-r--r-- | src/irtools.cc | 1 |
3 files changed, 11 insertions, 5 deletions
diff --git a/src/ast/node.cpp b/src/ast/node.cpp index dc0a913..c8a3c08 100644 --- a/src/ast/node.cpp +++ b/src/ast/node.cpp @@ -356,5 +356,11 @@ void chillAST_Node::gatherScalarVarDecls(vector<chillAST_VarDecl *> &decls) { } } - +chillAST_Node* chillAST_Node::findContainingStmt() { + chillAST_Node* p = getParent(); + if (p->isCompoundStmt()) return this; + if (p->isForStmt()) return this; + if (p->isIfStmt()) return this; + return p->findContainingStmt(); +} diff --git a/src/ir_clang.cc b/src/ir_clang.cc index 3f70856..e667411 100755 --- a/src/ir_clang.cc +++ b/src/ir_clang.cc @@ -2247,10 +2247,8 @@ IR_clangCode::IR_clangCode(const char *fname, const char *proc_name) : IR_Code() localFD->dump(); CHILL_DEBUG_END - chillAST_Node *b = localFD->getBody(); // we do this just because it will get done next - CHILL_DEBUG_PRINT("calling new CG_chillBuilder() umwut?\n"); - ocg_ = new omega::CG_chillBuilder(); // ocg == omega code gen + ocg_ = new omega::CG_chillBuilder(localFD->getSourceFile(),localFD); // ocg == omega code gen chillfunc = localFD; } @@ -2408,6 +2406,9 @@ IR_ScalarRef *IR_clangCode::CreateScalarRef(const IR_ScalarSymbol *sym) { //return (IR_ScalarRef *)NULL; } +bool IR_clangCode::FromSameStmt(IR_ArrayRef *A, IR_ArrayRef *B) { + return ((IR_chillArrayRef*)A)->chillASE->findContainingStmt() == ((IR_chillArrayRef*)A)->chillASE->findContainingStmt(); +} IR_ArrayRef *IR_clangCode::CreateArrayRef(const IR_ArraySymbol *sym, std::vector<omega::CG_outputRepr *> &index) { fprintf(stderr, "IR_clangCode::CreateArrayRef() ir_clang.cc\n"); diff --git a/src/irtools.cc b/src/irtools.cc index 68c9eac..55ef57f 100644 --- a/src/irtools.cc +++ b/src/irtools.cc @@ -536,7 +536,6 @@ test_data_dependences(IR_Code *ir, //Manu:: This function tests if two references are from the same statement -//CG_outputRepr * from_same_statement(IR_Code *ir, IR_ArrayRef *a, IR_ArrayRef *b) { bool from_same_statement(IR_Code *ir, IR_ArrayRef *a, IR_ArrayRef *b) { return ir->FromSameStmt(a, b); } |