| ; RUN: opt -hotcoldsplit -hotcoldsplit-threshold=-1 -pass-remarks=hotcoldsplit -S < %s 2>&1 | FileCheck %s |
| ; RUN: opt -passes=hotcoldsplit -hotcoldsplit-threshold=-1 -pass-remarks=hotcoldsplit -S < %s 2>&1 | FileCheck %s |
| |
| ; Make sure this compiles. This test used to fail with an invalid phi node: the |
| ; two predecessors were outlined and the SSA representation was invalid. |
| |
| ; CHECK: remark: <unknown>:0:0: fun split cold code into fun.cold.1 |
| ; CHECK-LABEL: @fun |
| ; CHECK: codeRepl: |
| ; CHECK-NEXT: call void @fun.cold.1 |
| |
| ; CHECK: define {{.*}}@fun.cold.1{{.*}} [[cold_attr:#[0-9]+]] |
| ; CHECK: attributes [[cold_attr]] = { {{.*}}noreturn |
| |
| define void @fun() { |
| entry: |
| br i1 undef, label %if.then, label %if.else |
| |
| if.then: |
| ret void |
| |
| if.else: |
| br label %if.then4 |
| |
| if.then4: |
| br i1 undef, label %if.then5, label %if.end |
| |
| if.then5: |
| br label %cleanup |
| |
| if.end: |
| br label %cleanup |
| |
| cleanup: |
| %cleanup.dest.slot.0 = phi i32 [ 1, %if.then5 ], [ 0, %if.end ] |
| unreachable |
| } |