cddc3e03e4ec99c0268c03a126195173e519ed58 |
|
04-Mar-2016 |
Pirama Arumuga Nainar <pirama@google.com> |
Update aosp/master LLVM for rebase to r256229 http://b/26987366 (cherry picked from commit f3ef5332fa3f4d5ec72c178a2b19dac363a19383) Change-Id: Ic75dcb63191d65df1b69724576392c0aaeb47728
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ebe69fe11e48d322045d5949c83283927a0d790b |
|
23-Mar-2015 |
Stephen Hines <srhines@google.com> |
Update aosp/master LLVM for rebase to r230699. Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
37ed9c199ca639565f6ce88105f9e39e898d82d0 |
|
01-Dec-2014 |
Stephen Hines <srhines@google.com> |
Update aosp/master LLVM for rebase to r222494. Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
dce4a407a24b04eebc6a376f8e62b41aaa7b071f |
|
29-May-2014 |
Stephen Hines <srhines@google.com> |
Update LLVM for 3.5 rebase (r209712). Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
36b56886974eae4f9c5ebc96befd3e7bfe5de338 |
|
24-Apr-2014 |
Stephen Hines <srhines@google.com> |
Update to LLVM 3.5a. Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
42864070b016976b87c64830395e96ae0e49279c |
|
03-Nov-2013 |
David Majnemer <david.majnemer@gmail.com> |
Spell "Actual" correctly git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193954 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
c143c7573bfd0d55cf283cc2676dbd852f939c87 |
|
31-Oct-2013 |
Rafael Espindola <rafael.espindola@gmail.com> |
Merge CallGraph and BasicCallGraph. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193734 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
86953b5795007eaa98838297360a6987e33e92e7 |
|
21-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Make the inline cost a proper analysis pass. This remains essentially a dynamic analysis done on each call to the routine. However, now it can use the standard pass infrastructure to reference other analyses, instead of a silly setter method. This will become more interesting as I teach it about more analysis passes. This updates the two inliner passes to use the inline cost analysis. Doing so highlights how utterly redundant these two passes are. Either we should find a cheaper way to do always inlining, or we should merge the two and just fiddle with the thresholds to get the desired behavior. I'm leaning increasingly toward the latter as it would also remove the Inliner sub-class split. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173030 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
5a47127c4c1aeed8a4caac5bcd25301eb69bd461 |
|
21-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Clean up the formatting and doxygen for the simple inliner a bit. No functionality changed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173028 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
0b8c9a80f20772c3793201ab5b251d3520b9cea3 |
|
02-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ee721156701ec3afb198d4cfede00095b228eeac |
|
04-Dec-2012 |
Matt Beaumont-Gay <matthewbg@google.com> |
Add 'using' declarations to suppress -Woverloaded-virtual warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169214 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f |
|
03-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Use the new script to sort the includes of every file under lib. Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented. Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
3574eca1b02600bac4e625297f4ecf745f4c4f32 |
|
08-Oct-2012 |
Micah Villmow <villmow@gmail.com> |
Move TargetData to DataLayout. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
45de584b4f82fbfb9cb9c50bc1fc08931b534308 |
|
31-Mar-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Remove a bunch of empty, dead, and no-op methods from all of these interfaces. These methods were used in the old inline cost system where there was a persistent cache that had to be updated, invalidated, and cleared. We're now doing more direct computations that don't require this intricate dance. Even if we resume some level of caching, it would almost certainly have a simpler and more narrow interface than this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153813 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
f2286b0152f0b942e82d8e809186e5cc0d247131 |
|
31-Mar-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Initial commit for the rewrite of the inline cost analysis to operate on a per-callsite walk of the called function's instructions, in breadth-first order over the potentially reachable set of basic blocks. This is a major shift in how inline cost analysis works to improve the accuracy and rationality of inlining decisions. A brief outline of the algorithm this moves to: - Build a simplification mapping based on the callsite arguments to the function arguments. - Push the entry block onto a worklist of potentially-live basic blocks. - Pop the first block off of the *front* of the worklist (for breadth-first ordering) and walk its instructions using a custom InstVisitor. - For each instruction's operands, re-map them based on the simplification mappings available for the given callsite. - Compute any simplification possible of the instruction after re-mapping, and store that back int othe simplification mapping. - Compute any bonuses, costs, or other impacts of the instruction on the cost metric. - When the terminator is reached, replace any conditional value in the terminator with any simplifications from the mapping we have, and add any successors which are not proven to be dead from these simplifications to the worklist. - Pop the next block off of the front of the worklist, and repeat. - As soon as the cost of inlining exceeds the threshold for the callsite, stop analyzing the function in order to bound cost. The primary goal of this algorithm is to perfectly handle dead code paths. We do not want any code in trivially dead code paths to impact inlining decisions. The previous metric was *extremely* flawed here, and would always subtract the average cost of two successors of a conditional branch when it was proven to become an unconditional branch at the callsite. There was no handling of wildly different costs between the two successors, which would cause inlining when the path actually taken was too large, and no inlining when the path actually taken was trivially simple. There was also no handling of the code *path*, only the immediate successors. These problems vanish completely now. See the added regression tests for the shiny new features -- we skip recursive function calls, SROA-killing instructions, and high cost complex CFG structures when dead at the callsite being analyzed. Switching to this algorithm required refactoring the inline cost interface to accept the actual threshold rather than simply returning a single cost. The resulting interface is pretty bad, and I'm planning to do lots of interface cleanup after this patch. Several other refactorings fell out of this, but I've tried to minimize them for this patch. =/ There is still more cleanup that can be done here. Please point out anything that you see in review. I've worked really hard to try to mirror at least the spirit of all of the previous heuristics in the new model. It's not clear that they are all correct any more, but I wanted to minimize the change in this single patch, it's already a bit ridiculous. One heuristic that is *not* yet mirrored is to allow inlining of functions with a dynamic alloca *if* the caller has a dynamic alloca. I will add this back, but I think the most reasonable way requires changes to the inliner itself rather than just the cost metric, and so I've deferred this for a subsequent patch. The test case is XFAIL-ed until then. As mentioned in the review mail, this seems to make Clang run about 1% to 2% faster in -O0, but makes its binary size grow by just under 4%. I've looked into the 4% growth, and it can be fixed, but requires changes to other parts of the inliner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153812 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
b2442fc76016203df3449c365bf4943dad8500e4 |
|
16-Mar-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Rip out support for 'llvm.noinline'. This thing has a strange history... It was added in 2007 as the first cut at supporting no-inline attributes, but we didn't have function attributes of any form at the time. However, it was added without any mention in the LangRef or other documentation. Later on, in 2008, Devang added function notes for 'inline=never' and then turned them into proper function attributes. From that point onward, as far as I can tell, the world moved on, and no one has touched 'llvm.noinline' in any meaningful way since. It's time has now come. We have had better mechanisms for doing this for a long time, all the frontends I'm aware of use them, and this is just holding back progress. Given that it was never a documented feature of the IR, I've provided no auto-upgrade support. If people know of real, in-the-wild bitcode that relies on this, yell at me and I'll add it, but I *seriously* doubt anyone cares. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
f91f5af802bd4487c49ee17cd0d3e46c6456263e |
|
16-Mar-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Start removing the use of an ad-hoc 'never inline' set and instead directly query the function information which this set was representing. This simplifies the interface of the inline cost analysis, and makes the always-inline pass significantly more efficient. Previously, always-inline would first make a single set of every function in the module *except* those marked with the always-inline attribute. It would then query this set at every call site to see if the function was a member of the set, and if so, refuse to inline it. This is quite wasteful. Instead, simply check the function attribute directly when looking at the callsite. The normal inliner also had similar redundancy. It added every function in the module with the noinline attribute to its set to ignore, even though inside the cost analysis function we *already tested* the noinline attribute and produced the same result. The only tricky part of removing this is that we have to be able to correctly remove only the functions inlined by the always-inline pass when finalizing, which requires a bit of a hack. Still, much less of a hack than the set of all non-always-inline functions was. While I was touching this function, I switched a heavy-weight set to a vector with sort+unique. The algorithm already had a two-phase insert and removal pattern, we were just needlessly paying the uniquing cost on every insert. This probably speeds up some compiles by a small amount (-O0 compiles with lots of always-inline, so potentially heavy libc++ users), but I've not tried to measure it. I believe there is no functional change here, but yell if you spot one. None are intended. Finally, the direction this is going in is to greatly simplify the inline cost query interface so that we can replace its implementation with a much more clever one. Along the way, all the APIs get simplified, so it seems incrementally good. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
dfba3ad88276b0aad3d515320bb4a50480c364d9 |
|
25-Feb-2012 |
Chad Rosier <mcrosier@apple.com> |
Add comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151431 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
fa086f1f00a8b75ab2e2208bd7a028e62f9854db |
|
25-Feb-2012 |
Chad Rosier <mcrosier@apple.com> |
Add support for disabling llvm.lifetime intrinsics in the AlwaysInliner. These are optimization hints, but at -O0 we're not optimizing. This becomes a problem when the alwaysinline attribute is abused. rdar://10921594 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151429 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
b2ab2fa524f3f90376639037bd81924483cca0af |
|
01-Oct-2011 |
Andrew Trick <atrick@apple.com> |
Inlining and unrolling heuristics should be aware of free truncs. We want heuristics to be based on accurate data, but more importantly we don't want llvm to behave randomly. A benign trunc inserted by an upstream pass should not cause a wild swings in optimization level. See PR11034. It's a general problem with threshold-based heuristics, but we can make it less bad. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140919 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
5c655413cf9466c29e38204ab3f19b33fffd7996 |
|
01-Oct-2011 |
Andrew Trick <atrick@apple.com> |
whitespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140916 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
081c34b725980f995be9080eaec24cd3dfaaf065 |
|
19-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ae0a7bc68303ce0c8721f0e981ae602601390e68 |
|
14-Oct-2010 |
Owen Anderson <resistor@mac.com> |
CallGraphSCC passes implicity require CallGraph analysis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116443 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ce665bd2e2b581ab0858d1afe359192bac96b868 |
|
08-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Now with fewer extraneous semicolons! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
90c579de5a383cee278acc3f7e7b9d0a656e6a35 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Reapply r110396, with fixes to appease the Linux buildbot gods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
1f74590e9d1b9cf0f1f81a156efea73f76546e05 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Revert r110396 to fix buildbots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
9ccaf53ada99c63737547c0235baeb8454b04e80 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
d13db2c59cc94162d6cf0a04187d408bfef6d4a7 |
|
22-Jul-2010 |
Owen Anderson <resistor@mac.com> |
Fix batch of converting RegisterPass<> to INTIALIZE_PASS(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
9a1581b9102511282ee823ab9a29819bc060e6a5 |
|
12-May-2010 |
Nick Lewycky <nicholas@mxc.ca> |
Clear CachedFunctionInfo upon Pass::releaseMemory. Because ValueMap will abort on RAUW of functions, this is a correctness issue instead of a mere memory usage problem. No testcase until the new MergeFunctions can land. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103653 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
f7477470d37ee2ab9075eaee4745fa084d424ab8 |
|
10-Mar-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Try to keep the cached inliner costs around for a bit longer for big functions. The Caller cost info would be reset everytime a callee was inlined. If the caller has lots of calls and there is some mutual recursion going on, the caller cost info could be calculated many times. This patch reduces inliner runtime from 240s to 0.5s for a function with 20000 small function calls. This is a more conservative version of r98089 that doesn't break the clang test CodeGenCXX/temp-order.cpp. That test relies on rather extreme inlining for constant folding. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
b5a158bab81b0b3f15d409fc433e706f8e885375 |
|
09-Mar-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Revert r98089, it was breaking a clang test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98094 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
9e5d87d568498db251de19cd3c26d02cc74bb2e1 |
|
09-Mar-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Try to keep the cached inliner costs around for a bit longer for big functions. The Caller cost info would be reset everytime a callee was inlined. If the caller has lots of calls and there is some mutual recursion going on, the caller cost info could be calculated many times. This patch reduces inliner runtime from 240s to 0.5s for a function with 20000 small function calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98089 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
f5a86f45e75ec744c203270ffa03659eb0a220c1 |
|
25-Oct-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Remove includes of Support/Compiler.h that are no longer needed after the VISIBILITY_HIDDEN removal. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85043 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
6726b6d75a8b679068a58cb954ba97cf9d1690ba |
|
25-Oct-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces. Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85042 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
e4aeec003f82a5263ffb168e175e6fca8b6f681d |
|
13-Oct-2009 |
Dan Gohman <gohman@apple.com> |
Move the InlineCost code from Transforms/Utils to Analysis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83998 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
8255573835970e7130ba93271972172fb335f2ec |
|
19-Aug-2009 |
Dan Gohman <gohman@apple.com> |
Use hasDefinitiveInitializer() instead of testing the same thing by hand, and fix a few places that were using hasInitializer() that appear to depend on the initializer value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79441 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
e345566f8eaeeda45e29e3709114a42209a360cc |
|
09-Jan-2009 |
Dale Johannesen <dalej@apple.com> |
Adjustments to last patch based on review. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61969 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
c5e1ec47c719806fcc882470595960512edc7441 |
|
30-Oct-2008 |
Daniel Dunbar <daniel@zuster.org> |
Add InlineCost class for represent the estimated cost of inlining a function. - This explicitly models the costs for functions which should "always" or "never" be inlined. This fixes bugs where such costs were not previously respected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58450 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
2c9c3e73682749016d5885b67ff719f634b37d58 |
|
27-Sep-2008 |
Devang Patel <dpatel@apple.com> |
Implement function notes as function attributes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56716 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
0598866c052147c31b808391f58434ce3dbfb838 |
|
25-Sep-2008 |
Devang Patel <dpatel@apple.com> |
Large mechanical patch. s/ParamAttr/Attribute/g s/PAList/AttrList/g s/FnAttributeWithIndex/AttributeWithIndex/g s/FnAttr/Attribute/g This sets the stage - to implement function notes as function attributes and - to distinguish between function attributes and return value attributes. This requires corresponding changes in llvm-gcc and clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56622 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
20bcaff6a7f93a9894f7233c449b016bafe93b26 |
|
24-Sep-2008 |
Devang Patel <dpatel@apple.com> |
Put FN_NOTE_AlwaysInline and others in FnAttr namespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56527 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
dd4924c564c7a661b78b604ebf16dfef7aa62b35 |
|
24-Sep-2008 |
Devang Patel <dpatel@apple.com> |
Move FN_NOTE_AlwaysInline and other out of ParamAttrs namespace. Do not check isDeclaration() in hasNote(). It is clients' responsibility. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56524 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
d9b4a5f859188cbb168c223071b413e58c53c925 |
|
24-Sep-2008 |
Devang Patel <dpatel@apple.com> |
Use parameter attribute store (soon to be renamed) for Function Notes also. Function notes are stored at index ~0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56511 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
f3ba70861ccf00b1072ae1b6ade3ebe2da6cff40 |
|
23-Sep-2008 |
Devang Patel <dpatel@apple.com> |
Add hasNote() to check note associated with a function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56477 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
79cca4f49f8a29f7c1259ad12a068a51d666cb60 |
|
03-Sep-2008 |
Devang Patel <dpatel@apple.com> |
Add parentheses to make code more readable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55717 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
5e060104628b5a5779fc910f6e2d5a15771fa15b |
|
03-Sep-2008 |
Devang Patel <dpatel@apple.com> |
Check noinline note and ignore other notes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55711 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
910c120a7c439ee3c6e9cd249ff0a05f0fdb6c98 |
|
03-Sep-2008 |
Devang Patel <dpatel@apple.com> |
Handle "noinline" note inside the simple inliner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55708 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
844731a7f1909f55935e3514c9e713a62d67662e |
|
13-May-2008 |
Dan Gohman <gohman@apple.com> |
Clean up the use of static and anonymous namespaces. This turned up several things that were neither in an anonymous namespace nor static but not intended to be global. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
8d84d5b62cdf2a772d51338136c7022a6e1ff931 |
|
24-Mar-2008 |
Evan Cheng <evan.cheng@apple.com> |
Increasing the inline limit from (overly conservative) 200 to 300. Given each BB costs 20 and each instruction costs 5, 200 means a 4 BB function + 24 instructions (actually less because caller's size also contributes to it). Furthermore, double the limit when more than 10% of the callee instructions are vector instructions. Multimedia kernels tend to love inlining. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48725 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
120d053e3ba810b44047fbcb719824bed5673ca9 |
|
12-Jan-2008 |
Chris Lattner <sabre@nondot.org> |
Allow clients to specify the inline threshold when creating the inliner pass. Patch by Robert Zeh. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
4ee451de366474b9c228b4e5fa573795a715216d |
|
29-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Remove attribution from file headers, per discussion on llvmdev. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
311c4b6e9867bba83fdd9b52c3746b203a3d829d |
|
22-Nov-2007 |
Anton Korobeynikov <asl@math.spbu.ru> |
Don't crash on bogus llvm.noinline. This is first part of PR1817 (preventing reduction) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44281 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
29381fb7cdba040facf562f4ea028400cd626d2b |
|
27-Jul-2007 |
Devang Patel <dpatel@apple.com> |
Use SmallPtrSet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40560 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
6899b314225dd5fa5ccc2a5692daaa89c1d623d8 |
|
25-Jul-2007 |
Devang Patel <dpatel@apple.com> |
Add BasicInliner interface. This interface allows clients to inline bunch of functions with module level call graph information.:wq git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40486 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ba6801e6e72a9f4de1e116ea81b370456eb7ecd3 |
|
25-Jun-2007 |
Chris Lattner <sabre@nondot.org> |
fix Transforms/Inline/2007-06-25-WeakInline.ll by not inlining functions with weak linkage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37723 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
6f7426ec2e46bb19cc9f9e75f1c355b35cf12d7d |
|
20-Jun-2007 |
Tanya Lattner <tonic@nondot.org> |
Inliner pass header file was moved. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37665 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
b62fa8ab6bf223e8f10178345e89721c9f46a9c9 |
|
07-Jun-2007 |
Tanya Lattner <tonic@nondot.org> |
Formating fixes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37491 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
682f683669d01f208c647ebce8d41a2580ef7707 |
|
06-Jun-2007 |
Tanya Lattner <tonic@nondot.org> |
Instruct the inliner to obey the noinline attribute. Add test case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37481 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
1ce6f8da7283a1f281f1767905873537d66560d5 |
|
07-May-2007 |
Chris Lattner <sabre@nondot.org> |
Fix PR1395, by passing the ID correctly git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36894 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ecd94c804a563f2a86572dcf1d2e81f397e19daa |
|
06-May-2007 |
Nick Lewycky <nicholas@mxc.ca> |
Fix typo in comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
1997473cf72957d0e70322e2fe6fe2ab141c58a6 |
|
03-May-2007 |
Devang Patel <dpatel@apple.com> |
Drop 'const' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
3e15bf33e024b9df9e89351a165acfdb1dde51ed |
|
02-May-2007 |
Devang Patel <dpatel@apple.com> |
Use 'static const char' instead of 'static const int'. Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
794fd75c67a2cdc128d67342c6d88a504d186896 |
|
01-May-2007 |
Devang Patel <dpatel@apple.com> |
Do not use typeinfo to identify pass in pass manager. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
9133fe28954d498fc4de13064c7d65bd811de02c |
|
06-Feb-2007 |
Reid Spencer <rspencer@reidspencer.com> |
Apply the VISIBILITY_HIDDEN field to the remaining anonymous classes in the Transforms library. This reduces debug library size by 132 KB, debug binary size by 376 KB, and reduces link time for llvm tools slightly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33939 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
c71ca3cdd2d7a08b043ebb717cad0beadaf47450 |
|
26-Jan-2007 |
Devang Patel <dpatel@apple.com> |
Inherit CallGraphSCCPass directly from Pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33514 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
3da59db637a887474c1b1346c1f3ccf53b6c4663 |
|
27-Nov-2006 |
Reid Spencer <rspencer@reidspencer.com> |
For PR950: The long awaited CAST patch. This introduces 12 new instructions into LLVM to replace the cast instruction. Corresponding changes throughout LLVM are provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the exception of 175.vpr which fails only on a slight floating point output difference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31931 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
3ed469ccd7b028a030b550d84b7336d146f5d8fa |
|
02-Nov-2006 |
Reid Spencer <rspencer@reidspencer.com> |
For PR786: Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting fall out by removing unused variables. Remaining warnings have to do with unused functions (I didn't want to delete code without review) and unused variables in generated code. Maintainers should clean up the remaining issues when they see them. All changes pass DejaGnu tests and Olden. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
7b166d9969670665d9f093f20ed3381057427256 |
|
09-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
Make inlining costs more accurate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30231 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
7f8897f22e88271cfa114998a4d6088e7c8e8e11 |
|
28-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
eliminate RegisterOpt. It does the same thing as RegisterPass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29925 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ccca3ca85f046bf7c99aa954ac121fdf59722499 |
|
13-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Permit inlining functions that contain dynamic allocations now that InlineFunction handles this case safely. This implements Transforms/Inline/dynamic_alloca_test.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25288 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
49fbff45685c21d7f42aca7a104fc841cdbd5d43 |
|
18-May-2005 |
Chris Lattner <sabre@nondot.org> |
teach the inliner about coldcc and noreturn functions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
fd93908ae8b9684fe71c239e3c6cfe13ff6a2663 |
|
22-Apr-2005 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove trailing whitespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21427 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
e4d5c441e04bdc00ccf1804744af670655123b07 |
|
15-Mar-2005 |
Chris Lattner <sabre@nondot.org> |
This mega patch converts us from using Function::a{iterator|begin|end} to using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*. This patch is contributed by Gabor Greif, thanks! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20597 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
8db93f18cc0ff019c04066478b92ed9aeec9b235 |
|
22-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Ignore debugger intrinsics when doing inlining size computations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18109 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
a8e475093af462787cfdc7d7ff1413d0f058dae8 |
|
09-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Change this back so that I get stable numbers to reflect the change from the nightly testers git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17646 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ae18963a70b45086f351a10641f2ca756063eeaf |
|
07-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
VERY large functions that are only called from one place are not really exciting to inline. Only inline medium or small sized functions with a single call site. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17588 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
b12914bfc0f76a7a48357162d5f4c39a1343e69b |
|
20-Sep-2004 |
Chris Lattner <sabre@nondot.org> |
'Pass' should now not be derived from by clients. Instead, they should derive from ModulePass. Instead of implementing Pass::run, then should implement ModulePass::runOnModule. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16436 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ee45f4cbe409b2e89207f3c554e9121101c9e52e |
|
12-Aug-2004 |
Chris Lattner <sabre@nondot.org> |
This patch makes the inliner refuse to inline functions that have alloca instructions in the body of the function (not the entry block). This fixes test/Programs/SingleSource/Regression/C/2004-08-12-InlinerAndAllocas.c and test/Programs/External/SPEC/CINT2000/176.gcc on zion. This should obviously be pulled into 1.3. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15684 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
460f16c6253928519689e882a4dbb7f236f33294 |
|
18-Jul-2004 |
Reid Spencer <rspencer@reidspencer.com> |
bug 122: - Minimize redundant isa<GlobalValue> usage git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
775cbdd51a3b33dd5eb343689f65ab5cc8ac7118 |
|
08-Apr-2004 |
Chris Lattner <sabre@nondot.org> |
Remove the "really gross hacks" that are there to deal with recursive functions. Now we collect all of the call sites we are interested in inlining, then inline them. This entirely avoids issues with trying to inline a call site we got by inlining another call site. This also eliminates iterator invalidation issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12770 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
6dd196f762c934981ede17e197746b11426cd23a |
|
15-Mar-2004 |
Chris Lattner <sabre@nondot.org> |
Restore old inlining heuristic. As the comment indicates, this is a nasty horrible hack. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12423 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
619d3544b19dfdc0006bb0f036253d76488fc212 |
|
14-Mar-2004 |
Chris Lattner <sabre@nondot.org> |
This change makes two big adjustments. * Be a lot more accurate about what the effects will be when inlining a call to a function when an argument is an alloca. * Dramatically reduce the penalty for inlining a call in a large function. This heuristic made it almost impossible to inline a function into a large function, no matter how small the callee is. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
6d1db01284b08a88db975f1a97ad7f95bdd9f6e6 |
|
21-Nov-2003 |
Chris Lattner <sabre@nondot.org> |
Considering that CI is not even IN SCOPE here, I wooda thought the compiler would have caught this. *sigh* git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10142 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
869adc283c0c15e46d9b18ca73628600f1c6c54e |
|
21-Nov-2003 |
Chris Lattner <sabre@nondot.org> |
* Finegrainify namespacification * Make the cost metric for passing constants in as arguments to functions MUCH more accurate, by actually estimating the amount of code that will be constant propagated away. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10136 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
d0fde30ce850b78371fd1386338350591f9ff494 |
|
11-Nov-2003 |
Brian Gaeke <gaeke@uiuc.edu> |
Put all LLVM code into the llvm namespace, as per bug 109. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
b576c94c15af9a440f69d9d03c2afead7971118c |
|
20-Oct-2003 |
John Criswell <criswell@uiuc.edu> |
Added LLVM project notice to the top of every C++ source file. Header files will be on the way. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
bacc773d207700dede0701d08e15dfdc650678e9 |
|
20-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Reorder for minor efficiency gain git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9285 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
fd05924946ebfcfb3409b21996cfd0836e4ddb31 |
|
15-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Decrease usage of use_size() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
cf00c4ab3ba308d45d98c5ccab87362cf802facb |
|
10-Oct-2003 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix spelling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9027 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
da78b002ca6bdaf9fd58443d943f60b8529bcf36 |
|
07-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Fix bugzilla bug #5 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8930 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
884d6c4e10501116a8ff45616231564a2738dadd |
|
06-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Speed up the predicate used to decide when to inline by caching the size of callees between executions. On eon, in release mode, this changes the inliner from taking 11.5712s to taking 2.2066s. In debug mode, it went from taking 14.4148s to taking 7.0745s. In release mode, this is a 24.7% speedup of gccas, in debug mode, it's a total speedup of 11.7%. This also makes it slightly more aggressive. This could be because we are not judging the size of the functions quite as accurately as before. When we start looking at the performance of the generated code, this can be investigated further. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8893 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
237ef567f6764f24a47c63121cc0a599ddc8f56d |
|
31-Aug-2003 |
Chris Lattner <sabre@nondot.org> |
Heavily refactor code: * Separate the policy decisions into a derived class [InlineSimple] * Move the inlining mechanics into a base class [Inliner] * Change the inliner to be an SCCPass, making it more structured and eventually pipelinable with other SCC passes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8257 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
e54453387486c1d5e61401e1d4febd3f6ebe86cf |
|
24-Aug-2003 |
Chris Lattner <sabre@nondot.org> |
Inline invoke instructions as well as call instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8107 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
6a67393e19632a9829c7ba0d3e7446db322612d9 |
|
24-Aug-2003 |
Chris Lattner <sabre@nondot.org> |
Big diff for a small change: delete inlined functions if all callees have inlined the function. Implements: Inline/inline_dce.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8101 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
6806f5614d2ec260fda954c951d33f58e77ed610 |
|
02-Aug-2003 |
Chris Lattner <sabre@nondot.org> |
DEBUG got moved to Support/Debug.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7492 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
cf6bac3b565d02fe3a7e270e0d652303aa1279da |
|
28-Jun-2003 |
Chris Lattner <sabre@nondot.org> |
Allow the inlining limit to be controlled from the command line! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6929 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ca398dc3989d35e8516489fd163e012133bd41cb |
|
29-May-2003 |
Chris Lattner <sabre@nondot.org> |
* Separate all of the grunt work of inlining out into the Utils library. * Make the function inliner _significantly_ smarter. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
8d8f20e47a7aaf75863d71d729283a60fce5c810 |
|
08-May-2003 |
Chris Lattner <sabre@nondot.org> |
Don't inline functions that take variable numbers of arguments! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6024 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
1b27cb7159bcd0130cd1a98332b8952f4751867f |
|
08-May-2003 |
Chris Lattner <sabre@nondot.org> |
Remove using decl git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6023 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
e408e25132b8de8c757db1e3ddcd70432dfeb24d |
|
23-Apr-2003 |
Chris Lattner <sabre@nondot.org> |
Remove unnecesary &*'s git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5872 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
019a7c801b491504868ad105016fc6ebbb09ff5d |
|
13-Jan-2003 |
Chris Lattner <sabre@nondot.org> |
Fix references to functions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5222 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
d18015599cbe09dd327b5f73501581a865bf27da |
|
19-Nov-2002 |
Chris Lattner <sabre@nondot.org> |
Minor changes to cloning interface git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4770 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
dcd8040d115803e427dc1caf9feb44a894eef927 |
|
19-Nov-2002 |
Chris Lattner <sabre@nondot.org> |
Rework inline pass to use cloning infrastructure to do the dirty work git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
309f19391b571084ba9f6b0372e63b875ca2b869 |
|
19-Nov-2002 |
Chris Lattner <sabre@nondot.org> |
Start using the new function cloning header git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4764 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
6ee6bbeb04b0213b3f2d60db3ba36fa71d6d9251 |
|
02-Oct-2002 |
Chris Lattner <sabre@nondot.org> |
Updates to work with recent Statistic's changes: * Renamed StatisticReporter.h/cpp to Statistic.h/cpp * Broke constructor to take two const char * arguments instead of one, so that indendation can be taken care of automatically. * Sort the list by pass name when printing * Make sure to print all statistics as a group, instead of randomly when the statistics dtors are called. * Updated ProgrammersManual with new semantics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4001 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
bdccb0097061e05b506592c25b3b5e9e0692c950 |
|
22-Sep-2002 |
Chris Lattner <sabre@nondot.org> |
Don't insert a PHI node to merge "returns" from an inlined function if there is only a single return from the function! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
dbcbe3f7e8dad01a6d4ad8460992b9139e4861ba |
|
17-Sep-2002 |
Chris Lattner <sabre@nondot.org> |
Fix FunctionInlining pass assertion failure: ilist:104: failed assertion `Traits::getNext(NodePtr) != 0 && "Dereferencing end()!"' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3768 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
f2d2d0bb13ce63568362f3aaea68ce55ee040954 |
|
11-Sep-2002 |
Chris Lattner <sabre@nondot.org> |
Clean up code due to auto-insert constructors git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3666 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
a6275ccdf5e1aa208afde56c498e2b13e16442f0 |
|
26-Jul-2002 |
Chris Lattner <sabre@nondot.org> |
* Add support for different "PassType's" * Add new RegisterOpt/RegisterAnalysis templates for registering passes that are to show up in opt or analyze * Register Analyses now * Change optimizations to use RegisterOpt instead of RegisterPass * Add support for different "PassType's" * Add new RegisterOpt/RegisterAnalysis templates for registering passes that are to show up in opt or analyze * Register Analyses now * Change optimizations to use RegisterOpt instead of RegisterPass * Remove getPassName implementations from various subclasses git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
af41a12370010325eb163b734d5757a7f0296e67 |
|
23-Jul-2002 |
Chris Lattner <sabre@nondot.org> |
* Remove getPassName implementation * Register all Passes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3015 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
7e70829632f82de15db187845666aaca6e04b792 |
|
25-Jun-2002 |
Chris Lattner <sabre@nondot.org> |
MEGAPATCH checkin. For details, See: docs/2002-06-25-MegaPatchInfo.txt git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
3dec1f272219ee1f8e1499929cdf53f5bc3c2272 |
|
10-May-2002 |
Chris Lattner <sabre@nondot.org> |
Add support for printing out statistics information when -stats is added to the command line git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2601 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
c6f3ae5c66c8e0dab6a2bd9601d0e253ef9ba794 |
|
29-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Eliminate duplicate or unneccesary #include's git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2397 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
96c466b06ab0c830b07329c1b16037f585ccbe40 |
|
29-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Add new optional getPassName() virtual function that a Pass can override to make debugging output a lot nicer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
483e14ee0412a98db1fb0121528d8d621ae3dfdb |
|
27-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
s/Method/Function git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2336 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
f57b845547302d24ecb6a9e79d7bc386f761a6c9 |
|
27-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
* Rename MethodPass class to FunctionPass - Rename runOnMethod to runOnFunction * Transform getAnalysisUsageInfo into getAnalysisUsage - Method is now const - It now takes one AnalysisUsage object to fill in instead of 3 vectors to fill in - Pass's now specify which other passes they _preserve_ not which ones they modify (be conservative!) - A pass can specify that it preserves all analyses (because it never modifies the underlying program) * s/Method/Function/g in other random places as well git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2333 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
0154505ab74e7bd0d4dc85dbddc1ff0df6357606 |
|
18-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Add a fixme so that we don't forget this is broken. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
73e214244f2403b5ba0ef81b8839600f3c8ffebc |
|
09-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Move FunctionArgument out of iOther.h into Argument.h and rename class to be 'Argument' instead of FunctionArgument. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2216 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
237e6d10f24863cf48821b601b4164794e89d847 |
|
09-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
s/Method/Function Remove extraneous #includes of llvm/Assembly/Writer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2178 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
2fbfdcffd3e0cf41422aaa6c526c37cb02b81341 |
|
07-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Change references to the Method class to be references to the Function class. The Method class is obsolete (renamed) and all references to it are being converted over to Function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2144 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
dc89f87d52298131e2265815b65f7aa22388524f |
|
29-Mar-2002 |
Chris Lattner <sabre@nondot.org> |
s/Method/Function git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2043 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
bd0ef77cde9c9e82f2b4ad33e4982c46274d6540 |
|
26-Feb-2002 |
Chris Lattner <sabre@nondot.org> |
Change over to use new style pass mechanism, now passes only expose small creation functions in their public header file, unless they can help it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1816 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
41b66b12e8be5024b0d8506b5b61a425a2becd49 |
|
25-Feb-2002 |
Chris Lattner <sabre@nondot.org> |
When inlining basic blocks and instructions, give them a name! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1796 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
59b6b8e0b3e51dd899da25bd25b0793cc8229eea |
|
22-Jan-2002 |
Chris Lattner <sabre@nondot.org> |
Move stuff out of the Optimizations directories into the appropriate Transforms directories. Eliminate the opt namespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1520 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
697954c15da58bd8b186dbafdedd8b06db770201 |
|
20-Jan-2002 |
Chris Lattner <sabre@nondot.org> |
Changes to build successfully with GCC 3.02 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1503 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
e9bb2df410f7a22decad9a883f7139d5857c1520 |
|
03-Dec-2001 |
Chris Lattner <sabre@nondot.org> |
Rename ConstPoolVal -> Constant Rename ConstPool* -> Constant* Rename ConstPoolVals.h -> ConstantVals.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1407 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
7061dc50b2513731d7b346ab16183cda4a44619f |
|
03-Dec-2001 |
Chris Lattner <sabre@nondot.org> |
Split the PHINode class out from the iOther.h file into the iPHINode.h file git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1405 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
4f68528de4d3f9746bb93ad3b58e86a7ae353491 |
|
31-Oct-2001 |
Chris Lattner <sabre@nondot.org> |
Fix bug when inlining a method that refers to a global variable git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1056 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
5680ee6b28974c9cf6cab9f603d30e6eda2715bc |
|
18-Oct-2001 |
Chris Lattner <sabre@nondot.org> |
Convert optimizations to the pass infrastructure git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
5fdc4c91ae9defb3d511fba103514b8dcc0955e1 |
|
15-Oct-2001 |
Chris Lattner <sabre@nondot.org> |
Minor cleanup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@812 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
5a0d4179df79280d37b1cf9fdc8ba8b90c33ee13 |
|
13-Oct-2001 |
Chris Lattner <sabre@nondot.org> |
Support indirect calls git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@764 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
b00c582b6d40e6b9ff2d1ed4f5eaf7930e792ace |
|
02-Oct-2001 |
Chris Lattner <sabre@nondot.org> |
Commit more code over to new cast style git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@697 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
1d87bcf4909b06dcd86320722653341f08b8b396 |
|
01-Oct-2001 |
Chris Lattner <sabre@nondot.org> |
Convert more code to use new style casts Eliminate old style casts from value.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@696 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
78721d54186cad8db817bad13360dad286524945 |
|
07-Sep-2001 |
Chris Lattner <sabre@nondot.org> |
Constant pool is dead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@455 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
bc7135f5c0aa0c1045e18ff18c98633349dc660c |
|
15-Jul-2001 |
Chris Lattner <sabre@nondot.org> |
Support external methods git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
a41f50dea8573e4a610b5aa5e45b5c368559b084 |
|
07-Jul-2001 |
Chris Lattner <sabre@nondot.org> |
Broad superficial changes: * Renamed getOpcode to getOpcodeName * Changed getOpcodeName to return a const char * instead of string * Added a getOpcode method to replace getInstType * Changed code to use getOpcode instead of getInstType git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
c8b25d40cbec063b1ca99cc1adf794399c6d05c0 |
|
07-Jul-2001 |
Chris Lattner <sabre@nondot.org> |
Changed the fundemental architecture of Operands for Instructions. Now Operands are maintained as a vector<Use> in the User class, and operator iterators are provided as before. Getting an operand no longer requires a virtual function call. WARNING: getOperand(x) where x >= getNumOperands() will now assert instead of returning null! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
7e02b7e600ce8b719b34e2df7a7e44310229564d |
|
30-Jun-2001 |
Chris Lattner <sabre@nondot.org> |
Optimizations got their own header files Optimizations now live in the 'opt' namespace include/llvm/Opt was renamed include/llvm/Optimizations git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
7fc9fe34390c66ca58646d09a87f7dbaacb6c1f8 |
|
28-Jun-2001 |
Chris Lattner <sabre@nondot.org> |
Miscellaneous cleanups: * Convert post to pre-increment for for loops * Use generic programming more * Use new Value::cast* instructions * Use new Module, Method, & BasicBlock forwarding methods * Use new facilities in STLExtras.h * Use new Instruction::isPHINode() method git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
ee976f33713016a96e3fbb394b7d0c5465be25d7 |
|
11-Jun-2001 |
Chris Lattner <sabre@nondot.org> |
Updates to support * Changes in PHI node structure git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|
009505452b713ed2e3a8e99c5545a6e721c65495 |
|
06-Jun-2001 |
Chris Lattner <sabre@nondot.org> |
Initial revision git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/IPO/InlineSimple.cpp
|