summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2013-11-22 19:24:39 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2013-11-22 19:24:39 +0000
commit6ea0aade264e626cce640ddbc96adac7530b1481 (patch)
treef632a36b5d8baaa83be47a902aee632568024291 /llvm/test
parent9fb6e0ba58b03a642576268db2c6a7b8a64aa32b (diff)
downloadbcm5719-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.ll31
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
+}
OpenPOWER on IntegriCloud