Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | fix PR5016, a crash I introduced in GVN handing first class | Chris Lattner | 2009-09-21 | 1 | -0/+14 |
| | | | | | | | arrays and structs, which cannot be bitcast to integers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82460 91177308-0d34-0410-b5e6-96231b3b80d8 | ||||
* | enable non-local analysis and PRE of large store -> little load. | Chris Lattner | 2009-09-21 | 1 | -1/+51 |
| | | | | | | | | This doesn't kick in too much because of phi translation issues, but this can be resolved in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82447 91177308-0d34-0410-b5e6-96231b3b80d8 | ||||
* | add pr# | Chris Lattner | 2009-09-21 | 1 | -0/+1 |
| | | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82440 91177308-0d34-0410-b5e6-96231b3b80d8 | ||||
* | Improve GVN to be able to forward substitute a small load | Chris Lattner | 2009-09-21 | 1 | -0/+50 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | ||||
* | fix a FileCheck bug where: | Chris Lattner | 2009-09-21 | 1 | -1/+0 |
| | | | | | | | | | | | ; CHECK: foo ; CHECK-NOT: foo ; CHECK: bar would always fail. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82424 91177308-0d34-0410-b5e6-96231b3b80d8 | ||||
* | Work around a FileCheck bug, for now. | Daniel Dunbar | 2009-09-20 | 1 | -0/+1 |
| | | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82416 91177308-0d34-0410-b5e6-96231b3b80d8 | ||||
* | Revert r82404, it is causing a bootstrap miscompile. This is very very | Chris Lattner | 2009-09-20 | 1 | -26/+0 |
| | | | | | | | scary, as it indicates a lurking bug. yay. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82411 91177308-0d34-0410-b5e6-96231b3b80d8 | ||||
* | this was not supposed to be committed | Chris Lattner | 2009-09-20 | 1 | -21/+0 |
| | | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82409 91177308-0d34-0410-b5e6-96231b3b80d8 | ||||
* | implement and document support for CHECK-NOT | Chris Lattner | 2009-09-20 | 1 | -0/+21 |
| | | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82408 91177308-0d34-0410-b5e6-96231b3b80d8 | ||||
* | improve memdep to eliminate bitcasts (and aliases, and noop geps) | Chris Lattner | 2009-09-20 | 1 | -0/+26 |
| | | | | | | | | early for the stated reasons: this allows it to find more equivalences and depend less on code layout. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82404 91177308-0d34-0410-b5e6-96231b3b80d8 | ||||
* | Move CoerceAvailableValueToLoadType earlier in GVN.cpp. Hook it up | Chris Lattner | 2009-09-20 | 1 | -3/+51 |
| | | | | | | | | | so that nonlocal and partially redundant loads can use it as well. The testcase shows examples of craziness this can handle. This triggers *many* times in 176.gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82403 91177308-0d34-0410-b5e6-96231b3b80d8 | ||||
* | enhance GVN to forward substitute a stored value to a load | Chris Lattner | 2009-09-20 | 1 | -0/+119 |
(and load -> load) when the base pointers must alias but when they are different types. This occurs very very frequently in 176.gcc and other code that uses bitfields a lot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82399 91177308-0d34-0410-b5e6-96231b3b80d8 |