llvm/utils
Evan Cheng 76356d9594 Prevent folding of a node with multiple uses if the node already folds a load!
Here is an example where the load ended up being done twice:

%A = global uint 0

uint %test(uint %B, ubyte %C) {
	%tmp = load uint *%A;
	%X = shl uint %tmp, ubyte %C
	%Cv = sub ubyte 32, %C
	%Y = shr uint %B, ubyte %Cv
	%Z = or uint %Y, %X
	store uint %Z, uint* %A
	ret uint %Z
}

==>

	subl $4, %esp
	movl %ebx, (%esp)
	movl 8(%esp), %edx
	movl A, %eax
	movb 12(%esp), %bl
	movb %bl, %cl
	shldl %cl, %edx, %eax
	movb %bl, %cl
	shldl %cl, %edx, A
	movl (%esp), %ebx
	addl $4, %esp
	ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25471 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-20 01:11:03 +00:00
..
Burg
emacs
fpcmp
TableGen Prevent folding of a node with multiple uses if the node already folds a load! 2006-01-20 01:11:03 +00:00
vim
cgiplotNLT.pl
check-each-file
codegen-diff
countloc.sh
cvsupdate
DSAclean.py
DSAextract.py
GenLibDeps.pl
getsrcs.sh
importNLT.pl
llvm-native-gcc
llvm-native-gxx
llvmdo Don't include generated lexer .cpp files. 2006-01-19 22:01:51 +00:00
llvmgrep
Makefile
makellvm
NightlyTest.gnuplot
NightlyTest.pl
NightlyTestTemplate.html
NLT.schema
parseNLT.pl
plotNLT.pl
profile.pl
RegressionFinder.pl
userloc.pl
webNLT.pl