mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-21 00:32:23 +00:00
fix PR 6157. Testcase pending.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94996 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5f670d4131
commit
904c2fadbf
@ -3747,6 +3747,8 @@ SelectionDAGBuilder::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) {
|
||||
return 0;
|
||||
}
|
||||
case Intrinsic::dbg_declare: {
|
||||
// FIXME: currently, we get here only if OptLevel != CodeGenOpt::None.
|
||||
// The real handling of this intrinsic is in FastISel.
|
||||
if (OptLevel != CodeGenOpt::None)
|
||||
// FIXME: Variable debug info is not supported here.
|
||||
return 0;
|
||||
@ -3776,6 +3778,39 @@ SelectionDAGBuilder::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) {
|
||||
MMI->setVariableDbgInfo(Variable, FI, Dbg);
|
||||
return 0;
|
||||
}
|
||||
case Intrinsic::dbg_value: {
|
||||
// FIXME: currently, we get here only if OptLevel != CodeGenOpt::None.
|
||||
// The real handling of this intrinsic is in FastISel.
|
||||
if (OptLevel != CodeGenOpt::None)
|
||||
// FIXME: Variable debug info is not supported here.
|
||||
return 0;
|
||||
DwarfWriter *DW = DAG.getDwarfWriter();
|
||||
if (!DW)
|
||||
return 0;
|
||||
DbgValueInst &DI = cast<DbgValueInst>(I);
|
||||
if (!DIDescriptor::ValidDebugInfo(DI.getVariable(), CodeGenOpt::None))
|
||||
return 0;
|
||||
|
||||
MDNode *Variable = DI.getVariable();
|
||||
Value *V = DI.getValue();
|
||||
if (!V)
|
||||
return 0;
|
||||
if (BitCastInst *BCI = dyn_cast<BitCastInst>(V))
|
||||
V = BCI->getOperand(0);
|
||||
AllocaInst *AI = dyn_cast<AllocaInst>(V);
|
||||
// Don't handle byval struct arguments or VLAs, for example.
|
||||
if (!AI)
|
||||
return 0;
|
||||
DenseMap<const AllocaInst*, int>::iterator SI =
|
||||
FuncInfo.StaticAllocaMap.find(AI);
|
||||
if (SI == FuncInfo.StaticAllocaMap.end())
|
||||
return 0; // VLAs.
|
||||
int FI = SI->second;
|
||||
if (MachineModuleInfo *MMI = DAG.getMachineModuleInfo())
|
||||
if (MDNode *Dbg = DI.getMetadata("dbg"))
|
||||
MMI->setVariableDbgInfo(Variable, FI, Dbg);
|
||||
return 0;
|
||||
}
|
||||
case Intrinsic::eh_exception: {
|
||||
// Insert the EXCEPTIONADDR instruction.
|
||||
assert(CurMBB->isLandingPad() &&"Call to eh.exception not in landing pad!");
|
||||
|
Loading…
Reference in New Issue
Block a user