[InstCombine] Signed saturation tests. NFC
[llvm-complete.git] / test / Transforms / ArgumentPromotion / pr33641_remove_arg_dbgvalue.ll
blobad22bed035a704442f86d07db9440060f3108608
1 ; RUN: opt -argpromotion -verify -dse -S %s -o - | FileCheck %s
3 ; Fix for PR33641. ArgumentPromotion removed the argument to bar but left the call to
4 ; dbg.value which still used the removed argument.
6 %p_t = type i16*
7 %fun_t = type void (%p_t)*
9 define void @foo() {
10   %tmp = alloca %fun_t
11   store %fun_t @bar, %fun_t* %tmp
12   ret void
15 define internal void @bar(%p_t %p)  {
16   call void @llvm.dbg.value(metadata %p_t %p, metadata !4, metadata !5), !dbg !6
17   ret void
20 declare void @llvm.dbg.value(metadata, metadata, metadata)
22 !llvm.dbg.cu = !{!0}
23 !llvm.module.flags = !{!2}
25 !0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1)
26 !1 = !DIFile(filename: "test.c", directory: "")
27 !2 = !{i32 2, !"Debug Info Version", i32 3}
28 !3 = distinct !DISubprogram(name: "bar", unit: !0)
29 !4 = !DILocalVariable(name: "p", scope: !3)
30 !5 = !DIExpression()
31 !6 = !DILocation(line: 1, column: 1, scope: !3)
33 ; The %p argument should be removed, and the use of it in dbg.value should be
34 ; changed to undef.
35 ; CHECK:      define internal void @bar() {
36 ; CHECK-NEXT:   call void @llvm.dbg.value(metadata i16* undef
37 ; CHECK-NEXT:   ret void
38 ; CHECK-NEXT: }