Commit Graph

3283 Commits

Author SHA1 Message Date
Torok Edwin bfc17d0157 Add a missing function.
llvm-svn: 110195
2010-08-04 11:42:45 +00:00
Dan Gohman fc419ef6a0 Remove PointerAccessInfo, which nothing was using.
llvm-svn: 110167
2010-08-03 23:08:10 +00:00
Dan Gohman 5442c71f2e Thread const correctness through a bunch of AliasAnalysis interfaces and
eliminate several const_casts.

Make CallSite implicitly convertible to ImmutableCallSite.

Rename the getModRefBehavior for intrinsic IDs to
getIntrinsicModRefBehavior to avoid overload ambiguity with CallSite,
which happens to be implicitly convertible to bool.

llvm-svn: 110155
2010-08-03 21:48:53 +00:00
Dan Gohman ad867b0aed The singular of "indices" is "index".
llvm-svn: 110135
2010-08-03 20:23:52 +00:00
Dan Gohman 852d6fc50c Delete an unused function.
llvm-svn: 110134
2010-08-03 20:20:56 +00:00
Dan Gohman 52f9d7d617 Make AliasAnalysis::getModRefInfo conservative in the face of volatility.
llvm-svn: 110120
2010-08-03 17:27:43 +00:00
Dan Gohman 081627ceb8 Fix a typo Devang noticed.
llvm-svn: 110115
2010-08-03 16:48:31 +00:00
Michael J. Spencer 2ce6994211 Fix CMake build
llvm-svn: 110097
2010-08-03 02:38:20 +00:00
Dan Gohman 2a190081f6 Introduce a symbolic constant for ~0u for use with AliasAnalysis.
llvm-svn: 110091
2010-08-03 01:03:11 +00:00
Dan Gohman da7182e116 Add a convenient form of AliasAnalysis::alias for the case where the sizes
are unknown.

llvm-svn: 110090
2010-08-03 00:56:30 +00:00
Dan Gohman 7cac95778f Make SCEVUnknown a CallbackVH, so that it can be notified directly
of Value deletions and RAUWs, instead of relying on ScalarEvolution's
Scalars map being notified, as that's complicated at best, and
insufficient in general.

This means SCEVUnknown needs a non-trivial destructor, so introduce
a mechanism to allow ScalarEvolution to locate all the SCEVUnknowns.

llvm-svn: 110086
2010-08-02 23:49:30 +00:00
Dan Gohman 272980b3f6 Sketch up a preliminary Type-Based Alias Analysis implementation.
llvm-svn: 110077
2010-08-02 23:11:01 +00:00
Dan Gohman d8968da2c5 Add a lint check for indirectbr with no successors.
llvm-svn: 110074
2010-08-02 23:06:43 +00:00
Devang Patel 33a2cdf3f9 Add explicit constructors. Patch by Renato Golin.
llvm-svn: 110072
2010-08-02 22:51:46 +00:00
Dan Gohman abfafadfc7 Fix namespace polution.
llvm-svn: 110056
2010-08-02 18:50:06 +00:00
Oscar Fuentes 40b31ad3ee Prefix `next' iterator operation with `llvm::'.
Fixes potential ambiguity problems on VS 2010.

Patch by nobled!

llvm-svn: 110029
2010-08-02 06:00:15 +00:00
Owen Anderson c1561b8400 Add an initial implementation of PHI translation for LazyValueInfo. This involves rolling back some
of my earlier data structure improvements until I can ensure that there are no iterator invalidation problems.

llvm-svn: 109935
2010-07-30 23:59:40 +00:00
Owen Anderson e4a0ab69d2 Revert my last two patches to LVI, which recent changes have exposed a miscompilation in.
llvm-svn: 109889
2010-07-30 20:56:07 +00:00
Eric Christopher ef6d5933a6 Speculatively revert r109705 since it seems to be causing some build bot
angst.

llvm-svn: 109718
2010-07-29 01:25:38 +00:00
Dan Gohman 3d6ac44d96 Factor out some of the code for updating old SCEVUnknown values, and
extend it to handle the case where multiple RAUWs affect a single
SCEVUnknown.

Add a ScalarEvolution unittest to test for this situation.

llvm-svn: 109705
2010-07-29 00:17:55 +00:00
Owen Anderson a44f49f189 Pass the queried value by argument rather than in a member, in preparation for supporting PHI translation.
llvm-svn: 109701
2010-07-28 23:50:08 +00:00
Owen Anderson 6982dd4e1f Get rid of LVIQuery as a distinct data structure, so that we don't have to initialize a new set of maps on every query.
llvm-svn: 109679
2010-07-28 22:07:25 +00:00
Daniel Dunbar 18e39cec7a RegionInfo: Make sure to free cached nodes; Tobias, please check!
llvm-svn: 109650
2010-07-28 20:28:50 +00:00
Gabor Greif e497e5ef46 simplify
llvm-svn: 109585
2010-07-28 15:31:37 +00:00
Gabor Greif 5bf74d648d use Value* constructor of CallSite to create potentially improper site, and test that
llvm-svn: 109580
2010-07-28 12:35:54 +00:00
Gabor Greif 67a970bff2 use Value* constructor of CallSite to create potentially improper site
llvm-svn: 109579
2010-07-28 12:19:46 +00:00
Gabor Greif 7cf6056484 simplify
llvm-svn: 109578
2010-07-28 10:57:28 +00:00
Gabor Greif 2e2503cd8d simplify
llvm-svn: 109577
2010-07-28 10:46:09 +00:00
Dan Gohman 7a066723d0 Make SCEVCallbackVH::allUsesReplacedWith update the old SCEVUnknown
object, as it may still be referenced by SCEVs not cleaned up by the
use list traversal.

Also, in ScalarEvolution::forgetValue, only check for a SCEVUnknown
object for the original value, not for any value in the use list,
because other SCEVUnknown values aren't necessary obsolete at that
point.

llvm-svn: 109570
2010-07-28 01:09:07 +00:00
Dan Gohman 8aeb0fb5ca Make SCEVCallbackVH::allUsesReplacedWith unconditionally delete
the old value.

llvm-svn: 109567
2010-07-28 00:28:25 +00:00
Owen Anderson aac5a72139 Rearrange several datastructures in LazyValueInfo to improve compile time.
This is still not perfect, but better than it was before.

llvm-svn: 109563
2010-07-27 23:58:11 +00:00
Gabor Greif 0630a71742 reintroduce original (asserting) semantics of CallSite(Instruction *II)
add instead a CallSite(Value* V) constructor that is consistent with ImmutableCallSize
and use that one in client code

llvm-svn: 109553
2010-07-27 22:53:28 +00:00
Gabor Greif ef1ca24b91 recommit simplification (originally r109504, backed out in r109508) now that problem in CallSiteBase is fixed
llvm-svn: 109547
2010-07-27 22:02:00 +00:00
Gabor Greif ed1d92cb9a back out r109504, breaks the bots
llvm-svn: 109508
2010-07-27 15:18:11 +00:00
Gabor Greif 195a609c37 simplify
llvm-svn: 109504
2010-07-27 14:38:38 +00:00
Gabor Greif d59498bc97 use ImmutableCallSite for const-corrgoodness
llvm-svn: 109503
2010-07-27 14:15:29 +00:00
Tobias Grosser fc763867d5 RegionInfo: Add getMaxRegionExit()
getMaxRegionExit returns the exit of the maximal refined region starting
at a specific basic block.

llvm-svn: 109496
2010-07-27 08:39:43 +00:00
Tobias Grosser 1bec81a888 Add function to query RegionInfo about loops.
* contains(Loop), * getOutermostLoop()
* Improve getNameStr() to return a sensible name, if basic blocks are not named.

llvm-svn: 109490
2010-07-27 04:17:13 +00:00
Owen Anderson aa7f66ba67 Add an initial implementation of LazyValueInfo updating for JumpThreading. Disabled for now.
llvm-svn: 109424
2010-07-26 18:48:03 +00:00
Dan Gohman cd83870faf Fix SCEVExpander::visitAddRecExpr so that it remembers the induction variable
it inserted rather than using LoopInfo::getCanonicalInductionVariable to
rediscover it, since that doesn't work on non-canonical loops. This fixes
infinite recurrsion on such loops; PR7562.

llvm-svn: 109419
2010-07-26 18:28:14 +00:00
Dan Gohman b3aa6c7110 Use DominatorTree::properlyDominates instead of dominates with an
explicit inequality check.

llvm-svn: 109398
2010-07-26 17:34:05 +00:00
Dan Gohman 7038bd5c1a Eliminate getCanonicalInductionVariableIncrement's last user and
eliminate it.

llvm-svn: 109270
2010-07-23 21:34:51 +00:00
Dan Gohman acafc61023 Simplify this code; it can use the regular CFG utlities rather than
the BlockTraits abstractions.

llvm-svn: 109268
2010-07-23 21:25:16 +00:00
Dan Gohman 5ae3102459 Micro-optimize SCEVComplexityCompare.
llvm-svn: 109267
2010-07-23 21:20:52 +00:00
Dan Gohman 992db006d0 Add a const qualifier.
llvm-svn: 109266
2010-07-23 21:18:55 +00:00
Gabor Greif 1a2da423c9 use cascading operator-> feature
llvm-svn: 109104
2010-07-22 13:49:27 +00:00
Gabor Greif dde79d8f1a mass elimination of reliance on automatic iterator dereferencing
llvm-svn: 109103
2010-07-22 13:36:47 +00:00
Gabor Greif d9f48ecb2e use -> instead of (*).
llvm-svn: 109094
2010-07-22 11:12:32 +00:00
Gabor Greif 07c8ad54da cache dereferenced iterator
llvm-svn: 109093
2010-07-22 11:07:46 +00:00
Tobias Grosser 336734aca6 Add new RegionInfo pass.
The RegionInfo pass detects single entry single exit regions in a function,
where a region is defined as any subgraph that is connected to the remaining
graph at only two spots.
Furthermore an hierarchical region tree is built.
Use it by calling "opt -regions analyze" or "opt -view-regions".

llvm-svn: 109089
2010-07-22 07:46:31 +00:00