brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · eb23fd7 Raw
59 lines · plain
1; RUN: opt -S -loop-reduce < %s | FileCheck %s2target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"3target triple = "x86_64-pc-windows-msvc19.0.24215"4 5define void @fn3() personality ptr @__CxxFrameHandler3 {6entry:7  %call = invoke i32 @fn2()8          to label %for.cond.preheader unwind label %catch.dispatch29 10for.cond.preheader:                               ; preds = %entry11  br label %for.cond12 13for.cond:                                         ; preds = %for.cond.preheader, %for.cond14  %b.0 = phi i32 [ %inc, %for.cond ], [ %call, %for.cond.preheader ]15  %inc = add nsw i32 %b.0, 116  invoke void @fn1(i32 %inc)17          to label %for.cond unwind label %catch.dispatch18 19; CHECK:   %[[add:.*]] = add i32 %call, 120; CHECK:   br label %for.cond21 22; CHECK: for.cond:                                         ; preds = %for.cond, %for.cond.preheader23; CHECK:   %[[lsr_iv:.*]] = phi i32 [ %lsr.iv.next, %for.cond ], [ %[[add]], %for.cond.preheader ]24; CHECK:   %[[lsr_iv_next:.*]] = add i32 %lsr.iv, 125; CHECK:   invoke void @fn1(i32 %[[lsr_iv]])26 27 28catch.dispatch:                                   ; preds = %for.cond29  %0 = catchswitch within none [label %catch] unwind label %catch.dispatch230 31catch:                                            ; preds = %catch.dispatch32  %1 = catchpad within %0 [ptr null, i32 64, ptr null]33  invoke void @_CxxThrowException(ptr null, ptr null) #2 [ "funclet"(token %1) ]34          to label %unreachable unwind label %catch.dispatch235 36catch.dispatch2:                                  ; preds = %catch.dispatch, %catch, %entry37  %a.0 = phi i32 [ undef, %entry ], [ %call, %catch ], [ %call, %catch.dispatch ]38  %2 = catchswitch within none [label %catch3] unwind to caller39 40catch3:                                           ; preds = %catch.dispatch241  %3 = catchpad within %2 [ptr null, i32 64, ptr null]42  call void @fn1(i32 %a.0) [ "funclet"(token %3) ]43  catchret from %3 to label %try.cont444 45try.cont4:                                        ; preds = %catch346  ret void47 48unreachable:                                      ; preds = %catch49  unreachable50}51 52declare i32 @fn2()53 54declare i32 @__CxxFrameHandler3(...)55 56declare void @fn1(i32)57 58declare void @_CxxThrowException(ptr, ptr)59