- Sep 24, 2009
-
-
Torok Edwin authored
llvm-svn: 82700
-
Torok Edwin authored
rather structs passed by value. This fixes PR5038. llvm-svn: 82689
-
- Sep 21, 2009
-
-
Chris Lattner authored
bootstrap problems. llvm-svn: 82464
-
Dan Gohman authored
by setPreservesCFG(). llvm-svn: 82463
-
Dan Gohman authored
helpful, and it didn't correctly handle the case of constants input to PHIs for backedges. llvm-svn: 82462
-
Chris Lattner authored
arrays and structs, which cannot be bitcast to integers. llvm-svn: 82460
-
Chris Lattner authored
This doesn't kick in too much because of phi translation issues, but this can be resolved in the future. llvm-svn: 82447
-
Chris Lattner authored
llvm-svn: 82446
-
Chris Lattner authored
llvm-svn: 82444
-
Chris Lattner authored
analysis, one that does the xform. llvm-svn: 82443
-
Chris Lattner authored
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 llvm-svn: 82439
-
Chris Lattner authored
llvm-svn: 82426
-
- Sep 20, 2009
-
-
Chris Lattner authored
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. llvm-svn: 82403
-
Chris Lattner authored
more generic. llvm-svn: 82402
-
Chris Lattner authored
(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. llvm-svn: 82399
-
Daniel Dunbar authored
llvm-svn: 82355
-
- Sep 19, 2009
-
-
Victor Hernandez authored
Reviewed by Dan Gohman. llvm-svn: 82300
-
- Sep 17, 2009
-
-
Daniel Dunbar authored
llvm-svn: 82097
-
- Sep 16, 2009
-
-
Dan Gohman authored
constants out of loops. These aren't covered by the regular LICM pass, because in LLVM IR constants don't require separate instructions. They're not always covered by the MachineLICM pass either, because it doesn't know how to unfold folded constant-pool loads. This is somewhat experimental at this point, and off by default. llvm-svn: 82076
-
Dan Gohman authored
phis, similar to the FoldPHIArgGEPIntoPHI change. Also, delete some comments that don't reflect the code. llvm-svn: 82053
-
Andreas Neustifter authored
llvm-svn: 82034
-
Dan Gohman authored
more than one phi, since that leads to higher register pressure on entry to the phi. This is especially problematic when the phi is in a loop header, as it increases register pressure throughout the loop. llvm-svn: 81993
-
- Sep 15, 2009
-
-
Nick Lewycky authored
llvm-svn: 81851
-
Chris Lattner authored
llvm-svn: 81840
-
Dan Gohman authored
memset region to the alignment of the new start address. llvm-svn: 81810
-
- Sep 09, 2009
-
-
Dan Gohman authored
loop exit edge -- new PHIs may be needed not only for the additional splits that are made to preserve LoopSimplify form, but also for the original split. Factor out the code that inserts new PHIs so that it can be used for both. Remove LoopRotation.cpp's code for manually updating LCSSA form, as it is now redundant. This fixes PR4934. llvm-svn: 81363
-
Mike Stump authored
llvm-svn: 81361
-
Dan Gohman authored
llvm-svn: 81354
-
- Sep 08, 2009
-
-
Chris Lattner authored
extractelement(load). llvm-svn: 81239
-
Dan Gohman authored
that get created during loop unswitching, and fix SplitBlockPredecessors' LCSSA updating code to create new PHIs instead of trying to just move existing ones. Also, optimize Loop::verifyLoop, since it gets called a lot. Use searches on a sorted list of blocks instead of calling the "contains" function, as is done in other places in the Loop class, since "contains" does a linear search. Also, don't call verifyLoop from LoopSimplify or LCSSA, as the PassManager is already calling verifyLoop as part of LoopInfo's verifyAnalysis. llvm-svn: 81221
-
Chris Lattner authored
llvm-svn: 81186
-
Chris Lattner authored
extractelement operations into a bitcast of the pointer, then a gep, then a scalar load. Disable this when the vector only has one element, because it leads to infinite loops in instcombine (PR4908). This transformation seems like a really bad idea to me, as it will likely disable CSE of vector load/stores etc and can be better done in the code generator when profitable. This goes all the way back to the first days of packed types, r25299 specifically. I'll let those people who care about the performance of vector code decide what to do with this. llvm-svn: 81185
-
Chris Lattner authored
context for the newly created operations. Patch by Jakub Staszak! llvm-svn: 81175
-
Dan Gohman authored
llvm-svn: 81172
-
- Sep 06, 2009
-
-
Duncan Sands authored
about by icc (#593, partial). Patch by Erick Tryzelaar. llvm-svn: 81115
-
Daniel Dunbar authored
- I think there are more instances of this, but I think they are fixed in Dan's incoming patch. This one was preventing me from doing a bugpoint reduction though. llvm-svn: 81103
-
Evan Cheng authored
llvm-svn: 81101
-
Daniel Dunbar authored
breaks MiniSAT on x86_64. llvm-svn: 81098
-
- Sep 04, 2009
-
-
Dan Gohman authored
Constant uniquing tables. This allows distinct ConstantExpr objects with the same operation and different flags. Even though a ConstantExpr "a + b" is either always overflowing or never overflowing (due to being a ConstantExpr), it's still necessary to be able to represent it both with and without overflow flags at the same time within the IR, because the safety of the flag may depend on the context of the use. If the constant really does overflow, it wouldn't ever be safe to use with the flag set, however the use may be in code that is never actually executed. This also makes it possible to merge all the flags tests into a single test. llvm-svn: 80998
-
- Sep 03, 2009
-
-
Dan Gohman authored
that these passes are properly preserved. Fix several transformation passes that claimed to preserve LoopSimplify form but weren't. llvm-svn: 80926
-