1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/test/Transforms/InstCombine/load3.ll
Dan Gohman 6f40163d83 Teach instcombine's visitLoad to scan back several instructions
to find opportunities for store-to-load forwarding or load CSE,
in the same way that visitStore scans back to do DSE. Also, define
a new helper function for testing whether the addresses of two
memory accesses are known to have the same value, and use it in
both visitStore and visitLoad.

These two changes allow instcombine to eliminate loads in code
produced by front-ends that frequently emit obviously redundant
addressing for memory references.

llvm-svn: 57608
2008-10-15 23:19:35 +00:00

15 lines
388 B
LLVM

; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep load | count 1
; Instcombine should be able to do trivial CSE of loads.
declare void @use(double %n)
define void @bar(double* %p) {
%t0 = getelementptr double* %p, i32 1
%y = load double* %t0
%t1 = getelementptr double* %p, i32 1
%x = load double* %t1
call void @use(double %x)
call void @use(double %y)
ret void
}