| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.
llvm-svn: 96344
|
| |
|
|
| |
llvm-svn: 96109
|
| |
|
|
|
|
|
|
|
|
|
|
| |
and add a doxygen comment.
Cache the phi entry to avoid doing tons of
PHINode::getBasicBlockIndex calls in the common case.
On my insane testcase from re2c, this speeds up CGP from
617.4s to 7.9s (78x).
llvm-svn: 96083
|
| |
|
|
|
|
| |
instead of with pred_begin/end.
llvm-svn: 96078
|
| |
|
|
|
|
|
| |
container data. This prevents it from holding onto dangling
pointers and potentially behaving unpredictably.
llvm-svn: 95409
|
| |
|
|
|
|
|
|
|
|
|
|
| |
than the scaled register. This makes it more likely that subsequent
AddrModeMatcher queries will match the new address the same way as the
old, instead of accidentally matching what had been the base register
as the new scaled register, and then failing to match the scaled register.
This fixes some problems with address-mode sinking multiple muls into a
block, which will be a lot more common with some upcoming
LoopStrengthReduction changes.
llvm-svn: 93935
|
| |
|
|
| |
llvm-svn: 92611
|
| |
|
|
|
|
| |
introduced a non-deterministic behavior in the optimizer somewhere.
llvm-svn: 91598
|
| |
|
|
| |
llvm-svn: 90836
|
| |
|
|
| |
llvm-svn: 90487
|
| |
|
|
|
|
| |
Fix CodeGenPrepare to not try to split edges from indirectbr.
llvm-svn: 85690
|
| |
|
|
|
|
|
| |
load, to help SelectionDAG fold them into the loads, unless
conditions are unfavorable.
llvm-svn: 84271
|
| |
|
|
| |
llvm-svn: 82034
|
| |
|
|
| |
llvm-svn: 80766
|
| |
|
|
|
|
| |
constructors.
llvm-svn: 80049
|
| |
|
|
|
|
| |
This required converting a bunch of stuff off DOUT and other cleanups.
llvm-svn: 79819
|
| |
|
|
| |
llvm-svn: 78948
|
| |
|
|
|
|
| |
infrastructure work needed to get the contexts to where they need to be first.
llvm-svn: 78759
|
| |
|
|
|
|
| |
own struct type.
llvm-svn: 78610
|
| |
|
|
|
|
|
|
| |
change back are
metadata related, which I'm waiting on to avoid conflicting with Devang.
llvm-svn: 77721
|
| |
|
|
| |
llvm-svn: 77033
|
| |
|
|
|
|
| |
thanks to contexts-on-types. More to come.
llvm-svn: 77011
|
| |
|
|
| |
llvm-svn: 76702
|
| |
|
|
| |
llvm-svn: 76442
|
| |
|
|
|
|
| |
the [I|F]CmpInst constructors. Who knew!?
llvm-svn: 75200
|
| |
|
|
| |
llvm-svn: 74748
|
| |
|
|
| |
llvm-svn: 73362
|
| |
|
|
|
|
|
| |
addresses, involving Base values which do not have Pointer type.
This fixes PR4297.
llvm-svn: 72739
|
| |
|
|
|
|
| |
FindFunctionBackedges function.
llvm-svn: 70819
|
| |
|
|
| |
llvm-svn: 68485
|
| |
|
|
| |
llvm-svn: 67811
|
| |
|
|
|
|
|
| |
called from llc, not opt, but it's an IR level
optimization nevertheless.)
llvm-svn: 67724
|
| |
|
|
|
|
|
|
| |
make sure the copy is inserted before the try range (unless it's used as an input to the invoke, then insert it after the last use), not at the end of the bb.
Also re-apply r66140 which was disabled as a workaround.
llvm-svn: 66976
|
| |
|
|
|
|
|
|
|
|
|
| |
in the Ada testcase. Reverting this only covers up
the real problem, which is a nasty conceptual difficulty
in the phi elimination pass: when eliminating phi nodes
in landing pads, the register copies need to come before
the invoke, not at the end of the basic block which is
too late... See PR3784.
llvm-svn: 66826
|
| |
|
|
| |
llvm-svn: 66140
|
| |
|
|
|
|
| |
other passes, e.g. loop strength reduction.
llvm-svn: 65134
|
| |
|
|
|
|
| |
printing getName(), so that unnamed values are printed correctly.
llvm-svn: 64468
|
| |
|
|
|
|
| |
forget about already inserted expressions.
llvm-svn: 64362
|
| |
|
|
|
|
|
|
|
| |
There is now a direct way from value-use-iterator to incoming block in PHINode's API.
This way we avoid the iterator->index->iterator trip, and especially the costly
getOperandNo() invocation. Additionally there is now an assertion that the iterator
really refers to one of the PHI's Uses.
llvm-svn: 62869
|
| |
|
|
| |
llvm-svn: 62470
|
| |
|
|
|
|
| |
suggested by Chris.
llvm-svn: 62099
|
| |
|
|
| |
llvm-svn: 61752
|
| |
|
|
|
|
|
|
| |
edges of single block loops. It now does a DFS walk to find loop back edges.
- Use SplitBlockPredecessors to factor out common predecessors of the critical edge destination. This is disabled for now due to some regressions.
llvm-svn: 61248
|
| |
|
|
|
|
|
| |
predecessor is itself. This doesn't make sense, and this is
a dead infinite loop anyway.
llvm-svn: 60210
|
| |
|
|
|
|
|
|
|
|
| |
wrappers around the interesting code and use an obscure iterator
abstraction that dates back many many years.
Move EraseDeadInstructions to Transforms/Utils and name it
RecursivelyDeleteTriviallyDeadInstructions.
llvm-svn: 60191
|
| |
|
|
|
|
| |
it ends up being the entry block.
llvm-svn: 60180
|
| |
|
|
| |
llvm-svn: 60163
|
| |
|
|
|
|
|
|
|
|
| |
performance in most cases on the Grawp tester, but does speed some
things up (like shootout/hash by 15%). This also doesn't impact
compile time in a noticable way on the Grawp tester.
It also, of course, gets the testcase it was designed for right :)
llvm-svn: 60120
|
| |
|
|
| |
llvm-svn: 60088
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
heuristic: the value is already live at the new memory operation if
it is used by some other instruction in the memop's block. This is
cheap and simple to compute (moreso than full liveness).
This improves the new heuristic even more. For example, it cuts two
out of three new instructions out of 255.vortex:DbmFileInGrpHdr,
which is one of the functions that the heuristic regressed. This
overall eliminates another 40 instructions from 403.gcc and visibly
reduces register pressure in 255.vortex (though this only actually
ends up saving the 2 instructions from the whole program).
llvm-svn: 60084
|