aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Transforms/Utils/InlineFunction.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix a serious code pessimization problem. If an inlined function has a singleChris Lattner2004-07-201-5/+6
| | | | | | | | return, clone the 'ret' BB code into the block AFTER the inlined call, not the other way around. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15030 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix Inline/2004-04-15-InlineDeletesCall.llChris Lattner2004-04-161-12/+20
| | | | | | | | | Basically we were using SimplifyCFG as a huge sledgehammer for a simple optimization. Because simplifycfg does so many things, we can't use it for this purpose. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12977 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix compilation of 126.gcc: intrinsic functions cannot throw, so they are notChris Lattner2004-02-131-28/+33
| | | | | | | | allowed in invoke instructions. Thus, if we are inlining a call to an intrinsic function into an invoke site, we don't need to turn the call into an invoke! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11384 91177308-0d34-0410-b5e6-96231b3b80d8
* rename the "exceptional" destination of an invoke instruction to the ↵Chris Lattner2004-02-081-1/+1
| | | | | | 'unwind' dest git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11202 91177308-0d34-0410-b5e6-96231b3b80d8
* Two changes:Chris Lattner2004-02-041-5/+12
| | | | | | | | | | | | | | 1. Don't scan to the end of alloca instructions in the caller function to insert inlined allocas, just insert at the top. This saves a lot of time inlining into functions with a lot of allocas. 2. Use splice to move the alloca instructions over, instead of remove/insert. This allows us to transfer a block at a time, and eliminates a bunch of silly symbol table manipulations. This speeds up the inliner on the testcase in PR209 from 1.73s -> 1.04s (67%) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11118 91177308-0d34-0410-b5e6-96231b3b80d8
* Optimize the case where we are inlining a function that contains only one ↵Chris Lattner2004-02-041-37/+67
| | | | | | | | | | | | basic block, and that basic block ends with a return instruction. In this case, we can just splice the cloned "body" of the function directly into the source basic block, avoiding a lot of rearrangement and splitBasicBlock's linear scan over the split block. This speeds up the inliner on the testcase in PR209 from 2.3s to 1.7s, a 35% reduction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11116 91177308-0d34-0410-b5e6-96231b3b80d8
* More refactoring. Move alloca instructions and handle invoke instructionsChris Lattner2004-02-041-129/+132
| | | | | | | | before we delete the original call site, allowing slight simplifications of code, but nothing exciting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11109 91177308-0d34-0410-b5e6-96231b3b80d8
* Move the cloning of the function body much earlier in the inlinefunctionChris Lattner2004-02-041-52/+54
| | | | | | | | | | | process. The only optimization we did so far is to avoid creating a PHI node, then immediately destroying it in the common case where the callee has one return statement. Instead, we just don't create the return value. This has no noticable performance impact, but paves the way for future improvements. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11108 91177308-0d34-0410-b5e6-96231b3b80d8
* Finegrainify namespacificationChris Lattner2004-01-091-7/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10727 91177308-0d34-0410-b5e6-96231b3b80d8
* Start using the nicer terminator auto-insertion APIChris Lattner2003-11-201-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10111 91177308-0d34-0410-b5e6-96231b3b80d8
* Put all LLVM code into the llvm namespace, as per bug 109.Brian Gaeke2003-11-111-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8
* Get the list of PHI node values before the basic block is split. Also, addChris Lattner2003-10-271-9/+16
| | | | | | | | | PHI node entries for unwind instructions just like for call instructions which became invokes! This fixes PR57, tested by Inline/2003-10-26-InlineInvokeExceptionDestPhi.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9526 91177308-0d34-0410-b5e6-96231b3b80d8
* Added LLVM project notice to the top of every C++ source file.John Criswell2003-10-201-0/+7
| | | | | | | Header files will be on the way. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8
* Do not move variable sized allocations to the top of the caller, which mightChris Lattner2003-10-141-7/+5
| | | | | | | | | break dominance relationships, and is otherwise bad. This fixes bug: Inline/2003-10-13-AllocaDominanceProblem.ll. This also fixes miscompilation of 3 176.gcc source files (reload1.c, global.c, flow.c) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9109 91177308-0d34-0410-b5e6-96231b3b80d8
* Avoid doing pointless work. Amazingly, this makes us go faster.Chris Lattner2003-10-061-8/+0
| | | | | | | | | | | Running the inliner on 252.eon used to take 48.4763s, now it takes 14.4148s. In release mode, it went from taking 25.8741s to taking 11.5712s. This also fixes a FIXME. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8890 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix bugs in the last changeChris Lattner2003-09-221-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8667 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix bug: Inline/2003-09-22-PHINodesInNormalInvokeDest.llChris Lattner2003-09-221-2/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8666 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix bug: Inline/2003-09-22-PHINodesInExceptionDest.llChris Lattner2003-09-221-1/+28
| | | | | | | | ... by making sure to update PHI nodes to take into consideration the extra edges we get if we inline a call instruction through an invoke. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8664 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix bug: Inline/2003-09-14-InlineValue.llChris Lattner2003-09-151-4/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8514 91177308-0d34-0410-b5e6-96231b3b80d8
* Eliminate support for the llvm.unwind intrinisic, using the Unwind ↵Chris Lattner2003-09-081-27/+14
| | | | | | instruction instead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8411 91177308-0d34-0410-b5e6-96231b3b80d8
* Should invokify is always trueChris Lattner2003-09-081-24/+16
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8409 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove special casingChris Lattner2003-08-251-3/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8144 91177308-0d34-0410-b5e6-96231b3b80d8
* rethrow is really the language independent primitive here. "throw" can be ↵Chris Lattner2003-08-241-7/+7
| | | | | | | | | | written in terms of it and llvm.exc.setcurrent. Rework the intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8111 91177308-0d34-0410-b5e6-96231b3b80d8
* *** Implement inlining of Invoke instructions!Chris Lattner2003-08-241-51/+138
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8106 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement: Inline/cfg_preserve_test.llChris Lattner2003-08-241-2/+15
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8099 91177308-0d34-0410-b5e6-96231b3b80d8
* * Separate all of the grunt work of inlining out into the Utils library.Chris Lattner2003-05-291-0/+164
* Make the function inliner _significantly_ smarter. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6396 91177308-0d34-0410-b5e6-96231b3b80d8