Dan Gohman
b0604c0b83
Use iterators instead of indices in a few more places.
...
llvm-svn: 111143
2010-08-16 16:27:53 +00:00
Dan Gohman
64c713c605
Micro-optimize SCEVConstant comparison.
...
llvm-svn: 111142
2010-08-16 16:25:35 +00:00
Dan Gohman
6d808db278
Move SCEVNAryExpr's virtual member functions out of line, and convert
...
them to iterators.
llvm-svn: 111140
2010-08-16 16:21:27 +00:00
Dan Gohman
d55de2457e
Use iterators instead of indices in simple cases.
...
llvm-svn: 111138
2010-08-16 16:16:11 +00:00
Dan Gohman
daec40b96d
Avoid gratuitous inefficiency in ifndef NDEBUG code.
...
llvm-svn: 111137
2010-08-16 16:13:54 +00:00
Dan Gohman
345dc8add7
Make one getAddExpr call when analyzing a+b+c+d+e+... instead of one
...
for each add instruction. Ditto for Mul.
llvm-svn: 111136
2010-08-16 16:03:49 +00:00
Dan Gohman
fec602e7c5
Delete an unused function.
...
llvm-svn: 111135
2010-08-16 15:57:14 +00:00
Dan Gohman
7900e1ace3
Instead of having CollectSubexpr's categorize operands as interesting or
...
uninteresting, just put all the operands on one list and make
GenerateReassociations make the decision about what's interesting.
This is simpler, and it avoids an extra ScalarEvolution::getAddExpr call.
llvm-svn: 111133
2010-08-16 15:50:00 +00:00
Dan Gohman
38d11cdfe0
Put add operands in ScalarEvolution-canonical order, when convenient.
...
This isn't necessary, because ScalarEvolution sorts them anyway,
but it's tidier this way.
llvm-svn: 111132
2010-08-16 15:39:27 +00:00
Dan Gohman
3921a903bb
Specialize FoldingSetTrait<SCEV>, providing implementations of node
...
comparison and hash computation which don't require constructing
temporary ID values.
llvm-svn: 111131
2010-08-16 15:31:45 +00:00
Dan Gohman
06963ff7c4
Add hooks to FoldingSetTrait to allow specializations to provide
...
implementations of equality comparison and hash computation. This
can be used to optimize node lookup by avoiding creating lots of
temporary ID values just for hashing and comparison purposes.
llvm-svn: 111130
2010-08-16 15:30:39 +00:00
Dan Gohman
d4e78e0121
Tidy up whitespace in comments.
...
llvm-svn: 111129
2010-08-16 15:04:39 +00:00
Dan Gohman
d7f6f04d71
Constify FoldingSetNodeIDRef's Data.
...
llvm-svn: 111128
2010-08-16 15:03:24 +00:00
Dan Gohman
4446294688
Reverse the order of GetNodeProfile's arguments, for consistency
...
with FoldingSetTrait::Profile.
llvm-svn: 111127
2010-08-16 14:53:42 +00:00
Dan Gohman
8ba122de76
Fix indentation in example code in a comment.
...
llvm-svn: 111125
2010-08-16 14:45:36 +00:00
Dan Gohman
80b2503100
Avoid #include <ScalarEvolution.h> in LoopSimplify.cpp, which doesn't
...
actually use ScalarEvolution.
llvm-svn: 111124
2010-08-16 14:44:03 +00:00
Dan Gohman
9178d0792f
Instead, teach SimplifyCFG to trim non-address-taken blocks from
...
indirectbr destination lists.
llvm-svn: 111122
2010-08-16 14:41:14 +00:00
Dan Gohman
8ed4d1646e
Revert r111058, the lint check for indirectbr successors that aren't
...
address-taken. This can occur normally, if the code which took the
address got DCEd.
llvm-svn: 111121
2010-08-16 14:39:19 +00:00
Benjamin Kramer
0224854fdc
Test expects SSE, give him SSE.
...
llvm-svn: 111115
2010-08-15 23:32:03 +00:00
Oscar Fuentes
f5fe003dce
Updated LLVMLibDeps.cmake
...
llvm-svn: 111112
2010-08-15 22:14:42 +00:00
Oscar Fuentes
68565e313e
CMake: Improved COMMENT on a custom command
...
llvm-svn: 111111
2010-08-15 22:14:36 +00:00
Benjamin Kramer
3116e6f58d
Restore arch on these test, they fail on arm.
...
llvm-svn: 111109
2010-08-15 20:42:56 +00:00
Dale Johannesen
6e5cf0f5b6
Mark as XFAIL on darwin 8. PR 7886.
...
llvm-svn: 111108
2010-08-15 19:40:29 +00:00
Oscar Fuentes
ee14ce612a
Updated the GenLibDeps -> LLVMLibDeps.cmake transformation example.
...
llvm-svn: 111104
2010-08-15 15:08:27 +00:00
Argyrios Kyrtzidis
75b69c1de3
Revert r111082. No warnings for this common pattern.
...
llvm-svn: 111102
2010-08-15 10:27:23 +00:00
Mikhail Glushenkov
de1e03e890
Update tests.
...
llvm-svn: 111096
2010-08-15 07:07:24 +00:00
Mikhail Glushenkov
486898b881
Regenerate.
...
llvm-svn: 111095
2010-08-15 07:07:17 +00:00
Mikhail Glushenkov
10302168ea
llvmc: remove dynamic plugins.
...
llvm-svn: 111094
2010-08-15 07:07:12 +00:00
Eric Christopher
1470fe415c
Rework how the non-sse2 memory barrier is lowered so that the
...
encoding is correct for the built-in assembler.
Based on a patch from Chris.
llvm-svn: 111083
2010-08-14 21:51:50 +00:00
Argyrios Kyrtzidis
70b248e3ac
Add ATTRIBUTE_UNUSED to methods that are not supposed to be used.
...
llvm-svn: 111082
2010-08-14 21:35:10 +00:00
Chris Lattner
8426971169
improve indentation
...
llvm-svn: 111073
2010-08-14 17:26:09 +00:00
Bob Wilson
b1eb015fc8
T2I_rbin_irs rr variant is for disassembly only, so don't provide a pattern.
...
llvm-svn: 111068
2010-08-14 03:18:29 +00:00
Ted Kremenek
8091488511
Update CMake build.
...
llvm-svn: 111063
2010-08-14 01:55:09 +00:00
Dan Gohman
afb3db46d2
LoopSimplify shouldn't split loop backedges that use indirectbr. PR7867.
...
llvm-svn: 111061
2010-08-14 00:43:09 +00:00
Dan Gohman
d04a608a73
Teach SimplifyCFG how to simplify indirectbr instructions.
...
- Eliminate redundant successors.
- Convert an indirectbr with one successor into a direct branch.
Also, generalize SimplifyCFG to be able to be run on a function entry block.
It knows quite a few simplifications which are applicable to the entry
block, and it only needs a few checks to avoid trouble with the entry block.
llvm-svn: 111060
2010-08-14 00:29:42 +00:00
Jim Grosbach
a4d3174cba
Add a local stack object block allocation pass. This is still an
...
experimental pass that allocates locals relative to one another before
register allocation and then assigns them to actual stack slots as a block
later in PEI. This will eventually allow targets with limited index offset
range to allocate additional base registers (not just FP and SP) to
more efficiently reference locals, as well as handle situations where
locals cannot be referenced via SP or FP at all (dynamic stack realignment
together with variable sized objects, for example). It's currently
incomplete and almost certainly buggy. Work in progress.
Disabled by default and gated via the -enable-local-stack-alloc command
line option.
rdar://8277890
llvm-svn: 111059
2010-08-14 00:15:52 +00:00
Dan Gohman
422c164d8d
Add a lint check for an indirectbr destination which has not
...
had its address taken.
llvm-svn: 111058
2010-08-13 23:56:28 +00:00
Bob Wilson
92bf5a7425
Add a Thumb2 t2RSBrr instruction for disassembly only.
...
This fixes another part of PR7792.
llvm-svn: 111057
2010-08-13 23:24:25 +00:00
Jakob Stoklund Olesen
44b77ea344
Clean up the Spiller.h interface.
...
The earliestStart argument is entirely specific to linear scan allocation, and
can be easily calculated by RegAllocLinearScan.
Replace std::vector with SmallVector.
llvm-svn: 111055
2010-08-13 22:56:53 +00:00
Bob Wilson
ca672ee828
Temporarily disable tail calls on ARM to work around some linker problems.
...
llvm-svn: 111050
2010-08-13 22:43:33 +00:00
Bob Wilson
0883c6aae3
Move the Thumb2 SSAT and USAT optional shift operator out of the
...
instruction opcode. This fixes part of PR7792.
llvm-svn: 111047
2010-08-13 21:48:10 +00:00
Dan Gohman
076597a026
Various optimizations. Don't compare two loops' depths
...
when they are the same loop. Don't compare two instructions'
loop depths when they are in the same block.
llvm-svn: 111045
2010-08-13 21:24:58 +00:00
Jakob Stoklund Olesen
70604cb116
Implement splitting inside a single block.
...
When a live range is contained a single block, we can split it around
instruction clusters. The current approach is very primitive, splitting before
and after the largest gap between uses.
llvm-svn: 111043
2010-08-13 21:18:48 +00:00
Dan Gohman
3e7c2a2040
Fix LSR's ExtractImmediate and ExtractSymbol to avoid calling
...
ScalarEvolution::getAddExpr, which can be pretty expensive, when nothing
has changed, which is pretty common.
llvm-svn: 111042
2010-08-13 21:17:19 +00:00
Bruno Cardoso Lopes
1eaa601d84
Add comments to some pattern fragments in x86
...
llvm-svn: 111041
2010-08-13 20:39:01 +00:00
Jim Grosbach
b1e8749e37
tidy up comments
...
llvm-svn: 111040
2010-08-13 20:32:35 +00:00
Dan Gohman
ecb279a1c2
When testing whether one loop contains another, test this directly
...
rather than testing whether the loop contains the other's header.
llvm-svn: 111039
2010-08-13 20:23:25 +00:00
Dan Gohman
02de74d4dc
Add a const.
...
llvm-svn: 111038
2010-08-13 20:17:27 +00:00
Dan Gohman
3650d2058f
When creating a symmetric SCEV with a constant operand, put
...
the constant operand on the left, as that's where ScalarEvolution
will end up canonicalizing to.
llvm-svn: 111037
2010-08-13 20:17:14 +00:00
Dan Gohman
de171ff360
An add recurrence is loop-invariant in any loop inside of its
...
associated loop. This avoids potentially expensive traversals
of the add recurrence's operands.
llvm-svn: 111034
2010-08-13 20:11:39 +00:00