Duncan Sands
7e5edf1a1f
LegalizeTypes support for what seems to be the
...
only missing ppc long double operations: FNEG
and FP_EXTEND.
llvm-svn: 53723
2008-07-17 17:35:14 +00:00
Nate Begeman
3851e29e20
Remove unnecessary readme entry
...
llvm-svn: 53722
2008-07-17 17:21:14 +00:00
Duncan Sands
d9256a7ceb
Turn LegalizeTypes back off again for the moment:
...
it is breaking Darwin bootstrap due to missing
functionality.
llvm-svn: 53721
2008-07-17 17:06:03 +00:00
Nate Begeman
3a2147aa97
Fix a typo in last commit
...
llvm-svn: 53720
2008-07-17 17:04:58 +00:00
Nate Begeman
55b7becb29
SSE codegen for vsetcc nodes
...
llvm-svn: 53719
2008-07-17 16:51:19 +00:00
Matthijs Kooijman
8b69d77a7a
Make GlobalOpt preserve address spaces when scalar replacing aggregate globals.
...
llvm-svn: 53716
2008-07-17 11:59:53 +00:00
Chris Lattner
c600c53d1f
Fix PR2553
...
llvm-svn: 53715
2008-07-17 06:07:20 +00:00
Mon P Wang
1e2c6bfa41
When lowering certain atomics, we need to copy the memoperand from the old
...
atomic operation to the new one.
llvm-svn: 53714
2008-07-17 04:54:06 +00:00
Duncan Sands
77a3d05f1e
Factorize some code for determining which libcall to use.
...
llvm-svn: 53713
2008-07-17 02:36:29 +00:00
Evan Cheng
97cd0298cc
Inliner tweak. Function calls should cost more than one instruction!
...
llvm-svn: 53712
2008-07-17 01:31:49 +00:00
Owen Anderson
c062381c7b
Factor MergeBlockIntoPredecessor out into BasicBlockUtils.
...
llvm-svn: 53705
2008-07-17 00:01:40 +00:00
Devang Patel
41cfed7e49
Name string length is end position marker - begin position marker.
...
llvm-svn: 53697
2008-07-16 19:49:09 +00:00
Devang Patel
a59fe95be3
Do not forget global definitions from inline asm code block.
...
llvm-svn: 53693
2008-07-16 18:06:52 +00:00
Devang Patel
78e8a09f39
Mark function used by asm block as used, otherwise optimizer may not see the use and may delete the function.
...
llvm-svn: 53692
2008-07-16 17:54:34 +00:00
Owen Anderson
ac31096311
There's no need to iterate block merging and PRE. In fact, iterating the latter
...
could cause problems for memdep when it breaks critical edges.
llvm-svn: 53691
2008-07-16 17:52:31 +00:00
Scott Michel
fe09508210
Somehow, custom lowering of i64 multiplications got dropped along the way.
...
llvm-svn: 53689
2008-07-16 17:17:29 +00:00
Dan Gohman
f169f81036
Fix the result type of X86's truncate to i8.
...
llvm-svn: 53688
2008-07-16 16:20:48 +00:00
Dan Gohman
2714059079
Fix the result type of a VECTOR_SHUFFLE+BIT_CONVERT dagcombine. This
...
was turned up by some new SelectionDAG assertion checks that I'm
working on.
llvm-svn: 53687
2008-07-16 16:13:58 +00:00
Dan Gohman
494fb26521
Fix the name of BreakCriticalMachineEdge.h's include guard
...
llvm-svn: 53686
2008-07-16 16:04:07 +00:00
Dan Gohman
52636b2a81
Correct a top-level comment.
...
llvm-svn: 53685
2008-07-16 16:03:31 +00:00
Duncan Sands
2d28e281e9
Add support for promoting and expanding AssertZext
...
and AssertSext. Needed when passing huge integer
parameters with the zeroext or signext attributes.
llvm-svn: 53684
2008-07-16 16:03:07 +00:00
Dan Gohman
add5195334
Clarify the comments here, to make slightly more clear the
...
difference in purpose of TargetInstrInfo and TargetInstrDesc,
which isn't immediately obvious from the name.
llvm-svn: 53683
2008-07-16 16:02:59 +00:00
Dan Gohman
b010a08d3a
Tidy a doxygen comment.
...
llvm-svn: 53682
2008-07-16 15:59:56 +00:00
Dan Gohman
26ffe2bea6
Fix a comment to say nonnegative instead of positive.
...
llvm-svn: 53681
2008-07-16 15:57:10 +00:00
Dan Gohman
bf98f68265
Add an assert to check for empty flags for MachineMemOperand.
...
llvm-svn: 53680
2008-07-16 15:56:42 +00:00
Duncan Sands
5b2c2975b8
Test passing of integer parameters for integers
...
of all sizes from i1 to i256. The code is not
always that great, for example (x86)
movw %di, %ax
movw %ax, i17_s
where the store could be directly from %di.
llvm-svn: 53677
2008-07-16 13:37:36 +00:00
Duncan Sands
5efef246ed
Test codegen of loads and stores of all integer
...
sizes from i1 to i256. The generated code is
like one huge bug report of things that the DAG
combiner fails to simplify!
llvm-svn: 53676
2008-07-16 13:10:20 +00:00
Matthijs Kooijman
f22f34f0cc
Add a few cases to instcombine's extractvalue testcase.
...
llvm-svn: 53675
2008-07-16 12:57:25 +00:00
Matthijs Kooijman
c9d4e06f3a
Un-XFAIL multdeadretval, since instcombine now properly handles the mess deadargelim leaves behind :-)
...
llvm-svn: 53674
2008-07-16 12:56:52 +00:00
Matthijs Kooijman
c1d7477ed2
Redo InstCombiner::visitExtractValueInst. Instead of using the (complicate)
...
FindInsertedValue, it now performs a number of simple transformations that
should result in the same effect when applied iteratively.
llvm-svn: 53673
2008-07-16 12:55:45 +00:00
Duncan Sands
e766b4230e
Reorder methods alphabetically. No functionality change.
...
While this is not a wonderful organizing principle, it
does make it easy to find routines, and clear where to
insert new ones.
llvm-svn: 53672
2008-07-16 11:41:33 +00:00
Duncan Sands
c359055fa9
Turn on LegalizeTypes by default.
...
llvm-svn: 53671
2008-07-16 11:36:51 +00:00
Matthijs Kooijman
b85cc9db19
Don't use ++idx_begin when I actually mean idx_begin + 1, especially since we
...
also use *idx_begin in the same expression, giving unpredictable results.
This fixes this bug: http://lists.cs.uiuc.edu/pipermail/llvmdev/2008-July/015877.html
llvm-svn: 53670
2008-07-16 10:47:35 +00:00
Duncan Sands
a0b1ab3c0b
The atomic.cmp.swap promotion logic is wrong: it
...
simply does the atomic.cmp.swap on the larger type,
which means it blows away whatever is sitting in
the bytes just after the memory location, i.e.
causes a buffer overflow. This really requires
target specific code, which is why LegalizeTypes
doesn't try to handle this case generically. The
existing (wrong) code in LegalizeDAG will go away
automatically once the type legalization code is
removed from LegalizeDAG so I'm leaving it there
for the moment. Meanwhile, don't test for this
feature.
llvm-svn: 53669
2008-07-16 08:09:48 +00:00
Evan Cheng
c97094552c
Fix PR2296. Do not transform x86_sse2_storel_dq into a full-width store.
...
llvm-svn: 53666
2008-07-16 07:28:14 +00:00
Evan Cheng
cf06fe476f
x86-64 PIC JIT fixes: do not generate the extra load for external GV's.
...
llvm-svn: 53661
2008-07-16 01:34:02 +00:00
Evan Cheng
68bd1546ab
X86-64 PIC jump table values are different from x86-32 cases, they are dest - table base.
...
llvm-svn: 53660
2008-07-16 01:33:08 +00:00
Dan Gohman
efa4160fcc
TargetAsmInfo::SectionForGlobal showed up in a profile. Simplify it a little.
...
llvm-svn: 53639
2008-07-15 18:37:51 +00:00
Dan Gohman
1e5aa12b7d
SelectionDAG::AssignNodeIds is unused.
...
llvm-svn: 53636
2008-07-15 18:29:32 +00:00
Dan Gohman
1d093846b5
Don't sort SDNodes by their addresses in SelectionDAG::dump. Instead,
...
just use the AllNodes order, which is at least relatively stable
across runs.
llvm-svn: 53632
2008-07-15 18:18:54 +00:00
Owen Anderson
24768e3dc4
Revert this, as it seems to still be broken.
...
llvm-svn: 53627
2008-07-15 17:59:02 +00:00
Owen Anderson
9d1f497a28
Enable local PRE by default.
...
llvm-svn: 53616
2008-07-15 16:28:23 +00:00
Owen Anderson
53d546e40b
Have GVN do a pre-pass over the CFG that folds away unconditional branches where possible. This allows local PRE to be more aggressive.
...
llvm-svn: 53615
2008-07-15 16:28:06 +00:00
Matthijs Kooijman
af3594cca1
XFAIL the multdeadretval test for now, I will be fixing instcombine to make it work again tomorrow.
...
llvm-svn: 53614
2008-07-15 16:05:09 +00:00
Duncan Sands
0f1a1cdcf8
LegalizeTypes support for fabs on ppc long double.
...
llvm-svn: 53613
2008-07-15 15:02:44 +00:00
Matthijs Kooijman
121a206292
Remove a few tests which no longer hold for deadargelim (since it is now
...
allowed to canonicalize return values).
Add a test that checks if return value and function attributes are not removed.
llvm-svn: 53612
2008-07-15 14:57:01 +00:00
Matthijs Kooijman
d881fb0a5b
Add a testcase for the canonicalizations now performed by deadargelim.
...
llvm-svn: 53611
2008-07-15 14:42:58 +00:00
Matthijs Kooijman
c893bf472d
Allow deadargelim to change return types even though now values were dead. This
...
again canonicalizes {i32} into i32 and {} into void.
llvm-svn: 53610
2008-07-15 14:42:31 +00:00
Matthijs Kooijman
5e8c022e21
Revert r53606. It turns out that explicitely tracking the liveness of the
...
return value as a whole in deadargelim is really not needed now that we simply
rebuild the old return value and actually prevents some canonicalization from
taking place.
This revert stops deadargelim from changing {i32} into i32 for now, but I'll
fix that next.
llvm-svn: 53609
2008-07-15 14:39:36 +00:00
Matthijs Kooijman
c1da874478
Make deadargelim a bit less smart, so it doesn't choke on nested structs as
...
return values that are still (partially) live. Instead of updating all uses of
a call instruction after removing some elements, it now just rebuilds the
original struct (With undef gaps where the unused values were) and leaves it to
instcombine to clean this up.
The added testcase still fails currently, but this is due to instcombine which
isn't good enough yet. I will fix that part next.
llvm-svn: 53608
2008-07-15 14:03:10 +00:00