summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
Commit message (Collapse)AuthorAgeFilesLines
* Cast away "comparison between signed and unsigned integer" warnings.Benjamin Kramer2010-12-281-3/+6
| | | | llvm-svn: 122598
* move isBytewiseValue out to ValueTracking.h/cppChris Lattner2010-12-261-0/+69
| | | | llvm-svn: 122565
* Change all self assignments X=X to (void)X, so that we can turn on aJeffrey Yasskin2010-12-232-3/+2
| | | | | | | new gcc warning that complains on self-assignments and self-initializations. llvm-svn: 122458
* When determining whether the new instruction was already present inDuncan Sands2010-12-221-6/+8
| | | | | | | | the original instruction, half the cases were missed (making it not wrong but suboptimal). Also correct a typo (A <-> B) in the second chunk. llvm-svn: 122414
* Add some statistics, good for understanding how much more powerfulDuncan Sands2010-12-221-14/+48
| | | | | | instcombine is compared to instsimplify. llvm-svn: 122397
* While I don't think any later transforms can fire, it seems cleaner toDuncan Sands2010-12-211-3/+6
| | | | | | | not assume this (for example in case more transforms get added below it). Suggested by Frits van Bommel. llvm-svn: 122332
* Fix inverted condition noticed by Frits van Bommel.Duncan Sands2010-12-211-3/+3
| | | | llvm-svn: 122331
* Pull a few more simplifications out of instcombine (there are stillDuncan Sands2010-12-211-5/+86
| | | | | | plenty left though!), in particular for multiplication. llvm-svn: 122330
* Teach InstructionSimplify about distributive laws. These transforms fireDuncan Sands2010-12-211-11/+159
| | | | | | | quite often, but don't make much difference in practice presumably because instcombine also knows them and more. llvm-svn: 122328
* Move checking of the recursion limit into the various Thread methods.Duncan Sands2010-12-211-20/+36
| | | | | | No functionality change. llvm-svn: 122327
* Add generic simplification of associative operations, generalizingDuncan Sands2010-12-211-28/+118
| | | | | | | | | | | | a couple of existing transforms. This fires surprisingly often, for example when compiling gcc "(X+(-1))+1->X" fires quite a lot as well as various "and" simplifications (usually with a phi node operand). Most of the time this doesn't make a real difference since the same thing would have been done elsewhere anyway, eg: by instcombine, but there are a few places where this results in simplifications that we were not doing before. llvm-svn: 122326
* Speculatively revert the use of DenseMap in LazyValueInfo, which may be ↵Owen Anderson2010-12-201-42/+16
| | | | | | causing Linux self-host failures. llvm-svn: 122291
* Attempt to appease the DragonEgg buildbots.Owen Anderson2010-12-201-22/+24
| | | | llvm-svn: 122288
* Convert one of LVI's primary maps to a DenseMap, now that we know are more ↵Owen Anderson2010-12-201-16/+40
| | | | | | assured of iterator stability. llvm-svn: 122273
* More LVI cleanups, including trying to simplify the process of maintaining ↵Owen Anderson2010-12-201-25/+41
| | | | | | the OverDefinedCache. llvm-svn: 122256
* Reuse the reference into the LVI cache throughout the solver subsystem. ↵Owen Anderson2010-12-201-24/+28
| | | | | | | | This is much easier to verify as being safe thanks its recent de-recursivization. llvm-svn: 122254
* Have SimplifyBinOp dispatch Xor, Add and Sub to the corresponding methodsDuncan Sands2010-12-201-5/+27
| | | | | | | (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. llvm-svn: 122245
* Make LazyValueInfo non-recursive.Nick Lewycky2010-12-181-132/+249
| | | | llvm-svn: 122120
* Add vector versions of some existing scalar transforms to aid codegen in ↵Nate Begeman2010-12-171-0/+7
| | | | | | matching psign & pblend operations to the IR produced by clang/gcc for their C idioms. llvm-svn: 122105
* Update a comment.Dan Gohman2010-12-161-1/+3
| | | | llvm-svn: 121946
* Make memcpyopt TBAA-aware.Dan Gohman2010-12-161-4/+10
| | | | llvm-svn: 121944
* Enable TBAA by default.Dan Gohman2010-12-151-1/+1
| | | | llvm-svn: 121923
* Reapply r121886, and also update DecomposeGEPExpression to keepDan Gohman2010-12-152-0/+17
| | | | | | it in sync. llvm-svn: 121895
* Revert r121886. DecomposeGEPExpression needs to be keptDan Gohman2010-12-151-8/+0
| | | | | | in sync. llvm-svn: 121892
* Strengthen GetUnderlyingObject using InstructionSimplify.Dan Gohman2010-12-151-0/+9
| | | | | | | | | | 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. llvm-svn: 121886
* Move Value::getUnderlyingObject to be a standaloneDan Gohman2010-12-159-20/+44
| | | | | | | function so that it can live in Analysis instead of VMCore. llvm-svn: 121885
* Clean up some of LVI:Nick Lewycky2010-12-151-91/+101
| | | | | | | | * 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. llvm-svn: 121877
* Move Sub simplifications and additional Add simplifications out ofDuncan Sands2010-12-151-10/+67
| | | | | | instcombine and into InstructionSimplify. llvm-svn: 121861
* If we detect that the instruction we are simplifying is unreachable, arrange forDuncan Sands2010-12-151-3/+3
| | | | | | | 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. llvm-svn: 121860
* Update a comment.Dan Gohman2010-12-131-4/+3
| | | | llvm-svn: 121727
* Reapply r121520, PartialAlias implementation for BasicAA, now thatDan Gohman2010-12-131-0/+11
| | | | | | memdep is updated to handle it. llvm-svn: 121725
* Update memdep to handle PartialAlias as MayAlias.Dan Gohman2010-12-131-4/+4
| | | | llvm-svn: 121723
* Remove useless dynamic_cast<>().Tobias Grosser2010-12-121-2/+1
| | | | | | | Thanks Peter for pointing me to something that should have never been committed to the llvm code base. llvm-svn: 121648
* Revert r121520, which may have introduced miscompilations.Dan Gohman2010-12-101-11/+0
| | | | llvm-svn: 121573
* Implement PartialAlias checking in BasicAA.Dan Gohman2010-12-101-0/+11
| | | | llvm-svn: 121520
* Minimally update this code to handle PartialAlias.Dan Gohman2010-12-101-0/+1
| | | | llvm-svn: 121518
* Use PartialAlias to do better noalias lint checking.Dan Gohman2010-12-101-4/+6
| | | | llvm-svn: 121514
* Teach AliasAnalysisCounter about PartialAlias.Dan Gohman2010-12-101-4/+8
| | | | llvm-svn: 121513
* Teach AliasAnalysisEvaluator about PartialAlias.Dan Gohman2010-12-101-5/+14
| | | | llvm-svn: 121512
* Update this code to handle PartialAlias as MayAlias.Dan Gohman2010-12-101-1/+1
| | | | llvm-svn: 121508
* Take the first step towards making LVI non-recursive: get rid of the ↵Owen Anderson2010-12-091-101/+39
| | | | | | LVIQuery abstraction. llvm-svn: 121357
* Use type's file info while describing inheritance relationship.Devang Patel2010-12-081-1/+1
| | | | llvm-svn: 121289
* Add support to create debug info for functions and methods.Devang Patel2010-12-081-0/+77
| | | | llvm-svn: 121281
* Add support to create class type.Devang Patel2010-12-082-0/+46
| | | | llvm-svn: 121279
* Add support to create vector, array, enums etc...Devang Patel2010-12-082-6/+169
| | | | llvm-svn: 121224
* Global variable does not need linkage name.Devang Patel2010-12-081-3/+2
| | | | llvm-svn: 121212
* Add support to create local variable's debug info.Devang Patel2010-12-071-0/+33
| | | | llvm-svn: 121211
* Add support to create variables, structs etc.. using DIBuilder.Devang Patel2010-12-072-7/+224
| | | | | | This is still work in progress. llvm-svn: 121205
* PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() andJay Foad2010-12-074-22/+18
| | | | | | | | 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. llvm-svn: 121120
* Also inore '()' while creating mdnode name from ObjC symbol name.Jakob Stoklund Olesen2010-12-031-1/+2
| | | | llvm-svn: 120856
OpenPOWER on IntegriCloud