llvm-6502/test/Transforms/StructurizeCFG/no-branch-to-entry.ll
Matt Arsenault 08e1b756df StructurizeCFG: Fix verification failure with some loops.
If the beginning of the loop was also the entry block
of the function, branches were inserted to the entry block
which isn't allowed. If this occurs, create a new dummy
function entry block that branches to the start of the loop.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195493 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-22 19:24:39 +00:00

32 lines
934 B
LLVM

; RUN: opt -S -o - -structurizecfg < %s | FileCheck %s
; CHECK-LABEL: @no_branch_to_entry_undef(
; CHECK: entry:
; CHECK-NEXT: br label %entry.orig
define void @no_branch_to_entry_undef(i32 addrspace(1)* %out) {
entry:
br i1 undef, label %for.end, label %for.body
for.body: ; preds = %entry, %for.body
store i32 999, i32 addrspace(1)* %out, align 4
br label %for.body
for.end: ; preds = %Flow
ret void
}
; CHECK-LABEL: @no_branch_to_entry_true(
; CHECK: entry:
; CHECK-NEXT: br label %entry.orig
define void @no_branch_to_entry_true(i32 addrspace(1)* %out) {
entry:
br i1 true, label %for.end, label %for.body
for.body: ; preds = %entry, %for.body
store i32 999, i32 addrspace(1)* %out, align 4
br label %for.body
for.end: ; preds = %Flow
ret void
}