brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.2 KiB · 79a62c1 Raw
335 lines · plain
1# RUN: llc %s -o - -experimental-debug-variable-locations \2# RUN:     -run-pass=livedebugvalues  | \3# RUN: FileCheck %s --implicit-check-not=DBG_VALUE4#5# Test that spills of live values to the stack are tracked by LiveDebugValues.6# (Note that I've retained the original reduced LLVM-IR in this test to ease7# regeneration of this test).8#9# Prior versions of LiveDebugValues only recognised spills to the stack if the10# source register was also killed. This often isn't the case, if a value is11# needed immediately and later in a function: for example in this test.12#13# Test that instr-ref LiveDebugValues is able to track r10's value from the14# entry block through its stored to the stack, to where it's reloaded in block15# 8 and used for a comparison and a DBG_INSTR_REF. A valid variable location16# should be emitted -- it's not too important what the location is, this test17# is that LiveDebugValues can track the value, not where it puts it.18#19## Capture variable num,20# CHECK: ![[VARNUM:[0-9]+]] = !DILocalVariable21#22# CHECK-LABEL: bb.8:23# CHECK:       DBG_VALUE_LIST ![[VARNUM]], !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_constu, 8, DW_OP_minus, DW_OP_deref, DW_OP_LLVM_fragment, 64, 64), $rsp,24# CHECK-LABEL:  bb.9:25# CHECK:       DBG_VALUE_LIST ![[VARNUM]], !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_constu, 8, DW_OP_minus, DW_OP_deref, DW_OP_LLVM_fragment, 64, 64), $rsp,26 27--- |28  ; ModuleID = 'missingvar.ll'29  source_filename = "/fast/fs/llvm34/lib/Analysis/LoopPass.cpp"30  target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"31  target triple = "x86_64-unknown-linux-gnu"32 33  %"class.std::deque" = type { %"class.std::_Deque_base" }34  %"class.std::_Deque_base" = type { %"struct.std::_Deque_base<llvm::Loop *, std::allocator<llvm::Loop *>>::_Deque_impl" }35  %"struct.std::_Deque_base<llvm::Loop *, std::allocator<llvm::Loop *>>::_Deque_impl" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }36  %"class.llvm::Loop" = type opaque37  %"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }38 39  define linkonce_odr void @_ZNSt5dequeIPN4llvm4LoopESaIS2_EE13_M_insert_auxESt15_Deque_iteratorIS2_RS2_PS2_EmRKS2_(ptr %this, ptr %__pos, i64 %__n, i1 %arg) local_unnamed_addr align 2 !dbg !3 {40  entry:41    %0 = load ptr, ptr undef, align 8, !dbg !742    %_M_cur6.i = getelementptr inbounds %"class.std::deque", ptr %this, i64 0, i32 0, i32 0, i32 2, i32 0, !dbg !743    %1 = load ptr, ptr %_M_cur6.i, align 8, !dbg !744    %2 = load ptr, ptr undef, align 8, !dbg !745    br i1 %arg, label %if.then.i851, label %if.end.i856, !dbg !746 47  if.then.i851:                                     ; preds = %entry48    %.pre1038 = load ptr, ptr undef, align 8, !dbg !749    %3 = bitcast ptr %this to ptr, !dbg !750    %sunkaddr = getelementptr inbounds i8, ptr %3, i64 40, !dbg !751    %4 = bitcast ptr %sunkaddr to ptr, !dbg !752    %.pre1039 = load ptr, ptr %4, align 8, !dbg !753    br label %if.end.i856, !dbg !754 55  if.end.i856:                                      ; preds = %if.then.i851, %entry56    %5 = phi ptr [ %.pre1039, %if.then.i851 ], [ undef, %entry ], !dbg !757    %6 = phi ptr [ %.pre1038, %if.then.i851 ], [ %0, %entry ], !dbg !758    %sub.i.i.i853 = sub nsw i64 0, %__n, !dbg !759    %add.ptr.i.i.i.i859 = getelementptr inbounds ptr, ptr %1, i64 %sub.i.i.i853, !dbg !760    store ptr %6, ptr undef, align 8, !dbg !761    %7 = bitcast ptr %__pos to ptr, !dbg !762    %sunkaddr1 = getelementptr inbounds i8, ptr %7, i64 24, !dbg !763    %8 = bitcast ptr %sunkaddr1 to ptr, !dbg !764    store ptr %5, ptr %8, align 8, !dbg !765    %9 = bitcast ptr %this to ptr, !dbg !766    %sunkaddr2 = getelementptr inbounds i8, ptr %9, i64 16, !dbg !767    %10 = bitcast ptr %sunkaddr2 to ptr, !dbg !768    %11 = load ptr, ptr %10, align 8, !dbg !769    %12 = load ptr, ptr undef, align 8, !dbg !770    %13 = bitcast ptr %this to ptr, !dbg !771    %sunkaddr3 = getelementptr inbounds i8, ptr %13, i64 40, !dbg !772    %14 = bitcast ptr %sunkaddr3 to ptr, !dbg !773    %15 = load ptr, ptr %14, align 8, !dbg !774    br i1 %arg, label %if.then.i.i775, label %cond.true.i.i777, !dbg !775 76  if.then.i.i775:                                   ; preds = %if.end.i85677    %add.ptr.i.i774 = getelementptr inbounds ptr, ptr %11, i64 %__n, !dbg !778    br label %_ZNKSt15_Deque_iteratorIPN4llvm4LoopERS2_PS2_EplEl.exit796, !dbg !779 80  cond.true.i.i777:                                 ; preds = %if.end.i85681    %16 = load ptr, ptr undef, align 8, !dbg !782    %.pre1043 = ptrtoint ptr %16 to i64, !dbg !783    br label %_ZNKSt15_Deque_iteratorIPN4llvm4LoopERS2_PS2_EplEl.exit79684 85  _ZNKSt15_Deque_iteratorIPN4llvm4LoopERS2_PS2_EplEl.exit796: ; preds = %cond.true.i.i777, %if.then.i.i77586    %sub.ptr.rhs.cast3.i.i.i.i.i.i.i.i.i690.pre-phi = phi i64 [ undef, %if.then.i.i775 ], [ %.pre1043, %cond.true.i.i777 ], !dbg !787    %__tmp.sroa.13.0.i788 = phi ptr [ %15, %if.then.i.i775 ], [ undef, %cond.true.i.i777 ], !dbg !788    %__tmp.sroa.10.0.i789 = phi ptr [ %12, %if.then.i.i775 ], [ undef, %cond.true.i.i777 ], !dbg !789    %storemerge.i.i791 = phi ptr [ %add.ptr.i.i774, %if.then.i.i775 ], [ undef, %cond.true.i.i777 ], !dbg !790    %17 = ptrtoint ptr %11 to i64, !dbg !791    %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i685 = ptrtoint ptr %__tmp.sroa.13.0.i788 to i64, !dbg !792    %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i686 = ptrtoint ptr %15 to i64, !dbg !793    %sub.ptr.sub.i.i.i.i.i.i.i.i.i687 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i685, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i686, !dbg !794    %sub.i.i.i.i.i.i.i.i.i688 = shl i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i687, 3, !dbg !795    %sub.ptr.lhs.cast2.i.i.i.i.i.i.i.i.i689 = ptrtoint ptr %storemerge.i.i791 to i64, !dbg !796    %sub.ptr.sub4.i.i.i.i.i.i.i.i.i691 = sub i64 %sub.ptr.lhs.cast2.i.i.i.i.i.i.i.i.i689, %sub.ptr.rhs.cast3.i.i.i.i.i.i.i.i.i690.pre-phi, !dbg !797    %sub.ptr.div5.i.i.i.i.i.i.i.i.i692 = ashr exact i64 %sub.ptr.sub4.i.i.i.i.i.i.i.i.i691, 3, !dbg !798    %sub.ptr.lhs.cast7.i.i.i.i.i.i.i.i.i693 = ptrtoint ptr %12 to i64, !dbg !799    %sub.ptr.sub9.i.i.i.i.i.i.i.i.i695 = sub i64 %sub.ptr.lhs.cast7.i.i.i.i.i.i.i.i.i693, %17, !dbg !7100    %sub.ptr.div10.i.i.i.i.i.i.i.i.i696 = ashr exact i64 %sub.ptr.sub9.i.i.i.i.i.i.i.i.i695, 3, !dbg !7101    %mul.i.i.i.i.i.i.i.i.i697 = add nsw i64 %sub.ptr.div10.i.i.i.i.i.i.i.i.i696, -64, !dbg !7102    %add.i.i.i.i.i.i.i.i.i698 = add i64 %mul.i.i.i.i.i.i.i.i.i697, %sub.i.i.i.i.i.i.i.i.i688, !dbg !7103    %add11.i.i.i.i.i.i.i.i.i699 = add i64 %add.i.i.i.i.i.i.i.i.i698, %sub.ptr.div5.i.i.i.i.i.i.i.i.i692, !dbg !7104    %cmp27.i.i.i.i.i.i.i.i700 = icmp sgt i64 %add11.i.i.i.i.i.i.i.i.i699, 0, !dbg !7105    br i1 %cmp27.i.i.i.i.i.i.i.i700, label %for.body.i.i.i.i.i.i.i.i711.preheader, label %_ZSt22__uninitialized_move_aISt15_Deque_iteratorIPN4llvm4LoopERS3_PS3_ES6_SaIS3_EET0_T_S9_S8_RT1_.exit737, !dbg !7106 107  for.body.i.i.i.i.i.i.i.i711.preheader:            ; preds = %_ZNKSt15_Deque_iteratorIPN4llvm4LoopERS2_PS2_EplEl.exit796108    %18 = load ptr, ptr %11, align 8, !dbg !7109    store ptr %18, ptr %add.ptr.i.i.i.i859, align 8, !dbg !7110    ret void111 112  _ZSt22__uninitialized_move_aISt15_Deque_iteratorIPN4llvm4LoopERS3_PS3_ES6_SaIS3_EET0_T_S9_S8_RT1_.exit737: ; preds = %_ZNKSt15_Deque_iteratorIPN4llvm4LoopERS2_PS2_EplEl.exit796113    %19 = ptrtoint ptr %storemerge.i.i791 to i64, !dbg !7114    %20 = ptrtoint ptr %__tmp.sroa.13.0.i788 to i64, !dbg !7115    %21 = bitcast ptr %this to ptr, !dbg !7116    %sunkaddr4 = getelementptr inbounds i8, ptr %21, i64 16, !dbg !7117    %22 = bitcast ptr %sunkaddr4 to ptr, !dbg !7118    store ptr %add.ptr.i.i.i.i859, ptr %22, align 8, !dbg !7119    store ptr %2, ptr undef, align 8, !dbg !7120    store ptr %6, ptr undef, align 8, !dbg !7121    %23 = bitcast ptr %this to ptr, !dbg !7122    %sunkaddr5 = getelementptr inbounds i8, ptr %23, i64 40, !dbg !7123    %24 = bitcast ptr %sunkaddr5 to ptr, !dbg !7124    store ptr %5, ptr %24, align 8, !dbg !7125    %25 = bitcast ptr %__pos to ptr, !dbg !7126    %sunkaddr6 = getelementptr inbounds i8, ptr %25, i64 24, !dbg !7127    %26 = bitcast ptr %sunkaddr6 to ptr, !dbg !7128    %27 = load ptr, ptr %26, align 8, !dbg !7129    call void @llvm.dbg.value(metadata ptr %2, metadata !8, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !7130    %sub.ptr.lhs.cast.i.i.i597 = ptrtoint ptr %27 to i64, !dbg !7131    %sub.ptr.sub.i.i.i599 = sub i64 %sub.ptr.lhs.cast.i.i.i597, %20, !dbg !7132    %sub.i.i.i600 = shl i64 %sub.ptr.sub.i.i.i599, 3, !dbg !7133    %sub.ptr.div5.i.i.i604 = ashr exact i64 undef, 3, !dbg !7134    %sub.ptr.lhs.cast7.i.i.i605 = ptrtoint ptr %__tmp.sroa.10.0.i789 to i64, !dbg !7135    %sub.ptr.sub9.i.i.i607 = sub i64 %sub.ptr.lhs.cast7.i.i.i605, %19, !dbg !7136    %sub.ptr.div10.i.i.i608 = ashr exact i64 %sub.ptr.sub9.i.i.i607, 3, !dbg !7137    %mul.i.i.i609 = add nsw i64 %sub.ptr.div10.i.i.i608, -64, !dbg !7138    %add.i.i.i610 = add nsw i64 %mul.i.i.i609, %sub.ptr.div5.i.i.i604, !dbg !7139    %add11.i.i.i611 = add i64 %add.i.i.i610, %sub.i.i.i600, !dbg !7140    %cmp68.i.i = icmp sgt i64 %add11.i.i.i611, 0, !dbg !7141    br i1 %cmp68.i.i, label %while.body.i.i625, label %_ZSt4moveIPN4llvm4LoopEESt15_Deque_iteratorIT_RS4_PS4_ES7_S7_S7_.exit, !dbg !7142 143  while.body.i.i625:                                ; preds = %_ZSt22__uninitialized_move_aISt15_Deque_iteratorIPN4llvm4LoopERS3_PS3_ES6_SaIS3_EET0_T_S9_S8_RT1_.exit737144    ret void145 146  _ZSt4moveIPN4llvm4LoopEESt15_Deque_iteratorIT_RS4_PS4_ES7_S7_S7_.exit: ; preds = %_ZSt22__uninitialized_move_aISt15_Deque_iteratorIPN4llvm4LoopERS3_PS3_ES6_SaIS3_EET0_T_S9_S8_RT1_.exit737147    %add.i.i.i562 = sub i64 %sub.ptr.div5.i.i.i604, %__n, !dbg !7148    %cmp.i.i.i563 = icmp sgt i64 %add.i.i.i562, -1, !dbg !7149    br i1 %cmp.i.i.i563, label %land.lhs.true.i.i.i565, label %cond.false.i.i.i572, !dbg !7150 151  land.lhs.true.i.i.i565:                           ; preds = %_ZSt4moveIPN4llvm4LoopEESt15_Deque_iteratorIT_RS4_PS4_ES7_S7_S7_.exit152    ret void153 154  cond.false.i.i.i572:                              ; preds = %_ZSt4moveIPN4llvm4LoopEESt15_Deque_iteratorIT_RS4_PS4_ES7_S7_S7_.exit155    ret void156  }157 158  ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn159  declare void @llvm.dbg.value(metadata, metadata, metadata) #0160 161  attributes #0 = { nofree nosync nounwind readnone speculatable willreturn }162 163  !llvm.module.flags = !{!0}164  !llvm.dbg.cu = !{!1}165 166  !0 = !{i32 2, !"Debug Info Version", i32 3}167  !1 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !2, producer: "beards", isOptimized: true, runtimeVersion: 4, emissionKind: FullDebug)168  !2 = !DIFile(filename: "bees.cpp", directory: "")169  !3 = distinct !DISubprogram(name: "nope", scope: !2, file: !2, line: 1, type: !4, spFlags: DISPFlagDefinition, unit: !1)170  !4 = !DISubroutineType(types: !5)171  !5 = !{!6}172  !6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)173  !7 = !DILocation(line: 1, scope: !3)174  !8 = !DILocalVariable(name: "flannel", scope: !3)175 176...177---178name:            _ZNSt5dequeIPN4llvm4LoopESaIS2_EE13_M_insert_auxESt15_Deque_iteratorIS2_RS2_PS2_EmRKS2_179alignment:       16180tracksRegLiveness: true181debugInstrRef: true182liveins:183  - { reg: '$rdi' }184  - { reg: '$rsi' }185  - { reg: '$rdx' }186frameInfo:187  stackSize:       48188  offsetAdjustment: -48189  maxAlignment:    8190  maxCallFrameSize: 0191  cvBytesOfCalleeSavedRegisters: 48192fixedStack:193  - { id: 0, type: spill-slot, offset: -56, size: 8, alignment: 8, callee-saved-register: '$rbx' }194  - { id: 1, type: spill-slot, offset: -48, size: 8, alignment: 16, callee-saved-register: '$r12' }195  - { id: 2, type: spill-slot, offset: -40, size: 8, alignment: 8, callee-saved-register: '$r13' }196  - { id: 3, type: spill-slot, offset: -32, size: 8, alignment: 16, callee-saved-register: '$r14' }197  - { id: 4, type: spill-slot, offset: -24, size: 8, alignment: 8, callee-saved-register: '$r15' }198  - { id: 5, type: spill-slot, offset: -16, size: 8, alignment: 16, callee-saved-register: '$rbp' }199stack:200  - { id: 0, type: spill-slot, offset: -64, size: 8, alignment: 8 }201machineFunctionInfo: {}202body:             |203  bb.0.entry:204    successors: %bb.2, %bb.1205    liveins: $rdi, $rdx, $rsi, $rbp, $r15, $r14, $r13, $r12, $rbx206 207    frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp, debug-location !7208    CFI_INSTRUCTION def_cfa_offset 16209    frame-setup PUSH64r killed $r15, implicit-def $rsp, implicit $rsp, debug-location !7210    CFI_INSTRUCTION def_cfa_offset 24211    frame-setup PUSH64r killed $r14, implicit-def $rsp, implicit $rsp, debug-location !7212    CFI_INSTRUCTION def_cfa_offset 32213    frame-setup PUSH64r killed $r13, implicit-def $rsp, implicit $rsp, debug-location !7214    CFI_INSTRUCTION def_cfa_offset 40215    frame-setup PUSH64r killed $r12, implicit-def $rsp, implicit $rsp, debug-location !7216    CFI_INSTRUCTION def_cfa_offset 48217    frame-setup PUSH64r killed $rbx, implicit-def $rsp, implicit $rsp, debug-location !7218    CFI_INSTRUCTION def_cfa_offset 56219    CFI_INSTRUCTION offset $rbx, -56220    CFI_INSTRUCTION offset $r12, -48221    CFI_INSTRUCTION offset $r13, -40222    CFI_INSTRUCTION offset $r14, -32223    CFI_INSTRUCTION offset $r15, -24224    CFI_INSTRUCTION offset $rbp, -16225    renamable $r10 = MOV64rm undef renamable $rax, 1, $noreg, 0, $noreg, debug-instr-number 1, debug-location !7 :: (load 8 from `ptr undef`)226    renamable $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags227    TEST8rr renamable $al, renamable $al, implicit-def $eflags, implicit killed $eax, debug-location !7228    MOV64mr $rsp, 1, $noreg, -8, $noreg, renamable $r10 :: (store 8 into %stack.0)229    JCC_1 %bb.1, 5, implicit $eflags, debug-location !7230 231  bb.2.if.then.i851:232    liveins: $rdi, $rdx, $rsi233 234    renamable $r10 = MOV64rm undef renamable $rax, 1, $noreg, 0, $noreg, debug-location !7 :: (load 8 from `ptr undef`)235    renamable $r9 = MOV64rm renamable $rdi, 1, $noreg, 40, $noreg, debug-location !7 :: (load 8 from %ir.4)236    JMP_1 %bb.3237 238  bb.1:239    liveins: $rdi, $rdx, $rsi, $r10240 241    renamable $r9 = IMPLICIT_DEF debug-location !7242 243  bb.3.if.end.i856:244    successors: %bb.4, %bb.5245    liveins: $rdi, $rdx, $rsi, $r9, $r10246 247    renamable $rax = MOV64rm renamable $rdi, 1, $noreg, 16, $noreg, debug-location !7 :: (load 8 from %ir._M_cur6.i)248    renamable $r15 = LEA64r $noreg, 8, renamable $rdx, 0, $noreg, debug-location !7249    MOV64mr undef renamable $rax, 1, $noreg, 0, $noreg, renamable $r10, debug-location !7 :: (store 8 into `ptr undef`)250    MOV64mr renamable $rsi, 1, $noreg, 24, $noreg, renamable $r9, debug-location !7 :: (store 8 into %ir.8)251    renamable $r13 = MOV64rm renamable $rdi, 1, $noreg, 16, $noreg, debug-location !7 :: (load 8 from %ir.10)252    renamable $r11 = MOV64rm renamable $rdi, 1, $noreg, 40, $noreg, debug-location !7 :: (load 8 from %ir.14)253    renamable $r8 = MOV64rm undef renamable $rax, 1, $noreg, 0, $noreg, debug-location !7 :: (load 8 from `ptr undef`)254    renamable $ebp = XOR32rr undef $ebp, undef $ebp, implicit-def dead $eflags255    TEST8rr renamable $bpl, renamable $bpl, implicit-def $eflags, implicit killed $ebp, debug-location !7256    JCC_1 %bb.5, 5, implicit killed $eflags, debug-location !7257 258  bb.4.if.then.i.i775:259    liveins: $rax, $rdi, $rdx, $rsi, $r8, $r9, $r10, $r11, $r13, $r15260 261    renamable $r14 = LEA64r renamable $r13, 8, renamable $rdx, 0, $noreg, debug-location !7262    renamable $r12 = IMPLICIT_DEF debug-location !7263    JMP_1 %bb.6264 265  bb.5.cond.true.i.i777:266    liveins: $rax, $rdi, $rdx, $rsi, $r8, $r9, $r10, $r11, $r13, $r15267 268    renamable $r12 = MOV64rm undef renamable $rax, 1, $noreg, 0, $noreg, debug-location !7 :: (load 8 from `ptr undef`)269    renamable $r14 = IMPLICIT_DEF debug-location !7270 271  bb.6._ZNKSt15_Deque_iteratorIPN4llvm4LoopERS2_PS2_EplEl.exit796:272    successors: %bb.7(0x50000000), %bb.8(0x30000000)273    liveins: $rax, $rdi, $rdx, $rsi, $r8, $r9, $r10, $r11, $r12, $r13, $r14, $r15274 275    renamable $rax = SUB64rr killed renamable $rax, killed renamable $r15, implicit-def dead $eflags, debug-location !7276    $rbp = MOV64rr $r11, debug-location !7277    renamable $rbp = SUB64rr killed renamable $rbp, renamable $r11, implicit-def dead $eflags, debug-location !7278    $rbx = MOV64rr $r14, debug-location !7279    renamable $rbx = SUB64rr killed renamable $rbx, killed renamable $r12, implicit-def dead $eflags, debug-location !7280    renamable $rbx = exact SAR64ri killed renamable $rbx, 3, implicit-def dead $eflags, debug-location !7281    $rcx = MOV64rr $r8, debug-location !7282    renamable $rcx = SUB64rr killed renamable $rcx, renamable $r13, implicit-def dead $eflags, debug-location !7283    renamable $rcx = exact SAR64ri killed renamable $rcx, 3, implicit-def dead $eflags, debug-location !7284    renamable $rcx = LEA64r killed renamable $rcx, 8, killed renamable $rbp, 0, $noreg, debug-location !7285    renamable $rcx = LEA64r killed renamable $rbx, 1, killed renamable $rcx, -64, $noreg, debug-location !7286    TEST64rr killed renamable $rcx, renamable $rcx, implicit-def $eflags, debug-location !7287    JCC_1 %bb.8, 14, implicit killed $eflags, debug-location !7288 289  bb.7.for.body.i.i.i.i.i.i.i.i711.preheader:290    liveins: $rax, $r13291 292    renamable $rcx = MOV64rm killed renamable $r13, 1, $noreg, 0, $noreg, debug-location !7 :: (load 8 from %ir.11)293    MOV64mr killed renamable $rax, 1, $noreg, 0, $noreg, killed renamable $rcx, debug-location !7 :: (store 8 into %ir.add.ptr.i.i.i.i859)294    JMP_1 %bb.10295 296  bb.8:297    successors: %bb.10(0x50000000), %bb.9(0x30000000)298    liveins: $rax, $rdi, $rdx, $rsi, $r8, $r9, $r10, $r11, $r14299 300    MOV64mr renamable $rdi, 1, $noreg, 16, $noreg, killed renamable $rax, debug-location !7 :: (store 8 into %ir.22)301    renamable $rax = MOV64rm $rsp, 1, $noreg, -8, $noreg :: (load 8 from %stack.0)302    MOV64mr undef renamable $rax, 1, $noreg, 0, $noreg, killed renamable $rax, debug-location !7 :: (store 8 into `ptr undef`)303    MOV64mr undef renamable $rax, 1, $noreg, 0, $noreg, killed renamable $r10, debug-location !7 :: (store 8 into `ptr undef`)304    MOV64mr killed renamable $rdi, 1, $noreg, 40, $noreg, killed renamable $r9, debug-location !7 :: (store 8 into %ir.24)305    renamable $rax = MOV64rm killed renamable $rsi, 1, $noreg, 24, $noreg, debug-location !7 :: (load 8 from %ir.26)306    DBG_INSTR_REF !8, !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_fragment, 64, 64), dbg-instr-ref(1, 0), debug-location !7307    renamable $rax = SUB64rr killed renamable $rax, killed renamable $r11, implicit-def dead $eflags, debug-location !7308    renamable $r8 = SUB64rr killed renamable $r8, killed renamable $r14, implicit-def dead $eflags, debug-location !7309    renamable $r8 = exact SAR64ri killed renamable $r8, 3, implicit-def dead $eflags, debug-location !7310    renamable $rax = LEA64r killed renamable $r8, 8, killed renamable $rax, -64, $noreg, debug-location !7311    TEST64rr killed renamable $rax, renamable $rax, implicit-def $eflags, debug-location !7312    JCC_1 %bb.10, 15, implicit $eflags, debug-location !7313 314  bb.9:315    liveins: $rdx316 317    dead renamable $rdx = NEG64r killed renamable $rdx, implicit-def $eflags, debug-location !7318 319  bb.10.while.body.i.i625:320    $rbx = frame-destroy POP64r implicit-def $rsp, implicit $rsp321    CFI_INSTRUCTION def_cfa_offset 48322    $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp323    CFI_INSTRUCTION def_cfa_offset 40324    $r13 = frame-destroy POP64r implicit-def $rsp, implicit $rsp325    CFI_INSTRUCTION def_cfa_offset 32326    $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp327    CFI_INSTRUCTION def_cfa_offset 24328    $r15 = frame-destroy POP64r implicit-def $rsp, implicit $rsp329    CFI_INSTRUCTION def_cfa_offset 16330    $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp331    CFI_INSTRUCTION def_cfa_offset 8332    RET64333 334...335