[llvm-commits] [llvm] r46497 - /llvm/trunk/test/Transforms/DeadStoreElimination/memcpy.ll

Chris Lattner clattner at apple.com
Mon Jan 28 22:57:40 PST 2008


On Jan 28, 2008, at 10:40 PM, Owen Anderson wrote:

> Author: resistor
> Date: Tue Jan 29 00:40:32 2008
> New Revision: 46497
>
> URL: http://llvm.org/viewvc/llvm-project?rev=46497&view=rev
> Log:
> Add a testcase for eliminating memcpy's at the end of functions.   
> Forgot to commit this with my last commit.

Nice, this is definitely progress.  However, 'opt -dse' reduces this  
testcase down to:

define void @_ada_placeholder() nounwind  {
entry:
	%an_interval = alloca %struct.placeholder__an_interval___PAD		; < 
%struct.placeholder__an_interval___PAD*> [#uses=3]
	%tmp34 = bitcast %struct.placeholder__an_interval___PAD* %an_interval  
to %struct.placeholder__T5b*		; <%struct.placeholder__T5b*> [#uses=1]
	%tmp5 = getelementptr %struct.placeholder__an_interval___PAD*  
%an_interval, i32 0, i32 0, i32 0		; <i32*> [#uses=1]
	store i32 1, i32* %tmp5, align 8
	%tmp10 = getelementptr %struct.placeholder__T5b* %tmp34, i32 0, i32  
1, i32 0		; <i32*> [#uses=1]
	store i32 1, i32* %tmp10, align 4
	%tmp183185 = bitcast %struct.placeholder__an_interval___PAD*  
%an_interval to i8*		; <i8*> [#uses=0]
	ret void
}

Why is DSE leaving around dead stores to the stack? :)  Also, it seems  
that DSE would eliminate the trivially dead bitcast at the end as well.

-Chris



More information about the llvm-commits mailing list