mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-30 17:33:24 +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;
|
return 0;
|
||||||
}
|
}
|
||||||
case Intrinsic::dbg_declare: {
|
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)
|
if (OptLevel != CodeGenOpt::None)
|
||||||
// FIXME: Variable debug info is not supported here.
|
// FIXME: Variable debug info is not supported here.
|
||||||
return 0;
|
return 0;
|
||||||
@ -3776,6 +3778,39 @@ SelectionDAGBuilder::visitIntrinsicCall(CallInst &I, unsigned Intrinsic) {
|
|||||||
MMI->setVariableDbgInfo(Variable, FI, Dbg);
|
MMI->setVariableDbgInfo(Variable, FI, Dbg);
|
||||||
return 0;
|
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: {
|
case Intrinsic::eh_exception: {
|
||||||
// Insert the EXCEPTIONADDR instruction.
|
// Insert the EXCEPTIONADDR instruction.
|
||||||
assert(CurMBB->isLandingPad() &&"Call to eh.exception not in landing pad!");
|
assert(CurMBB->isLandingPad() &&"Call to eh.exception not in landing pad!");
|
||||||
|
Loading…
Reference in New Issue
Block a user