- Jan 08, 2011
-
-
Chris Lattner authored
1. Rip out LoopRotate's domfrontier updating code. It isn't needed now that LICM doesn't use DF and it is super complex and gross. 2. Make DomTree updating code a lot simpler and faster. The old loop over all the blocks was just to find a block?? 3. Change the code that inserts the new preheader to just use SplitCriticalEdge instead of doing an overcomplex reimplementation of it. No behavior change, except for the name of the inserted preheader. llvm-svn: 123072
-
Chris Lattner authored
llvm-svn: 123071
-
Francois Pichet authored
On Windows, replace each occurrence of '\' by '\\' on the replacement string. This is necessary to prevent re.sub from replacing escape sequences occurring in path. For example: llvm\tools\clang\test was replaced by llvm <tab> ools\clang <tab> est llvm-svn: 123070
-
Chris Lattner authored
and latch blocks. Reorder entry conditions to make hte pass faster and more logical. llvm-svn: 123069
-
Chris Lattner authored
llvm-svn: 123068
-
Chris Lattner authored
that are just passed to one function. llvm-svn: 123067
-
Chris Lattner authored
to violate LCSSA form llvm-svn: 123066
-
Cameron Zwarich authored
llvm-svn: 123065
-
Cameron Zwarich authored
they all ready do). This removes two dominator recomputations prior to isel, which is a 1% improvement in total llc time for 403.gcc. The only potentially suspect thing is making GCStrategy recompute dominators if it used a custom lowering strategy. llvm-svn: 123064
-
Rafael Espindola authored
Add a unnamed_addr bit to global variables and functions. This will be used to indicate that the address is not significant and therefore the constant or function can be merged with others. If an optimization pass can show that an address is not used, it can set this. Examples of things that can have this set by the FE are globals created to hold string literals and C++ constructors. Adding unnamed_addr to a non-const global should have no effect unless an optimization can transform that global into a constant. Aliases are not allowed to have unnamed_addr since I couldn't figure out any use for it. llvm-svn: 123063
-
Cameron Zwarich authored
top of subloop headers, as the phi uses logically occur outside of the subloop. llvm-svn: 123062
-
Frits van Bommel authored
llvm-svn: 123061
-
Chris Lattner authored
them into the loop preheader, eliminating silly instructions like "icmp i32 0, 100" in fixed tripcount loops. This also better exposes the bigger problem with loop rotate that I'd like to fix: once this has been folded, the duplicated conditional branch *often* turns into an uncond branch. Not aggressively handling this is pessimizing later loop optimizations somethin' fierce by making "dominates all exit blocks" checks fail. llvm-svn: 123060
-
Chris Lattner authored
llvm-svn: 123059
-
Chris Lattner authored
1. Take a flags argument instead of a bool. This makes it more clear to the reader what it is used for. 2. Add a flag that says that "remapping a value not in the map is ok". 3. Reimplement MapValue to share a bunch of code and be a lot more efficient. For lookup failures, don't drop null values into the map. 4. Using the new flag a bunch of code can vaporize in LinkModules and LoopUnswitch, kill it. No functionality change. llvm-svn: 123058
-
Chris Lattner authored
map from ValueMapper.h (giving us access to its utilities) and add a fastpath in the loop rotation code, avoiding expensive ssa updator manipulation for values with nothing to update. llvm-svn: 123057
-
Eric Christopher authored
llvm-svn: 123051
-
Evan Cheng authored
llvm-svn: 123048
-
Evan Cheng authored
Instead encode llvm IR level property "HasSideEffects" in an operand (shared with IsAlignStack). Added MachineInstrs::hasUnmodeledSideEffects() to check the operand when the instruction is an INLINEASM. This allows memory instructions to be moved around INLINEASM instructions. llvm-svn: 123044
-
Bob Wilson authored
This was suggested by Edmund Grimley Evans in pr8411. llvm-svn: 123043
-
Bob Wilson authored
llvm-svn: 123042
-
- Jan 07, 2011
-
-
Matt Beaumont-Gay authored
llvm-svn: 123040
-
Devang Patel authored
llvm-svn: 123039
-
Devang Patel authored
This means avoid using uint32_t. This patch reverts r112200 and fixes original problem by fixing argument type in lto.cpp. llvm-svn: 123038
-
Evan Cheng authored
llvm-svn: 123036
-
Bob Wilson authored
Patch by Tim Northover. llvm-svn: 123035
-
Tobias Grosser authored
X = sext x; x >s c ? X : C+1 --> X = sext x; X <s C+1 ? C+1 : X X = sext x; x <s c ? X : C-1 --> X = sext x; X >s C-1 ? C-1 : X X = zext x; x >u c ? X : C+1 --> X = zext x; X <u C+1 ? C+1 : X X = zext x; x <u c ? X : C-1 --> X = zext x; X >u C-1 ? C-1 : X X = sext x; x >u c ? X : C+1 --> X = sext x; X <u C+1 ? C+1 : X X = sext x; x <u c ? X : C-1 --> X = sext x; X >u C-1 ? C-1 : X Instead of calculating this with mixed types promote all to the larger type. This enables scalar evolution to analyze this expression. PR8866 llvm-svn: 123034
-
Tobias Grosser authored
llvm-svn: 123033
-
Devang Patel authored
Enable live debug variables pass. llvm-svn: 123032
-
Evan Cheng authored
llvm-svn: 123031
-
Benjamin Kramer authored
llvm-svn: 123030
-
Oscar Fuentes authored
instead. llvm-svn: 123028
-
Jay Foad authored
every BranchInst has a fixed number of operands. llvm-svn: 123027
-
Jay Foad authored
llvm-svn: 123026
-
Jay Foad authored
llvm-svn: 123025
-
Evan Cheng authored
Revert r122955. It seems using movups to lower memcpy can cause massive regression (even on Nehalem) in edge cases. I also didn't see any real performance benefit. llvm-svn: 123015
-
David Greene authored
Rename lisp-like functions as suggested by Gabor Greif as loooong time ago. This is both easier to learn and easier to read. llvm-svn: 123001
-
Benjamin Kramer authored
llvm-svn: 122999
-
Bob Wilson authored
llvm-svn: 122997
-
Bob Wilson authored
Also fix an off-by-one in SelectionDAGBuilder that was preventing shuffle vectors from being translated to EXTRACT_SUBVECTOR. Patch by Tim Northover. The test changes are needed to keep those spill-q tests from testing aligned spills and restores. If the only aligned stack objects are spill slots, we no longer realign the stack frame. Prior to this patch, an EXTRACT_SUBVECTOR was legalized by loading from the stack, which created an aligned frame index. Now, however, there is nothing except the spill slot in the stack frame, so I added an aligned alloca. llvm-svn: 122995
-