diff options
| -rw-r--r-- | llvm/test/Regression/Transforms/CorrelatedExprs/2002-10-04-ForwardingBug.ll | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/llvm/test/Regression/Transforms/CorrelatedExprs/2002-10-04-ForwardingBug.ll b/llvm/test/Regression/Transforms/CorrelatedExprs/2002-10-04-ForwardingBug.ll new file mode 100644 index 00000000000..c76c8fd929b --- /dev/null +++ b/llvm/test/Regression/Transforms/CorrelatedExprs/2002-10-04-ForwardingBug.ll @@ -0,0 +1,35 @@ +; Testcase distilled from bisort where we tried to perform branch target  +; forwarding where it was not safe. +; RUN: as < %s | opt -cee +; +	%HANDLE = type { int, %HANDLE*, %HANDLE* } +	%struct.node = type { int, %HANDLE*, %HANDLE* } +%.LC0 = internal global [11 x sbyte] c"%d @ 0x%x\0A\00"		; <[11 x sbyte]*> [#uses=1] + +implementation   ; Functions: + +void %InOrder(%HANDLE* %h) { +bb0:		; No predecessors! +	br label %bb2 + +bb2:		; preds = %bb3, %bb0 +	%reg113 = phi %HANDLE* [ %reg109, %bb3 ], [ %h, %bb0 ]		; <%HANDLE*> [#uses=4] +	%cond217 = seteq %HANDLE* %reg113, null		; <bool> [#uses=1] +	br bool %cond217, label %bb4, label %bb3 + +bb3:		; preds = %bb2 +	%reg221 = getelementptr %HANDLE* %reg113, long 0, ubyte 1		; <%HANDLE**> [#uses=1] +	%reg108 = load %HANDLE** %reg221		; <%HANDLE*> [#uses=1] +	%reg226 = getelementptr %HANDLE* %reg113, long 0, ubyte 2		; <%HANDLE**> [#uses=1] +	%reg109 = load %HANDLE** %reg226		; <%HANDLE*> [#uses=1] +	call void %InOrder( %HANDLE* %reg108 ) +	%cast231 = getelementptr %HANDLE* %reg113, long 0, ubyte 0		; <int*> [#uses=1] +	%reg111 = load int* %cast231		; <int> [#uses=1] +	%reg233 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([11 x sbyte]* %.LC0, long 0, long 0), int %reg111, uint 0 )		; <int> [#uses=0] +	br label %bb2 + +bb4:		; preds = %bb2 +	ret void +} + +declare int %printf(sbyte*, ...)  | 

