2003-09-15 20:02:53 +00:00
|
|
|
; RUN: llvm-as < %s | opt -no-aa -ds-aa -load-vn -gcse | llvm-dis | not grep load
|
2003-06-29 17:18:59 +00:00
|
|
|
%T = type { int*, int* }
|
|
|
|
|
|
|
|
int %main() {
|
|
|
|
%A = alloca %T
|
|
|
|
%B = alloca { %T }
|
|
|
|
%C = alloca %T*
|
|
|
|
%Bp = getelementptr { %T }* %B, long 0, ubyte 0
|
|
|
|
|
|
|
|
%i0 = alloca int
|
|
|
|
%i1 = alloca int
|
|
|
|
%Ap0 = getelementptr %T* %A, long 0, ubyte 0
|
|
|
|
%Ap1 = getelementptr %T* %A, long 0, ubyte 1
|
|
|
|
store int* %i0, int** %Ap0
|
|
|
|
store int* %i1, int** %Ap1
|
|
|
|
|
|
|
|
store int 0, int* %i0
|
|
|
|
store int 1, int* %i1
|
|
|
|
%RetVal = load int* %i0 ; This load should be deletable
|
|
|
|
|
|
|
|
store %T* %A, %T** %C
|
|
|
|
store %T* %Bp, %T** %C ; This store was causing merging to happen!
|
|
|
|
ret int %RetVal
|
|
|
|
}
|