summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Use precomputed value, if anyAnton Korobeynikov2008-04-231-1/+1
| | | | llvm-svn: 50164
* CleanupAnton Korobeynikov2008-04-231-3/+5
| | | | llvm-svn: 50160
* Fix an out-of-bounds access in -view-sunit-dags in the case of anDan Gohman2008-04-211-1/+2
| | | | | | empty ScheduleDAG. llvm-svn: 50054
* Check we aren't trying to convert PPC long double.Dale Johannesen2008-04-201-6/+3
| | | | | | This fixes the testsuite failure on ppcf128-4.ll. llvm-svn: 49994
* Switch to using Simplified ConstantFP::get API.Chris Lattner2008-04-202-9/+7
| | | | llvm-svn: 49977
* Implement a bit more softfloat support inDuncan Sands2008-04-182-5/+187
| | | | | | | | LegalizeTypes. Correct the load logic so that it actually works, and also teach it to handle floating point extending loads. llvm-svn: 49923
* Add some more FIXME's for indexed loads and stores.Duncan Sands2008-04-183-0/+6
| | | | llvm-svn: 49916
* Provide an explicit list of operands to MakeLibcall,Duncan Sands2008-04-183-72/+81
| | | | | | | | | | rather than having it suck them out of a node. Add a bunch of new libcalls, and remove dead softfloat code (dead, because FloatToInt is used not Expand in this case). Note that indexed stores probably aren't handled properly, likewise for loads. llvm-svn: 49915
* Correct comment.Evan Cheng2008-04-181-2/+2
| | | | llvm-svn: 49913
* Not safe to "kill" a register if its live range extends pass the end of ↵Evan Cheng2008-04-181-3/+29
| | | | | | block branch. llvm-svn: 49911
* Remove the implicit conversion from SDOperandPtr to SDOperand*; thisDan Gohman2008-04-171-4/+4
| | | | | | may fix a build error on Visual Studio. llvm-svn: 49876
* Be more careful with insert_subreg and extract_subreg where either source or ↵Evan Cheng2008-04-171-27/+54
| | | | | | destination operand has already been coalesced with another register that's defined by a insert_subreg or extract_subreg. llvm-svn: 49843
* Use correct name for method in comment.Bill Wendling2008-04-171-4/+4
| | | | llvm-svn: 49841
* Correct the SrcValue information in the Expand code for va_copy.Dan Gohman2008-04-171-2/+2
| | | | llvm-svn: 49839
* Fix a sub-register indice propagation bug.Evan Cheng2008-04-171-5/+14
| | | | llvm-svn: 49832
* Correlate stubs with functions in JIT: when emitting a stub, the JIT tells ↵Nicolas Geoffray2008-04-162-4/+6
| | | | | | | | the memory manager which function the stub will resolve. llvm-svn: 49814
* After reading memory that's already freed.Evan Cheng2008-04-162-22/+24
| | | | llvm-svn: 49810
* Infrastructure for getting the machine code size of a function and an ↵Nicolas Geoffray2008-04-161-0/+11
| | | | | | instruction. X86, PowerPC and ARM are implemented llvm-svn: 49809
* Fix PR2226. Avoid using uninitialized variables.Evan Cheng2008-04-161-13/+28
| | | | llvm-svn: 49807
* Empty basic block should have an empty range.Evan Cheng2008-04-161-1/+3
| | | | llvm-svn: 49800
* Ongoing work on improving the instruction selection infrastructure:Roman Levenstein2008-04-166-79/+80
| | | | | | | | | | Rename SDOperandImpl back to SDOperand. Introduce the SDUse class that represents a use of the SDNode referred by an SDOperand. Now it is more similar to Use/Value classes. Patch is approved by Dan Gohman. llvm-svn: 49795
* Rewrite LiveVariable liveness computation. The new implementation is much ↵Evan Cheng2008-04-161-219/+239
| | | | | | | | simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential for performance improvement by replacing the conservative handling of partial physical register definitions. The code is currently disabled until live interval analysis is taught of the name scheme. This patch also fixed a couple of nasty corner cases. llvm-svn: 49784
* Code clean up.Evan Cheng2008-04-161-70/+54
| | | | llvm-svn: 49783
* Avoid read after free.Evan Cheng2008-04-161-1/+1
| | | | llvm-svn: 49760
* Fix the new scheduler assertion checks to work whenDan Gohman2008-04-151-2/+10
| | | | | | | the scheduler has inserted no-ops. This fixes the 2006-07-03-schedulers.ll regression on ppc32. llvm-svn: 49747
* Change Divided flag to Split, as suggested by EvanNicolas Geoffray2008-04-151-2/+2
| | | | llvm-svn: 49715
* Treat EntryToken nodes as "passive" so that they aren't added to theDan Gohman2008-04-153-35/+51
| | | | | | | | | | | | | | | | | ScheduleDAG; they don't correspond to any actual instructions so they don't need to be scheduled. This fixes a bug where the EntryToken was being scheduled multiple times in some cases, though it ended up not causing any trouble because EntryToken doesn't expand into anything. With this fixed the schedulers reliably schedule the expected number of units, so we can check this with an assertion. This requires a tweak to test/CodeGen/X86/loop-hoist.ll because it ends up getting scheduled differently in a trivial way, though it was enough to fool the prcontext+grep that the test does. llvm-svn: 49701
* In -view-sunit-dags, display "special" chain dependencies as cyanDan Gohman2008-04-141-0/+2
| | | | | | instead of blue to distinguish them from regular dependencies. llvm-svn: 49696
* Avoid creating MERGE_VALUES nodes for single values.Dan Gohman2008-04-141-1/+2
| | | | llvm-svn: 49676
* Fix const-correctness issues with the SrcValue handling in theDan Gohman2008-04-141-8/+8
| | | | | | memory intrinsic expansion code. llvm-svn: 49666
* Reverse sense of unwind-tables option. This meansDale Johannesen2008-04-141-3/+3
| | | | | | | stack tracebacks on Darwin x86-64 won't work by default; nevertheless, everybody but me thinks this is a good idea. llvm-svn: 49663
* Fix /test/CodeGen/PowerPC/big-endian-actual-args.ll for linux/ppc32Nicolas Geoffray2008-04-141-4/+4
| | | | llvm-svn: 49652
* Initial libcall support for LegalizeTypes. This isDuncan Sands2008-04-143-0/+116
| | | | | | | | much simpler than in LegalizeDAG because calls are not yet expanded into call sequences: that happens after type legalization has finished. llvm-svn: 49634
* LegalizeTypes can sometimes have deleted nodesDuncan Sands2008-04-132-0/+51
| | | | | | | | | in its maps. Add some sanity checks that catch this kind of thing. Hopefully these can be removed one day (once all problems are fixed!) but for the moment it seems wise to have them in. llvm-svn: 49612
* Add a divided flag for the first piece of an argument divided into mulitple ↵Nicolas Geoffray2008-04-131-2/+7
| | | | | | parts. Fixes PR1643 llvm-svn: 49611
* Merge LLVMBuilder and FoldingBuilder, callingDuncan Sands2008-04-131-11/+19
| | | | | | the result IRBuilder. Patch by Dominic Hamon. llvm-svn: 49604
* Factor some libcall code.Duncan Sands2008-04-121-61/+49
| | | | llvm-svn: 49583
* Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not LegalDan Gohman2008-04-128-490/+386
| | | | | | | | | | | | | | | | | | | | | | | | | | | on any current target and aren't optimized in DAGCombiner. Instead of using intermediate nodes, expand the operations, choosing between simple loads/stores, target-specific code, and library calls, immediately. Previously, the code to emit optimized code for these operations was only used at initial SelectionDAG construction time; now it is used at all times. This fixes some cases where rep;movs was being used for small copies where simple loads/stores would be better. This also cleans up code that checks for alignments less than 4; let the targets make that decision instead of doing it in target-independent code. This allows x86 to use rep;movs in low-alignment cases. Also, this fixes a bug that resulted in the use of rep;stos for memsets of 0 with non-constant memory size when the alignment was at least 4. It's better to use the library in this case, which can be significantly faster when the size is large. This also preserves more SourceValue information when memory intrinsics are lowered into simple loads/stores. llvm-svn: 49572
* Do not add empty live intervals to handled_. They should never be undone for ↵Evan Cheng2008-04-111-2/+1
| | | | | | backtracking. llvm-svn: 49544
* If a PHI node has a single implicit_def source, replace it with an ↵Evan Cheng2008-04-111-5/+19
| | | | | | implicit_def instead of a copy. llvm-svn: 49543
* Use of implicit_def is not part of live interval. Create empty intervals for ↵Evan Cheng2008-04-113-12/+53
| | | | | | the uses when the live interval is being spilled. llvm-svn: 49542
* detabifyGabor Greif2008-04-111-1/+1
| | | | llvm-svn: 49524
* Remove implicit_def instructions that become dead as result of coalescing.Evan Cheng2008-04-101-19/+37
| | | | llvm-svn: 49513
* Allow registers defined by implicit_def to be clobbered.Evan Cheng2008-04-101-6/+15
| | | | llvm-svn: 49512
* A copy instruction may use a register multiple times on some targets. Change ↵Evan Cheng2008-04-101-2/+6
| | | | | | them all. llvm-svn: 49491
* Add comment.Evan Cheng2008-04-101-0/+2
| | | | llvm-svn: 49469
* Teach branch folding pass about implicit_def instructions. Unfortunately we ↵Evan Cheng2008-04-101-1/+56
| | | | | | can't just eliminate them since register scavenger expects every register use to be defined. However, we can delete them when there are no intra-block uses. Carefully removing some implicit def's which enable more blocks to be optimized away. llvm-svn: 49461
* - More aggressively coalescing away copies whose source is defined by an ↵Evan Cheng2008-04-093-76/+297
| | | | | | | | implicit_def. - Added insert_subreg coalescing support. llvm-svn: 49448
* Missed a hasInterval check.Evan Cheng2008-04-091-0/+2
| | | | llvm-svn: 49415
* Implement new llc flag -disable-required-unwind-tables.Dale Johannesen2008-04-081-2/+7
| | | | | | Corresponds to -fno-unwind-tables (usually default in gcc). llvm-svn: 49361
OpenPOWER on IntegriCloud