1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
Commit Graph

52655 Commits

Author SHA1 Message Date
Chris Lattner
2a0366af9e add a helper for matching "1".
llvm-svn: 83760
2009-10-11 07:51:25 +00:00
Chris Lattner
1832a32b78 implement a transformation in jump threading that is currently
done by condprop, but do it in a much more general form.  The
basic idea is that we can do a limited form of tail duplication
in the case when we have a branch on a phi.  Moving the branch
up in to the predecessor block makes instruction selection
much easier and encourages chained jump threadings.

llvm-svn: 83759
2009-10-11 07:24:57 +00:00
Chris Lattner
9a90dc5b0c another testcase jump threading shouldn't crash on.
llvm-svn: 83758
2009-10-11 07:11:11 +00:00
Chris Lattner
90aeacd46f rename a file, remove a poorly reduced testcase.
llvm-svn: 83757
2009-10-11 07:10:28 +00:00
Chris Lattner
562cc63c29 restructure some code, no functionality change.
llvm-svn: 83756
2009-10-11 04:40:21 +00:00
Chris Lattner
b4e9fb6967 factor some code better and move a function, no functionality change.
llvm-svn: 83755
2009-10-11 04:33:43 +00:00
Chris Lattner
525c0272aa make jump threading on a phi with undef inputs happen.
llvm-svn: 83754
2009-10-11 04:18:15 +00:00
Chris Lattner
a9bbfdf699 there is no need to run mem2reg after jump threading at LTO time now.
llvm-svn: 83753
2009-10-11 04:17:33 +00:00
Chris Lattner
969d1df7ba fix a bunch of bad formatting, delete the dead
ConstantInt::TheTrueVal/TheFalseVal members.

llvm-svn: 83752
2009-10-11 04:03:22 +00:00
Chris Lattner
dedd4ca17b merge two tests.
llvm-svn: 83751
2009-10-11 03:55:30 +00:00
Chris Lattner
3acb62d9ea simplify some run lines, convert a test to filecheck.
llvm-svn: 83750
2009-10-11 03:54:21 +00:00
Ted Kremenek
13cad039f8 Update release notes blurb on the static analyzer.
llvm-svn: 83749
2009-10-11 03:10:25 +00:00
Chris Lattner
8b521613d3 rewrite LCSSA to use SSAUpdate, to only return true if it modifies
the IR, and to implement the FIXME'd optimization.

llvm-svn: 83748
2009-10-11 02:53:37 +00:00
Chris Lattner
1b8c1d1d29 clean up and simplify some code. Don't use setvector when things will be
inserted only once, just use vector.  Don't compute ExitBlocks unless we
need it, change std::sort to array_pod_sort.

llvm-svn: 83747
2009-10-11 01:07:15 +00:00
Chris Lattner
37ff3c0ed1 switch GVN to use SSAUpdater. Besides removing a lot of complexity
from GVN, this also speeds it up, inserts fewer PHI nodes (see the
testcase) and allows it to remove more loads (due to fewer PHI nodes
standing in the way).

llvm-svn: 83746
2009-10-10 23:50:30 +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
10b6af716f clarify
llvm-svn: 83743
2009-10-10 23:05:42 +00:00
Chris Lattner
31d3137c01 remove dead code
llvm-svn: 83742
2009-10-10 23:04:12 +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
Anton Korobeynikov
1f9ff55cbc It seems that OR operation does not affect status reg at all.
Remove impdef of SRW. This fixes PR4779

llvm-svn: 83739
2009-10-10 22:17:47 +00:00
Chris Lattner
ce616c28ef fix broken link
llvm-svn: 83738
2009-10-10 22:15:25 +00:00
Chris Lattner
330bc88468 final changes.
llvm-svn: 83737
2009-10-10 22:13:38 +00:00
Chris Lattner
e584af1294 down to 'major changes'
llvm-svn: 83736
2009-10-10 22:02:58 +00:00
Chris Lattner
e747b10bc3 more updates
llvm-svn: 83735
2009-10-10 21:40:13 +00:00
Chris Lattner
513fd3ac2b add a link to the GSG for info on how to check out svn trunk
llvm-svn: 83734
2009-10-10 21:37:16 +00:00
Chris Lattner
a9d2468440 x86 uses 5 operands for most memory refs now.
llvm-svn: 83733
2009-10-10 21:30:55 +00:00
Duncan Sands
9a6f3eb8ae More spelling and grammar tweaks.
llvm-svn: 83728
2009-10-10 20:06:04 +00:00
Benjamin Kramer
453e8ae2be More spelling fixes.
llvm-svn: 83724
2009-10-10 19:45:13 +00:00
Duncan Sands
4e12fa3691 Spelling fixes.
llvm-svn: 83722
2009-10-10 19:30:16 +00:00
Chris Lattner
074b4dee13 more tweaks
llvm-svn: 83721
2009-10-10 19:26:21 +00:00
Duncan Sands
bf2f32c08b Remove an inappropriate line in the description of the
clang static analyser.  Decrease duplication in the text.

llvm-svn: 83720
2009-10-10 19:16:25 +00:00
Chris Lattner
8f7bd86796 continue decoding chris scribble.
llvm-svn: 83719
2009-10-10 19:00:55 +00:00
Chris Lattner
3c9d2553e9 remove some dead passes
llvm-svn: 83717
2009-10-10 18:40:48 +00:00
Chris Lattner
42f4178529 checkpoint.
llvm-svn: 83716
2009-10-10 18:33:13 +00:00
Chris Lattner
1f970dea03 fix broken anchors.
llvm-svn: 83715
2009-10-10 18:26:06 +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
75e5de9243 Change jump threading to use the new SSAUpdater class instead of
DemoteRegToStack.  This makes it more efficient (because it isn't
creating a ton of load/stores that are eventually removed by a later
mem2reg), and more slightly more effective (because those load/stores
don't get in the way of threading).

llvm-svn: 83706
2009-10-10 09:05:58 +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
Chris Lattner
54621efc37 add some WeakVH::operator='s. Without these, assigning
a Value* to a WeakVH was constructing a temporary WeakVH
(due to the implicit assignment operator).  This avoids
that cost.

llvm-svn: 83704
2009-10-10 08:27:29 +00:00
Chris Lattner
70895041a7 change some static_cast into cast, pointed out by Gabor.
llvm-svn: 83703
2009-10-10 08:01:27 +00:00
Chris Lattner
76985b43e3 add a version of PHINode::getIncomingBlock that takes a raw
Use, to complement the version that takes a use_iterator.

llvm-svn: 83702
2009-10-10 07:42:42 +00:00
Chris Lattner
317eb8ff20 random tidying
llvm-svn: 83701
2009-10-10 06:22:45 +00:00
Dan Gohman
605f85e0e6 Create a new InstrEmitter class for translating SelectionDAG nodes
into MachineInstrs. This is mostly just moving the code from
ScheduleDAGSDNodesEmit.cpp into a new class. This decouples MachineInstr
emitting from scheduling.

llvm-svn: 83699
2009-10-10 01:32:21 +00:00
Dan Gohman
3b025b778b Make getMachineNode return a MachineSDNode* instead of a generic SDNode*
since it won't do any folding. This will help avoid some inconvenient
casting.

llvm-svn: 83698
2009-10-10 01:29:16 +00:00
Dan Gohman
84a61978de Remove a no-longer-necessary #include.
llvm-svn: 83697
2009-10-10 00:36:09 +00:00
Dan Gohman
177b8de981 Replace X86's CanRematLoadWithDispOperand by calling the target-independent
MachineInstr::isInvariantLoad instead, which has the benefit of being
more complete.

llvm-svn: 83696
2009-10-10 00:34:18 +00:00
Dan Gohman
b98d95f4f9 Fix a missing initialization of PostRAScheduler's AA member.
llvm-svn: 83695
2009-10-10 00:15:38 +00:00
Dan Gohman
5141b26ffa The ScheduleDAG framework now requires an AliasAnalysis argument, though
it isn't needed in the ScheduleDAGSDNodes schedulers.

llvm-svn: 83691
2009-10-09 23:33:48 +00:00