Load from GV stub should be locally CSE'd.

llvm-svn: 55763
This commit is contained in:
Evan Cheng 2008-09-04 06:18:33 +00:00
parent 93d40ae1e1
commit 8d8f47d50b
3 changed files with 14 additions and 8 deletions

View File

@ -71,6 +71,8 @@ bool X86FastISel::X86SelectConstAddr(Value *V,
X86AddressMode AM;
AM.GV = GV;
addFullAddress(BuildMI(MBB, TII.get(Opc), Op0), AM);
// Prevent loading GV stub multiple times in same MBB.
LocalValueMap[V] = Op0;
}
return true;
}

View File

@ -0,0 +1,12 @@
; RUN: llvm-as < %s | llc -fast-isel -mtriple=i386-apple-darwin -mattr=sse2 | \
; RUN: grep mov | grep lazy_ptr | count 1
@src = external global i32
define i32 @loadgv() nounwind {
entry:
%0 = load i32* @src, align 4
%1 = load i32* @src, align 4
%2 = add i32 %0, %1
ret i32 %2
}

View File

@ -47,11 +47,3 @@ entry:
%tmp2 = bitcast i32 0 to i32
ret i32 %tmp2
}
@src = external global i32
define i32 @loadgv() nounwind {
entry:
%0 = load i32* @src, align 4
ret i32 %0
}