diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2013-11-22 19:24:39 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2013-11-22 19:24:39 +0000 |
| commit | 6ea0aade264e626cce640ddbc96adac7530b1481 (patch) | |
| tree | f632a36b5d8baaa83be47a902aee632568024291 /llvm/test | |
| parent | 9fb6e0ba58b03a642576268db2c6a7b8a64aa32b (diff) | |
| download | bcm5719-llvm-6ea0aade264e626cce640ddbc96adac7530b1481.tar.gz bcm5719-llvm-6ea0aade264e626cce640ddbc96adac7530b1481.zip | |
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.
llvm-svn: 195493
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/Transforms/StructurizeCFG/no-branch-to-entry.ll | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/llvm/test/Transforms/StructurizeCFG/no-branch-to-entry.ll b/llvm/test/Transforms/StructurizeCFG/no-branch-to-entry.ll new file mode 100644 index 00000000000..2e22c871534 --- /dev/null +++ b/llvm/test/Transforms/StructurizeCFG/no-branch-to-entry.ll @@ -0,0 +1,31 @@ +; 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 +} |

