[llvm] r246309 - [mips] Remove incorrect DebugLoc entries from prologue

Petar Jovanovic via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 28 10:53:26 PDT 2015


Author: petarj
Date: Fri Aug 28 12:53:26 2015
New Revision: 246309

URL: http://llvm.org/viewvc/llvm-project?rev=246309&view=rev
Log:
[mips] Remove incorrect DebugLoc entries from prologue

This has been causing the prologue_end to be incorrectly positioned.

Patch by Vladimir Radosavljevic.

Differential Revision: http://reviews.llvm.org/D11293

Added:
    llvm/trunk/test/DebugInfo/Mips/prologue_end.ll
Modified:
    llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp
    llvm/trunk/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
    llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.cpp
    llvm/trunk/test/DebugInfo/Mips/delay-slot.ll

Modified: llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp?rev=246309&r1=246308&r2=246309&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp Fri Aug 28 12:53:26 2015
@@ -376,7 +376,7 @@ void MipsSEFrameLowering::emitPrologue(M
       *static_cast<const MipsRegisterInfo *>(STI.getRegisterInfo());
 
   MachineBasicBlock::iterator MBBI = MBB.begin();
-  DebugLoc dl = MBBI != MBB.end() ? MBBI->getDebugLoc() : DebugLoc();
+  DebugLoc dl;
   MipsABIInfo ABI = STI.getABI();
   unsigned SP = ABI.GetStackPtr();
   unsigned FP = ABI.GetFramePtr();

Modified: llvm/trunk/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSEISelDAGToDAG.cpp?rev=246309&r1=246308&r2=246309&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsSEISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MipsSEISelDAGToDAG.cpp Fri Aug 28 12:53:26 2015
@@ -131,7 +131,7 @@ void MipsSEDAGToDAGISel::initGlobalBaseR
   MachineBasicBlock::iterator I = MBB.begin();
   MachineRegisterInfo &RegInfo = MF.getRegInfo();
   const TargetInstrInfo &TII = *Subtarget->getInstrInfo();
-  DebugLoc DL = I != MBB.end() ? I->getDebugLoc() : DebugLoc();
+  DebugLoc DL;
   unsigned V0, V1, GlobalBaseReg = MipsFI->getGlobalBaseReg();
   const TargetRegisterClass *RC;
   const MipsABIInfo &ABI = static_cast<const MipsTargetMachine &>(TM).getABI();

Modified: llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.cpp?rev=246309&r1=246308&r2=246309&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MipsSEInstrInfo.cpp Fri Aug 28 12:53:26 2015
@@ -182,7 +182,6 @@ storeRegToStack(MachineBasicBlock &MBB,
                 const TargetRegisterClass *RC, const TargetRegisterInfo *TRI,
                 int64_t Offset) const {
   DebugLoc DL;
-  if (I != MBB.end()) DL = I->getDebugLoc();
   MachineMemOperand *MMO = GetMemOperand(MBB, FI, MachineMemOperand::MOStore);
 
   unsigned Opc = 0;
@@ -360,7 +359,7 @@ void MipsSEInstrInfo::adjustStackPtr(uns
                                      MachineBasicBlock &MBB,
                                      MachineBasicBlock::iterator I) const {
   MipsABIInfo ABI = Subtarget.getABI();
-  DebugLoc DL = I != MBB.end() ? I->getDebugLoc() : DebugLoc();
+  DebugLoc DL;
   unsigned ADDu = ABI.GetPtrAdduOp();
   unsigned ADDiu = ABI.GetPtrAddiuOp();
 

Modified: llvm/trunk/test/DebugInfo/Mips/delay-slot.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Mips/delay-slot.ll?rev=246309&r1=246308&r2=246309&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/Mips/delay-slot.ll (original)
+++ llvm/trunk/test/DebugInfo/Mips/delay-slot.ll Fri Aug 28 12:53:26 2015
@@ -16,8 +16,8 @@
 ; FIXME: The next address probably ought to be 0x0000000000000004 but there's
 ;        a constant initialization before the prologue's end.
 ; CHECK: 0x0000000000000008      2      0      1   0             0  is_stmt prologue_end
-; CHECK: 0x0000000000000028      3      0      1   0             0  is_stmt
-; CHECK: 0x0000000000000038      4      0      1   0             0  is_stmt
+; CHECK: 0x000000000000002c      3      0      1   0             0  is_stmt
+; CHECK: 0x000000000000003c      4      0      1   0             0  is_stmt
 ; CHECK: 0x0000000000000048      5      0      1   0             0  is_stmt
 ; CHECK: 0x0000000000000058      5      0      1   0             0  is_stmt end_sequence
 

Added: llvm/trunk/test/DebugInfo/Mips/prologue_end.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Mips/prologue_end.ll?rev=246309&view=auto
==============================================================================
--- llvm/trunk/test/DebugInfo/Mips/prologue_end.ll (added)
+++ llvm/trunk/test/DebugInfo/Mips/prologue_end.ll Fri Aug 28 12:53:26 2015
@@ -0,0 +1,70 @@
+; RUN: llc -O0 -mtriple mips-unknown-linux-gnu -relocation-model=static < %s | FileCheck %s -check-prefix=STATIC
+; RUN: llc -O0 -mtriple mips-unknown-linux-gnu -relocation-model=static -disable-fp-elim < %s | FileCheck %s -check-prefix=STATIC-FP
+; RUN: llc -O0 -mtriple mips-unknown-linux-gnu -relocation-model=pic < %s | FileCheck %s -check-prefix=PIC
+; RUN: llc -O0 -mtriple mips-unknown-linux-gnu -relocation-model=pic -disable-fp-elim < %s | FileCheck %s -check-prefix=PIC-FP
+
+; Generated using clang -O0 -emit-llvm -S -target mipsel-unknown-linux -g test.c -o test.ll
+; test.c:
+;
+; void hello_world(void) {
+;   printf("Hello, World!\n");
+; }
+
+ at .str = private unnamed_addr constant [15 x i8] c"Hello, World!\0A\00", align 1
+
+define void @hello_world() #0 {
+entry:
+; STATIC:	addiu	$sp, $sp, -{{[0-9]+}}
+; STATIC:	sw	$ra, {{[0-9]+}}($sp)
+; STATIC:	.loc	1 2 3 prologue_end
+; STATIC:	lui	$[[R0:[0-9]+]], %hi($.str)
+
+; STATIC-FP:	addiu	$sp, $sp, -{{[0-9]+}}
+; STATIC-FP:	sw	$ra, {{[0-9]+}}($sp)
+; STATIC-FP:	sw	$fp, {{[0-9]+}}($sp)
+; STATIC-FP:	move	$fp, $sp
+; STATIC-FP:	.loc	1 2 3 prologue_end
+; STATIC-FP:	lui	$[[R0:[0-9]+]], %hi($.str)
+
+; PIC:     	lui	$[[R0:[0-9]+]], %hi(_gp_disp)
+; PIC:     	addiu	$[[R0]], $[[R0]], %lo(_gp_disp)
+; PIC:     	addiu	$sp, $sp, -{{[0-9]+}}
+; PIC:     	sw	$ra, {{[0-9]+}}($sp)
+; PIC:     	addu	$[[R1:[0-9]+]], $[[R0]], $25
+; PIC:     	.loc	1 2 3 prologue_end
+; PIC:     	lw	$[[R2:[0-9]+]], %got($.str)($[[R1]])
+
+; PIC-FP:	lui	$[[R0:[0-9]+]], %hi(_gp_disp)
+; PIC-FP:	addiu	$[[R0]], $[[R0]], %lo(_gp_disp)
+; PIC-FP:	addiu	$sp, $sp, -{{[0-9]+}}
+; PIC-FP:	sw	$ra, {{[0-9]+}}($sp)
+; PIC-FP:	sw	$fp, {{[0-9]+}}($sp)
+; PIC-FP:	move	$fp, $sp
+; PIC-FP:	addu	$[[R1:[0-9]+]], $[[R0]], $25
+; PIC-FP:	.loc	1 2 3 prologue_end
+; PIC-FP:	lw	$[[R2:[0-9]+]], %got($.str)($[[R1]])
+
+  %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0)), !dbg !10
+  ret void, !dbg !11
+}
+
+declare i32 @printf(i8*, ...)
+
+attributes #0 = { nounwind }
+
+!llvm.dbg.cu = !{!0}
+!llvm.module.flags = !{!7, !8}
+!llvm.ident = !{!9}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0", isOptimized: false, runtimeVersion: 0, emissionKind: 1, enums: !2, subprograms: !3)
+!1 = !DIFile(filename: "test.c", directory: "/tmp")
+!2 = !{}
+!3 = !{!4}
+!4 = !DISubprogram(name: "hello_world", scope: !1, file: !1, line: 1, type: !5, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, function: void ()* @hello_world, variables: !2)
+!5 = !DISubroutineType(types: !6)
+!6 = !{null}
+!7 = !{i32 2, !"Dwarf Version", i32 4}
+!8 = !{i32 2, !"Debug Info Version", i32 3}
+!9 = !{!"clang version 3.8.0"}
+!10 = !DILocation(line: 2, column: 3, scope: !4)
+!11 = !DILocation(line: 3, column: 1, scope: !4)




More information about the llvm-commits mailing list