| ; RUN: opt < %s -S -simple-loop-unswitch -verify-loop-info -verify-dom-info | FileCheck %s |
| ; RUN: opt < %s -S -simple-loop-unswitch -verify-loop-info -verify-dom-info -enable-mssa-loop-dependency=true -verify-memoryssa | FileCheck %s |
| ; PR12343: -simple-loop-unswitch crash on indirect branch |
| |
| ; CHECK: %0 = icmp eq i64 undef, 0 |
| ; CHECK-NEXT: br i1 %0, label %"5", label %"4" |
| |
| ; CHECK: "5": ; preds = %entry |
| ; CHECK-NEXT: br label %"16" |
| |
| ; CHECK: "16": ; preds = %"22", %"5" |
| ; CHECK-NEXT: indirectbr i8* undef, [label %"22", label %"33"] |
| |
| ; CHECK: "22": ; preds = %"16" |
| ; CHECK-NEXT: br i1 %0, label %"16", label %"26" |
| |
| ; CHECK: "26": ; preds = %"22" |
| ; CHECK-NEXT: unreachable |
| |
| define void @foo() { |
| entry: |
| %0 = icmp eq i64 undef, 0 |
| br i1 %0, label %"5", label %"4" |
| |
| "4": ; preds = %entry |
| unreachable |
| |
| "5": ; preds = %entry |
| br label %"16" |
| |
| "16": ; preds = %"22", %"5" |
| indirectbr i8* undef, [label %"22", label %"33"] |
| |
| "22": ; preds = %"16" |
| br i1 %0, label %"16", label %"26" |
| |
| "26": ; preds = %"22" |
| unreachable |
| |
| "33": ; preds = %"16" |
| unreachable |
| } |