Chris Lattner
edf6668dda
make smallptrset more const and type correct, which caught a few
...
minor bugs.
llvm-svn: 43782
2007-11-06 22:12:43 +00:00
Dan Gohman
ff12f4602f
Remainder operations must be either integer or floating-point.
...
llvm-svn: 43781
2007-11-06 22:11:54 +00:00
Chris Lattner
8e982efdc5
fix const correctness, BB is const, so its predecessors are too
...
llvm-svn: 43780
2007-11-06 22:07:40 +00:00
Chris Lattner
2a909d32b6
don't put erase or query for non-allocainst pointers in an set of allocainsts*'s
...
llvm-svn: 43779
2007-11-06 22:07:22 +00:00
Chris Lattner
907b9b92fe
Implement PR1777 by detecting dependent phis that
...
all compute the same value.
llvm-svn: 43777
2007-11-06 21:52:06 +00:00
Evan Cheng
c401482711
When the allocator rewrite a spill register with new virtual register, it replaces other operands of the same register. Watch out for situations where
...
only some of the operands are sub-register uses.
llvm-svn: 43776
2007-11-06 21:12:10 +00:00
Duncan Sands
59b08debe3
At the point of calculating the shift amount, the
...
type of SV has changed from what it originally was.
However we need the store width of the original.
llvm-svn: 43775
2007-11-06 20:39:11 +00:00
Ted Kremenek
3609f43f5c
Renamed "Flush()" to "FlushRecord()".
...
llvm-svn: 43772
2007-11-06 19:49:50 +00:00
Ted Kremenek
16a9212602
Added support for processing abbreviations in the Deserializer.
...
Added some #ifdef-controlled messages for debugging backpatching.
llvm-svn: 43771
2007-11-06 19:49:16 +00:00
Evan Cheng
bd9a038bd7
First step towards moving the coalescer to priority_queue based machinery.
...
llvm-svn: 43764
2007-11-06 08:52:21 +00:00
Evan Cheng
f3e53ebd0e
Fix a bug where a def use operand isn't being detected as a sub-register use.
...
llvm-svn: 43763
2007-11-06 08:50:44 +00:00
Evan Cheng
3764ad2bac
Add pseudo dependency to force two-address instruction to be scheduled after
...
other uses. There was a overly restricted check that prevented some obvious
cases.
llvm-svn: 43762
2007-11-06 08:44:59 +00:00
Chris Lattner
02a91dce21
Fix PR1774 and BasicAA/2007-11-05-SizeCrash.ll
...
llvm-svn: 43756
2007-11-06 05:58:42 +00:00
Owen Anderson
c3baea32f3
Add a few comments.
...
llvm-svn: 43755
2007-11-06 05:26:02 +00:00
Owen Anderson
03decb2fca
DomForest is a forest of registers, not instructions.
...
llvm-svn: 43754
2007-11-06 05:22:43 +00:00
Owen Anderson
d0fb7600f9
StrongPHIElimination requires LiveVariables.
...
llvm-svn: 43751
2007-11-06 04:49:43 +00:00
Bruno Cardoso Lopes
77e5c419ec
Better processor definition
...
llvm-svn: 43749
2007-11-06 03:15:20 +00:00
Chris Lattner
e194944b29
wrap long lines
...
llvm-svn: 43745
2007-11-06 01:15:27 +00:00
Dan Gohman
6255ce9f5d
Add support for vector remainder operations.
...
llvm-svn: 43744
2007-11-05 23:35:22 +00:00
Dan Gohman
adc21ed938
Fix an abort in instcombine when folding creates a vector rem instruction.
...
llvm-svn: 43743
2007-11-05 23:16:33 +00:00
Rafael Espindola
ec025c3042
Move the LowerMEMCPY and LowerMEMCPYCall to a common place.
...
Thanks for the suggestions Bill :-)
llvm-svn: 43742
2007-11-05 23:12:20 +00:00
Ted Kremenek
7c710e0210
Added support in serializer and deserializer to create arbitrary blocks.
...
Added detection of end-of-stream in deserializer.
llvm-svn: 43736
2007-11-05 21:36:35 +00:00
Dale Johannesen
1f70f86c7a
Make labels work in asm blocks; allow labels as
...
parameters. Rename ValueRefList to ParamList
in AsmParser, since its only use is for parameters.
llvm-svn: 43734
2007-11-05 21:20:28 +00:00
Ted Kremenek
dbc286177c
Added default creation of root-level block by bitstream serializer.
...
llvm-svn: 43732
2007-11-05 20:47:27 +00:00
Devang Patel
963e54c2cf
If a value is incoming from outside the loop then the value does not need remapping and the value is never tracked through LastValueMap.
...
llvm-svn: 43728
2007-11-05 19:32:30 +00:00
Lauro Ramos Venancio
f5081ba980
[ARM] Fix code generation for:
...
static __thread struct {
int a;
int b;
} teste = {0, 0};
llvm-svn: 43722
2007-11-05 18:33:37 +00:00
Duncan Sands
c338eafe35
Don't output ABI size padding twice. By using the store
...
size for the field we get ABI padding automatically, so
no need to put it in again when we emit the field.
llvm-svn: 43720
2007-11-05 18:03:02 +00:00
Evan Cheng
ec35b58b0a
Move SimpleRegisterCoalescing.h to lib/CodeGen since there is now a common
...
register coalescer interface: RegisterCoalescing.
llvm-svn: 43714
2007-11-05 17:41:38 +00:00
Evan Cheng
c49995c027
Use movups to spill / restore SSE registers on targets where stacks alignment is
...
less than 16. This is a temporary solution until dynamic stack alignment is
implemented.
llvm-svn: 43703
2007-11-05 07:30:01 +00:00
Evan Cheng
28c61e33a4
Skip over deleted val#'s.
...
llvm-svn: 43700
2007-11-05 06:46:45 +00:00
Evan Cheng
e5eac2c5ac
Handle cases where a register and one of its super-register are both marked as
...
defined on the same instruction. This fixes PR1767.
llvm-svn: 43699
2007-11-05 03:11:55 +00:00
Bruno Cardoso Lopes
569b5512b0
Added support for PIC code with "explicit relocations" *only*.
...
Removed all macro code for PIC (goodbye "la").
Support tested with shootout bench.
llvm-svn: 43697
2007-11-05 03:02:32 +00:00
Gordon Henriksen
8188f028a2
Deleting redundant copy of block extractor pass. See also PR1775.
...
llvm-svn: 43694
2007-11-05 01:54:05 +00:00
Evan Cheng
13d79ab67a
Fix PR1187.
...
llvm-svn: 43692
2007-11-05 00:59:10 +00:00
Duncan Sands
7c0f410b42
If a long double is in a packed struct, it may be
...
that there is no padding.
llvm-svn: 43691
2007-11-05 00:35:07 +00:00
Duncan Sands
d1bdbd010b
Eliminate the remaining uses of getTypeSize. This
...
should only effect x86 when using long double. Now
12/16 bytes are output for long double globals (the
exact amount depends on the alignment). This brings
globals in line with the rest of LLVM: the space
reserved for an object is now always the ABI size.
One tricky point is that only 10 bytes should be
output for long double if it is a field in a packed
struct, which is the reason for the additional
argument to EmitGlobalConstant.
llvm-svn: 43688
2007-11-05 00:04:43 +00:00
Owen Anderson
5fff5dcf65
Another step of stronger PHI elimination down.
...
llvm-svn: 43684
2007-11-04 22:33:26 +00:00
Gordon Henriksen
b1ab8b8c29
Deleting -emitbitcode option which did nothing.
...
llvm-svn: 43683
2007-11-04 20:28:31 +00:00
Chris Lattner
8fac63c8b5
Fix PR1761 by not printing (rip) suffix when in -static mode.
...
Evan, please review this.
llvm-svn: 43680
2007-11-04 19:23:28 +00:00
Nick Lewycky
36047b0b5b
Fix crash before main on ppc/linux with static constructors. PR1771
...
llvm-svn: 43676
2007-11-04 17:32:10 +00:00
Gordon Henriksen
4d157a1bc6
Finishing initial docs for all transformations in Passes.html.
...
Also cleaned up some comments in source files.
llvm-svn: 43674
2007-11-04 16:15:04 +00:00
Duncan Sands
662fb070a7
Change uses of getTypeSize to getABITypeSize, getTypeStoreSize
...
or getTypeSizeInBits as appropriate in ScalarReplAggregates.
The right change to make was not always obvious, so it would
be good to have an sroa guru review this. While there I noticed
some bugs, and fixed them: (1) arrays of x86 long double have
holes due to alignment padding, but this wasn't being spotted
by HasStructPadding (renamed to HasPadding). The same goes
for arrays of oddly sized ints. Vectors also suffer from this,
in fact the problem for vectors is much worse because basic
vector assumptions seem to be broken by vectors of type with
alignment padding. I didn't try to fix any of these vector
problems. (2) The code for extracting smaller integers from
larger ones (in the "int union" case) was wrong on big-endian
machines for integers with size not a multiple of 8, like i1.
Probably this is impossible to hit via llvm-gcc, but I fixed
it anyway while there and added a testcase. I also got rid of
some trailing whitespace and changed a function name which
had an obvious typo in it.
llvm-svn: 43672
2007-11-04 14:43:57 +00:00
Evan Cheng
9a5c2f1169
If an interval is being undone clear its preference as well since the source interval may have been undone as well.
...
llvm-svn: 43670
2007-11-04 08:32:21 +00:00
Chris Lattner
67cd357fb8
Fix PR1763 by allowing the 'q' constraint to work with 64-bit
...
regs on x86-64.
llvm-svn: 43669
2007-11-04 06:51:12 +00:00
Chris Lattner
493f83eeb1
Disable tail duplication of call instructions. The cost
...
metric is way off for these in general, and this works around
buggy code like that in PR1764. we'll see if there is a big
performance impact of this. If so, I'll revert it tomorrow.
llvm-svn: 43668
2007-11-04 06:37:55 +00:00
Evan Cheng
1771f6da9c
There are times when the coalescer would not coalesce away a copy but the copy
...
can be eliminated by the allocator is the destination and source targets the
same register. The most common case is when the source and destination registers
are in different class. For example, on x86 mov32to32_ targets GR32_ which
contains a subset of the registers in GR32.
The allocator can do 2 things:
1. Set the preferred allocation for the destination of a copy to that of its source.
2. After allocation is done, change the allocation of a copy destination (if
legal) so the copy can be eliminated.
This eliminates 443 extra moves from 403.gcc.
llvm-svn: 43662
2007-11-03 07:20:12 +00:00
Dan Gohman
19d88d511b
Add std:: to sort calls.
...
llvm-svn: 43652
2007-11-02 22:24:01 +00:00
Dan Gohman
26c8800fbd
Change illegal uses of ++ to uses of STLExtra.h's next function.
...
llvm-svn: 43651
2007-11-02 22:22:02 +00:00
Evan Cheng
bf8e7c6644
Unbreak tailcall opt.
...
llvm-svn: 43646
2007-11-02 17:45:40 +00:00
Evan Cheng
65a07e73e2
One more extract_subreg coalescing bug.
...
llvm-svn: 43644
2007-11-02 17:35:08 +00:00