xref: /llvm-project/llvm/test/DebugInfo/X86/instcombine-fold-cast-into-phi.ll (revision 094572701dce4aaf36f4521d6cf750420d39f206)
1bd110930SOCHyams; RUN: opt -passes=instcombine -S %s | FileCheck %s
2bd110930SOCHyams
3bd110930SOCHyams;; Instcombine folds the trunc %x into the phi. Check it updates the phi's dbg
4bd110930SOCHyams;; user (otherwise the dbg use becomes poison after the original phi is
5bd110930SOCHyams;; deleted). Check the new phi inherits the DebugLoc.
6bd110930SOCHyams
7bd110930SOCHyams; CHECK: %[[phi:.*]] = phi i8 [ 1, %{{.*}} ], [ 0, %{{.*}} ], !dbg ![[dbg:[0-9]+]]
8*09457270SStephen Tozer; CHECK: #dbg_value(i8 %[[phi]], ![[#]], !DIExpression(DW_OP_LLVM_convert, 8, DW_ATE_signed, DW_OP_LLVM_convert, 32, DW_ATE_signed, DW_OP_stack_value)
9bd110930SOCHyams; CHECK: ![[dbg]] = !DILocation(line: 123,
10bd110930SOCHyams
11bd110930SOCHyamstarget datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
12bd110930SOCHyamstarget triple = "x86_64-unknown-linux-gnu"
13bd110930SOCHyams
14bd110930SOCHyamsdefine linkonce_odr float @f(i1 %cond) {
15bd110930SOCHyamsentry:
16bd110930SOCHyams  br i1 %cond, label %if.then, label %if.end
17bd110930SOCHyams
18bd110930SOCHyamsif.then:                                          ; preds = entry
19bd110930SOCHyams  br label %if.end
20bd110930SOCHyams
21bd110930SOCHyamsif.end:                                           ; preds = %if.then, %entry
22bd110930SOCHyams  %p.0 = phi i32 [ 1, %if.then ], [ 0, %entry ], !dbg !13
23bd110930SOCHyams  call void @llvm.dbg.value(metadata i32 %p.0, metadata !4, metadata !DIExpression()), !dbg !13
24bd110930SOCHyams  %x = trunc i32 %p.0 to i8
25bd110930SOCHyams  %callff = call float @ff(i8  %x)
26bd110930SOCHyams  ret float %callff
27bd110930SOCHyams}
28bd110930SOCHyams
29bd110930SOCHyamsdeclare void @llvm.dbg.value(metadata, metadata, metadata)
30bd110930SOCHyamsdeclare float @ff(float)
31bd110930SOCHyams
32bd110930SOCHyams!llvm.dbg.cu = !{!0}
33bd110930SOCHyams!llvm.module.flags = !{!3}
34bd110930SOCHyams
35bd110930SOCHyams!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_11, file: !1, producer: "clang version 17.0.0", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, retainedTypes: !2, splitDebugInlining: false, nameTableKind: None)
36bd110930SOCHyams!1 = !DIFile(filename: "btConvexTriangleMeshShape.cpp", directory: "/")
37bd110930SOCHyams!2 = !{}
38bd110930SOCHyams!3 = !{i32 2, !"Debug Info Version", i32 3}
39bd110930SOCHyams!4 = !DILocalVariable(name: "p", scope: !5, file: !6, line: 2057, type: !12)
40bd110930SOCHyams!5 = distinct !DILexicalBlock(scope: !7, file: !6, line: 2056, column: 4)
41bd110930SOCHyams!6 = !DIFile(filename: "reduce.cpp", directory: "/")
42bd110930SOCHyams!7 = distinct !DISubprogram(name: "diagonalize", linkageName: "_ZN11btMatrix3x311diagonalizeERS_fi", scope: !8, file: !6, line: 2054, type: !9, scopeLine: 2055, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, declaration: !11, retainedNodes: !2)
43bd110930SOCHyams!8 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "btMatrix3x3", file: !6, line: 2050, size: 24, flags: DIFlagTypePassByValue, elements: !2, identifier: "_ZTS11btMatrix3x3")
44bd110930SOCHyams!9 = !DISubroutineType(types: !10)
45bd110930SOCHyams!10 = !{null}
46bd110930SOCHyams!11 = !DISubprogram(name: "diagonalize", linkageName: "_ZN11btMatrix3x311diagonalizeERS_fi", scope: !8, file: !6, line: 2054, type: !9, scopeLine: 2054, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
47bd110930SOCHyams!12 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
48bd110930SOCHyams!13 = !DILocation(line: 123, scope: !5)
49