Dan Gohman
3139ff8f7b
Fix a vectorshuffle instcombine bug introduced by r55995.
...
Patch by Nicolas Capens!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56129 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-11 22:47:57 +00:00
Dan Gohman
bcb37fd22f
Fix a copy+paste bug that Duncan spotted. For several
...
cases it was still getting lucky and detecting overflow
but it was clearly incorrect.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56113 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-11 18:53:02 +00:00
Dan Gohman
7f85fbd9de
In my analysis for r56076 I missed the case where the original
...
multiplication overflows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56082 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-11 00:25:00 +00:00
Dan Gohman
1df3fd6683
Fix an icmp+sdiv optimization to check for and handle an overflow
...
condition. This fixes PR2740.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56076 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-10 23:30:57 +00:00
Devang Patel
36a5bf8fd8
fix white spaces.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56056 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-10 14:49:55 +00:00
Dan Gohman
cb89309399
Fix a warning about comparing signed and unsigned values.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56040 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-10 01:09:32 +00:00
Devang Patel
d22a849282
if loop induction variable is always sign or zero extended then
...
extend the type of induction variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56017 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-09 21:41:07 +00:00
Devang Patel
4b3f08bac7
fix overflow check.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56011 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-09 20:54:34 +00:00
Anton Korobeynikov
19e861a4ff
Make safer variant of alias resolution routine to be default
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56005 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-09 20:05:04 +00:00
Anton Korobeynikov
e4c6b61ebd
Resolve aliases, when possible
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56001 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-09 19:04:59 +00:00
Dan Gohman
488fbfc69e
Make SimplifyDemandedVectorElts simplify vectors with multiple
...
users, and teach it about shufflevector instructions.
Also, fix a subtle bug in SimplifyDemandedVectorElts'
insertelement code.
This is a patch that was originally written by Eli Friedman,
with some fixes and cleanup by me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55995 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-09 18:11:14 +00:00
Devang Patel
e435a5d937
Fix simplifycfg crash in handing block merge.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55971 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-09 01:06:56 +00:00
Devang Patel
2379089a6e
s/RemoveUnreachableBlocks/RemoveUnreachableBlocksFromFn/g
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55965 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-08 22:14:17 +00:00
Devang Patel
245d0ab166
Remove unused counter.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55924 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-08 17:14:54 +00:00
Devang Patel
175f9d94db
Remove OptimizeIVType()
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55913 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-08 16:13:27 +00:00
Duncan Sands
a9c3251e6b
Update the callgraph correctly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55896 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-08 11:08:09 +00:00
Duncan Sands
34c8847b2d
Update the callgraph correctly in ArgumentPromotion.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55895 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-08 11:07:35 +00:00
Duncan Sands
d7b9851c4e
Reapply 55859. This doesn't change anything as
...
long as the callgraph is correct. It checks
for wrong callgraphs more strictly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55894 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-08 11:05:51 +00:00
Duncan Sands
4cddaf77c4
Correct a comment and strip trailing whitespace.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55883 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-07 09:54:09 +00:00
Nuno Lopes
b9baf31679
fix crash when the malloc/free function is defined or is a declaration with 0 parameters.
...
this pass doesnt seem to be used, but still it's now a little more correct
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55873 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-06 17:44:06 +00:00
Duncan Sands
fec2c2bf5e
When PruneEH turned an invoke into an ordinary
...
call (thus changing the call site) it didn't
inform the callgraph about this. But the
call site does matter - as shown by the testcase,
the callgraph become invalid after the inliner
ran (with an edge between two functions simply
missing), resulting in wrong deductions by
GlobalsModRef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55872 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-06 17:19:29 +00:00
Owen Anderson
6e6074508c
Revert r55859. This is breaking the build in the abscence of its companion commit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55865 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-05 23:36:01 +00:00
Devang Patel
bcc11d2a71
Remove unused map.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55861 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-05 21:55:33 +00:00
Duncan Sands
c94fe21a56
Delete the removeCallEdgeTo callgraph method,
...
because it does not maintain a correct list
of callsites. I discovered (see following
commit) that the inliner will create a wrong
callgraph if it is fed a callgraph with
correct edges but incorrect callsites. These
were created by Prune-EH, and while it wasn't
done via removeCallEdgeTo, it could have been
done via removeCallEdgeTo, which is an accident
waiting to happen. Use removeCallEdgeFor
instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55859 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-05 21:43:04 +00:00
Duncan Sands
6f0a7687ab
Use removeAllCalledFunctions rather than removing
...
edges one by one by hand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55836 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-05 14:56:53 +00:00
Duncan Sands
a7212e5826
Remove trailing whitespace.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55835 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-05 12:37:12 +00:00
Duncan Sands
cae62e3498
Make this pass return that it made a change if
...
it modifies a functions attributes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55831 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-05 09:08:37 +00:00
Devang Patel
deafefabae
A loop may be unswitched multiple times. Reconstruct dom info. at the end.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55806 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-04 22:43:59 +00:00
Devang Patel
027bb92541
Initialize loop data first.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55792 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-04 20:36:36 +00:00
Devang Patel
10b359ccb6
Do not unswitch if the function notes say we're optimizing this function for size.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55786 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-04 18:55:13 +00:00
Andrew Lenharth
eb50479714
try to seperate the mechanism into something others can use
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55785 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-04 18:51:26 +00:00
Dale Johannesen
53bfbbccbf
Add intrinsic forms of pow and exp2. The non-intrinsic
...
forms remain to handle older IR files, but will go away soon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55781 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-04 18:30:46 +00:00
Dan Gohman
ae73dc1448
Tidy up several unbeseeming casts from pointer to intptr_t.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-04 17:05:41 +00:00
Andrew Lenharth
ef7803217a
cleanup as per Duncan's review
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55766 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-04 14:34:22 +00:00
Devang Patel
7bbb4339f9
Update inline threshold for current function if the notes say, optimize for size.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55745 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 23:06:09 +00:00
Owen Anderson
0c7f91cf84
Fix a bug that prevented PRE from applying in some cases.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55744 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 23:06:07 +00:00
Andrew Lenharth
cf996d4b56
Initial version of a Partial Specialization IPO pass. It triggers a couple hundred times on 176.gcc. I don't know the performance impact yet, the heuristic is quite simple still.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55734 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 21:00:28 +00:00
Devang Patel
7946e7b8a4
Fix typo in a comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55720 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 20:25:40 +00:00
Devang Patel
79cca4f49f
Add parentheses to make code more readable.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55717 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 19:57:15 +00:00
Devang Patel
3fb68373c4
Fix comments.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55716 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 19:52:17 +00:00
Devang Patel
22ec199fa0
Add custom inliner that handles only functions that are marked as always_inline.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55713 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 18:50:53 +00:00
Devang Patel
67243399dd
Handle "always inline" note during inline cost analysis.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55712 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 18:47:45 +00:00
Devang Patel
5e06010462
Check noinline note and ignore other notes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55711 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 18:46:35 +00:00
Devang Patel
910c120a7c
Handle "noinline" note inside the simple inliner.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55708 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 18:10:21 +00:00
Nick Lewycky
23c04309fb
Don't apply this transform to vectors. Fixes PR2756.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55690 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 06:24:21 +00:00
Devang Patel
e925ccc553
Add additional check to ensure that iv is canonicalized.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55682 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 00:29:13 +00:00
Devang Patel
a9348dc7ac
Check iteration count.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55680 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 00:10:56 +00:00
Devang Patel
c72139134c
While removing PHI, use basicblock to identify incoming value.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55678 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-03 00:02:42 +00:00
Devang Patel
cb7f483d8c
s/FP_AlwaysInline/FN_NOTE_AlwaysInline/g
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55676 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-02 22:43:57 +00:00
Devang Patel
108f92e376
If all IV uses are extending integer IV then change the type of IV itself, if possible.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55674 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-02 22:18:08 +00:00