Bill Wendling
1c40c8c242
Oy! When reverting r68073, I added in experimental code. Sorry...
...
llvm-svn: 68099
2009-03-31 08:41:31 +00:00
Owen Anderson
59cff6919d
Remove the "fast" cases for spill and restore point determination, as these were subtlely wrong in obscure cases. Patch the testcase
...
to account for this change.
llvm-svn: 68093
2009-03-31 08:27:09 +00:00
Bill Wendling
4706abded2
Revert r68073. It's causing a failure in the Apple-style builds.
...
llvm-svn: 68092
2009-03-31 08:26:26 +00:00
Chris Lattner
95a32aa18b
shrink subclassid, liberating some bits for future (ab)use.
...
llvm-svn: 68087
2009-03-31 07:25:22 +00:00
Dan Gohman
cba99ee717
Fix live-out reg logic to not insert over-aggressive AssertZExt
...
instructions. This fixes lua.
llvm-svn: 68083
2009-03-31 01:38:29 +00:00
Evan Cheng
5c02e62620
X86 address mode isel tweak. If the base of the address is also used by a CopyToReg (i.e. it's likely live-out), do not fold the sub-expressions into the addressing mode to avoid computing the address twice. The CopyToReg use will be isel'ed to a LEA, re-use it for address instead.
...
This is not yet enabled.
llvm-svn: 68082
2009-03-31 01:13:53 +00:00
Douglas Gregor
41ab75e9ef
Really, really fix PointerUnion3::is
...
llvm-svn: 68079
2009-03-31 00:34:31 +00:00
Dan Gohman
29694088d3
Except in asm-verbose mode, avoid printing labels for blocks that are
...
only reachable via fall-through edges. This dramatically reduces the
number of labels printed, and thus also the number of labels the
assembler must parse and remember.
llvm-svn: 68073
2009-03-30 22:55:17 +00:00
Devang Patel
ec65625744
Loop Index Split can eliminate a loop if it can determin if loop body is executed only once. There was a bug in determining IV based value of the iteration for which the loop body is executed. Fix it.
...
llvm-svn: 68071
2009-03-30 22:24:10 +00:00
Douglas Gregor
0beaefea25
Make PointerUnion3::get work properly
...
llvm-svn: 68067
2009-03-30 21:44:13 +00:00
Evan Cheng
3e30bcbd69
When optimzing a mul by immediate into two, the resulting mul's should get a x86 specific node to avoid dag combiner from hacking on them further.
...
llvm-svn: 68066
2009-03-30 21:36:47 +00:00
Evan Cheng
d7824e208a
Turn a 2-address instruction into a 3-address one when it's profitable even if the two-address operand is killed.
...
e.g.
%reg1024<def> = MOV r1
%reg1025<def> = ADD %reg1024, %reg1026
r0 = MOV %reg1025
If it's not possible / profitable to commute ADD, then turning ADD into a LEA saves a copy.
llvm-svn: 68065
2009-03-30 21:34:07 +00:00
Chris Lattner
ccc73c9327
update comment.
...
llvm-svn: 68060
2009-03-30 20:44:04 +00:00
Bill Wendling
76042faa52
Balance out quote in debug output.
...
llvm-svn: 68059
2009-03-30 20:32:22 +00:00
Bill Wendling
3b2cea6ef5
Fix grammar-o in comment.
...
llvm-svn: 68057
2009-03-30 20:30:02 +00:00
Chris Lattner
a172ae1d4f
add a PointerUnion3 class and generalize PointerUnion to work with
...
anything pointer-like, which may or may not actually be a pointer.
llvm-svn: 68056
2009-03-30 20:29:27 +00:00
Chris Lattner
2d00a451cb
fix the PointerLikeTypeTraits specialization for PointerIntPair to
...
allow the traits to be specified as well.
llvm-svn: 68055
2009-03-30 20:28:50 +00:00
Dan Gohman
abcfb30fc2
Constify arguments in isSuccessor and isLayoutSuccessor.
...
llvm-svn: 68054
2009-03-30 20:06:29 +00:00
Dan Gohman
d85cf9d361
Update the polygen grammer to reflect that zext and sext are no longer
...
valid argument attributes (zeroext and signext are).
llvm-svn: 68053
2009-03-30 19:59:02 +00:00
John Mosby
9b1b8d54fe
docs/TestingGuide.html: correction to prev. text (objdir!=srcdir required for running test-suite), removed refs to llvm-test
...
llvm-svn: 68051
2009-03-30 18:56:53 +00:00
Bob Wilson
d59a64d436
Fix comment to match function name.
...
llvm-svn: 68050
2009-03-30 18:49:37 +00:00
Devang Patel
94dbbb5768
getEntryFor() may invalidate DenseMap iterator.
...
Walking an invalidated iterator is not a good idea.
llvm-svn: 68047
2009-03-30 18:34:47 +00:00
Mike Stump
b50565295f
Add ccc back for now.
...
llvm-svn: 68038
2009-03-30 17:43:04 +00:00
Anton Korobeynikov
a11549d252
Clearify local/global relocations wording
...
llvm-svn: 68037
2009-03-30 17:38:00 +00:00
Anton Korobeynikov
880f98920c
Fix thinko: put stuff with both global and local relocations into data.rel{.ro}, not .local
...
llvm-svn: 68036
2009-03-30 17:37:43 +00:00
Anton Korobeynikov
497fd0e996
Tweak test for recent relro stuff
...
llvm-svn: 68035
2009-03-30 15:28:40 +00:00
Anton Korobeynikov
d03a7a7e8c
Fix infinite looping
...
llvm-svn: 68034
2009-03-30 15:28:21 +00:00
Anton Korobeynikov
b026804e7c
Properly propagate Kind.
...
llvm-svn: 68033
2009-03-30 15:28:00 +00:00
Anton Korobeynikov
0404baca28
Do not propagate ELF-specific stuff (data.rel) into other targets. This simplifies code and also ensures correctness.
...
llvm-svn: 68032
2009-03-30 15:27:43 +00:00
Anton Korobeynikov
2ea565a37b
Add data.rel stuff
...
llvm-svn: 68031
2009-03-30 15:27:03 +00:00
Chris Lattner
1901988355
fix some validation problems.
...
llvm-svn: 68026
2009-03-30 06:34:59 +00:00
Evan Cheng
5c460dbc3d
Forgot this test.
...
llvm-svn: 68025
2009-03-30 06:17:34 +00:00
John Mosby
8d4d6376bb
Clarify section on setting up and running test-suite
...
llvm-svn: 68023
2009-03-30 04:37:51 +00:00
Misha Brukman
78da0fbc46
Updated the comment for isArithmeticShift() to match reality.
...
llvm-svn: 68016
2009-03-29 20:41:38 +00:00
Bill Wendling
668e03b2b8
Constify check. This fixes PR3900.
...
llvm-svn: 68013
2009-03-29 20:08:56 +00:00
Anton Korobeynikov
d24f576124
Testcase for recent ro/relocs stuff
...
llvm-svn: 68008
2009-03-29 17:14:57 +00:00
Anton Korobeynikov
424bf7a0b5
IA64 is as weird as Alpha wrt r/o relocs :)
...
llvm-svn: 68007
2009-03-29 17:14:35 +00:00
Anton Korobeynikov
55097e65d6
Alpha always requires global relocations to be r/w regardless of PIC.
...
llvm-svn: 68006
2009-03-29 17:14:14 +00:00
Anton Korobeynikov
ec131d94ff
Honour relocation behaviour stuff for ro objects
...
llvm-svn: 68005
2009-03-29 17:13:49 +00:00
Anton Korobeynikov
9b5ffaf6ca
Extend the relocation tracker handler, so we can filter on different 'kinds' of relocations required.
...
llvm-svn: 68004
2009-03-29 17:13:18 +00:00
Duncan Sands
602234cdf3
Fix PR3899: add support for extracting floats from vectors
...
when using -soft-float.
Based on a patch by Jakob Stoklund Olesen.
llvm-svn: 67996
2009-03-29 13:51:06 +00:00
Chris Lattner
8e83bd3891
add missing space.
...
llvm-svn: 67995
2009-03-29 13:26:05 +00:00
Chris Lattner
be9cd842ae
add some comments, add a dyn_cast method.
...
llvm-svn: 67992
2009-03-29 07:03:30 +00:00
Chris Lattner
f3d562df05
When forming sentinels for empty/tombstone, make sure to respect the
...
pointer's expected number of zero low-bits.
This should fix the breakage I introduced recently.
llvm-svn: 67990
2009-03-29 06:33:22 +00:00
Chris Lattner
696742399a
add helper method.
...
llvm-svn: 67989
2009-03-29 06:32:46 +00:00
Chris Lattner
2c6632d760
Add a simple type-safe bit-mangling pointer union class. This allows
...
you to do things like:
/// PointerUnion<int*, float*> P;
/// P = (int*)0;
/// printf("%d %d", P.is<int*>(), P.is<float*>()); // prints "1 0"
/// X = P.get<int*>(); // ok.
/// Y = P.get<float*>(); // runtime assertion failure.
/// Z = P.get<double*>(); // does not compile.
/// P = (float*)0;
/// Y = P.get<float*>(); // ok.
/// X = P.get<int*>(); // runtime assertion failure.
llvm-svn: 67987
2009-03-29 06:06:02 +00:00
Chris Lattner
b71e26c380
Allow a specific PointerIntPair instance to use a specific Pointer trait:
...
some pointer instances have properties that not all of a type have.
llvm-svn: 67986
2009-03-29 06:02:20 +00:00
Chris Lattner
afd5e460c3
Add a PointerLikeTypeTraits specialization for uintptr_t
...
llvm-svn: 67985
2009-03-29 06:00:21 +00:00
Chris Lattner
8957cdb71d
Value* only has 2 bits free as well.
...
llvm-svn: 67984
2009-03-29 05:45:43 +00:00
Chris Lattner
9dc97aa7bf
Replace the PointerLikeTypeTraits::getNumLowBitsAvailable
...
function with a new NumLowBitsAvailable enum, which makes the
value available as an integer constant expression.
Add PointerLikeTypeTraits specializations for Instruction* and
Use** since they are only guaranteed 4-byte aligned.
Enhance PointerIntPair to know about (and enforce) the alignment
specified by PointerLikeTypeTraits. This should allow things
like PointerIntPair<PointerIntPair<void*, 1,bool>, 1, bool>
because the inner one knows that 2 low bits are free.
llvm-svn: 67979
2009-03-29 04:32:37 +00:00