Chris Lattner
d1bb8c0277
move a massive amount of code out into its own helper function
...
to reduce nesting. This needs to be turned into a table.
llvm-svn: 126366
2011-02-24 07:12:12 +00:00
Chris Lattner
72a2ebab6c
change instcombine to not turn a call to non-varargs bitcast of
...
function prototype into a call to a varargs prototype. We do
allow the xform if we have a definition, but otherwise we don't
want to risk that we're changing the abi in a subtle way. On
X86-64, for example, varargs require passing stuff in %al.
llvm-svn: 126363
2011-02-24 05:10:56 +00:00
Evan Cheng
9db7b1367d
Fix bug in X86 folding / unfolding table. Int_CMPSDrm and Int_CMPSSrm memory
...
operands starts at index 2, not 1.
rdar://9045024
PR9305
llvm-svn: 126359
2011-02-24 02:36:52 +00:00
Jakob Stoklund Olesen
0f1be641db
Use the same spill slot for all live ranges that descend form the same original
...
register.
This avoids some silly stack slot shuffling when both sides of a copy get
spilled.
llvm-svn: 126353
2011-02-24 01:07:55 +00:00
Michael J. Spencer
3c784e25d6
Depricate PathV1::isAbsolute.
...
llvm-svn: 126348
2011-02-24 01:02:32 +00:00
Devang Patel
e8ade74a52
Use DW_FORM_data2 for DW_AT_language and let users use DW_LANG_lo_user=0x8000 to DW_LANG_hi_user=0xffff range.
...
llvm-svn: 126339
2011-02-23 22:37:04 +00:00
Devang Patel
dc0160e163
Check only relevant strings in output to increase stability of the tests.
...
llvm-svn: 126338
2011-02-23 22:35:57 +00:00
Jim Grosbach
d8032abf70
Remove file. Previous commit deleted content, but left the file around.
...
llvm-svn: 126337
2011-02-23 21:43:31 +00:00
Jim Grosbach
e7be1f2990
Revert r125595, which is an X86-only undocumented assembly syntax extension
...
enabled for all targets. Non-X86 targets should not have this behavior
enabled by default.
Joerg, if you would like to resubmit with the behavior conditionalized to be
X86-ELF only, that's fine.
llvm-svn: 126336
2011-02-23 21:26:51 +00:00
Rafael Espindola
993a4ef35c
Put in the symbol table symbols only used in a .globl statement.
...
Fixes PR9292.
llvm-svn: 126330
2011-02-23 20:22:07 +00:00
Richard Osborne
d9564589f6
Add XCore intrinsic for clre instruction.
...
llvm-svn: 126322
2011-02-23 18:52:05 +00:00
Richard Osborne
4a55817288
Add llvm.xcore.waitevent intrinsic. The effect of this intrinsic is to enable
...
events on the thread and wait until a resource is ready to event. The vector
of the resource that is ready is returned.
llvm-svn: 126320
2011-02-23 18:35:59 +00:00
Jakob Stoklund Olesen
5edc1f287b
It is safe to ignore LastSplitPoint when the variable is not live out.
...
No code will be inserted after the split point anyway.
llvm-svn: 126319
2011-02-23 18:26:31 +00:00
Richard Osborne
aaac1b01fd
Add XCore intrinsic for the setv instruction.
...
llvm-svn: 126315
2011-02-23 16:46:37 +00:00
Richard Osborne
2374e9683e
Fix format for setc instruction.
...
llvm-svn: 126314
2011-02-23 15:20:16 +00:00
Richard Osborne
aa39bf94b4
Add XCore intrinsic for settw instruction.
...
llvm-svn: 126313
2011-02-23 14:45:03 +00:00
Frits van Bommel
68294aa16c
Implement TODO for implicit C-array-to-ArrayRef conversion.
...
llvm-svn: 126311
2011-02-23 13:43:06 +00:00
Oscar Fuentes
c5598c7531
Export TARGET_TRIPLE on LLVM.cmake. It is necessary for running tests
...
on Clang when it builds using LLVM as an external library.
Fixes PR9293.
llvm-svn: 126309
2011-02-23 11:28:40 +00:00
Sean Callanan
e1308394f1
Fixed a bug in the enhanced disassembler that caused
...
it to ignore valid uses of FS and GS as additional
base registers in address computations. Added a test
case for this.
llvm-svn: 126302
2011-02-23 03:31:28 +00:00
Sean Callanan
d7e66a8942
Fixed a bug in the enhanced disassembly tester that
...
caused it to only parse one line of input.
llvm-svn: 126301
2011-02-23 03:29:41 +00:00
Evan Cheng
98e040ea71
Change VFPNeonA8 definition to make the code easier to read.
...
llvm-svn: 126298
2011-02-23 02:35:33 +00:00
Stuart Hastings
c0c38e8673
Omit private_extern declarations of extern symbols; followup to
...
r124468. Patch by Rafael Avila de Espindola!
llvm-svn: 126297
2011-02-23 02:27:05 +00:00
Evan Cheng
da40bcab44
More fcopysign correctness and performance fix.
...
The previous codegen for the slow path (when values are in VFP / NEON
registers) was incorrect if the source is NaN.
The new codegen uses NEON vbsl instruction to copy the sign bit. e.g.
vmov.i32 d1, #0x80000000
vbsl d1, d2, d0
If NEON is not available, it uses integer instructions to copy the sign bit.
rdar://9034702
llvm-svn: 126295
2011-02-23 02:24:55 +00:00
Jakob Stoklund Olesen
17add01160
Keep track of how many times a live range has been dequeued, and prioritize new ranges.
...
When a large live range is evicted, it will usually be split when it comes
around again. By deferring evicted live ranges, the splitting happens at a time
when the interference pattern is more realistic. This prevents repeated
splitting and evictions.
llvm-svn: 126282
2011-02-23 00:56:56 +00:00
Jakob Stoklund Olesen
18a19b665c
Fix a bug in determining if there is only a single interfering register.
...
llvm-svn: 126277
2011-02-23 00:29:55 +00:00
Jakob Stoklund Olesen
58efee5c3e
Be more aggressive about evicting interference.
...
Use interval sizes instead of spill weights to determine if it is legal to evict
interference. A smaller interval can evict interference if all interfering live
ranges are larger.
Allow multiple interferences to be evicted as along as they are all larger than
the live range being allocated.
Spill weights are still used to select the preferred eviction candidate.
llvm-svn: 126276
2011-02-23 00:29:52 +00:00
David Greene
7b0539174a
[AVX] General VUNPCKL codegen support.
...
llvm-svn: 126264
2011-02-22 23:31:46 +00:00
David Greene
f37b51af6b
Fix Builder::execute() to more properly pass the desired environment
...
to tools.
llvm-svn: 126263
2011-02-22 23:30:45 +00:00
Jakob Stoklund Olesen
505c6fac89
Change the RAGreedy register assignment order so large live ranges are allocated first.
...
This is based on the observation that long live ranges are more difficult to
allocate, so there is a better chance of solving the puzzle by handling the big
pieces first. The allocator will evict and split long alive ranges when they get
in the way.
RABasic is still using spill weights for its priority queue, so the interface to
the queue has been virtualized.
llvm-svn: 126259
2011-02-22 23:01:52 +00:00
Jakob Stoklund Olesen
5b9699abdd
80 Col.
...
llvm-svn: 126258
2011-02-22 23:01:49 +00:00
Nick Lewycky
0c9c9c5beb
Fix C++0x incompatibility. The signature of std::make_pair<> changes from:
...
template <class T1, class T2> pair<T1,T2> make_pair(const T1&, const T2&);
to
template <class T1, class T2> pair<V1, V2> make_pair(T1&&, T2&&);
so explicitly specifying the template arguments to make_pair<> is going to break
when C++0x rolls through. Replace them with equivalent std::pair<>. Patch by
James Dennett!
llvm-svn: 126256
2011-02-22 22:48:47 +00:00
Cameron Zwarich
c5fa112a70
Make LoopDeletion work on loops with multiple edges, as long as the incoming
...
values from all of the loop's exiting blocks are equal. Patch by Andrew Clinton.
llvm-svn: 126253
2011-02-22 22:25:39 +00:00
Joerg Sonnenberger
67e0eb235d
Use the same (%dx) hack for in[bwl] as for out[bwl].
...
llvm-svn: 126244
2011-02-22 20:40:09 +00:00
Evan Cheng
f540b0e0f6
VFP single precision arith instructions can go down to NEON pipeline, but on Cortex-A8 only.
...
llvm-svn: 126238
2011-02-22 19:53:14 +00:00
Devang Patel
74d085657f
Follow LLVM coding style.
...
clang uses DBuilder, so it requries corresponding change.
llvm-svn: 126231
2011-02-22 18:56:12 +00:00
Roman Divacky
f028b1614b
Stack alignment is 16 bytes on FreeBSD/i386 too.
...
llvm-svn: 126226
2011-02-22 17:30:05 +00:00
Joerg Sonnenberger
cbdd830a75
Bug#9172: Don't use static in file scope, use an attribute on the
...
parser.
llvm-svn: 126225
2011-02-22 16:53:11 +00:00
Oscar Fuentes
25ad44254b
CMake: remove unnecessary variable.
...
llvm-svn: 126224
2011-02-22 15:40:20 +00:00
Cameron Zwarich
bde7e8b3e0
MachineConstantPoolValues are not uniqued, so they need to be freed if they
...
share entries. Add a DenseSet to MachineConstantPool for the MachineCPVs that
it owns.
This will hopefully fix the MC/ARM/elf-reloc-01.ll failure on the leaks bots.
llvm-svn: 126218
2011-02-22 08:54:30 +00:00
NAKAMURA Takumi
c59b707d50
Revert r126195, "test/CodeGen/X86/vec_cast.ll: Mark as XFAIL: migw,win32 for workaround of PR8311."
...
It seems it affected configuration --target=i686-pc-mingw32, I don't know and will investigate why.
llvm-svn: 126217
2011-02-22 08:22:54 +00:00
NAKAMURA Takumi
5663670e56
Relax expressions and add explicit triplets -linux and -win32.
...
llvm-svn: 126216
2011-02-22 07:21:59 +00:00
NAKAMURA Takumi
d1a4c5b79b
Relax expressions and add explicit triplets -linux and -win32.
...
llvm-svn: 126215
2011-02-22 07:21:51 +00:00
NAKAMURA Takumi
606d6d5dc3
Relax expressions and add explicit triplets -linux and -win32.
...
llvm-svn: 126214
2011-02-22 07:21:42 +00:00
NAKAMURA Takumi
7a721b6fb6
Relax expressions and add explicit triplets -linux and -win32.
...
llvm-svn: 126213
2011-02-22 07:21:33 +00:00
NAKAMURA Takumi
7ea92257f9
Relax expressions and add explicit triplets -linux and -win32.
...
llvm-svn: 126212
2011-02-22 07:21:25 +00:00
NAKAMURA Takumi
e601f83a06
Relax expressions and add explicit triplets -linux and -win32.
...
On @foobar(double %d, double* %x),
AMD64: (%xmm0, %rdi)
Win64: (%xmm0, %rdx) (not %rcx!)
llvm-svn: 126211
2011-02-22 07:21:17 +00:00
NAKAMURA Takumi
78e74f5921
Relax expressions and add explicit triplets -linux and -win32.
...
llvm-svn: 126210
2011-02-22 07:21:08 +00:00
NAKAMURA Takumi
e118fc3ea8
Relax expressions and add explicit triplets -linux and -win32.
...
llvm-svn: 126209
2011-02-22 07:21:01 +00:00
NAKAMURA Takumi
d2d57dd02d
Relax expressions and add explicit triplets -linux and -win32.
...
llvm-svn: 126208
2011-02-22 07:20:52 +00:00
NAKAMURA Takumi
c5ed4733da
Relax expressions and add explicit triplets -linux and -win32.
...
llvm-svn: 126207
2011-02-22 07:20:44 +00:00