| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 85687
|
| |
|
|
| |
llvm-svn: 85685
|
| |
|
|
| |
llvm-svn: 85676
|
| |
|
|
|
|
|
| |
is unconditional. Making it still use the libcall when optimizing for size
would be a good adjustment.
llvm-svn: 85675
|
| |
|
|
| |
llvm-svn: 85674
|
| |
|
|
| |
llvm-svn: 85673
|
| |
|
|
|
|
|
| |
auto-update the DominatorTree because it doesn't keep the DominatorTree
current while it works.
llvm-svn: 85670
|
| |
|
|
|
|
|
| |
MergeBlockIntoPredecessor. This makes SimplifyCFG slightly more aggressive,
and makes it unnecessary for LoopUnroll to have its own copy of this code.
llvm-svn: 85667
|
| |
|
|
|
|
| |
enable more machine licm. More changes coming.
llvm-svn: 85643
|
| |
|
|
| |
llvm-svn: 85640
|
| |
|
|
| |
llvm-svn: 85637
|
| |
|
|
| |
llvm-svn: 85636
|
| |
|
|
|
|
|
| |
around, then zap them. This is analogous to dangling constantexprs hanging
off functions.
llvm-svn: 85627
|
| |
|
|
|
|
|
|
|
|
| |
unfolding loads for hoisting. getOpcodeAfterMemoryUnfold returns the
opcode of the original operation without the load, not the load
itself, MachineLICM needs to know the operand index in order to get
the correct register class. Extend getOpcodeAfterMemoryUnfold to
return this information.
llvm-svn: 85622
|
| |
|
|
| |
llvm-svn: 85614
|
| |
|
|
| |
llvm-svn: 85608
|
| |
|
|
|
|
|
|
|
|
|
| |
void f (int a1, int a2, int a3, int a4, int a5,...)
In ARMTargetLowering::LowerFormalArguments if the function has 4 or
more regular arguments we used to set VarArgsFrameIndex using an
offset of 0, which is only correct if the function has exactly 4
regular arguments.
llvm-svn: 85590
|
| |
|
|
|
|
|
| |
common tail, except when the OptimizeForSize function attribute is present.
Radar 7338114.
llvm-svn: 85441
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
argument is:
ArraySize * ElementSize
ElementSize * ArraySize
ArraySize << log2(ElementSize)
ElementSize << log2(ArraySize)
Refactor isArrayMallocHelper and delete isSafeToGetMallocArraySize, so that there is only 1 copy of the malloc array determining logic.
Update users of getMallocArraySize() to not bother calling isArrayMalloc() as well.
llvm-svn: 85421
|
| |
|
|
|
|
| |
purposes for GVN/DSE.
llvm-svn: 85383
|
| |
|
|
|
|
|
|
| |
need
to depend on Ref and ModRef calls within the invariant region.
llvm-svn: 85380
|
| |
|
|
|
|
| |
purely local for now.
llvm-svn: 85378
|
| |
|
|
|
|
|
|
|
|
| |
round trip blockaddress through .ll and .bc files, so add a testcase.
There are still a bunch of places in the optimizer and other places
that need to be updated to work with these constructs, but at least
the basics are in now.
llvm-svn: 85377
|
| |
|
|
|
|
|
| |
otherwise unhoistable instructions in order to allow the loads
to be hoisted.
llvm-svn: 85364
|
| |
|
|
| |
llvm-svn: 85362
|
| |
|
|
|
|
| |
MachineLICM and other things which run before LiveVariables is run.
llvm-svn: 85360
|
| |
|
|
|
|
| |
if they have compatible encodings.
llvm-svn: 85359
|
| |
|
|
| |
llvm-svn: 85351
|
| |
|
|
| |
llvm-svn: 85290
|
| |
|
|
| |
llvm-svn: 85287
|
| |
|
|
|
|
|
| |
(assembler,asmprinter, bc reader+writer) and document it. Codegen
currently aborts on it.
llvm-svn: 85274
|
| |
|
|
| |
llvm-svn: 85266
|
| |
|
|
| |
llvm-svn: 85258
|
| |
|
|
| |
llvm-svn: 85256
|
| |
|
|
| |
llvm-svn: 85241
|
| |
|
|
| |
llvm-svn: 85210
|
| |
|
|
| |
llvm-svn: 85208
|
| |
|
|
| |
llvm-svn: 85207
|
| |
|
|
|
|
|
|
|
|
| |
with multiple return values it inserts a PHI to merge them all together.
However, if the return values are all the same, it ends up with a pointless
PHI and this pointless PHI happens to really block SRoA from happening in
at least a silly C++ example written by Doug, but probably others. This
fixes rdar://7339069.
llvm-svn: 85206
|
| |
|
|
| |
llvm-svn: 85205
|
| |
|
|
| |
llvm-svn: 85204
|
| |
|
|
| |
llvm-svn: 85171
|
| |
|
|
|
|
| |
can safely use the NSW bit on the Add.
llvm-svn: 85164
|
| |
|
|
|
|
| |
aggressive on PHI instructions.
llvm-svn: 85158
|
| |
|
|
| |
llvm-svn: 85127
|
| |
|
|
|
|
|
| |
All of the 'demorgan' related xforms need to use
dyn_castNotVal, not m_Not.
llvm-svn: 85119
|
| |
|
|
|
|
|
|
|
|
| |
strides for now, because it doesn't handle them correctly. This fixes a
miscompile of SingleSource/Benchmarks/Misc-C++/ray.
This problem was usually hidden because indvars transforms such induction
variables into negations of canonical induction variables.
llvm-svn: 85118
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
bootstrapping. It's not safe to leave identity subreg_to_reg and insert_subreg
around.
- Relax register scavenging to allow use of partially "not-live" registers. It's
common for targets to operate on registers where the top bits are undef. e.g.
s0 =
d0 = insert_subreg d0<undef>, s0, 1
...
= d0
When the insert_subreg is eliminated by the coalescer, the scavenger used to
complain. The previous fix was to keep to insert_subreg around. But that's
brittle and it's overly conservative when we want to use the scavenger to
allocate registers. It's actually legal and desirable for other instructions
to use the "undef" part of d0. e.g.
s0 =
d0 = insert_subreg d0<undef>, s0, 1
...
s1 =
= s1
= d0
We probably need add a "partial-undef" marker on machine operand so the
machine verifier would not complain.
llvm-svn: 85091
|
| |
|
|
| |
llvm-svn: 85090
|
| |
|
|
| |
llvm-svn: 85088
|