Hoist all of the Entry.getLoc() calls int a single variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185589 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Christopher 2013-07-03 22:40:21 +00:00
parent 0d0782ae93
commit 7c2f3e8944

View File

@ -2462,17 +2462,18 @@ void DwarfDebug::emitDebugLoc() {
Asm->EmitULEB128(Entry.getInt()); Asm->EmitULEB128(Entry.getInt());
} }
} else if (Entry.isLocation()) { } else if (Entry.isLocation()) {
MachineLocation Loc = Entry.getLoc();
if (!DV.hasComplexAddress()) if (!DV.hasComplexAddress())
// Regular entry. // Regular entry.
Asm->EmitDwarfRegOp(Entry.getLoc(), DV.isIndirect()); Asm->EmitDwarfRegOp(Loc, DV.isIndirect());
else { else {
// Complex address entry. // Complex address entry.
unsigned N = DV.getNumAddrElements(); unsigned N = DV.getNumAddrElements();
unsigned i = 0; unsigned i = 0;
if (N >= 2 && DV.getAddrElement(0) == DIBuilder::OpPlus) { if (N >= 2 && DV.getAddrElement(0) == DIBuilder::OpPlus) {
if (Entry.getLoc().getOffset()) { if (Loc.getOffset()) {
i = 2; i = 2;
Asm->EmitDwarfRegOp(Entry.getLoc(), DV.isIndirect()); Asm->EmitDwarfRegOp(Loc, DV.isIndirect());
Asm->OutStreamer.AddComment("DW_OP_deref"); Asm->OutStreamer.AddComment("DW_OP_deref");
Asm->EmitInt8(dwarf::DW_OP_deref); Asm->EmitInt8(dwarf::DW_OP_deref);
Asm->OutStreamer.AddComment("DW_OP_plus_uconst"); Asm->OutStreamer.AddComment("DW_OP_plus_uconst");
@ -2481,12 +2482,12 @@ void DwarfDebug::emitDebugLoc() {
} else { } else {
// If first address element is OpPlus then emit // If first address element is OpPlus then emit
// DW_OP_breg + Offset instead of DW_OP_reg + Offset. // DW_OP_breg + Offset instead of DW_OP_reg + Offset.
MachineLocation Loc(Entry.getLoc().getReg(), DV.getAddrElement(1)); MachineLocation TLoc(Loc.getReg(), DV.getAddrElement(1));
Asm->EmitDwarfRegOp(Loc, DV.isIndirect()); Asm->EmitDwarfRegOp(TLoc, DV.isIndirect());
i = 2; i = 2;
} }
} else { } else {
Asm->EmitDwarfRegOp(Entry.getLoc(), DV.isIndirect()); Asm->EmitDwarfRegOp(Loc, DV.isIndirect());
} }
// Emit remaining complex address elements. // Emit remaining complex address elements.
@ -2496,7 +2497,7 @@ void DwarfDebug::emitDebugLoc() {
Asm->EmitInt8(dwarf::DW_OP_plus_uconst); Asm->EmitInt8(dwarf::DW_OP_plus_uconst);
Asm->EmitULEB128(DV.getAddrElement(++i)); Asm->EmitULEB128(DV.getAddrElement(++i));
} else if (Element == DIBuilder::OpDeref) { } else if (Element == DIBuilder::OpDeref) {
if (!Entry.getLoc().isReg()) if (!Loc.isReg())
Asm->EmitInt8(dwarf::DW_OP_deref); Asm->EmitInt8(dwarf::DW_OP_deref);
} else } else
llvm_unreachable("unknown Opcode found in complex address"); llvm_unreachable("unknown Opcode found in complex address");