summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Don't lose namespace qualifications on previous patch.Chris Lattner2002-05-201-2/+2
| | | | llvm-svn: 2664
* Rename IsPowerOf2 to isPowerOf2Chris Lattner2002-05-191-2/+2
| | | | llvm-svn: 2663
* Link with test/Libraries/libinstr32.a for runtime routinesVikram S. Adve2002-05-191-1/+1
| | | | | | supporting tracing. That should be moved to a "runtime" directory. llvm-svn: 2660
* Added external functions for hashing pointers to sequence numbers.Vikram S. Adve2002-05-191-0/+44
| | | | llvm-svn: 2659
* InstrnsBefore and InstrnsAfter are now vectors instead of deques.Vikram S. Adve2002-05-191-3/+3
| | | | | | | May be slightly less efficient but significantly reduces special cases interfaces in code generation. llvm-svn: 2649
* Hash pointer values to a sequence number to get identical results fromVikram S. Adve2002-05-191-39/+197
| | | | | | | | | lli and llc. This is controlled with options -tracehash on|off. Also, added an option to specify which functions should be traced. Particularly useful to reduce output volume in basic-block tracing. llvm-svn: 2646
* Better folding getelementptr operations with mixedVikram S. Adve2002-05-191-41/+61
| | | | | | | | array and struct indexes. Update operand values in CallArgsDescriptor (a new class) when replacing constant values with immediates. llvm-svn: 2645
* cpValue2Value now needs a vector of MachineInstr to store return values.Vikram S. Adve2002-05-191-16/+20
| | | | llvm-svn: 2644
* Annotation class for MachineInstr.Vikram S. Adve2002-05-191-0/+39
| | | | llvm-svn: 2643
* Numerous bug fixes:Vikram S. Adve2002-05-192-27/+58
| | | | | | | | | | | | | | | | | | | -- passing FP arguments to functions with more than 6 arguments -- passing FP arguments to varargs functions -- passing FP arguments to functions with no prototypes -- incorrect coloring for CC registers (both int and FP): interferences were being completely ignored for int CC and were considered but no spills were marked for fp CC! Also some code improvements: -- better interface to generating machine instr for common cases (many places still need to be updated to use this interface) -- annotations on MachineInstr to communicate information from one codegen phase to another (now used to pass information about CALL/JMPLCALL operands from selection to register allocation) -- all sizes and offests in class TargetData are uint64_t instead of uint llvm-svn: 2642
* Add integer register size field.Vikram S. Adve2002-05-191-27/+37
| | | | | | | Make all sizes and offsets uint64_t instead of uint. Fixed GetIndexedOffset to handle mixed array and struct indices. llvm-svn: 2641
* Numerous bug fixes:Vikram S. Adve2002-05-198-887/+1004
| | | | | | | | | | | | | | | | | | | | | | | | -- correct sign extensions for integer casts and for shift-by-constant instructions generated for integer multiply -- passing FP arguments to functions with more than 6 arguments -- passing FP arguments to varargs functions -- passing FP arguments to functions with no prototypes -- incorrect stack frame size when padding a section -- folding getelementptr operations with mixed array and struct indexes -- use uint64_t instead of uint for constant offsets in mem operands -- incorrect coloring for CC registers (both int and FP): interferences were being completely ignored for int CC and were considered but no spills were marked for fp CC! Also some code improvements: -- better interface to generating machine instr for common cases (many places still need to be updated to use this interface) -- annotations on MachineInstr to communicate information from one codegen phase to another (now used to pass information about CALL/JMPLCALL operands from selection to register allocation) -- all sizes and offests in class TargetData are uint64_t instead of uint llvm-svn: 2640
* Fix bug: test/Regression/CBackend/2002-05-16-NameCollide.ll by trackingChris Lattner2002-05-171-2/+24
| | | | | | | which global variables would have name collisions if they were not mangled, and use this info to mangle them iff they would collide. llvm-svn: 2639
* * Make debug output conditional on #defineChris Lattner2002-05-161-13/+99
| | | | | | | | | * Add optimization to rank computation to not recursively search when unneccesary. * More agressively negate expressions to open reassociation opportunities. * Linearize (A+B)+(C+D) into ((A+B)+C)+D llvm-svn: 2637
* * Fix bug: test/Regression/Transforms/GCSE/2002-05-14-OperandSwap.llChris Lattner2002-05-141-7/+32
| | | | | | | By making sure to consider binary expressions identical if their operands are backwards, but swappable. llvm-svn: 2629
* Fix bug: test/Regression/Transforms/InstCombine/2002-05-14-SubFailure.llChris Lattner2002-05-141-1/+1
| | | | llvm-svn: 2627
* Avoid emitting a useless comment for a basic block with no uses (whichChris Lattner2002-05-141-3/+6
| | | | | | often happens for the entry basic block of a function) llvm-svn: 2624
* Fix bug: test/Regression/Transforms/InstCombine/2002-05-14-TouchDeletedInst.llChris Lattner2002-05-141-1/+12
| | | | | | | | | "This testcase caused instcombine to fail because it got the same instruction on it's worklist more than once (which is ok), but then deleted the instruction. Since the inst stayed on the worklist, as soon as it came back up to be processed, bad things happened, and opt asserted." llvm-svn: 2623
* Fix a major source of "type unsafety", where a cast is neccesary, but canChris Lattner2002-05-141-2/+40
| | | | | | | | | be put either before or after a load. We chose to cast the value loaded instead of the pointer to load from. Fixes bug: test/Regression/Transforms/LevelRaise/2002-05-10-LoadPeephole.ll llvm-svn: 2621
* Implement elimination of loadsChris Lattner2002-05-141-18/+176
| | | | llvm-svn: 2620
* Trivial cleanupsChris Lattner2002-05-131-2/+2
| | | | llvm-svn: 2617
* Add method to check to see if two _Instructions_ dominate each otherChris Lattner2002-05-132-0/+28
| | | | llvm-svn: 2616
* Initial checkin of LICM passChris Lattner2002-05-101-0/+262
| | | | llvm-svn: 2615
* We actually need this code for the release build to prevent link errors,Chris Lattner2002-05-101-6/+1
| | | | | | un#ifdef it. llvm-svn: 2606
* Add support for printing out statistics information when -stats is added toChris Lattner2002-05-1017-17/+109
| | | | | | the command line llvm-svn: 2601
* Fix some bugs, straighten stuff out, more work needs to be done.Chris Lattner2002-05-101-19/+33
| | | | llvm-svn: 2600
* Initial checkin of Statistic class.Chris Lattner2002-05-101-0/+31
| | | | llvm-svn: 2598
* * Add support for the -stats command line option to report how much is changedChris Lattner2002-05-101-2/+24
| | | | | | | | * Make cast-of-self-ty DCE the dead cast instruction immediately instead of waiting for it to be DCE'd by another sweep over the function. This speeds this up noticably. llvm-svn: 2597
* Initial checkin of the PiNodeInsertion passChris Lattner2002-05-101-0/+185
| | | | llvm-svn: 2593
* Last minor cleanups, this code still does not work for all cases, but itChris Lattner2002-05-091-18/+10
| | | | | | works much better than it used to. llvm-svn: 2588
* Two Cleanups to generated C code:Chris Lattner2002-05-091-35/+65
| | | | | | | | | | | | | | 1. Avoid printing *(&globalvariable), instead print globalvariable alone as a special case. 2. Inline subexpressions into expressions as much as legal that preserves execution characteristics of expressions. Now we get nice (but over-parenthesized, oh well) things like: ltmp_428_7 = spec__putc(((unsigned char )((bsBuff) >> 24)), (bsStream)); instead of five seperate instructions (bsBuff & bsStream are globals). llvm-svn: 2587
* * Remove CInstPrintVisitor class, incorporating it into the CWriter classChris Lattner2002-05-091-344/+300
| | | | | | * Reorder code in the file to make it more logically laid out. llvm-svn: 2586
* Remove CLocalVars data structure entirely, instead of building stuff andChris Lattner2002-05-091-28/+3
| | | | | | then printing it out, just print as we go. llvm-svn: 2585
* Simplify code by removing InstLocalVarsVisitor, replacing it with a simpleChris Lattner2002-05-091-62/+17
| | | | | | inst_iterator. llvm-svn: 2584
* * Clean up how PHI nodes are handledChris Lattner2002-05-091-54/+73
| | | | | | | | | | | | | | * Correct global variable references * Fix loads & stores with zero indices * Do not emit an else part of a branch if there is no code (no phi node and a fallthrough branch), makes code more readable to get: if (l2_cond240) { goto l13_bb10; } with no else{} branch llvm-svn: 2583
* Handle setcc <global*>, 0 instructions, Global pointers are never null!Chris Lattner2002-05-091-4/+18
| | | | llvm-svn: 2582
* Give the longer name to the instruction that will probably be eliminated laterChris Lattner2002-05-091-1/+2
| | | | llvm-svn: 2581
* Emit:Chris Lattner2002-05-091-2/+13
| | | | | | | | | | l3_reg109 = l81_this->field0; Instead of: l3_reg109 = l81_this[0u].field0; where possible llvm-svn: 2579
* * Print structures types correctlyChris Lattner2002-05-091-42/+70
| | | | | | | * Clean up generated code to not emit basic block labels and goto instructions if they are unneccesary (for example, fall throughs) llvm-svn: 2578
* * Continue cleanup of type printing codeChris Lattner2002-05-091-58/+45
| | | | | | | | * Print a newline after a malloc instruction * Convert unprintable characters to x_ instead of _x so that we don't generate identifiers that start with underscores llvm-svn: 2577
* Gut the type printing code so there is only one copy of it instead of 3Chris Lattner2002-05-091-296/+92
| | | | llvm-svn: 2576
* * Remove dead "constant printing" codeChris Lattner2002-05-091-48/+22
| | | | | | | | | * Mangle names with only a prefix so that they are easier on the eyes. * Put spaces around binary operators with low precedence to make them easier to read * Don't prefix function names with &, although it's correct, it's unnecesary and easier to read without it. llvm-svn: 2575
* Remove gross "Operand" instance variableChris Lattner2002-05-091-41/+31
| | | | | | Remove lots of unneccesary arguments to methods llvm-svn: 2574
* Simplify and clean up function calls.Chris Lattner2002-05-091-49/+37
| | | | | | Now indirect function calls work, except that function pointer types are not correct. llvm-svn: 2573
* * Remove dead functionChris Lattner2002-05-091-9/+20
| | | | | | | * Print C strings correctly * Expand C escape sequences nicely (ie \n \t, etc get generated instead of hex escapes) llvm-svn: 2572
* Make Getelementptr, load & store all work the right way.Chris Lattner2002-05-091-112/+37
| | | | | | Handle global variables correctly. llvm-svn: 2571
* Many random fixes:Chris Lattner2002-05-091-112/+56
| | | | | | | * Use binary operator logic for shifts instead of cloning code * Unary not is '~' not '!' llvm-svn: 2570
* Incorporate and purge function before and after printing them so unnamed valuesChris Lattner2002-05-091-11/+16
| | | | | | | | have some hope of working right. Function calls do not try to emit an lvalue if they return void. llvm-svn: 2569
* Factor out the code to print a value to ONE place.Chris Lattner2002-05-091-187/+101
| | | | | | It turns out that unnamed values DO NOT work at all, that's next on the list. llvm-svn: 2568
* First wave of cleanups, looks like the first of many.Chris Lattner2002-05-091-292/+162
| | | | llvm-svn: 2567
OpenPOWER on IntegriCloud