Benjamin Kramer
6d85bbc486
Make headers standalone, move a virtual method out of line.
...
llvm-svn: 144536
2011-11-14 17:22:45 +00:00
Chris Lattner
e1fe7061ce
land David Blaikie's patch to de-constify Type, with a few tweaks.
...
llvm-svn: 135375
2011-07-18 04:54:35 +00:00
Chris Lattner
04b988a1c0
fix a warning in TinyPtrVector, adopt it in SSAUpdater, saving some
...
mallocs.
llvm-svn: 135366
2011-07-18 01:43:58 +00:00
Devang Patel
214fa1739f
Simplify. Consolidate dbg.declare handling in AllocaPromoter.
...
llvm-svn: 134538
2011-07-06 21:09:55 +00:00
Cameron Zwarich
e425894eaf
Clean up the lazy initialization of DIBuilder a bit.
...
llvm-svn: 131956
2011-05-24 06:00:08 +00:00
Cameron Zwarich
462b5db500
Make LoadAndStorePromoter preserve debug info and create llvm.dbg.values when
...
promoting allocas to SSA variables. Fixes <rdar://problem/9479036>.
llvm-svn: 131953
2011-05-24 03:10:43 +00:00
Devang Patel
60fb94e8bf
Assing line number info to new PHIs created by SSA updater.
...
llvm-svn: 130551
2011-04-29 22:28:59 +00:00
Jay Foad
0d5ca4cf44
Don't include Operator.h from InstrTypes.h.
...
llvm-svn: 129271
2011-04-11 09:35:34 +00:00
Jay Foad
53632b7c03
Remove PHINode::reserveOperandSpace(). Instead, add a parameter to
...
PHINode::Create() giving the (known or expected) number of operands.
llvm-svn: 128537
2011-03-30 11:28:46 +00:00
Chris Lattner
f33b65080c
fix PR9017, a bug where we'd assert when promoting in unreachable
...
code.
llvm-svn: 124100
2011-01-24 03:29:07 +00:00
Chris Lattner
e6d5b3c4ce
Generalize LoadAndStorePromoter a bit and switch LICM
...
to use it.
llvm-svn: 123501
2011-01-15 00:12:35 +00:00
Chris Lattner
2cf8e75d34
Add a new LoadAndStorePromoter class, which implements the general
...
"promote a bunch of load and stores" logic, allowing the code to
be shared and reused.
llvm-svn: 123456
2011-01-14 19:36:13 +00:00
Duncan Sands
74aeda71dd
Have a few places that want to simplify phi nodes use SimplifyInstruction
...
rather than calling hasConstantValue. No intended functionality change.
llvm-svn: 119352
2010-11-16 17:41:24 +00:00
Duncan Sands
a95548a8d2
Reapply commit 112699, speculatively reverted by echristo, since
...
I'm sure it is harmless. Original commit message:
If PrototypeValue is erased in the middle of using the SSAUpdator
then the SSAUpdator may access freed memory. Instead, simply pass
in the type and name explicitly, which is all that was used anyway.
llvm-svn: 112810
2010-09-02 08:14:03 +00:00
Eric Christopher
f72b7040a2
Speculatively revert 112699 and 112702, they seem to be causing
...
self host errors on clang-x86-64.
llvm-svn: 112719
2010-09-01 17:29:10 +00:00
Duncan Sands
f7e2f45e1a
If PrototypeValue is erased in the middle of using the SSAUpdator
...
then the SSAUpdator may access freed memory. Instead, simply pass
in the type and name explicitly, which is all that was used anyway.
llvm-svn: 112699
2010-09-01 10:29:33 +00:00
Chris Lattner
fac07b1dca
implement SSAUpdater::RewriteUseAfterInsertions, a helpful form of RewriteUse.
...
llvm-svn: 112409
2010-08-29 04:54:06 +00:00
Bob Wilson
e81252b747
Combine the implementations of the core part of the SSAUpdater and
...
MachineSSAUpdater to avoid duplicating all the code.
llvm-svn: 103060
2010-05-04 23:18:19 +00:00
Bob Wilson
7716410af6
Fix a performance problem with the new SSAUpdater. This showed up in the
...
GCCAS time for MultiSource/Benchmarks/ASCI_Purple/SMG2000.
llvm-svn: 102009
2010-04-21 18:39:03 +00:00
Bob Wilson
ad00f21093
Re-commit my previous SSAUpdater changes. The previous version naively tried
...
to determine where to place PHIs by iteratively comparing reaching definitions
at each block. That was just plain wrong. This version now computes the
dominator tree within the subset of the CFG where PHIs may need to be placed,
and then places the PHIs in the iterated dominance frontier of each definition.
The rest of the patch is mostly the same, with a few more performance
improvements added in.
llvm-svn: 101612
2010-04-17 03:08:24 +00:00
Bob Wilson
5a3200f750
Revert all my SSAUpdater patches. The PHI placement algorithm is not correct
...
(what was I thinking?) and there's also a problem with LCSSA. I'll try again
later with fixes.
--- Reverse-merging r100263 into '.':
U lib/Transforms/Utils/SSAUpdater.cpp
--- Reverse-merging r100177 into '.':
G lib/Transforms/Utils/SSAUpdater.cpp
--- Reverse-merging r100148 into '.':
G lib/Transforms/Utils/SSAUpdater.cpp
--- Reverse-merging r100147 into '.':
U include/llvm/Transforms/Utils/SSAUpdater.h
G lib/Transforms/Utils/SSAUpdater.cpp
--- Reverse-merging r100131 into '.':
G include/llvm/Transforms/Utils/SSAUpdater.h
G lib/Transforms/Utils/SSAUpdater.cpp
--- Reverse-merging r100130 into '.':
G lib/Transforms/Utils/SSAUpdater.cpp
--- Reverse-merging r100126 into '.':
G include/llvm/Transforms/Utils/SSAUpdater.h
G lib/Transforms/Utils/SSAUpdater.cpp
--- Reverse-merging r100050 into '.':
D test/Transforms/GVN/2010-03-31-RedundantPHIs.ll
--- Reverse-merging r100047 into '.':
G include/llvm/Transforms/Utils/SSAUpdater.h
G lib/Transforms/Utils/SSAUpdater.cpp
llvm-svn: 100264
2010-04-03 03:50:38 +00:00
Bob Wilson
71b0b33e05
Add a DEBUG_TYPE for the SSAUpdater.
...
llvm-svn: 100263
2010-04-03 03:28:44 +00:00
Bob Wilson
88d149d129
Recommit 100158 now that the buildbots are happy again.
...
llvm-svn: 100177
2010-04-02 05:09:46 +00:00
Bob Wilson
4b5f895975
Revert 100158 in case it is causing some of the buildbot problems.
...
llvm-svn: 100164
2010-04-02 01:22:49 +00:00
Bob Wilson
ab18888a5a
Check for terminating conditions before adding PHIs to the worklists.
...
This is more efficient than adding them to the worklist and then ignoring them.
llvm-svn: 100158
2010-04-02 00:10:41 +00:00
Bob Wilson
1b646b39e2
Remove trailing whitespace.
...
llvm-svn: 100148
2010-04-01 23:06:38 +00:00
Bob Wilson
08cc4030dd
Rewrite another SSAUpdater function to avoid recursion.
...
llvm-svn: 100147
2010-04-01 23:05:58 +00:00
Bob Wilson
bfd85d79c1
Change another SSAUpdater function to avoid recursion.
...
llvm-svn: 100131
2010-04-01 20:04:30 +00:00
Bob Wilson
39e3a8e9f7
Simplify the code to check for existing PHIs, now that it is only used in
...
one place. This removes the template function added in svn 94690.
llvm-svn: 100130
2010-04-01 19:53:48 +00:00
Bob Wilson
205385244c
The SSAUpdater should avoid recursive traversals of the CFG, since that may
...
blow out the stack for really big functions. Start by fixing an easy case.
llvm-svn: 100126
2010-04-01 18:46:59 +00:00
Bob Wilson
2a872616de
Rewrite part of the SSAUpdater to be more careful about inserting redundant
...
PHIs. The previous algorithm was unable to reliably detect when existing
PHIs in a cycle can be reused. I'm still working on reducing a testcase.
Radar 7711900.
llvm-svn: 100047
2010-03-31 20:51:00 +00:00
Bob Wilson
2e1a609654
Avoid creating redundant PHIs in SSAUpdater::GetValueInMiddleOfBlock.
...
This was already being done in SSAUpdater::GetValueAtEndOfBlock so I've
just changed SSAUpdater to check for existing PHIs in both places.
llvm-svn: 94690
2010-01-27 22:01:02 +00:00
David Greene
991e882855
Change errs() to dbgs().
...
llvm-svn: 92603
2010-01-05 01:26:49 +00:00
Chris Lattner
1cbad45619
improve indentation avoid a pointless conversion from weakvh to trackingvh,
...
no functionality change.
llvm-svn: 91848
2009-12-21 22:43:03 +00:00
Chris Lattner
c54fd1e777
fix PR5837 by having SSAUpdate reuse phi nodes for the
...
'GetValueInMiddleOfBlock' case, instead of inserting
duplicates.
A similar fix is almost certainly needed by the machine-level
SSAUpdate implementation.
llvm-svn: 91820
2009-12-21 07:16:11 +00:00
Chris Lattner
422a3ff7d5
add an assert to make it really clear what this is doing. Return singularval as
...
a compile time perf optimization to avoid a load.
llvm-svn: 90507
2009-12-04 01:03:32 +00:00
Chris Lattner
803539f022
alternate fix for PR5258 which avoids worklist problems, with reduced testcase.
...
llvm-svn: 84667
2009-10-20 20:27:49 +00:00
Torok Edwin
bdcd45a9d6
Fix PR5258, jump-threading creating invalid PHIs.
...
When an incoming value for a PHI is updated, we must also updated all other
incoming values for the same BB to match, otherwise we create invalid PHIs.
llvm-svn: 84638
2009-10-20 15:42:00 +00:00
Duncan Sands
4cde5474aa
Strip trailing white space.
...
llvm-svn: 84256
2009-10-16 15:20:13 +00:00
Chris Lattner
0aa320ae4d
add a simple helper method.
...
llvm-svn: 83745
2009-10-10 23:41:48 +00:00
Chris Lattner
acf73d9839
add ability for clients of SSAUpdater to find out about the
...
PHI nodes inserted.
llvm-svn: 83744
2009-10-10 23:15:24 +00:00
Chris Lattner
db4d523cca
add the ability to get a rewritten value from the middle of a block,
...
not just at the end. Add a big comment explaining when this could
be useful (which never happens for jump threading).
llvm-svn: 83741
2009-10-10 23:00:11 +00:00
Chris Lattner
9899ce267c
rename GetValueInBlock -> GetValueAtEndOfBlock to better reflect
...
what it does.
llvm-svn: 83740
2009-10-10 22:41:58 +00:00
Chris Lattner
0561804097
use a typedef instead of spelling out an insane type. Yay for auto someday.
...
llvm-svn: 83707
2009-10-10 09:09:20 +00:00
Chris Lattner
9c5aa00411
Implement an efficient and fully general SSA update mechanism that
...
works on unstructured CFGs. This implements PR217, our oldest open PR.
llvm-svn: 83705
2009-10-10 09:04:27 +00:00