summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils
Commit message (Collapse)AuthorAgeFilesLines
* Implement constant folding of fmod, which is used a lot in povrayChris Lattner2004-05-271-2/+9
| | | | llvm-svn: 13823
* Restructure call constant folding code a bit to make it simplerChris Lattner2004-05-271-39/+40
| | | | | | | | Add support for acos/asin/atan. 188.ammp contains three calls to acos with constant arguments. Constant folding it allows elimination of those 3 calls and three FP divisions of the results. llvm-svn: 13821
* Do not pass a null pointer if this instruction is not prepended orAlkis Evlogimenos2004-05-261-2/+2
| | | | | | appended anywhere. llvm-svn: 13798
* Use one destination constructor for the unconditional branch.Alkis Evlogimenos2004-05-261-1/+1
| | | | llvm-svn: 13792
* Convert to SymbolTable's new iteration interface.Reid Spencer2004-05-251-5/+7
| | | | llvm-svn: 13754
* Convert to SymbolTable's new lookup and iteration interfaces.Reid Spencer2004-05-251-23/+23
| | | | llvm-svn: 13751
* Add CloneTraceInto(), which is based on (and has mostly the sameBrian Gaeke2004-05-191-0/+33
| | | | | | effects as) CloneFunctionInto(). llvm-svn: 13601
* Move RemapInstruction() to ValueMapper, so that it can be shared withBrian Gaeke2004-05-193-22/+26
| | | | | | | | CloneTrace, and because it is primarily an operation on ValueMaps. It is now a global (non-static) function which can be pulled in using ValueMapper.h. llvm-svn: 13600
* Do not pass in the same argument to the extracted function more than once, andChris Lattner2004-05-121-1/+8
| | | | | | give the extracted function a more useful name than just foo_code. llvm-svn: 13493
* Implement support for code extracting basic blocks that have a returnChris Lattner2004-05-121-2/+12
| | | | | | instruction in them. llvm-svn: 13490
* Implement splitting of PHI nodes, allowing block extraction of BB's that haveChris Lattner2004-05-121-7/+96
| | | | | | | | | | PHI node entries from multiple outside-the-region blocks. This also fixes extraction of the entry block in a function. Yaay. This has successfully block extracted all (but one) block from the score_move function in obsequi (out of 33). Hrm, I wonder which block the bug is in. :) llvm-svn: 13489
* * Pull some code out into the definedInRegion/definedInCaller methodsChris Lattner2004-05-121-78/+78
| | | | | | | | | | | | | | | | * Add a stub for the severSplitPHINodes which will allow us to bbextract bb's with PHI nodes in them soon. * Remove unused arguments from findInputsOutputs * Dramatically simplify the code in findInputsOutputs. In particular, nothing really cares whether or not a PHI node is using something. * Move moveCodeToFunction to after emitCallAndSwitchStatement as that's the order they get called. * Fix a bug where we would code extract a region that included a call to vastart. Like 'alloca', calls to vastart must stay in the function that they are defined in. * Add some comments. llvm-svn: 13482
* Generate substantially better code when there are a limited number of exitsChris Lattner2004-05-121-22/+61
| | | | | | | | | | | from the extracted region. If the return has 0 or 1 exit blocks, the new function returns void. If it has 2 exits, it returns bool, otherwise it returns a ushort as before. This allows us to use a conditional branch instruction when there are two exit blocks, as often happens during block extraction. llvm-svn: 13481
* Two minor improvements:Chris Lattner2004-05-121-18/+14
| | | | | | | | | | | | 1. Get rid of the silly abort block. When doing bb extraction, we get one abort block for every block extracted, which is kinda annoying. 2. If the switch ends up having a single destination, turn it into an unconditional branch. I would like to add support for conditional branches, but to do this we will want to have the function return a bool instead of a ushort. llvm-svn: 13478
* Do not clone arbitrary condition instructions.Chris Lattner2004-05-021-1/+1
| | | | llvm-svn: 13316
* Do not infinitely "unroll" single BB loops.Chris Lattner2004-05-021-5/+4
| | | | llvm-svn: 13315
* Dont' merge terminators that are needed to select PHI node values.Chris Lattner2004-05-021-1/+1
| | | | llvm-svn: 13312
* Implement SimplifyCFG/branch-cond-merge.llChris Lattner2004-05-011-10/+64
| | | | | | Turning "if (A < B && B < C)" into "if (A < B & B < C)" llvm-svn: 13311
* Fix my missing parensChris Lattner2004-05-011-1/+1
| | | | llvm-svn: 13307
* Implement SimplifyCFG/branch-cond-prop.llChris Lattner2004-05-011-2/+30
| | | | llvm-svn: 13306
* * Allow aggregating extracted function arguments (controlled by flag)Misha Brukman2004-04-231-45/+197
| | | | | | * Commandline option (for now) controls that flag that is passed in llvm-svn: 13141
* Include cerrno (gcc-3.4 fix)Alkis Evlogimenos2004-04-211-0/+1
| | | | llvm-svn: 13091
* Add support for evaluation of exp/log/log10/powChris Lattner2004-04-161-1/+25
| | | | llvm-svn: 13011
* Include <cmath> for compatibility with gcc 3.0.x (the system compiler onBrian Gaeke2004-04-161-0/+1
| | | | | | Debian.) llvm-svn: 12986
* 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. llvm-svn: 12977
* Add a simple call constant propagation interface.Chris Lattner2004-04-131-0/+51
| | | | llvm-svn: 12919
* Fold code like:Chris Lattner2004-04-091-18/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | if (C) V1 |= V2; into: Vx = V1 | V2; V1 = select C, V1, Vx when the expression can be evaluated unconditionally and is *cheap* to execute. This limited form of if conversion is quite handy in lots of cases. For example, it turns this testcase into straight-line code: int in0 ; int in1 ; int in2 ; int in3 ; int in4 ; int in5 ; int in6 ; int in7 ; int in8 ; int in9 ; int in10; int in11; int in12; int in13; int in14; int in15; long output; void mux(void) { output = (in0 ? 0x00000001 : 0) | (in1 ? 0x00000002 : 0) | (in2 ? 0x00000004 : 0) | (in3 ? 0x00000008 : 0) | (in4 ? 0x00000010 : 0) | (in5 ? 0x00000020 : 0) | (in6 ? 0x00000040 : 0) | (in7 ? 0x00000080 : 0) | (in8 ? 0x00000100 : 0) | (in9 ? 0x00000200 : 0) | (in10 ? 0x00000400 : 0) | (in11 ? 0x00000800 : 0) | (in12 ? 0x00001000 : 0) | (in13 ? 0x00002000 : 0) | (in14 ? 0x00004000 : 0) | (in15 ? 0x00008000 : 0) ; } llvm-svn: 12798
* Implement ScalarRepl/select_promote.llChris Lattner2004-04-081-0/+53
| | | | llvm-svn: 12779
* Fix the obvious bug in my previous checkinChris Lattner2004-04-021-0/+3
| | | | llvm-svn: 12618
* Implement Transforms/SimplifyCFG/return-merge.llChris Lattner2004-04-021-1/+57
| | | | | | | | | | This actually causes us to turn code like: return C ? A : B; into a select instruction. llvm-svn: 12617
* Fix PR310 and TailDup/2004-04-01-DemoteRegToStack.llxChris Lattner2004-04-011-5/+12
| | | | llvm-svn: 12597
* Fix linking of constant expr casts due to type resolution changes. WithChris Lattner2004-03-311-0/+8
| | | | | | this and the other patches 253.perlbmk links again. llvm-svn: 12565
* Now that all the code generators support the select instruction, and the ↵Chris Lattner2004-03-301-78/+9
| | | | | | | | instcombine pass can eliminate many nasty cases of them, start generating them in the optimizers llvm-svn: 12545
* Fix bug: CodeExtractor/2004-03-17-MissedLiveIns.llChris Lattner2004-03-181-0/+5
| | | | | | | With this fix we now successfully extract all 149 loops from 256.bzip2 without crashing or miscompiling the program! llvm-svn: 12493
* Fix CodeExtractor/2004-03-17-UpdatePHIsOutsideRegion.llChris Lattner2004-03-181-0/+13
| | | | llvm-svn: 12489
* Seriously simplify and correct the PHI node handling code.Chris Lattner2004-03-181-162/+28
| | | | llvm-svn: 12487
* Fix CodeExtractor/2004-03-17-OutputMismatch.llChris Lattner2004-03-181-3/+7
| | | | llvm-svn: 12486
* Fix several bugs in the extractor:Chris Lattner2004-03-181-45/+52
| | | | | | | | | | | | 1. Names were not put on the new arguments created (ok, this just helps sanity :) 2. Fix outgoing pointer values 3. Do not insert stores for values that had not been computed 4. Fix some wierd problems with the outset calculation This fixes CodeExtractor/2004-03-14-DominanceProblem.ll, making the extractor work on at least one simple case! llvm-svn: 12484
* Prune #includes, moving the module interface to the front. Note that thisChris Lattner2004-03-181-2/+1
| | | | | | | exposed the fact that the header was not self-contained. There is a reason we do things :) llvm-svn: 12481
* Fix compilation of mesa, which I broke earlier todayChris Lattner2004-03-171-2/+3
| | | | llvm-svn: 12465
* This code was both incredibly complex and incredibly broken. Fix it.Chris Lattner2004-03-161-137/+57
| | | | llvm-svn: 12456
* Do not copy gigantic switch instructionsChris Lattner2004-03-161-1/+8
| | | | llvm-svn: 12441
* Mostly cosmetic improvements. Do fix the bug where a global value was ↵Chris Lattner2004-03-151-35/+23
| | | | | | considered an input. llvm-svn: 12406
* Assert that input blocks meet the invariants we expectChris Lattner2004-03-151-42/+38
| | | | | | | | Simplify the input/output finder. All elements of a basic block are instructions. Any used arguments are also inputs. An instruction can only be used by another instruction. llvm-svn: 12405
* No correctness fixes here, just minor qoi fixes:Chris Lattner2004-03-141-30/+26
| | | | | | | | | | | | | * Don't insert a branch to the switch instruction after the call, just make it a single block. * Insert the new alloca instructions in the entry block of the original function instead of having them execute dynamically * Don't make the default edge of the switch instruction go back to the switch. The loop extractor shouldn't create new loops! * Give meaningful names to the alloca slots and the reload instructions * Some minor code simplifications llvm-svn: 12402
* Simplify code a bit, and fix bug CodeExtractor/2004-03-14-NoSwitchSupport.llChris Lattner2004-03-141-62/+34
| | | | | | | | | | This also implements a two minor improvements: * Don't insert live-out stores IN the region, insert them on the code path that exits the region * If the region is exited to the same block from multiple paths, share the switch statement entry, live-out store code, and the basic block. llvm-svn: 12401
* Simplify the code a bit by making the collection of basic blocks to extractChris Lattner2004-03-141-57/+39
| | | | | | | a member of the class. While we're at it, turn the collection into a set instead of a vector to improve efficiency and make queries simpler. llvm-svn: 12400
* Minor random cleanupsChris Lattner2004-03-141-9/+7
| | | | llvm-svn: 12382
* Verify functions as they are produced if -debug is specified. ReduceChris Lattner2004-03-141-6/+5
| | | | | | curly braceage llvm-svn: 12378
* Move to the IPO library. Utils shouldn't contain passes.Chris Lattner2004-03-141-68/+0
| | | | llvm-svn: 12372
OpenPOWER on IntegriCloud