aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms/IPO
AgeCommit message (Collapse)Author
2006-07-12Change the callgraph representation to store the callsite along with theChris Lattner
target CG node. This allows the inliner to properly update the callgraph when using the pruning inliner. The pruning inliner may not copy over all call sites from a callee to a caller, so the edges corresponding to those call sites should not be copied over either. This fixes PR827 and Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29120 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-07Fix PR820 and Transforms/GlobalOpt/2006-07-07-InlineAsmCrash.llChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29071 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-27Fix Transforms/DeadArgElim/2006-06-27-struct-ret.ll. -deadargelim should notChris Lattner
remove the struct return argument of a csret function, even if it is obviously dead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28943 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-16Add missing casts. This fixed some regressions.Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28834 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-16More libcall transformations:Evan Cheng
printf("%s\n", str) -> puts(str) printf("%c", c) -> putchar(c) Also fixed fprintf(file, "%c", c) -> fputc(c, file) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28815 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-16Simplify fprintf(file, "%s", str) to fputs(str, file).Evan Cheng
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28814 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-12Remove some dead variables.Chris Lattner
Fix a nasty bug in the memcmp optimizer where we used the wrong variable! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28269 91177308-0d34-0410-b5e6-96231b3b80d8
2006-04-13linear -> constant timeAndrew Lenharth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27652 91177308-0d34-0410-b5e6-96231b3b80d8
2006-04-10Add a simple pass to make sure that all (non-library) calls to malloc and freeAndrew Lenharth
are visible to analysis as intrinsics. That is, make sure someone doesn't pass free around by address in some struct (as happens in say 176.gcc). This doesn't get rid of any indirect calls, just ensure calls to free and malloc are always direct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27560 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-23Strip changes to llvm.dbg intrinsics.Jim Laskey
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26993 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-15Teach the strip pass to strip type names in addition to value names. ThisChris Lattner
is fallout from the type/value split in the symtab long long ago :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26785 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-13Handle the removal of the debug chain.Jim Laskey
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26729 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-09fix a pastoChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26627 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-07Switch to using a numeric id for anchors.Jim Laskey
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26598 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-07Fix ConstantMerge/2006-03-07-DontMergeDiffSections.ll, a problem JimChris Lattner
hypotheticalized about, where we would incorrectly merge two globals in different sections. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26597 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-03Make this work with renamed intrinsics.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26482 91177308-0d34-0410-b5e6-96231b3b80d8
2006-02-15fix a bunch of alpha regressions. see bug 709Andrew Lenharth
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26218 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-23add a bunch more optimizations for unary double math functionsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25530 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-23Refactor/genericize this, no functionality changeChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25525 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-22Make iostream #inclusion explicitChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25514 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-22Make this more efficient in the following ways:Chris Lattner
1. Do not statically construct a map when the program starts up, this is expensive and cannot be optimized. Instead, create a list. 2. Do not insert entries for all function in the module into a hashmap that lives the full life of the compiler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25512 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-22Several non-functionality changing changes:Chris Lattner
1. Use the varargs version of getOrInsertFunction to simplify code. 2. remove #include 3. Reduce the number of #ifdef's. 4. remove extraneous vertical whitespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25508 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-19For PR696:Reid Spencer
Don't do floor->floorf conversion if floorf is not available. This checks the compiler's host, not its target, which is incorrect for cross-compilers Not sure that's important as we don't build many cross-compilers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25456 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-19If not internalizing, don't mark llvm.global[cd]tors const, as a fix for aChris Lattner
hypothetical future boog. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25430 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-19Don't internalize llvm.global[cd]tor unless there are uses of it. ThisChris Lattner
unbreaks front-ends that don't use __main (like the new CFE). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25429 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-17Clean up the FFS optimization code, and make it correctly create the appropriateChris Lattner
unsigned llvm.cttz.* intrinsic, fixing the 2005-05-11-Popcount-ffs-fls regression last night. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25398 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-14Let the inliner update the callgraph to reflect the changes it makes, insteadChris Lattner
of doing it ourselves. This fixes Transforms/Inline/2006-01-14-CallGraphUpdate.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25321 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-13Permit inlining functions that contain dynamic allocations now thatChris Lattner
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
2006-01-13Fix 80 column violationsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25279 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-03Pull inline methods out of the pass class definition to make it easier toChris Lattner
read the code. Do not internalize debugger anchors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25067 91177308-0d34-0410-b5e6-96231b3b80d8
2005-12-13Improve ResolveFunctions to:Reid Spencer
a) use better local variable names (OldMT -> OldFT) where "M" is used to mean "Function" (perhaps it was previously "Method"?) b) print out the module identifier in a warning message so that it is possible to track down in which module the error occurred. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24698 91177308-0d34-0410-b5e6-96231b3b80d8
2005-12-05Wrap a long line, never internalize llvm.used.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24602 91177308-0d34-0410-b5e6-96231b3b80d8
2005-11-05Add support alignment of allocation instructions.Nate Begeman
Add support for specifying alignment and size of setjmp jmpbufs. No targets currently do anything with this information, nor is it presrved in the bytecode representation. That's coming up next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24196 91177308-0d34-0410-b5e6-96231b3b80d8
2005-10-25Stop using deprecated typesAlkis Evlogimenos
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23973 91177308-0d34-0410-b5e6-96231b3b80d8
2005-10-24DONT_BUILD_RELINKED is gone and implied by BUILD_ARCHIVE nowChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23940 91177308-0d34-0410-b5e6-96231b3b80d8
2005-10-24Only build .a file versions of these libraries, instead of .a and .o versions.Chris Lattner
This should speed up build times. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23933 91177308-0d34-0410-b5e6-96231b3b80d8
2005-10-23When a function takes a variable number of pointer arguments, with a zeroJeff Cohen
pointer marking the end of the list, the zero *must* be cast to the pointer type. An un-cast zero is a 32-bit int, and at least on x86_64, gcc will not extend the zero to 64 bits, thus allowing the upper 32 bits to be random junk. The new END_WITH_NULL macro may be used to annotate a such a function so that GCC (version 4 or newer) will detect the use of un-casted zero at compile time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23888 91177308-0d34-0410-b5e6-96231b3b80d8
2005-10-18Add an option to this pass. If it is set, we are allowed to internalizeChris Lattner
all but main. If it's not set, we can still internalize, but only if an explicit symbol list is provided. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23783 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-29Fold isascii into a simple comparison. This speeds up 197.parser by 7.4%,Chris Lattner
bringing the LLC time down to the CBE time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23521 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-29remove a bunch of unneeded stuff, or self evident commentsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23519 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-29Implement a couple of memcmp folds from the todo listChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23517 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-27Fix a regression in my previous patch, fixing GlobalOpt/2005-09-27-Crash.llChris Lattner
and PR632. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23484 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-27Add support for external calls that we know how to constant fold. This ↵Chris Lattner
implements ctor-list-opt.ll:CTOR8 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23465 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-27Fix a bug where we would evaluate stores into linkonce objects which could beChris Lattner
potentially replaced at link-time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23463 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-27Implement support for static constructors with calls in them. This is usefulChris Lattner
because gccas runs globalopt before inlining. This implements ctor-list-opt.ll:CTOR7 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23462 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-27Refactor this code a bit, no functionality changes.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23460 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-26Remove some dead code. ctor evaluation subsumes empty ctor elimChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23453 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-26Add support for alloca, implementing ctor-list-opt.ll:CTOR6Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23452 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-26Add a debug printout, fix a crash on kc++Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23450 91177308-0d34-0410-b5e6-96231b3b80d8
2005-09-26Implement loads/stores through GEP's of globals. This implementsChris Lattner
ctor-list-opt.ll:CTOR5. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23449 91177308-0d34-0410-b5e6-96231b3b80d8