diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-10-30 22:27:26 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-10-30 22:27:26 +0000 |
commit | d7ea700878cdec26ea389281e1cef0eeb027b93f (patch) | |
tree | b14ef916cdbe3ed2b55dc517b0a2ce9d903e216b /test | |
parent | 1fbb4a5d721844573d677abd2ecdb36893737605 (diff) | |
download | external_llvm-d7ea700878cdec26ea389281e1cef0eeb027b93f.zip external_llvm-d7ea700878cdec26ea389281e1cef0eeb027b93f.tar.gz external_llvm-d7ea700878cdec26ea389281e1cef0eeb027b93f.tar.bz2 |
It's not safe to tell SplitCriticalEdge to merge identical edges. It may delete the phi instruction that's being processed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43524 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/X86/2007-10-30-LSRCrash.ll | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/CodeGen/X86/2007-10-30-LSRCrash.ll b/test/CodeGen/X86/2007-10-30-LSRCrash.ll new file mode 100644 index 0000000..1c912a0 --- /dev/null +++ b/test/CodeGen/X86/2007-10-30-LSRCrash.ll @@ -0,0 +1,48 @@ +; RUN: llvm-as < %s | llc -march=x86 + +define i32 @unique(i8* %full, i32 %p, i32 %len, i32 %mode, i32 %verbos, i32 %flags) { +entry: + br i1 false, label %cond_true15, label %cond_next107 + +cond_true15: ; preds = %entry + br i1 false, label %bb98.preheader, label %bb + +bb: ; preds = %cond_true15 + ret i32 0 + +bb98.preheader: ; preds = %cond_true15 + br i1 false, label %bb103, label %bb69.outer + +bb76.split: ; preds = %bb69.outer.split.split, %bb69.us208 + br i1 false, label %bb103, label %bb69.outer + +bb69.outer: ; preds = %bb76.split, %bb98.preheader + %from.0.reg2mem.0.ph.rec = phi i32 [ %tmp75.rec, %bb76.split ], [ 0, %bb98.preheader ] ; <i32> [#uses=1] + %tmp75.rec = add i32 %from.0.reg2mem.0.ph.rec, 1 ; <i32> [#uses=2] + %tmp75 = getelementptr i8* null, i32 %tmp75.rec ; <i8*> [#uses=6] + br i1 false, label %bb69.us208, label %bb69.outer.split.split + +bb69.us208: ; preds = %bb69.outer + switch i32 0, label %bb76.split [ + i32 47, label %bb89 + i32 58, label %bb89 + i32 92, label %bb89 + ] + +bb69.outer.split.split: ; preds = %bb69.outer + switch i8 0, label %bb76.split [ + i8 47, label %bb89 + i8 58, label %bb89 + i8 92, label %bb89 + ] + +bb89: ; preds = %bb69.outer.split.split, %bb69.outer.split.split, %bb69.outer.split.split, %bb69.us208, %bb69.us208, %bb69.us208 + %tmp75.lcssa189 = phi i8* [ %tmp75, %bb69.us208 ], [ %tmp75, %bb69.us208 ], [ %tmp75, %bb69.us208 ], [ %tmp75, %bb69.outer.split.split ], [ %tmp75, %bb69.outer.split.split ], [ %tmp75, %bb69.outer.split.split ] ; <i8*> [#uses=0] + ret i32 0 + +bb103: ; preds = %bb76.split, %bb98.preheader + ret i32 0 + +cond_next107: ; preds = %entry + ret i32 0 +} |