-d5 -mforward
execution the canonicalization:
ADIC.cpp:257
state->setContext("Canonicalization");
canonC.canonicalizeFile();
#pragma omp parallel for
4528: case V_SgOmpParallelStatement:
{
SgOmpParallelStatement * ompparallelstmt=isSgOmpParallelStatement(astNode);
ROSE_ASSERT(ompparallelstmt != NULL);
SgStatement * ompbody = ompparallelstmt->get_body();
if (ompbody->variantT()==V_SgOmpForStatement){
SgOmpForStatement* ompforstmt = isSgOmpForStatement(ompbody);
ROSE_ASSERT(ompforstmt!=NULL);
SgStatement * ompforbody = ompforstmt->get_body();
ROSE_ASSERT(ompforbody != NULL);
SgForStatement * for_loop = isSgForStatement(ompforbody);
findAllMemRefsAndPtrAssigns( for_loop, stmt );
}
break;
}
// Michael: SgOmpParallelStatement handling is needed here SgOmpParallelStatement * ompparallelstmt=isSgOmpParallelStatement(sgLoopStatement); ...
OA::StmtHandle SageIRInterface::loopHeader(OA::StmtHandle h)
OA::CFG::IRStmtType SageIRInterface::getCFGStmtType(OA::StmtHandle h) case V_SgOmpParallelStatement: ...
ADIC.cpp:195: for (SgFilePtrList::iterator iter = fptr->begin(); iter != fptr->end(); iter++) {
ADIC.cpp:503: }
state->setContext("Sage2XAIF");
XAIFGlobalTraverse * globTraverse = new XAIFGlobalTraverse(canonC, &global_node_count_offset, XAIFCallGraph);
syn = globTraverse->traverse(*iter, inh);
adic::SgXAIF::CallGraph * XAIFCallGraph = new adic::SgXAIF::CallGraph();
XAIFGlobalTraverse * globTraverse = new XAIFGlobalTraverse(canonC, &global_node_count_offset, XAIFCallGraph); syn = globTraverse->traverse(*iter, inh);
state->setContext("OA2XAIF");
OAtoXAIFConverter(psgproj, XAIFCallGraph).callGraph(NULL, inh , FALSE);
xaif/OA2XAIFGraph.cpp:75 Alias/ManagerFIAliasAliasTag.cpp:43 Alias/ManagerFIAlias.cpp:419 Alias/ManagerFIAlias.cpp:449 Alias/ManagerFIAlias.cpp:1050 Alias/ManagerFIAlias.cpp:952 Sage2OA.C:3949 MemSage2OA.C:32 MemSage2OA.C:76 MemSage2OA.C:643 MemSage2OA.C:894
ControlFlowGraph * cfg = CreateCFG(fundef, inh, XaifCallGraph, &count_ptr);
ControlFlowGraph * OAtoXAIFConverter::CreateCFG( ...
convertIntToString(ControlFlowGraph::count));
CreateCFG.cpp:755: else if(isForBlock(n, irInterface, forloopupdateOANodes)
adic::SgXAIF::OAtoXAIFConverter::CreateCFG
debugMsg(4,"done with cfg vertices, now do edges");
state->setContext("PrintXAIF");
globTraverse->sageToGraph(((*iter)->get_file_info())->get_filenameString());
psgproj->unparse();
std::string filename = (*iter)->getFileName();
std::string xaiffilename = filename + ".xaif";
state->setContext("AD");
debugMsg(1,"**** AD step, calling xaifBooster *****");
std::string adxaiffilename = getDir(xaiffilename) + std::string("ad_") + getBaseFilename(xaiffilename);
...
// invoke XAIF module
std::string command;
if (state->getDifferentiationModule() == "") {
command = state->baseDir + "/bin/xaifBooster";
} else {
command = state->getDifferentiationModule();
}
command += " -v -i " + xaiffilename + " -o " + adxaiffilename + " -s "
+ state->getXaifSchemaLocation() + " -c " + intrinsicsFile;
debugMsg(2, "XAIFBOOSTER command: "<< command.c_str());
system(command.c_str());
// Check if differentiated XAIF file exists
state->setContext("ad_XAIF Parsing");
if (stat(xaiffilename.c_str(), &statStruct)<0) {
// File does not exist
fatal(
"Differentiated XAIF file not found (check differentiation module errors).");
}
debugMsg(2, "****************** reading produced XAIF back ****************");
XAIFParser debuggingParser;
try {
debuggingParser.parse(xaiffilename);
} catch (const XMLException& toCatch) {
fatal("Error encountered when parsing differentiated XAIF.");
}
debuggingParser.parse(xaiffilename);
debugMsg(3, "---- Successfully Parsed XAIF Graph in "<<
xaiffilename.c_str());
debugMsg(5, "XML Output: ----");
...
// Convert to Sage
state->setContext("XAIF2Sage");
debugMsg(2, "****************** converting XAIF to Sage ****************");
DFSVisitor_XAIF2Sage xaif2SageVisitor(*iter,state);
std::string command = "mv " + roseFileName + " " + diffFileName;
system(command.c_str());
virtual void initAttributes() {
setAttribute("ElementName", "ForLoop");
setAttribute("myTestElementName", "asdf");
}
<xaif:ForLoop myTestElementName="asdf" vertex_id="4">
initAttributes(); forloop.addChild(this);
{
public:
ForLoop(std::string id) : ControlFlowVertex(id)
{ initAttributes(); }
ForLoop(ControlFlowGraph& cfg, std::string id) : ControlFlowVertex(id)
{ initAttributes(); cfg.addVertex(this); }
ForLoop(Replacement& rp, std::string id) : ControlFlowVertex(id)
{ initAttributes(); rp.addVertex(this); }
~ForLoop() { }
virtual void initAttributes() {
setAttribute("ElementName", "ForLoop");
}
Expression* getCondition() {
return condition;
}
void setCondition(Expression& cond)
{
condition = &cond;
this->addChild(condition);
condition->setAttribute("ElementName", "Condition");
}
Assignment* getInitialization() {
return initialization;
}
void setInitialization(Assignment& init) {
initialization = &init;
this->addChild(initialization);
initialization->setAttribute("ElementName", "Initialization");
}
Assignment* getUpdate() {
return update;
}
void setUpdate(Assignment& updt) {
update = &updt;
this->addChild(update);
update->setAttribute("ElementName", "Update");
}
private:
Expression *condition;
Assignment * initialization;
Assignment * update;
};
{
SgExpression *sgExpr = NULL;
Sg_File_Info * finfo = Sg_File_Info::generateFileInfoForTransformationNode(sgFile->getFileName());
std::string name = e->getAttribute("ElementName");
// Expression vertices: VariableReference, Constant, Intrinsic,
// FunctionCall, BooleanOperation
// ------------------ SymbolReference -----------------------
if (name == "SymbolReference") { }
// --------------------- Constant ---------------------------
else if (name == "Constant") { }
else if (name == "Marker") {
}
// -------------------- Branch ---------------------------
else if (name == "Branch") {
}
// -------------------- ForLoop ---------------------------
else if (name == "ForLoop") {
}
// -------------------- BasicBlock ---------------------------
else if (name == "BasicBlock") {
}
// -------------------- Replacement ---------------------------
else if (name == "Replacement") {
}
// -------------------- ReplacementList ---------------------------
else if (name == "ReplacementList") {
} else {
;//pwarning(std::string("Element ") + name + " not handled in startElement");
}
}