| Index: tests_lit/llvm2ice_tests/regalloc_evict_non_overlap.ll
|
| diff --git a/tests_lit/llvm2ice_tests/regalloc_evict_non_overlap.ll b/tests_lit/llvm2ice_tests/regalloc_evict_non_overlap.ll
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..39b1a9e3a4074167f042a5cc3ba7b8440fb8b40f
|
| --- /dev/null
|
| +++ b/tests_lit/llvm2ice_tests/regalloc_evict_non_overlap.ll
|
| @@ -0,0 +1,80 @@
|
| +; Bugpoint-reduced example that demonstrated a bug (assertion failure)
|
| +; in register allocation. See
|
| +; https://code.google.com/p/nativeclient/issues/detail?id=3903 .
|
| +;
|
| +; RUN: %llvm2ice -O2 --verbose regalloc %s
|
| +
|
| +; ModuleID = 'bugpoint-reduced-simplified.ll'
|
| +target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-p:32:32:32-v128:32:32"
|
| +target triple = "i386-pc-linux-gnu"
|
| +
|
| +define void @foo() {
|
| +bb:
|
| + br i1 undef, label %bb13, label %bb14
|
| +
|
| +bb13:
|
| + unreachable
|
| +
|
| +bb14:
|
| + br i1 undef, label %bb50, label %bb16
|
| +
|
| +bb15: ; preds = %bb42, %bb35
|
| + br i1 undef, label %bb50, label %bb16
|
| +
|
| +bb16: ; preds = %bb49, %bb15, %bb14
|
| + %tmp = phi i32 [ undef, %bb14 ], [ %tmp18, %bb49 ], [ undef, %bb15 ]
|
| + br label %bb17
|
| +
|
| +bb17: ; preds = %bb48, %bb16
|
| + %tmp18 = phi i32 [ undef, %bb16 ], [ undef, %bb48 ]
|
| + %tmp19 = add i32 %tmp18, 4
|
| + br i1 undef, label %bb21, label %bb46
|
| +
|
| +bb21: ; preds = %bb27, %bb17
|
| + %tmp22 = phi i32 [ undef, %bb17 ], [ %tmp30, %bb27 ]
|
| + %tmp23 = add i32 undef, -1
|
| + %tmp24 = add i32 undef, undef
|
| + %tmp25 = load i32* undef, align 1
|
| + %tmp26 = icmp eq i32 undef, %tmp22
|
| + br i1 %tmp26, label %bb34, label %bb32
|
| +
|
| +bb27: ; preds = %bb42, %bb34
|
| + %tmp28 = icmp sgt i32 %tmp23, 0
|
| + %tmp29 = inttoptr i32 %tmp19 to i32*
|
| + %tmp30 = load i32* %tmp29, align 1
|
| + br i1 %tmp28, label %bb21, label %bb46
|
| +
|
| +bb32: ; preds = %bb21
|
| + %tmp33 = inttoptr i32 %tmp24 to i32*
|
| + store i32 0, i32* %tmp33, align 1
|
| + br label %bb34
|
| +
|
| +bb34: ; preds = %bb32, %bb31
|
| + br i1 undef, label %bb27, label %bb35
|
| +
|
| +bb35: ; preds = %bb34
|
| + %tmp40 = inttoptr i32 %tmp25 to void (i32)*
|
| + call void %tmp40(i32 undef)
|
| + br i1 undef, label %bb42, label %bb15
|
| +
|
| +bb42: ; preds = %bb35
|
| + %tmp43 = inttoptr i32 %tmp to i32*
|
| + %tmp44 = load i32* %tmp43, align 1
|
| + %tmp45 = icmp eq i32 %tmp44, %tmp18
|
| + br i1 %tmp45, label %bb27, label %bb15
|
| +
|
| +bb46: ; preds = %bb27, %bb17
|
| + br i1 undef, label %bb47, label %bb49
|
| +
|
| +bb47: ; preds = %bb46
|
| + br i1 undef, label %bb50, label %bb48
|
| +
|
| +bb48: ; preds = %bb47
|
| + br i1 undef, label %bb50, label %bb17
|
| +
|
| +bb49: ; preds = %bb46
|
| + br i1 undef, label %bb50, label %bb16
|
| +
|
| +bb50: ; preds = %bb49, %bb48, %bb47, %bb15, %bb14
|
| + unreachable
|
| +}
|
|
|