diff --git a/test/Transforms/LICM/2006-09-12-DeadUserOfSunkInstr.ll b/test/Transforms/LICM/2006-09-12-DeadUserOfSunkInstr.ll new file mode 100644 index 00000000000..fe69e5ed090 --- /dev/null +++ b/test/Transforms/LICM/2006-09-12-DeadUserOfSunkInstr.ll @@ -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 ; [#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 ; [#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 +}