Owen Anderson
4d3daab1a1
Speculatively revert the use of DenseMap in LazyValueInfo, which may be causing Linux self-host failures.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122291 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 23:53:19 +00:00
Owen Anderson
bb39ac1458
Attempt to appease the DragonEgg buildbots.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122288 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 23:23:18 +00:00
Owen Anderson
aa6f105629
Convert one of LVI's primary maps to a DenseMap, now that we know are more assured of iterator stability.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122273 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 21:30:54 +00:00
Owen Anderson
87790abb08
More LVI cleanups, including trying to simplify the process of maintaining the OverDefinedCache.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122256 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 19:33:41 +00:00
Owen Anderson
6186394528
Reuse the reference into the LVI cache throughout the solver subsystem. This is much easier to
...
verify as being safe thanks its recent de-recursivization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122254 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 18:18:16 +00:00
Duncan Sands
ee9a2e322a
Have SimplifyBinOp dispatch Xor, Add and Sub to the corresponding methods
...
(they had just been forgotten before). Adding Xor causes "main" in the
existing testcase 2010-11-01-lshr-mask.ll to be hugely more simplified.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122245 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-20 14:47:04 +00:00
Nick Lewycky
90862eeb7d
Make LazyValueInfo non-recursive.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122120 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 01:00:40 +00:00
Nate Begeman
9a3dc55202
Add vector versions of some existing scalar transforms to aid codegen in matching psign & pblend operations to the IR produced by clang/gcc for their C idioms.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122105 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-17 23:12:19 +00:00
Dan Gohman
326faecc35
Update a comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121946 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-16 02:55:10 +00:00
Dan Gohman
387f28aff4
Make memcpyopt TBAA-aware.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121944 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-16 02:51:19 +00:00
Dan Gohman
d67ca9de89
Enable TBAA by default.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121923 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-15 23:58:44 +00:00
Dan Gohman
c01895c7db
Reapply r121886, and also update DecomposeGEPExpression to keep
...
it in sync.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121895 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-15 20:49:55 +00:00
Dan Gohman
3928d13808
Revert r121886. DecomposeGEPExpression needs to be kept
...
in sync.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121892 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-15 20:39:25 +00:00
Dan Gohman
243712720a
Strengthen GetUnderlyingObject using InstructionSimplify.
...
While LLVM's main design is that analysis code shouldn't
go out of its way to understand code which hasn't been
InstCombined, analysis utility routines like this can
find themselves being called in the middle of transform
passes when instcombine hasn't had a chance to run.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121886 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-15 20:10:26 +00:00
Dan Gohman
5034dd318a
Move Value::getUnderlyingObject to be a standalone
...
function so that it can live in Analysis instead of
VMCore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121885 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-15 20:02:24 +00:00
Nick Lewycky
69bfdf5a24
Clean up some of LVI:
...
* mergeIn now uses constant folding for constants that are provably not-equal.
* sink some sanity checks from the get*() methods into the mark*() methods, to ensure that we never have a constant/notconstant ConstantInt
* some textual cleanups, whitespace changes, removing "else" after return, that sort of thing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121877 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-15 18:57:18 +00:00
Duncan Sands
fea3b218d6
Move Sub simplifications and additional Add simplifications out of
...
instcombine and into InstructionSimplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121861 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-15 14:07:39 +00:00
Duncan Sands
f8b1a5ea96
If we detect that the instruction we are simplifying is unreachable, arrange for
...
it to be replaced by undef rather than not replaced at all, the idea being that
this may reduce the amount of work done by whoever called InstructionSimplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121860 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-15 11:02:22 +00:00
Dan Gohman
c1f1efdd1a
Update a comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121727 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-13 22:53:18 +00:00
Dan Gohman
0f7f194416
Reapply r121520, PartialAlias implementation for BasicAA, now that
...
memdep is updated to handle it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121725 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-13 22:50:24 +00:00
Dan Gohman
2cd1952917
Update memdep to handle PartialAlias as MayAlias.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121723 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-13 22:47:57 +00:00
Tobias Grosser
d713acb631
Remove useless dynamic_cast<>().
...
Thanks Peter for pointing me to something that should have never been
committed to the llvm code base.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121648 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-12 21:58:28 +00:00
Dan Gohman
839c092548
Revert r121520, which may have introduced miscompilations.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121573 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10 21:48:28 +00:00
Dan Gohman
3bd5e52676
Implement PartialAlias checking in BasicAA.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121520 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10 20:47:03 +00:00
Dan Gohman
d891acd184
Minimally update this code to handle PartialAlias.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121518 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10 20:14:49 +00:00
Dan Gohman
4a2a3eab2d
Use PartialAlias to do better noalias lint checking.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121514 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10 20:04:06 +00:00
Dan Gohman
91d747569a
Teach AliasAnalysisCounter about PartialAlias.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121513 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10 19:53:05 +00:00
Dan Gohman
3d9f1ca5af
Teach AliasAnalysisEvaluator about PartialAlias.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121512 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10 19:52:40 +00:00
Dan Gohman
2c2f4c8247
Update this code to handle PartialAlias as MayAlias.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121508 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10 19:40:47 +00:00
Owen Anderson
f33b302e5b
Take the first step towards making LVI non-recursive: get rid of the LVIQuery abstraction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121357 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-09 06:14:58 +00:00
Devang Patel
b351ebf7fc
Use type's file info while describing inheritance relationship.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121289 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08 21:46:37 +00:00
Devang Patel
44498a640d
Add support to create debug info for functions and methods.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121281 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08 20:42:44 +00:00
Devang Patel
0a2551de2c
Add support to create class type.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121279 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08 20:18:20 +00:00
Devang Patel
43c249cf1e
Add support to create vector, array, enums etc...
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121224 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08 01:50:15 +00:00
Devang Patel
94541efd92
Global variable does not need linkage name.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121212 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-08 00:06:22 +00:00
Devang Patel
48f17ba2a6
Add support to create local variable's debug info.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121211 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-07 23:58:00 +00:00
Devang Patel
fe58f95f36
Add support to create variables, structs etc.. using DIBuilder.
...
This is still work in progress.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121205 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-07 23:25:47 +00:00
Jay Foad
40f8f6264d
PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() and
...
zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method
trunc(), to be const and to return a new value instead of modifying the
object in place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121120 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-07 08:25:19 +00:00
Jakob Stoklund Olesen
5b3f779f33
Also inore '()' while creating mdnode name from ObjC symbol name.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120856 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03 23:40:45 +00:00
Devang Patel
ddb85acdbe
Ignore '+' while creating mdnode name from ObjC symbol name.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120853 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03 23:29:30 +00:00
Jay Foad
7a874ddda0
PR5207: Rename overloaded APInt methods set(), clear(), flip() to
...
setAllBits(), setBit(unsigned), etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120564 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-01 08:53:58 +00:00
Chris Lattner
ed58a6f96f
move GetPointerBaseWithConstantOffset out of GVN into ValueTracking.h
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120476 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-30 22:25:26 +00:00
Jay Foad
a99793c5ea
PR5207: Make APInt::set(), APInt::clear() and APInt::flip() return void.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120413 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-30 09:02:01 +00:00
Chris Lattner
12bf43bc4f
strength reduce this.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120381 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-30 01:56:13 +00:00
Chris Lattner
9dc9e81aa7
getLocationForDest should work for memset as well.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120380 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-30 01:48:20 +00:00
Chris Lattner
13815d9d3e
enhance basicaa to return "Mod" for a memcpy call when the
...
queried location doesn't overlap the source, and add a testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120370 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-30 00:43:16 +00:00
Chris Lattner
201d1e56bb
Teach basicaa that memset's modref set is at worst "mod" and never
...
contains "ref".
Enhance DSE to use a modref query instead of a store-specific hack
to generalize the "ignore may-alias stores" optimization to handle
memset and memcpy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120368 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-30 00:28:45 +00:00
Frits van Bommel
3ee0af3584
Teach ConstantFoldInstruction() how to fold insertvalue and extractvalue.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120316 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-29 20:36:52 +00:00
Michael J. Spencer
1f6efa3996
Merge System into Support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120298 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-29 18:16:10 +00:00
Chandler Carruth
e89ada98a6
Add some dead stores to pacify my least favorite GCC warning: may be
...
uninitialized. The warning is terrible, has incorrect source locations, and has
a huge false positive rate such as *all* of these.
If anyone has a better solution, please let me know. Alternatively, I'll
happily add -Wno-uninitialized to the -Werror build mode. Maybe I can even do
it *only* when building with GCC instead of Clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120281 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-29 01:41:13 +00:00