summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/frame-lowering-debug-intrinsic.ll
diff options
context:
space:
mode:
authorFlorian Hahn <florian.hahn@arm.com>2017-01-04 12:08:35 +0000
committerFlorian Hahn <florian.hahn@arm.com>2017-01-04 12:08:35 +0000
commit5815f6c53c9b9060f8b87972f7fb79f887bca63b (patch)
treeed9ba942a761f595bdf07558a7f0d67fa39e464e /llvm/test/CodeGen/X86/frame-lowering-debug-intrinsic.ll
parent2eb065035b7d06679cfebc4bb9e3434302115613 (diff)
downloadbcm5719-llvm-5815f6c53c9b9060f8b87972f7fb79f887bca63b.tar.gz
bcm5719-llvm-5815f6c53c9b9060f8b87972f7fb79f887bca63b.zip
[framelowering] Skip dbg values when getting next/previous instruction.
Summary: In mergeSPUpdates, debug values need to be ignored when getting the previous element, otherwise debug data could have an impact on codegen. In eliminateCallFramePseudoInstr, debug values after the erased element could have an impact on codegen and should be skipped. Closes PR31319 (https://llvm.org/bugs/show_bug.cgi?id=31319) Reviewers: aprantl, MatzeB, mkuper Subscribers: gbedwell, llvm-commits Differential Revision: https://reviews.llvm.org/D27688 llvm-svn: 290955
Diffstat (limited to 'llvm/test/CodeGen/X86/frame-lowering-debug-intrinsic.ll')
-rw-r--r--llvm/test/CodeGen/X86/frame-lowering-debug-intrinsic.ll41
1 files changed, 33 insertions, 8 deletions
diff --git a/llvm/test/CodeGen/X86/frame-lowering-debug-intrinsic.ll b/llvm/test/CodeGen/X86/frame-lowering-debug-intrinsic.ll
index 8614d1b4c6c..e86d094ac34 100644
--- a/llvm/test/CodeGen/X86/frame-lowering-debug-intrinsic.ll
+++ b/llvm/test/CodeGen/X86/frame-lowering-debug-intrinsic.ll
@@ -2,31 +2,56 @@
;
; RUN: llc -O1 -mtriple=x86_64-unknown-unknown -o - %s | FileCheck %s
-
-define i64 @noDebug(i64 %a) {
+define i64 @fn1NoDebug(i64 %a) {
%call = call i64 @fn(i64 %a, i64 0)
ret i64 %call
}
-; CHECK-LABEL: noDebug
+; CHECK-LABEL: fn1NoDebug
; CHECK: popq %rcx
-; CHECK: ret
-
+; CHECK-NEXT: ret
-define i64 @withDebug(i64 %a) !dbg !4 {
+define i64 @fn1WithDebug(i64 %a) !dbg !4 {
%call = call i64 @fn(i64 %a, i64 0)
tail call void @llvm.dbg.value(metadata i64 %call, i64 0, metadata !5, metadata !6), !dbg !7
ret i64 %call
}
-; CHECK-LABEL: withDebug
+; CHECK-LABEL: fn1WithDebug
; CHECK: popq %rcx
-; CHECK: ret
+; CHECK-NEXT: ret
+
+%struct.Buffer = type { i8, [63 x i8] }
+
+define void @fn2NoDebug(%struct.Buffer* byval align 64 %p1) {
+ ret void
+}
+
+; CHECK-LABEL: fn2NoDebug
+; CHECK: and
+; CHECK-NOT: add
+; CHECK-NOT: sub
+; CHECK: mov
+; CHECK-NEXT: pop
+; CHECK-NEXT: ret
+
+define void @fn2WithDebug(%struct.Buffer* byval align 64 %p1) !dbg !4 {
+ call void @llvm.dbg.declare(metadata %struct.Buffer* %p1, metadata !5, metadata !6), !dbg !7
+ ret void
+}
+; CHECK-LABEL: fn2WithDebug
+; CHECK: and
+; CHECK-NOT: add
+; CHECK-NOT: sub
+; CHECK: mov
+; CHECK-NEXT: pop
+; CHECK-NEXT: ret
declare i64 @fn(i64, i64)
declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
+declare void @llvm.dbg.declare(metadata, metadata, metadata)
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!2,!3}
OpenPOWER on IntegriCloud