testcase for PR908
authorChris Lattner <sabre@nondot.org>
Tue, 12 Sep 2006 19:16:04 +0000 (19:16 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 12 Sep 2006 19:16:04 +0000 (19:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30274 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/LICM/2006-09-12-DeadUserOfSunkInstr.ll [new file with mode: 0644]

diff --git a/test/Transforms/LICM/2006-09-12-DeadUserOfSunkInstr.ll b/test/Transforms/LICM/2006-09-12-DeadUserOfSunkInstr.ll
new file mode 100644 (file)
index 0000000..fe69e5e
--- /dev/null
@@ -0,0 +1,215 @@
+; RUN: llvm-as < %s | opt -licm -disable-output
+; PR908
+
+       %struct.alloc_chain = type { sbyte*, %struct.alloc_chain* }
+       %struct.oggpack_buffer = type { int, int, ubyte*, ubyte*, int }
+       %struct.vorbis_block = type { float**, %struct.oggpack_buffer, int, int, int, int, int, int, long, long, %struct.vorbis_dsp_state*, sbyte*, int, int, int, %struct.alloc_chain*, int, int, int, int, sbyte* }
+       %struct.vorbis_dsp_state = type { int, %struct.vorbis_info*, float**, float**, int, int, int, int, int, int, int, int, int, long, long, long, long, long, long, sbyte* }
+       %struct.vorbis_info = type { int, int, int, int, int, int, int, sbyte* }
+
+implementation   ; Functions:
+
+fastcc void %_01forward() {
+entry:
+       br bool false, label %bb222.preheader, label %bb241
+
+cond_true67:           ; preds = %cond_true87
+       br label %cond_next80
+
+cond_next80:           ; preds = %cond_true87, %cond_true67
+       br label %bb83
+
+bb83.preheader:                ; preds = %cond_true226
+       br bool false, label %bb83.us.preheader, label %bb83.preheader1
+
+bb83.us.preheader:             ; preds = %bb83.preheader
+       br label %bb83.us
+
+bb83.us:               ; preds = %cond_next80.us, %bb83.us.preheader
+       br bool false, label %cond_true87.us, label %cond_next92.loopexit2
+
+cond_next80.us:                ; preds = %bb59.loopexit.us, %cond_true67.us
+       br label %bb83.us
+
+cond_true67.us:                ; preds = %bb59.loopexit.us
+       br label %cond_next80.us
+
+cond_next.us:          ; preds = %cond_true56.us, %cond_true38.us
+       br bool false, label %cond_true56.us, label %bb59.loopexit.us
+
+cond_true38.us:                ; preds = %cond_true56.us
+       br label %cond_next.us
+
+cond_true56.us:                ; preds = %cond_true87.us, %cond_next.us
+       br bool false, label %cond_true38.us, label %cond_next.us
+
+cond_true87.us:                ; preds = %bb83.us
+       br label %cond_true56.us
+
+bb59.loopexit.us:              ; preds = %cond_next.us
+       br bool false, label %cond_true67.us, label %cond_next80.us
+
+bb83.preheader1:               ; preds = %bb83.preheader
+       br label %bb83
+
+bb83:          ; preds = %bb83.preheader1, %cond_next80
+       br bool false, label %cond_next92.loopexit, label %cond_true87
+
+cond_true87:           ; preds = %bb83
+       br bool false, label %cond_true67, label %cond_next80
+
+cond_next92.loopexit:          ; preds = %bb83
+       br label %cond_next92
+
+cond_next92.loopexit2:         ; preds = %bb83.us
+       br label %cond_next92
+
+cond_next92:           ; preds = %cond_true226, %cond_next92.loopexit2, %cond_next92.loopexit
+       br bool false, label %cond_true218.loopexit, label %bb222
+
+cond_true139:          ; preds = %cond_true202
+       br bool false, label %cond_next195, label %cond_true155
+
+cond_true155:          ; preds = %cond_true139
+       br bool false, label %cond_true249.i.preheader, label %_encodepart.exit
+
+cond_true.i:           ; preds = %cond_true115.i
+       br bool false, label %bb60.i.preheader, label %cond_next97.i
+
+bb60.i.preheader:              ; preds = %cond_true.i
+       br label %bb60.i
+
+bb60.i:                ; preds = %cond_true63.i, %bb60.i.preheader
+       br bool false, label %cond_true63.i, label %cond_next97.i.loopexit
+
+cond_true63.i:         ; preds = %bb60.i
+       br bool false, label %bb60.i, label %cond_next97.i.loopexit
+
+bb86.i.preheader:              ; preds = %cond_true115.i
+       br label %bb86.i
+
+bb86.i:                ; preds = %cond_true93.i, %bb86.i.preheader
+       br bool false, label %cond_true93.i, label %cond_next97.i.loopexit3
+
+cond_true93.i:         ; preds = %bb86.i
+       br bool false, label %cond_next97.i.loopexit3, label %bb86.i
+
+cond_next97.i.loopexit:                ; preds = %cond_true63.i, %bb60.i
+       br label %cond_next97.i
+
+cond_next97.i.loopexit3:               ; preds = %cond_true93.i, %bb86.i
+       br label %cond_next97.i
+
+cond_next97.i:         ; preds = %cond_next97.i.loopexit3, %cond_next97.i.loopexit, %cond_true.i
+       br bool false, label %bb118.i.loopexit, label %cond_true115.i
+
+cond_true115.i.preheader:              ; preds = %cond_true249.i
+       br label %cond_true115.i
+
+cond_true115.i:                ; preds = %cond_true115.i.preheader, %cond_next97.i
+       br bool false, label %cond_true.i, label %bb86.i.preheader
+
+bb118.i.loopexit:              ; preds = %cond_next97.i
+       br label %bb118.i
+
+bb118.i:               ; preds = %cond_true249.i, %bb118.i.loopexit
+       br bool false, label %cond_next204.i, label %cond_true128.i
+
+cond_true128.i:                ; preds = %bb118.i
+       br bool false, label %cond_true199.i.preheader, label %cond_next204.i
+
+cond_true199.i.preheader:              ; preds = %cond_true128.i
+       br label %cond_true199.i
+
+cond_true199.i.us:             ; No predecessors!
+       br bool false, label %cond_true167.i.us, label %cond_next187.i.us
+
+cond_next187.i.us:             ; preds = %bb170.i.loopexit.us, %bb170.i.us.cond_next187.i.us_crit_edge, %cond_true199.i.us
+       unreachable
+
+bb170.i.us.cond_next187.i.us_crit_edge:                ; preds = %bb170.i.loopexit.us
+       br label %cond_next187.i.us
+
+cond_true167.i.us:             ; preds = %cond_true167.i.us, %cond_true199.i.us
+       br bool false, label %cond_true167.i.us, label %bb170.i.loopexit.us
+
+bb170.i.loopexit.us:           ; preds = %cond_true167.i.us
+       br bool false, label %cond_next187.i.us, label %bb170.i.us.cond_next187.i.us_crit_edge
+
+cond_true199.i:                ; preds = %cond_true199.i, %cond_true199.i.preheader
+       br bool false, label %cond_next204.i.loopexit, label %cond_true199.i
+
+cond_next204.i.loopexit:               ; preds = %cond_true199.i
+       br label %cond_next204.i
+
+cond_next204.i:                ; preds = %cond_next204.i.loopexit, %cond_true128.i, %bb118.i
+       br label %bb233.i
+
+cond_true230.i:                ; No predecessors!
+       %exitcond155 = seteq uint 0, %tmp16.i           ; <bool> [#uses=0]
+       unreachable
+
+bb233.i:               ; preds = %cond_next204.i
+       br bool false, label %_encodepart.exit.loopexit, label %cond_true249.i
+
+cond_true249.i.preheader:              ; preds = %cond_true155
+       br label %cond_true249.i
+
+cond_true249.i:                ; preds = %cond_true249.i.preheader, %bb233.i
+       %tmp16.i = cast int 0 to uint           ; <uint> [#uses=1]
+       br bool false, label %cond_true115.i.preheader, label %bb118.i
+
+_encodepart.exit.loopexit:             ; preds = %bb233.i
+       br label %_encodepart.exit
+
+_encodepart.exit:              ; preds = %_encodepart.exit.loopexit, %cond_true155
+       br label %cond_next195
+
+cond_next195:          ; preds = %cond_true202, %_encodepart.exit, %cond_true139
+       br bool false, label %bb205.loopexit, label %cond_true202
+
+cond_true202.preheader:                ; preds = %cond_true218
+       br label %cond_true202
+
+cond_true202:          ; preds = %cond_true202.preheader, %cond_next195
+       br bool false, label %cond_next195, label %cond_true139
+
+bb205.loopexit:                ; preds = %cond_next195
+       br label %bb205
+
+bb205:         ; preds = %cond_true218, %bb205.loopexit
+       br bool false, label %cond_true218, label %bb222.outer105.loopexit
+
+cond_true218.loopexit:         ; preds = %cond_next92
+       br label %cond_true218
+
+cond_true218:          ; preds = %cond_true218.loopexit, %bb205
+       br bool false, label %cond_true202.preheader, label %bb205
+
+bb222.preheader:               ; preds = %entry
+       br label %bb222.outer
+
+bb222.outer:           ; preds = %bb229, %bb222.preheader
+       br label %bb222.outer105
+
+bb222.outer105.loopexit:               ; preds = %bb205
+       br label %bb222.outer105
+
+bb222.outer105:                ; preds = %bb222.outer105.loopexit, %bb222.outer
+       br label %bb222
+
+bb222:         ; preds = %bb222.outer105, %cond_next92
+       br bool false, label %cond_true226, label %bb229
+
+cond_true226:          ; preds = %bb222
+       br bool false, label %bb83.preheader, label %cond_next92
+
+bb229:         ; preds = %bb222
+       br bool false, label %bb222.outer, label %bb241.loopexit
+
+bb241.loopexit:                ; preds = %bb229
+       br label %bb241
+
+bb241:         ; preds = %bb241.loopexit, %entry
+       ret void
+}