diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/Local.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Utils/Local.cpp | 13 | 
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index f5a8ada..3bdbaa5 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -20,6 +20,7 @@  #include "llvm/Instructions.h"  #include "llvm/Intrinsics.h"  #include "llvm/IntrinsicInst.h" +#include "llvm/Metadata.h"  #include "llvm/Operator.h"  #include "llvm/ADT/DenseMap.h"  #include "llvm/ADT/SmallPtrSet.h" @@ -877,3 +878,15 @@ bool llvm::LowerDbgDeclare(Function &F) {    }    return true;  } + +/// FindAllocaDbgDeclare - Finds the llvm.dbg.declare intrinsic describing the +/// alloca 'V', if any. +DbgDeclareInst *llvm::FindAllocaDbgDeclare(Value *V) { +  if (MDNode *DebugNode = MDNode::getIfExists(V->getContext(), V)) +    for (Value::use_iterator UI = DebugNode->use_begin(), +         E = DebugNode->use_end(); UI != E; ++UI) +      if (DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(*UI)) +        return DDI; + +  return 0; +}  | 
