summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils
Commit message (Collapse)AuthorAgeFilesLines
...
* use ArgOperand API (one more hunk I could split)Gabor Greif2010-06-251-2/+2
| | | | llvm-svn: 106825
* use ArgOperand API (some hunks I could split)Gabor Greif2010-06-251-1/+1
| | | | llvm-svn: 106824
* use callsite to obtain all argumentsGabor Greif2010-06-241-1/+2
| | | | llvm-svn: 106728
* Use ValueMap instead of DenseMap.Devang Patel2010-06-244-15/+14
| | | | | | The ValueMapper used by various cloning utility maps MDNodes also. llvm-svn: 106706
* Use available typedef for " DenseMap<const Value*, Value*>".Devang Patel2010-06-242-8/+8
| | | | llvm-svn: 106699
* Cosmetic change.Devang Patel2010-06-236-102/+102
| | | | | | Do not use "ValueMap" as a name for a local variable or an argument. llvm-svn: 106698
* Revert 106592 for now. It causes clang-selfhost build failure.Devang Patel2010-06-221-34/+13
| | | | llvm-svn: 106598
* If a metadata operand is seeded in value map and the metadata should also be ↵Devang Patel2010-06-221-13/+34
| | | | | | | | | | | seeded in value map. This is not limited to function local metadata. Failure to seed metdata in such cases causes troubles when in a cloned module, metadata from a new module refers to values in old module. Usually this results in mysterious bugpoint crashes. For example, Checking to see if we can delete global inits: Unknown constant! UNREACHABLE executed at /d/g/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp:904! llvm-svn: 106592
* While cloning a module, clone metadata attached with instructions.Devang Patel2010-06-221-1/+16
| | | | llvm-svn: 106591
* Clone named metadata while cloning a module.Devang Patel2010-06-221-0/+11
| | | | | | Reapply Bob's patch. llvm-svn: 106560
* Use pre-increment instead of post-increment when the result is not used.Dan Gohman2010-06-221-3/+3
| | | | llvm-svn: 106542
* Revert 106528. It is causing self host failures.Devang Patel2010-06-221-5/+7
| | | | llvm-svn: 106529
* Do not rely on DenseMap slot which can be easily invalidated when DenseMap ↵Devang Patel2010-06-221-7/+5
| | | | | | grows. llvm-svn: 106528
* Revert my change to clone named metadata. Buildbots are complaining.Bob Wilson2010-06-221-11/+0
| | | | | | | --- Reverse-merging r106508 into '.': U lib/Transforms/Utils/CloneModule.cpp llvm-svn: 106521
* Include named metadata when cloning a module.Bob Wilson2010-06-221-0/+11
| | | | llvm-svn: 106508
* Use A.append(...) instead of A.insert(A.end(), ...) when A is aDan Gohman2010-06-211-3/+2
| | | | | | SmallVector, and other SmallVector simplifications. llvm-svn: 106452
* remove trailing whitespaceJim Grosbach2010-06-161-11/+11
| | | | llvm-svn: 106164
* simplify-libcalls: fold strstr(a, b) == a -> strncmp(a, b, strlen(b)) == 0Benjamin Kramer2010-06-151-0/+25
| | | | llvm-svn: 106047
* Copy location info for current function argument from dbg.declare if ↵Devang Patel2010-06-041-4/+2
| | | | | | respective store instruction does not have any location info. llvm-svn: 105490
* Remove unused codeJim Grosbach2010-06-011-64/+0
| | | | llvm-svn: 105293
* fix think-oJim Grosbach2010-06-011-6/+2
| | | | llvm-svn: 105291
* Simplify things a bit more. Fix prototype to use SmallVectorImpl andJim Grosbach2010-06-011-17/+17
| | | | | | change a few SmallVectors to vanilla C arrays. llvm-svn: 105289
* mirror of r105280 changes for LowerInvoke, which uses the same basic logic hereJim Grosbach2010-06-011-10/+27
| | | | llvm-svn: 105281
* Use SmallVector instead of std::vector.Jim Grosbach2010-06-011-12/+13
| | | | llvm-svn: 105279
* Fix PR7272: when inlining through a callsite with byval arguments,Duncan Sands2010-05-311-0/+4
| | | | | | | the newly created allocas may be used by inlined calls, so these need to have their tail call flags cleared. Fixes PR7272. llvm-svn: 105255
* The memcpy intrinsic only takes i8* for %src and %dst, so cast them to thatNick Lewycky2010-05-311-2/+2
| | | | | | first. Fixes PR7265. llvm-svn: 105206
* Move FindAvailableLoadedValue isSafeToLoadUnconditionally out ofDan Gohman2010-05-282-223/+0
| | | | | | | lib/Transforms/Utils and into lib/Analysis so that Analysis passes can use them. llvm-svn: 104949
* Fix typo.Devang Patel2010-05-281-1/+1
| | | | llvm-svn: 104914
* Fix typo.Devang Patel2010-05-281-1/+1
| | | | llvm-svn: 104913
* Do not drop location info for inlined function args.Devang Patel2010-05-271-0/+5
| | | | llvm-svn: 104884
* Fixes for Microsoft Visual Studio 2010, from Steven Watanabe!Douglas Gregor2010-05-111-1/+1
| | | | llvm-svn: 103457
* Wrap const MDNode * inside DIDescriptor.Devang Patel2010-05-071-1/+1
| | | | llvm-svn: 103295
* Use overloaded operators instead of DIDescriptor::getNode()Devang Patel2010-05-072-2/+2
| | | | llvm-svn: 103276
* Combine the implementations of the core part of the SSAUpdater andBob Wilson2010-05-041-429/+102
| | | | | | MachineSSAUpdater to avoid duplicating all the code. llvm-svn: 103060
* rename InlineInfo.DevirtualizedCalls -> InlinedCalls toChris Lattner2010-05-011-5/+5
| | | | | | | reflect that it includes all inlined calls now, not just devirtualized ones. llvm-svn: 102824
* Implement rdar://6295824 and PR6724 with two tiny changesChris Lattner2010-05-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | that can have a big effect :). The first is to enable the iterative SCC passmanager juice that kicks in when the scc passmgr detects that a function pass has devirtualized a call. In this case, it will rerun all the passes it manages on the SCC, up to the iteration count limit (4). This is useful because a function pass may devirualize a call, and we want the inliner to inline it, or pruneeh to infer stuff about it, etc. The second patch is to add *all* call sites to the DevirtualizedCalls list the inliner uses. This list is about to get renamed, but the jist of this is that the inliner now reconsiders *all* inlined call sites as candidates for further inlining. The intuition is this that in cases like this: f() { g(1); } g(int x) { h(x); } We analyze this bottom up, and may decide that it isn't profitable to inline H into G. Next step, we decide that it is profitable to inline G into F, and do so, which means that F now calls H. Even though the call from G -> H may not have been profitable to inline, the call from F -> H may be (in this case because a constant allows folding etc). In my spot checks, this doesn't have a big impact on code. For example, the LLC output for 252.eon grew from 0.02% (from 317252 to 317308) and 176.gcc actually shrunk by .3% (from 1525612 to 1520964 bytes). 252.eon never iterated in the SCC Passmgr, 176.gcc iterated at most 1 time. llvm-svn: 102823
* Fix a problem that lower invoke has with allocas (PR6694), and Chris Lattner2010-04-261-10/+38
| | | | | | | | | add a version of createLowerInvokePass that allows the client to specify whether it wants "expensive" or "cheap" lowering. Patch by Alex Mac! llvm-svn: 102402
* switch InlineInfo.DevirtualizedCalls's list to be of WeakVH.Chris Lattner2010-04-231-1/+1
| | | | | | | | | This fixes a bug where calls inlined into an invoke would get changed into an invoke but the array would keep pointing to the (now dead) call. The improved inliner behavior is still disabled for now. llvm-svn: 102196
* The inliner was choosing to not consider call sitesChris Lattner2010-04-221-2/+7
| | | | | | | | | | that appear in the SCC as a result of inlining as candidates for inlining. Change this so that it *does* consider call sites that change from being indirect to being direct as a result of inlining. This allows it to completely "devirtualize" the testcase. llvm-svn: 102146
* refactor the interface to InlineFunction so that most of the in/outChris Lattner2010-04-222-22/+23
| | | | | | | | arguments are handled with a new InlineFunctionInfo class. This makes it easier to extend InlineFunction to return more info in the future. llvm-svn: 102137
* when inlining something like this:Chris Lattner2010-04-221-2/+16
| | | | | | | | | | | | | | | | | | | | | | | define void @f3(void (i8*)* %__f) ssp { entry: call void %__f(i8* undef) unreachable } define void @f4(i8* %this) ssp align 2 { entry: call void @f3(void (i8*)* @f2) ssp ret void } The inliner is turning the indirect call to %__f into a direct call to F2. Make the call graph more precise when this happens. The inliner doesn't revisit call sites introduced by inlining, so there isn't an easy way to test for this, but a more precise callgraph is a good thing. llvm-svn: 102131
* eliminate dead #include.Chris Lattner2010-04-221-1/+0
| | | | llvm-svn: 102119
* Fix a performance problem with the new SSAUpdater. This showed up in theBob Wilson2010-04-211-2/+8
| | | | | | GCCAS time for MultiSource/Benchmarks/ASCI_Purple/SMG2000. llvm-svn: 102009
* Rename ValueMapTy as ValueToValueMapTy to clearly indicate that this has no ↵Devang Patel2010-04-203-9/+9
| | | | | | replationship with ADT/ValueMap. llvm-svn: 101950
* There is no need to install ValueMapper.h header. Devang Patel2010-04-204-3/+32
| | | | llvm-svn: 101949
* Re-commit my previous SSAUpdater changes. The previous version naively triedBob Wilson2010-04-171-179/+434
| | | | | | | | | | | to determine where to place PHIs by iteratively comparing reaching definitions at each block. That was just plain wrong. This version now computes the dominator tree within the subset of the CFG where PHIs may need to be placed, and then places the PHIs in the iterated dominance frontier of each definition. The rest of the patch is mostly the same, with a few more performance improvements added in. llvm-svn: 101612
* Revert 101465, it broke internal OpenGL testing.Eric Christopher2010-04-163-22/+22
| | | | | | | Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating. llvm-svn: 101579
* reapply r101434Gabor Greif2010-04-163-22/+22
| | | | | | | | | | | | | with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101465
* back out r101423 and r101397, they break llvm-gcc self-host on darwin10Gabor Greif2010-04-163-22/+22
| | | | llvm-svn: 101434
* reapply r101364, which has been backed out in r101368Gabor Greif2010-04-153-22/+22
| | | | | | | | | | | | | with a fix rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101397
OpenPOWER on IntegriCloud