brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · a6832c7 Raw
68 lines · plain
1; RUN: opt -passes='break-crit-edges,lower-switch,mergereturn' -S < %s | FileCheck %s2 3; The pass did previously not report the correct Modified status in the case4; where a function had at most one return block, and an unified unreachable5; block was created. This was caught by the pass return status check that is6; hidden under EXPENSIVE_CHECKS.7 8; CHECK: for.foo.body2:9; CHECK-NEXT: br label %UnifiedUnreachableBlock10 11; CHECK: for.foo.end:12; CHECK-NEXT: br label %UnifiedUnreachableBlock13 14; CHECK: UnifiedUnreachableBlock:15; CHECK-NEXT: unreachable16 17define i32 @foo() {18entry:19  br label %for.foo.cond20 21for.foo.cond:                                         ; preds = %entry22  br i1 false, label %for.foo.body, label %for.foo.end323 24for.foo.body:                                         ; preds = %for.foo.cond25  br label %for.foo.cond126 27for.foo.cond1:                                        ; preds = %for.foo.body28  br i1 false, label %for.foo.body2, label %for.foo.end29 30for.foo.body2:                                        ; preds = %for.foo.cond131  unreachable32 33for.foo.end:                                          ; preds = %for.foo.cond134  unreachable35 36for.foo.end3:                                         ; preds = %for.foo.cond37  ret i32 undef38}39 40; CHECK: for.bar.body2:41; CHECK-NEXT: br label %UnifiedUnreachableBlock42 43; CHECK: for.bar.end:44; CHECK-NEXT: br label %UnifiedUnreachableBlock45 46; CHECK: UnifiedUnreachableBlock:47; CHECK-NEXT: unreachable48 49define void @bar() {50entry:51  br label %for.bar.cond52 53for.bar.cond:                                         ; preds = %entry54  br i1 false, label %for.bar.body, label %for.bar.end55 56for.bar.body:                                         ; preds = %for.bar.cond57  br label %for.bar.cond158 59for.bar.cond1:                                        ; preds = %for.bar.body60  br i1 false, label %for.bar.body2, label %for.bar.end61 62for.bar.body2:                                        ; preds = %for.bar.cond163  unreachable64 65for.bar.end:                                          ; preds = %for.bar.cond166  unreachable67}68