diff --git a/src/c/weaver/weave/perfflow_weave_common.cpp b/src/c/weaver/weave/perfflow_weave_common.cpp index 21d07fc6..38d6d14d 100644 --- a/src/c/weaver/weave/perfflow_weave_common.cpp +++ b/src/c/weaver/weave/perfflow_weave_common.cpp @@ -18,19 +18,34 @@ bool WeaveCommon::modifyAnnotatedFunctions(Module &m) { - auto annotations = m.getNamedGlobal("llvm.global.annotations"); + auto annotations = m.getNamedGlobal("llvm.global.annotations"); if (!annotations) { return false; } bool changed = false; - auto a = cast (annotations->getOperand(0)); + + if (annotations.getNumOperands() > 0) + { + outs() << "I have %d operands!" << annotations.getNumOperands() << "\n"; + auto a = cast (annotations->getOperand(0)); + } + else + return changed; + + for (unsigned int i = 0; i < a->getNumOperands(); i++) { auto e = cast (a->getOperand(i)); + if (!e) + { + outs() << "I failed here at obtaining the struct. \n"; + } + if (auto *fn = dyn_cast (e->getOperand(0)->getOperand(0))) { + outs() << "I entered the part where we parse annotations. \n"; auto anno = cast( cast(e->getOperand(1)->getOperand(0)) ->getOperand(0)) @@ -77,11 +92,10 @@ bool WeaveCommon::modifyAnnotatedFunctions(Module &m) } } } - return changed; + return changed; } - /****************************************************************************** * * * Private Methods of WeaveCommon Class *