| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
that are just passed to one function.
llvm-svn: 123067
|
| |
|
|
|
|
| |
to violate LCSSA form
llvm-svn: 123066
|
| |
|
|
| |
llvm-svn: 123065
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
top of subloop headers, as the phi uses logically occur outside of the subloop.
llvm-svn: 123062
|
| |
|
|
| |
llvm-svn: 123061
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 123048
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 123042
|
| |
|
|
| |
llvm-svn: 123040
|
| |
|
|
| |
llvm-svn: 123039
|
| |
|
|
|
|
| |
Patch by Tim Northover.
llvm-svn: 123035
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 123033
|
| |
|
|
|
|
| |
Enable live debug variables pass.
llvm-svn: 123032
|
| |
|
|
|
|
| |
cheap as a copy.
llvm-svn: 123031
|
| |
|
|
|
|
| |
additional notes.
llvm-svn: 123030
|
| |
|
|
|
|
| |
every BranchInst has a fixed number of operands.
llvm-svn: 123027
|
| |
|
|
| |
llvm-svn: 123025
|
| |
|
|
|
|
| |
regression (even on Nehalem) in edge cases. I also didn't see any real performance benefit.
llvm-svn: 123015
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 122994
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
we have invokes, so there is no functionality change here.
llvm-svn: 122990
|
| |
|
|
|
|
| |
Nadav Rotem.
llvm-svn: 122983
|
| |
|
|
|
|
| |
typed atomics. This will lower exclusively to libcalls at the moment.
llvm-svn: 122979
|
| |
|
|
|
|
| |
things :)
llvm-svn: 122978
|
| |
|
|
| |
llvm-svn: 122977
|
| |
|
|
|
|
| |
This fixes PR 8913 crash.
llvm-svn: 122971
|
| |
|
|
| |
llvm-svn: 122970
|
| |
|
|
| |
llvm-svn: 122969
|
| |
|
|
| |
llvm-svn: 122968
|
| |
|
|
| |
llvm-svn: 122966
|
| |
|
|
| |
llvm-svn: 122963
|
| |
|
|
|
|
| |
Patch by Richard Simth.
llvm-svn: 122962
|
| |
|
|
|
|
|
|
| |
langth are equal.
This happens when we take the (non-constant) length from a malloc.
llvm-svn: 122961
|
| |
|
|
| |
llvm-svn: 122960
|
| |
|
|
|
|
| |
with the size passed to malloc.
llvm-svn: 122959
|
| |
|
|
| |
llvm-svn: 122958
|
| |
|
|
| |
llvm-svn: 122957
|
| |
|
|
|
|
|
|
| |
The theory is it's still faster than a pair of movq / a quad of movl. This
will probably hurt older chips like P4 but should run faster on current
and future Intel processors. rdar://8817010
llvm-svn: 122955
|
| |
|
|
|
|
| |
179.art.
llvm-svn: 122954
|
| |
|
|
| |
llvm-svn: 122953
|
| |
|
|
|
|
|
| |
etc. takes an option OptSize. If OptSize is true, it would return
the inline limit for functions with attribute OptSize.
llvm-svn: 122952
|
| |
|
|
|
|
|
|
|
|
| |
ret i64 ptrtoint (i8* getelementptr ([1000 x i8]* @X, i64 1, i64 sub (i64 0, i64 ptrtoint ([1000 x i8]* @X to i64))) to i64)
to "ret i64 1000". This allows us to correctly compute the trip count
on a loop in PR8883, which occurs with std::fill on a char array. This
allows us to transform it into a memset with a constant size.
llvm-svn: 122950
|
| |
|
|
| |
llvm-svn: 122949
|