mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-07 14:33:15 +00:00
If an AllocaInst referred by DbgDeclareInst is used by a LoadInst then the LoadInst should also get a corresponding llvm.dbg.value intrinsic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127924 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
79fcad85a4
commit
36fae67831
@ -24,6 +24,7 @@ class BranchInst;
|
|||||||
class Instruction;
|
class Instruction;
|
||||||
class DbgDeclareInst;
|
class DbgDeclareInst;
|
||||||
class StoreInst;
|
class StoreInst;
|
||||||
|
class LoadInst;
|
||||||
class Value;
|
class Value;
|
||||||
class Pass;
|
class Pass;
|
||||||
class PHINode;
|
class PHINode;
|
||||||
@ -170,6 +171,11 @@ static inline unsigned getKnownAlignment(Value *V, const TargetData *TD = 0) {
|
|||||||
bool ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
|
bool ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
|
||||||
StoreInst *SI, DIBuilder &Builder);
|
StoreInst *SI, DIBuilder &Builder);
|
||||||
|
|
||||||
|
/// Inserts a llvm.dbg.value instrinsic before the stores to an alloca'd value
|
||||||
|
/// that has an associated llvm.dbg.decl intrinsic.
|
||||||
|
bool ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
|
||||||
|
LoadInst *LI, DIBuilder &Builder);
|
||||||
|
|
||||||
/// LowerDbgDeclare - Lowers llvm.dbg.declare intrinsics into appropriate set
|
/// LowerDbgDeclare - Lowers llvm.dbg.declare intrinsics into appropriate set
|
||||||
/// of llvm.dbg.value intrinsics.
|
/// of llvm.dbg.value intrinsics.
|
||||||
bool LowerDbgDeclare(Function &F);
|
bool LowerDbgDeclare(Function &F);
|
||||||
|
@ -794,6 +794,28 @@ bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Inserts a llvm.dbg.value instrinsic before the stores to an alloca'd value
|
||||||
|
/// that has an associated llvm.dbg.decl intrinsic.
|
||||||
|
bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
|
||||||
|
LoadInst *LI, DIBuilder &Builder) {
|
||||||
|
DIVariable DIVar(DDI->getVariable());
|
||||||
|
if (!DIVar.Verify())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
Instruction *DbgVal =
|
||||||
|
Builder.insertDbgValueIntrinsic(LI->getOperand(0), 0,
|
||||||
|
DIVar, LI);
|
||||||
|
|
||||||
|
// Propagate any debug metadata from the store onto the dbg.value.
|
||||||
|
DebugLoc LIDL = LI->getDebugLoc();
|
||||||
|
if (!LIDL.isUnknown())
|
||||||
|
DbgVal->setDebugLoc(LIDL);
|
||||||
|
// Otherwise propagate debug metadata from dbg.declare.
|
||||||
|
else
|
||||||
|
DbgVal->setDebugLoc(DDI->getDebugLoc());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/// LowerDbgDeclare - Lowers llvm.dbg.declare intrinsics into appropriate set
|
/// LowerDbgDeclare - Lowers llvm.dbg.declare intrinsics into appropriate set
|
||||||
/// of llvm.dbg.value intrinsics.
|
/// of llvm.dbg.value intrinsics.
|
||||||
bool llvm::LowerDbgDeclare(Function &F) {
|
bool llvm::LowerDbgDeclare(Function &F) {
|
||||||
@ -815,6 +837,8 @@ bool llvm::LowerDbgDeclare(Function &F) {
|
|||||||
UI != E; ++UI)
|
UI != E; ++UI)
|
||||||
if (StoreInst *SI = dyn_cast<StoreInst>(*UI))
|
if (StoreInst *SI = dyn_cast<StoreInst>(*UI))
|
||||||
ConvertDebugDeclareToDebugValue(DDI, SI, DIB);
|
ConvertDebugDeclareToDebugValue(DDI, SI, DIB);
|
||||||
|
else if (LoadInst *LI = dyn_cast<LoadInst>(*UI))
|
||||||
|
ConvertDebugDeclareToDebugValue(DDI, LI, DIB);
|
||||||
}
|
}
|
||||||
DDI->eraseFromParent();
|
DDI->eraseFromParent();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user