- Jan 08, 2011
-
-
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
-
Bob Wilson authored
llvm-svn: 122994
-
Bob Wilson authored
We were never generating any of these nodes with variable indices, and there was one legalizer function asserting on a non-constant index. If we ever have a need to support variable indices, we can add this back again. llvm-svn: 122993
-
Bill Wendling authored
we have invokes, so there is no functionality change here. llvm-svn: 122990
-
Duncan Sands authored
Nadav Rotem. llvm-svn: 122983
-
Duncan Sands authored
comes back some day. llvm-svn: 122982
-
- Jan 06, 2011
-
-
Eric Christopher authored
typed atomics. This will lower exclusively to libcalls at the moment. llvm-svn: 122979
-
Chris Lattner authored
llvm-svn: 122978
-
Chris Lattner authored
llvm-svn: 122977
-
Devang Patel authored
This fixes PR 8913 crash. llvm-svn: 122971
-