brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 806bd82 Raw
60 lines · plain
1; RUN: opt -S -passes=licm %s | FileCheck %s2 3; Check that hoistMinMax() in LICM salvages the debug values for the hoisted4; cmp instructions.5 6define i32 @test_ult(i32 %start, i32 %inv_1, i32 %inv_2) !dbg !5 {7; CHECK-LABEL: define i32 @test_ult(8; CHECK-SAME: i32 [[START:%.*]], i32 [[INV_1:%.*]], i32 [[INV_2:%.*]])9; CHECK:       [[LOOP:.*]]:10; CHECK:           #dbg_value(!DIArgList(i32 [[IV:%.*]], i32 [[INV_1]]), [[META9:![0-9]+]], !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_lt, DW_OP_stack_value), [[META14:![0-9]+]])11; CHECK-NEXT:      #dbg_value(!DIArgList(i32 [[IV]], i32 [[INV_2]]), [[META11:![0-9]+]], !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_lt, DW_OP_stack_value), [[META15:![0-9]+]])12; CHECK-NEXT:    [[LOOP_COND:%.*]] = icmp ult i32 [[IV]], [[INVARIANT_UMIN:%.*]], !dbg [[DBG16:![0-9]+]]13entry:14  br label %loop, !dbg !1615 16loop:                                             ; preds = %loop, %entry17  %iv = phi i32 [ %start, %entry ], [ %iv.next, %loop ], !dbg !1718  %cmp_1 = icmp ult i32 %iv, %inv_1, !dbg !1819    #dbg_value(i1 %cmp_1, !11, !DIExpression(), !18)20  %cmp_2 = icmp ult i32 %iv, %inv_2, !dbg !1921    #dbg_value(i1 %cmp_2, !13, !DIExpression(), !19)22  %loop_cond = and i1 %cmp_1, %cmp_2, !dbg !2023  %iv.next = add i32 %iv, 1, !dbg !2124  br i1 %loop_cond, label %loop, label %exit, !dbg !2225 26exit:                                             ; preds = %loop27  ret i32 %iv, !dbg !2328}29 30!llvm.dbg.cu = !{!0}31!llvm.debugify = !{!2, !3}32!llvm.module.flags = !{!4}33 34!0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1, producer: "debugify", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug)35!1 = !DIFile(filename: "temp.ll", directory: "/")36!2 = !{i32 8}37!3 = !{i32 5}38!4 = !{i32 2, !"Debug Info Version", i32 3}39!5 = distinct !DISubprogram(name: "test_ult", linkageName: "test_ult", scope: null, file: !1, line: 1, type: !6, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !8)40!6 = !DISubroutineType(types: !7)41!7 = !{}42!8 = !{!11, !13}43!11 = !DILocalVariable(name: "2", scope: !5, file: !1, line: 3, type: !12)44!12 = !DIBasicType(name: "ty8", size: 8, encoding: DW_ATE_unsigned)45!13 = !DILocalVariable(name: "3", scope: !5, file: !1, line: 4, type: !12)46!16 = !DILocation(line: 1, column: 1, scope: !5)47!17 = !DILocation(line: 2, column: 1, scope: !5)48!18 = !DILocation(line: 3, column: 1, scope: !5)49!19 = !DILocation(line: 4, column: 1, scope: !5)50!20 = !DILocation(line: 5, column: 1, scope: !5)51!21 = !DILocation(line: 6, column: 1, scope: !5)52!22 = !DILocation(line: 7, column: 1, scope: !5)53!23 = !DILocation(line: 8, column: 1, scope: !5)54;.55; CHECK: [[META9]] = !DILocalVariable(name: "2",56; CHECK: [[META11]] = !DILocalVariable(name: "3",57; CHECK: [[META14]] = !DILocation(line: 3,58; CHECK: [[META15]] = !DILocation(line: 4,59;.60