Evan Cheng
efc67e78d7
Enhanced heuristic to determine the *best* register to spill. Instead of picking the register with the lowest spill weight. Consider (up to) 2 additional registers with spill weights that are close to the lowest spill weight. The one with fewest defs and uses that conflicts with the current interval (weighted by loop depth) is the spill candidate.
...
This is not always a win, but there are much more wins than loses and wins tend to be more noticeable.
llvm-svn: 52554
2008-06-20 21:45:16 +00:00
Ted Kremenek
99ecdd175d
Added ParentMap, a class to represent a lazily constructed mapping from child to parents.
...
llvm-svn: 52553
2008-06-20 21:40:36 +00:00
Ted Kremenek
d50c7a4b0d
Added "Decl::getCodyBody()", a virtual method that returns the root AST node (Stmt*) that the Decl wraps (if any). Currently this only returns a non-null value for FunctionDecl and ObjCMethodDecl.
...
llvm-svn: 52552
2008-06-20 21:39:47 +00:00
Chris Lattner
e4645615d3
integer types are not primitive, they are derived.
...
llvm-svn: 52551
2008-06-20 20:50:48 +00:00
Owen Anderson
d1cb6e2466
llvmc doesn't exist anymore, and llvmc2 doesn't have a special license file.
...
llvm-svn: 52550
2008-06-20 20:05:57 +00:00
Owen Anderson
12c763f31c
Remove empty directory.
...
llvm-svn: 52549
2008-06-20 20:05:17 +00:00
Duncan Sands
f362183c24
Share some code that is common between integer and
...
float expansion (and sometimes vector splitting too).
llvm-svn: 52548
2008-06-20 18:40:50 +00:00
Duncan Sands
b6a90ccaee
Add some methods for querying the nature of a
...
store, like the methods for loads (and neaten
those up a bit while there).
llvm-svn: 52547
2008-06-20 18:34:30 +00:00
Duncan Sands
49295b48eb
Rename the operation of turning a float type into an
...
integer of the same type. Before it was "promotion",
but this is confusing because it is quite different
to promotion of integers. Call it "softening" instead,
inspired by "soft float".
llvm-svn: 52546
2008-06-20 17:49:55 +00:00
Dan Gohman
3792c470d5
Clean up some uses of std::distance, now that we have allnodes_size.
...
llvm-svn: 52545
2008-06-20 17:15:19 +00:00
Dan Gohman
3ada1e118b
Clean up a use of std::distance.
...
llvm-svn: 52544
2008-06-20 17:11:32 +00:00
Dan Gohman
a5dd67f002
Tidy up some commments and use the getAggregateOperand and
...
getInsertedValueOperand accessors. Thanks Matthijs!
llvm-svn: 52543
2008-06-20 16:41:17 +00:00
Dan Gohman
b5210efb31
Fix the conditions under which SCCP should examine insertvalue
...
instructions. Thanks to Matthijs Kooijman for pointing this out!
llvm-svn: 52542
2008-06-20 16:39:44 +00:00
Dan Gohman
795e2943a2
Add an allnodes_size method.
...
llvm-svn: 52541
2008-06-20 16:03:16 +00:00
Matthijs Kooijman
48b282f03b
Add testcase that checks that DeadArgElim doesn't touch stuff it shouldn't touch.
...
llvm-svn: 52540
2008-06-20 15:38:22 +00:00
Matthijs Kooijman
c456f9dfc6
80 column and trailing whitespace fixes.
...
llvm-svn: 52539
2008-06-20 15:34:07 +00:00
Matthijs Kooijman
0c50b953c5
Don't let DeadArgumentElimination attempt to update callers when the return
...
type wasn't changed.
llvm-svn: 52538
2008-06-20 15:25:43 +00:00
Matthijs Kooijman
9dc59b7666
Don't let DeadArgElimination change the return type ({} into void and {T}
...
into T) when no return values are actually dead.
llvm-svn: 52537
2008-06-20 15:16:45 +00:00
Matthijs Kooijman
013b6a9a42
Explicitely track if any arguments or return values were removed in
...
DeadArgumentElimination and assert that the function type does not change if
nothing was changed. This should catch subtle changes in function type that are
not intended.
llvm-svn: 52536
2008-06-20 14:28:52 +00:00
Matthijs Kooijman
e91aed6ce1
Remove debug output.
...
llvm-svn: 52535
2008-06-20 14:03:35 +00:00
Matthijs Kooijman
8d32dee428
Recommit r52459, rewriting of the dead argument elimination pass.
...
This is a fixed version that no longer uses multimap::equal_range, which
resulted in a pointer invalidation problem.
Also, DAE::InspectedFunctions was not really necessary, so it got removed.
Lastly, this version no longer applies the extra arg hack on functions who did
not have any arguments to start with.
llvm-svn: 52532
2008-06-20 09:36:16 +00:00
Owen Anderson
78fbcafb53
Really disable PRE.
...
llvm-svn: 52531
2008-06-20 08:59:13 +00:00
Chris Lattner
2616a7e0f7
"Just a small update for the project files for adding a missing preprocessor
...
definition for VS2005 (without SP1). It suppress the (bogus) M$ deprecated
warning."
Patch by Cédric Venet!
llvm-svn: 52530
2008-06-20 05:35:58 +00:00
Chris Lattner
54d26c6b12
Fix a warning, closing PR2452
...
llvm-svn: 52529
2008-06-20 05:33:29 +00:00
Chris Lattner
65ee4e3a5c
Fix a warning.
...
llvm-svn: 52528
2008-06-20 05:31:04 +00:00
Chris Lattner
d53bd2da98
Fix an error handling redefinition of linkonce functions where the
...
types differ. Patch by Nathan Keynes!
llvm-svn: 52527
2008-06-20 05:29:39 +00:00
Chris Lattner
ba00c761b7
fix a warning.
...
llvm-svn: 52526
2008-06-20 05:28:56 +00:00
Chris Lattner
f3ecd2d290
Fix PR2471, which is a bug involving an invalid promotion from a conditional load.
...
llvm-svn: 52525
2008-06-20 05:12:56 +00:00
Chris Lattner
643b00a3e6
Fix typo, fix suggested by Nicholas Olsen
...
llvm-svn: 52524
2008-06-20 05:03:17 +00:00
Gordon Henriksen
9f337549a7
Add C binding for ExecutionEngine::addGlobalMapping.
...
llvm-svn: 52523
2008-06-20 02:16:11 +00:00
Dan Gohman
593a010c56
Teach ReturnInst lowering about aggregate return values.
...
llvm-svn: 52522
2008-06-20 01:29:26 +00:00
Owen Anderson
1b3ea963f7
Change around the data structures used to store availability sets, resulting in a GVN+PRE that is faster that GVN alone was before.
...
llvm-svn: 52521
2008-06-20 01:15:47 +00:00
Dan Gohman
041f9d03ff
Teach SCCP about insertvalue and extractvalue, and about
...
propagating constants across aggregate return values when
insertvalue and extractvalue are used.
llvm-svn: 52520
2008-06-20 01:15:44 +00:00
Dan Gohman
3b18fd7b02
Teach InlineFunction how to differentiate between multiple-value
...
return statements and aggregate returns so that it handles both
correctly.
llvm-svn: 52519
2008-06-20 01:03:44 +00:00
Evan Cheng
9598f930f3
Disable PRE for now. It seems to be breaking llvm-gcc bootstrapping.
...
llvm-svn: 52518
2008-06-20 01:01:07 +00:00
Dan Gohman
44b2c57e2b
Fix the index calculations for the extractvalue lowering code.
...
llvm-svn: 52517
2008-06-20 00:54:19 +00:00
Dan Gohman
c7a32fc8ca
Simplify the ComputeLinearIndex logic and fix a few bugs.
...
llvm-svn: 52516
2008-06-20 00:53:00 +00:00
Dan Gohman
e8512ffba6
It's invalid to take the one-past-the-end address of a non-array
...
object.
llvm-svn: 52515
2008-06-20 00:49:21 +00:00
Dan Gohman
d87e813e41
Simplify this code. Thanks Chris!
...
llvm-svn: 52514
2008-06-20 00:47:44 +00:00
Ted Kremenek
e562289a0f
Updated latest static analysis build.
...
llvm-svn: 52512
2008-06-19 23:20:00 +00:00
Ted Kremenek
940a738e77
Add DTD information.
...
llvm-svn: 52511
2008-06-19 23:14:24 +00:00
Evan Cheng
be0429c558
ISD::UNDEF should be expanded recursively / iteratively.
...
llvm-svn: 52508
2008-06-19 22:01:11 +00:00
Mike Stump
d7667bd8e0
Remove tabs.
...
llvm-svn: 52507
2008-06-19 20:57:50 +00:00
Owen Anderson
e780d66657
Add a hidden -disable-pre flag for testing purposes. This should be removed
...
once benchmarking is completed.
llvm-svn: 52506
2008-06-19 19:57:25 +00:00
Owen Anderson
fdf9f168b5
PRE requires that critical edges be split.
...
llvm-svn: 52505
2008-06-19 19:54:19 +00:00
Mike Stump
65643c6480
One more test checkin.
...
Remove an extra space at the end of a line.
llvm-svn: 52504
2008-06-19 19:52:46 +00:00
Mike Stump
01e07653d4
Test commit to see if new account works.
...
I choose to remove extraneous whitespace at end of lines as a semantic
nop for the test.
llvm-svn: 52503
2008-06-19 19:28:49 +00:00
Bill Wendling
cd6fb1d0a8
Remove dead code causing a warning.
...
llvm-svn: 52502
2008-06-19 18:00:44 +00:00
Ted Kremenek
46c82ab994
Introduce initial transfer function support for __imag__ and __real__. We don't
...
have complex RValues yet, so this logic is only fully implemented when __imag__
and __real__ are used on non-complex types.
llvm-svn: 52501
2008-06-19 17:55:38 +00:00
Dan Gohman
d6530872f3
Use the common API for adding instructions to basic blocks instead of
...
using BasicBlock::getInstList.
llvm-svn: 52500
2008-06-19 17:53:32 +00:00