mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-29 07:53:33 +00:00
eed919b1ba
from a piece of a large store when both are in the same block. This allows clang to compile the testcase in PR4216 to this code: _test_bitfield: movl 4(%esp), %eax movl %eax, %ecx andl $-65536, %ecx orl $32962, %eax andl $40186, %eax orl %ecx, %eax ret This is not ideal, but is a whole lot better than the code produced by llvm-gcc: _test_bitfield: movw $-32574, %ax orw 4(%esp), %ax andw $-25350, %ax movw %ax, 4(%esp) movw 7(%esp), %cx shlw $8, %cx movzbl 6(%esp), %edx orw %cx, %dx movzwl %dx, %ecx shll $16, %ecx movzwl %ax, %eax orl %ecx, %eax ret and dramatically better than that produced by gcc 4.2: _test_bitfield: pushl %ebx call L3 "L00000000001$pb": L3: popl %ebx movl 8(%esp), %eax leal 0(,%eax,4), %edx sarb $7, %dl movl %eax, %ecx andl $7168, %ecx andl $-7201, %ebx movzbl %dl, %edx andl $1, %edx sall $5, %edx orl %ecx, %ebx orl %edx, %ebx andl $24, %eax andl $-58336, %ebx orl %eax, %ebx orl $32962, %ebx movl %ebx, %eax popl %ebx ret git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82439 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
2007-07-25-DominatedLoop.ll | ||
2007-07-25-InfiniteLoop.ll | ||
2007-07-25-Loop.ll | ||
2007-07-25-NestedLoop.ll | ||
2007-07-25-SinglePredecessor.ll | ||
2007-07-26-InterlockingLoops.ll | ||
2007-07-26-NonRedundant.ll | ||
2007-07-26-PhiErasure.ll | ||
2007-07-30-PredIDom.ll | ||
2007-07-31-NoDomInherit.ll | ||
2007-07-31-RedundantPhi.ll | ||
2008-02-12-UndefLoad.ll | ||
2008-02-13-NewPHI.ll | ||
2008-02-24-NonDominatedMemcpy.ll | ||
2008-02-26-MemCpySize.ll | ||
2008-07-02-Unreachable.ll | ||
2008-12-09-SelfRemove.ll | ||
2008-12-12-RLE-Crash.ll | ||
2008-12-14-rle-reanalyze.ll | ||
2008-12-15-CacheVisited.ll | ||
2009-01-21-SortInvalidation.ll | ||
2009-01-22-SortInvalidation.ll | ||
2009-02-17-LoadPRECrash.ll | ||
2009-03-05-dbg.ll | ||
2009-03-10-PREOnVoid.ll | ||
2009-06-17-InvalidPRE.ll | ||
2009-07-13-MemDepSortFail.ll | ||
basic.ll | ||
bitcast-of-call.ll | ||
calls-nonlocal.ll | ||
calls-readonly.ll | ||
condprop.ll | ||
dg.exp | ||
load-constant-mem.ll | ||
local-pre.ll | ||
lpre-basic.ll | ||
lpre-call-wrap-2.ll | ||
lpre-call-wrap.ll | ||
mixed.ll | ||
pre-basic-add.ll | ||
pre-single-pred.ll | ||
rle-dominated.ll | ||
rle-must-alias.ll | ||
rle-no-phi-translate.ll | ||
rle-nonlocal.ll | ||
rle-phi-translate.ll | ||
rle-semidominated.ll | ||
rle.ll |