Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.68 - 1.69
---
Log message:
Fix misue of iterator pointing to erased object. Uncovered by
_GLIBCXX_DEBUG.
---
Diffs of the changes: (+5 -4)
BranchFolding.cpp |9 +
1 files changed, 5 insertions(+), 4
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.67 - 1.68
MachineBasicBlock.cpp updated: 1.46 - 1.47
---
Log message:
Move CorrectExtraCFGEdges() from BranchFolding.cpp to a MachineBasicBlock
method.
---
Diffs of the changes: (+64 -75)
BranchFolding.cpp | 79
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.65 - 1.66
---
Log message:
Throttle tail merging; handling blocks with large numbers of predecessors
is too slow.
---
Diffs of the changes: (+6 -2)
BranchFolding.cpp |8 ++--
1 files changed, 6 insertions(+), 2
BranchFolding.cpp updated: 1.65 - 1.66
---
Log message:
Throttle tail merging; handling blocks with large numbers of
predecessors
is too slow.
Thanks Dale,
Please make this a hidden command line option like loop-unswitch-
threshold.
-Chris
---
Diffs of the changes: (+6 -2)
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.63 - 1.64
MachineBasicBlock.cpp updated: 1.45 - 1.46
---
Log message:
Move ReplaceUsesOfBlockWith() out of BranchFolding into a MachineBasicBlock
general facility.
---
Diffs of the changes: (+29 -40)
BranchFolding.cpp
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.64 - 1.65
---
Log message:
Tail merging wasn't working for predecessors of landing pads. PR 1496:
http://llvm.org/PR1496 .
---
Diffs of the changes: (+22 -0)
BranchFolding.cpp | 22 ++
1 files
Hi Dale,
Arrange for only 1 of multiple branches to landing pad to be kept.
you seem to assume that there is at most one landing pad block for
a given MBB, i.e. that all invokes in the MBB unwind to the same
landing pad. Are you sure that's true?
Ciao,
Duncan.
Hi Dale,
Arrange for only 1 of multiple branches to landing pad to be kept.
it struck me that this patch seems to assume that if a successor
is a landing pad then it is necessarily a landing pad for the
current MBB. But couldn't it be the landing pad for some other
MBB, and simply a normal
On Jun 1, 2007, at 12:56 PM, Duncan Sands wrote:
Hi Dale,
Arrange for only 1 of multiple branches to landing pad to be kept.
That should be successors, not branches, but you've gotten past
that
it struck me that this patch seems to assume that if a successor
is a landing pad then it
Hi Dale,
it struck me that this patch seems to assume that if a successor
is a landing pad then it is necessarily a landing pad for the
current MBB.
I wasn't intending to assume that; how so?
But couldn't it be the landing pad for some other
MBB, and simply a normal successor for
On Jun 1, 2007, at 1:24 PM, Duncan Sands wrote:
Suppose a successor S1 has isLandingPad true because it is
a landing pad for some other MBB, and some later successor (S2)
has isLandingPad true because it is the landing pad for this
MBB. What will happen? When we get to S1 foundPad is set to
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.61 - 1.62
---
Log message:
Implement smarter algorithm for choosing which blocks to tail-merge.
See test/CodeGen/X86/test-pic-jtbl.ll for a case where it works well;
shaves another 10K off our favorite benchmark. I was
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.62 - 1.63
---
Log message:
Fix CorrectExtraCFGEdges to allow for multiple LandingPad targets.
---
Diffs of the changes: (+6 -9)
BranchFolding.cpp | 15 ++-
1 files changed, 6 insertions(+), 9 deletions(-)
On Jun 1, 2007, at 1:28 PM, Dale Johannesen wrote:
On Jun 1, 2007, at 1:24 PM, Duncan Sands wrote:
Suppose a successor S1 has isLandingPad true because it is
a landing pad for some other MBB, and some later successor (S2)
has isLandingPad true because it is the landing pad for this
MBB.
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.60 - 1.61
---
Log message:
Arrange for only 1 of multiple branches to landing pad to be kept.
Do not remove empty landing pads (EH table needs to be updated)
---
Diffs of the changes: (+13 -4)
BranchFolding.cpp | 17
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.58 - 1.59
---
Log message:
Make stable_sort in tail merging actually be stable (it never was, but didn't
matter until my last change). Reenable tail merging by default.
---
Diffs of the changes: (+16 -1)
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.59 - 1.60
---
Log message:
Changed per review comment.
---
Diffs of the changes: (+2 -3)
BranchFolding.cpp |5 ++---
1 files changed, 2 insertions(+), 3 deletions(-)
Index: llvm/lib/CodeGen/BranchFolding.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.56 - 1.57
---
Log message:
Fix for PR1444: http://llvm.org/PR1444 : do not create two successors to the
same block.
Temporarily, this breaks CodeGen/Generic/2006-02-12-InsertLibraryCall.ll
by exposing an unrelated latent
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.57 - 1.58
---
Log message:
Blocks that cond-br and uncond-br/fallthrough to same block should have
only one successor.
---
Diffs of the changes: (+4 -1)
BranchFolding.cpp |5 -
1 files changed, 4 insertions(+), 1
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.55 - 1.56
---
Log message:
Two tail merging improvements:
When considering blocks with more than 2 predecessors, merge the block with
the largest number of matching insns, rather than the first block found.
Considering that 1
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.54 - 1.55
LLVMTargetMachine.cpp updated: 1.12 - 1.13
---
Log message:
Make tail merging the default, except on powerPC. There was no prior art
for a target-dependent default with a command-line override; this way
should be
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.53 - 1.54
---
Log message:
Remove some unneeded branches. (spotted by Evan, thanks)
---
Diffs of the changes: (+1 -0)
BranchFolding.cpp |1 +
1 files changed, 1 insertion(+)
Index:
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.52 - 1.53
---
Log message:
Remove extra CFG edges before doing these passes; it makes them happier.
---
Diffs of the changes: (+16 -1)
BranchFolding.cpp | 17 -
1 files changed, 16 insertions(+), 1
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.51 - 1.52
---
Log message:
Do not generate branches to entry block. This fixes several test suite
failures on PPC (can happen only when prologue code is null)
---
Diffs of the changes: (+19 -4)
BranchFolding.cpp | 23
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.50 - 1.51
---
Log message:
Make tail merging handle many more cases (all it can, I think).
---
Diffs of the changes: (+91 -32)
BranchFolding.cpp | 123 +++---
1 files
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.49 - 1.50
---
Log message:
Handle some non-exit blocks in tail merging.
---
Diffs of the changes: (+81 -11)
BranchFolding.cpp | 92 +++---
1 files changed, 81
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.45 - 1.46
---
Log message:
Fix PR1228: http://llvm.org/PR1228 and
CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll
---
Diffs of the changes: (+8 -2)
BranchFolding.cpp | 10 --
1 files changed, 8
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.44 - 1.45
RegisterScavenging.cpp updated: 1.12 - 1.13
---
Log message:
maintain LiveIn when splitting blocks (register scavenging needs it)
---
Diffs of the changes: (+29 -1)
BranchFolding.cpp | 23
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.43 - 1.44
---
Log message:
Remove isAccessable.
---
Diffs of the changes: (+4 -4)
BranchFolding.cpp |8
1 files changed, 4 insertions(+), 4 deletions(-)
Index: llvm/lib/CodeGen/BranchFolding.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.42 - 1.43
---
Log message:
Make branch folding behave in the presence of landing pads.
---
Diffs of the changes: (+30 -25)
BranchFolding.cpp | 55 +-
1 files changed,
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.41 - 1.42
---
Log message:
Fixes PR 1200: http://llvm.org/PR1200
---
Diffs of the changes: (+29 -13)
BranchFolding.cpp | 42 +-
1 files changed, 29 insertions(+), 13
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.38 - 1.39
LiveIntervalAnalysis.cpp updated: 1.203 - 1.204
PHIElimination.cpp updated: 1.52 - 1.53
RegAllocLinearScan.cpp updated: 1.135 - 1.136
RegAllocLocal.cpp updated: 1.98 - 1.99
RegAllocSimple.cpp updated: 1.81 - 1.82
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.37 - 1.38
LiveIntervalAnalysis.cpp updated: 1.200 - 1.201
PHIElimination.cpp updated: 1.51 - 1.52
RegAllocLinearScan.cpp updated: 1.134 - 1.135
RegAllocLocal.cpp updated: 1.96 - 1.97
RegAllocSimple.cpp updated: 1.77 - 1.78
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.33 - 1.34
---
Log message:
Minor code layout tweak: if we have something like this:
if (cond) goto BB2
BB1:
...
return;
BB2:
...
Move BB1 to the end of the function so that the code falls through in the
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.34 - 1.35
---
Log message:
make the previous change more aggressive, moving any block with no fallthrough.
This speeds up yacr2 by 7% on a core2.
---
Diffs of the changes: (+11 -9)
BranchFolding.cpp | 20
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.35 - 1.36
---
Log message:
Fix another case we *don't* want to do this xform.
---
Diffs of the changes: (+26 -2)
BranchFolding.cpp | 28 ++--
1 files changed, 26 insertions(+), 2 deletions(-)
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.36 - 1.37
---
Log message:
Don't transform in another bad case: if the block is empty, it should be
simplified before we do this xform so that our cost model is accurate.
---
Diffs of the changes: (+2 -1)
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.32 - 1.33
---
Log message:
optimize single MBB loops better. In particular, produce:
LBB1_57:#bb207.i
movl 72(%esp), %ecx
movb (%ecx,%eax), %cl
movl 80(%esp), %edx
movb %cl,
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.31 - 1.32
---
Log message:
Unbreak VC++ build.
---
Diffs of the changes: (+1 -0)
BranchFolding.cpp |1 +
1 files changed, 1 insertion(+)
Index: llvm/lib/CodeGen/BranchFolding.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.30 - 1.31
DwarfWriter.cpp updated: 1.91 - 1.92
ELFWriter.cpp updated: 1.26 - 1.27
LiveInterval.cpp updated: 1.35 - 1.36
LiveIntervalAnalysis.cpp updated: 1.187 - 1.188
LiveVariables.cpp updated: 1.60 - 1.61
---
Log message:
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.29 - 1.30
---
Log message:
give branch folding a simple heuristic to decide which block to split so that
it inserts an uncond branch where it is less likely to cause a problem. This
fixes some perf issues on ppc.
---
Diffs
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.27 - 1.28
---
Log message:
enable branch folding with an option
---
Diffs of the changes: (+2 -1)
BranchFolding.cpp |3 ++-
1 files changed, 2 insertions(+), 1 deletion(-)
Index: llvm/lib/CodeGen/BranchFolding.cpp
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.28 - 1.29
---
Log message:
make tail merging more aggressive. If two blocks share a common tail, but the
tail is not an entire block for either of them, pick one, split it, then
merge the common part.
---
Diffs of the
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.26 - 1.27
---
Log message:
Make CanFallThrough more intelligent (so it can handle blocks with (e.g.) no
successors), and make island block movement more general.
This compiles CodeGen/X86/2006-04-27-ISelFoldingBug.ll to:
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.24 - 1.25
---
Log message:
improve deletion of blocks that just contain branches by knowing that
the pred block doesn't fall through into them if it's a jumptable.
---
Diffs of the changes: (+38 -33)
BranchFolding.cpp |
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.22 - 1.23
---
Log message:
turn off tail merging for now
---
Diffs of the changes: (+2 -0)
BranchFolding.cpp |2 ++
1 files changed, 2 insertions(+)
Index: llvm/lib/CodeGen/BranchFolding.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.23 - 1.24
---
Log message:
simplify code
---
Diffs of the changes: (+1 -1)
BranchFolding.cpp |2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
Index: llvm/lib/CodeGen/BranchFolding.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.20 - 1.21
---
Log message:
Enable tail merging by default.
---
Diffs of the changes: (+0 -4)
BranchFolding.cpp |4
1 files changed, 4 deletions(-)
Index: llvm/lib/CodeGen/BranchFolding.cpp
diff -u
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.21 - 1.22
---
Log message:
move single basic blocks that are neither fallen into nor fall out of into
a place more useful. In particular, if we can put them in a place where code
will be able to fall into it, do so.
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.18 - 1.19
---
Log message:
don't break infinite loops
---
Diffs of the changes: (+19 -6)
BranchFolding.cpp | 25 +++--
1 files changed, 19 insertions(+), 6 deletions(-)
Index:
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.14 - 1.15
---
Log message:
Add an experimental cross-jumping implementation.
This is currently disabled by default and limited in several ways, but does
have a positive effect.
---
Diffs of the changes: (+232 -14)
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.15 - 1.16
---
Log message:
Three changes:
1. Remove a bunch of ifdef'd code.
2. When a block just contains an uncond branch, change all blocks branching
to it to jump to the destination instead.
3. If branch analysis tells
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.16 - 1.17
---
Log message:
Transform code like:
jle FOO
jmp BAR
BAR:
into:
jle FOO
BAR:
... whoa!
---
Diffs of the changes: (+13 -2)
BranchFolding.cpp | 15 +--
1 files changed, 13 insertions(+),
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.17 - 1.18
---
Log message:
Use branch reversal to do stuff like this:
call L_strcmp$stub
testl %eax, %eax
- jne LBB26_208 #cond_true6020
- jmp LBB26_227 #bb7119
+ je LBB26_227#bb7119
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.12 - 1.13
---
Log message:
Enable deleting branches to successor blocks. With the previous patches,
branch folding can now compile stuff like this:
void foo(int W, int X, int Y, int Z) {
if (W 1) {
for (; X;--X)
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.13 - 1.14
---
Log message:
Teach the branch folder to update debug info if it removes blocks with line
# notes in it.
---
Diffs of the changes: (+23 -2)
BranchFolding.cpp | 25 +++--
1 files changed,
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.8 - 1.9
---
Log message:
disable some objectionable code, maybe we can bring this pass to life
---
Diffs of the changes: (+42 -7)
BranchFolding.cpp | 49 ++---
1 files
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.9 - 1.10
---
Log message:
falling off the end of a function is ok with an unreachable instruction.
---
Diffs of the changes: (+57 -28)
BranchFolding.cpp | 85 --
1
Changes in directory llvm/lib/CodeGen:
BranchFolding.cpp updated: 1.10 - 1.11
---
Log message:
disable this pass for now, it's causing issues
---
Diffs of the changes: (+4 -0)
BranchFolding.cpp |4
1 files changed, 4 insertions(+)
Index: llvm/lib/CodeGen/BranchFolding.cpp
diff
59 matches
Mail list logo