summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Don't hoist instructions that have implicit uses or defines. Before, it wasBill Wendling2008-08-181-0/+5
| | | | | | hoisting out some "test" and "cmp" instructions. This was obvious badness. llvm-svn: 54908
* Don't require Registry specializations to define random static variables.Gordon Henriksen2008-08-172-18/+0
| | | | llvm-svn: 54902
* Drop an unnecessary include.Gordon Henriksen2008-08-171-1/+0
| | | | llvm-svn: 54901
* Rename some GC classes so that their roll will hopefully be clearer.Gordon Henriksen2008-08-1710-254/+226
| | | | | | | | | | | | | | | | | | In particular, Collector was confusing to implementors. Several thought that this compile-time class was the place to implement their runtime GC heap. Of course, it doesn't even exist at runtime. Specifically, the renames are: Collector -> GCStrategy CollectorMetadata -> GCFunctionInfo CollectorModuleMetadata -> GCModuleInfo CollectorRegistry -> GCRegistry Function::getCollector -> getGC (setGC, hasGC, clearGC) Several accessors and nested types have also been renamed to be consistent. These changes should be obvious. llvm-svn: 54899
* Don't instantiate GC metadata for declarations.Gordon Henriksen2008-08-172-1/+3
| | | | llvm-svn: 54895
* Fix merge errorAnton Korobeynikov2008-08-173-175/+0
| | | | llvm-svn: 54891
* Move all assembler printing related stuff into new libAsmPrinterAnton Korobeynikov2008-08-175-1/+173
| | | | llvm-svn: 54885
* Factor out asmprinters from collector interface.Anton Korobeynikov2008-08-171-0/+18
| | | | llvm-svn: 54884
* Factor GC metadata table assembly generation out of Collector in preparation ↵Gordon Henriksen2008-08-1710-50/+94
| | | | | | for splitting AsmPrinter into its own library. llvm-svn: 54881
* Factor GC metadata table assembly generation out of Collector in preparation ↵Gordon Henriksen2008-08-174-18/+72
| | | | | | for splitting AsmPrinter into its own library. llvm-svn: 54880
* Rework the routines that convert AP[S]Int into a string. Now, instead ofChris Lattner2008-08-172-7/+10
| | | | | | | | | | | | | | | | | returning an std::string by value, it fills in a SmallString/SmallVector passed in. This significantly reduces string thrashing in some cases. More specifically, this: - Adds an operator<< and a print method for APInt that allows you to directly send them to an ostream. - Reimplements APInt::toString to be much simpler and more efficient algorithmically in addition to not thrashing strings quite as much. This speeds up llvm-dis on kc++ by 7%, and may also slightly speed up the asmprinter. This also fixes a bug I introduced into the asmwriter in a previous patch w.r.t. alias printing. llvm-svn: 54873
* Move SLEB/ULEB size calculation routines from AsmPrinter to TargetAsmInfo. ↵Anton Korobeynikov2008-08-162-428/+402
| | | | | | This makes JIT asmprinter-free. llvm-svn: 54843
* Convert several std::vectors over to SmallVector, and use reserve() as ↵Owen Anderson2008-08-151-2/+4
| | | | | | appropriate for cases where std::vector is still used. llvm-svn: 54820
* Use SmallSet instead of std::set to save allocations.Owen Anderson2008-08-141-3/+3
| | | | llvm-svn: 54810
* Move MachineInstr::getOpcode inline.Owen Anderson2008-08-141-6/+0
| | | | llvm-svn: 54807
* Convert uses of std::vector in TargetInstrInfo to SmallVector. This change ↵Owen Anderson2008-08-144-35/+37
| | | | | | had to be propoagated down into all the targets and up into all clients of this API. llvm-svn: 54802
* Make FastISel's constructor protected, and give it a destructor.Dan Gohman2008-08-141-0/+2
| | | | llvm-svn: 54793
* Remove more uses of std::set.Owen Anderson2008-08-141-6/+8
| | | | llvm-svn: 54787
* Improve support for vector casts in LLVM IR and CodeGen.Dan Gohman2008-08-144-88/+221
| | | | llvm-svn: 54784
* Speed up addRegisterDead by adding more fast checks before performing the ↵Owen Anderson2008-08-141-1/+3
| | | | | | | | | expensive subregister query, and by increasing the size of the subregister hashtable so that there are fewer collisions. llvm-svn: 54781
* Use empty() instead of begin() == end().Dan Gohman2008-08-144-5/+5
| | | | llvm-svn: 54780
* Get rid of a use of std::map.Owen Anderson2008-08-131-2/+2
| | | | llvm-svn: 54770
* Fix a bogus srem rule - a negative value srem'd by a power-of-2Dan Gohman2008-08-131-5/+3
| | | | | | | can have a non-negative result; for example, -16%16 is 0. Also, clarify the related comments. This fixes PR2670. llvm-svn: 54767
* Expunge the last uses of std::map from LiveIntervals.Owen Anderson2008-08-131-13/+13
| | | | llvm-svn: 54766
* Move r2iMap_ over to DenseMap from std::map.Owen Anderson2008-08-131-1/+1
| | | | llvm-svn: 54765
* Allow SelectionDAG to create EXTRACT_VECTOR_ELT nodes withDan Gohman2008-08-131-11/+9
| | | | | | | non-constant indices. Only a few of the peephole checks require a constant index. llvm-svn: 54764
* Make the allocation of LiveIntervals explicit, rather than holding them in ↵Owen Anderson2008-08-133-16/+21
| | | | | | | | the r2iMap_ by value. This will prevent references to them from being invalidated if the map is changed. llvm-svn: 54763
* Initial checkin of the new "fast" instruction selection support. SeeDan Gohman2008-08-131-0/+104
| | | | | | | the comments in FastISelEmitter.cpp for details on what this is. This is currently experimental and unusable. llvm-svn: 54751
* Rename SelectionDAGISel's FastISel to Fast, to begin to makeDan Gohman2008-08-131-3/+3
| | | | | | room for the new FastISel instruction selection code. llvm-svn: 54749
* Get rid of unused variable.Owen Anderson2008-08-131-1/+0
| | | | llvm-svn: 54742
* 1) Merge entire live intervals instead of parts of them.Owen Anderson2008-08-131-62/+36
| | | | | | 2) Conditionalize temporary insertion if we don't need it. llvm-svn: 54741
* Correct the filename in the top-of-file comment.Dan Gohman2008-08-121-1/+1
| | | | llvm-svn: 54688
* Take the FrameOffset into account when computing the alignmentDan Gohman2008-08-111-1/+1
| | | | | | of stack objects. This fixes PR2656. llvm-svn: 54646
* Fix some typos. Apparently I think C needs a power-of operator.Gordon Henriksen2008-08-091-3/+3
| | | | llvm-svn: 54574
* Have IRBuilder take a template argument on whether or not to preserveEric Christopher2008-08-081-8/+8
| | | | | | | names. This can save a lot of allocations if you aren't going to be looking at the output. llvm-svn: 54546
* Handle visibility printing with all generality. Remove bunch of duplicate code.Anton Korobeynikov2008-08-081-0/+11
| | | | llvm-svn: 54540
* Reduce the entries in a phi before testing it for deadness, because removing ↵Owen Anderson2008-08-081-7/+7
| | | | | | the entries might make it dead. llvm-svn: 54535
* Add skeleton of simple basic block instruction selector.Evan Cheng2008-08-083-3/+81
| | | | llvm-svn: 54522
* Don't crash printing the asm for a ConstantExpr PtrToInt just because the intNick Lewycky2008-08-081-4/+5
| | | | | | | | is narrower than the pointer. This testcase emits: .byte (((17) - 16) & 255) llvm-svn: 54517
* Add the remaining fp_round libcalls:Bruno Cardoso Lopes2008-08-073-2/+41
| | | | | | | | | | | | | FPROUND_F80_F32, FPROUND_PPCF128_F32, FPROUND_F80_F64, FPROUND_PPCF128_F64 Support for soften float fp_round operands is added, Mips needs this to round f64->f32. Also added support to soften float FABS result, Mips doesn't support double fabs results while in 'single float only' mode. llvm-svn: 54484
* Do a dominator walk when scheduling copies, rather than a DFS on the CFG. ↵Owen Anderson2008-08-071-14/+44
| | | | | | | | Also, fix a few problems when creating live intervals for temporaries created by phi elimination. llvm-svn: 54483
* Re-enable elimination of unnecessary SUBREG_TO_REG instructions inDan Gohman2008-08-071-4/+9
| | | | | | | | | | | LowerSubregs, and fix an x86-64 isel bug that this exposed. SUBREG_TO_REG for x86-64 implicit zero extension is only safe for isel to generate when the source is known to always have zeros in the high 32 bits. The EXTRACT_SUBREG instruction does not clear the high 32 bits. llvm-svn: 54444
* Factor code that finalize PHI nodes, jump tables, etc. out of ↵Evan Cheng2008-08-071-14/+23
| | | | | | SelectBasicBlock. No functionality changes. llvm-svn: 54438
* SDISel's constant branch folding can fold away self-loops, which doesn't ↵Owen Anderson2008-08-061-15/+40
| | | | | | | | result in any dead blocks, but rather an incorrect phi input. Add code to UnreachableMachineBlockElim to get rid of these entries. llvm-svn: 54432
* Correct handle cases where two phis are coalesced together, and correct ↵Owen Anderson2008-08-061-6/+39
| | | | | | | | break up the case where two different phis want to coalesce with the same vreg. llvm-svn: 54426
* Oops, didn't mean to commit this.Owen Anderson2008-08-061-0/+2
| | | | llvm-svn: 54425
* We don't need to try to coalesce input vregs that are the same as the output ↵Owen Anderson2008-08-061-0/+7
| | | | | | vreg. llvm-svn: 54422
* Only trim a live interval if the register is not used after the PHI node.Owen Anderson2008-08-061-2/+5
| | | | llvm-svn: 54421
* Only remap each VNInfo once when doing renumbering.Owen Anderson2008-08-061-13/+15
| | | | llvm-svn: 54420
* Fix breakage on ARM/2008-04-10-ScavengerAssert.ll.Owen Anderson2008-08-051-1/+2
| | | | llvm-svn: 54378
OpenPOWER on IntegriCloud