summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Try fold re-materialized load instructions into its uses.Evan Cheng2007-08-301-11/+22
| | | | llvm-svn: 41598
* Change LegalFPImmediates to use APFloat.Dale Johannesen2007-08-302-12/+53
| | | | | | | | | Add APFloat interfaces to ConstantFP, SelectionDAG. Fix integer bit in double->APFloat conversion. Convert LegalizeDAG to use APFloat interface in ConstantFPSDNode uses. llvm-svn: 41587
* Fix use of declaration inside case blockAnton Korobeynikov2007-08-291-1/+2
| | | | llvm-svn: 41584
* Change LiveRange so it keeps a pointer to the VNInfo rather than an index.Evan Cheng2007-08-293-213/+252
| | | | | | | Changes related modules so VNInfo's are not copied. This decrease copy coalescing time by 45% and overall compilation time by 10% on siod. llvm-svn: 41579
* Lower FRAME_TO_ADDR_OFFSET to zero by default (if not custom lowered)Anton Korobeynikov2007-08-291-1/+13
| | | | llvm-svn: 41578
* Add an option, -view-sunit-dags, for viewing the actual SUnit DAGs used byDan Gohman2007-08-282-1/+77
| | | | | | scheduling. llvm-svn: 41556
* Recover most of the compile time regression due to recent live interval changes.Evan Cheng2007-08-282-44/+46
| | | | | | | | 1. Eliminate the costly live interval "swapping". 2. Change ValueNumberInfo container from SmallVector to std::vector. The former performs slowly when the vector size is very large. llvm-svn: 41536
* Make DAGCombiner's global alias analysis query more precise in the caseDan Gohman2007-08-271-2/+3
| | | | | | where both pointers have non-zero offsets. llvm-svn: 41491
* If the source and destination pointers in an llvm.memmove are knownDan Gohman2007-08-271-12/+25
| | | | | | to not alias each other, it can be translated as an llvm.memcpy. llvm-svn: 41489
* There is an impedance matching problem between LLVM andDuncan Sands2007-08-272-6/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc exception handling: if an exception unwinds through an invoke, then execution must branch to the invoke's unwind target. We previously tried to enforce this by appending a cleanup action to every selector, however this does not always work correctly due to an optimization in the C++ unwinding runtime: if only cleanups would be run while unwinding an exception, then the program just terminates without actually executing the cleanups, as invoke semantics would require. I was hoping this wouldn't be a problem, but in fact it turns out to be the cause of all the remaining failures in the LLVM testsuite (these also fail with -enable-correct-eh-support, so turning on -enable-eh didn't make things worse!). Instead we need to append a full-blown catch-all to the end of each selector. The correct way of doing this depends on the personality function, i.e. it is language dependent, so can only be done by gcc. Thus this patch which generalizes the eh.selector intrinsic so that it can handle all possible kinds of action table entries (before it didn't accomodate cleanups): now 0 indicates a cleanup, and filters have to be specified using the number of type infos plus one rather than the number of type infos. Related gcc patches will cause Ada to pass a cleanup (0) to force the selector to always fire, while C++ will use a C++ catch-all (null). llvm-svn: 41484
* Add explicit keywords and remove spurious trailing semicolons.Dan Gohman2007-08-272-10/+11
| | | | llvm-svn: 41482
* Revise per review comments.Dale Johannesen2007-08-262-2/+2
| | | | llvm-svn: 41409
* Add APFloat interface to ConstantFPSDNode. ChangeDale Johannesen2007-08-252-13/+8
| | | | | | | over uses in DAGCombiner. Fix interfaces to work with APFloats. llvm-svn: 41407
* Allow target constants to be illegal types. The target shouldChris Lattner2007-08-251-0/+5
| | | | | | | know how to handle them. This fixes test/CodeGen/Generic/asm-large-immediate.ll llvm-svn: 41388
* Teach the dag scheduler to handle inline asm nodes with multi-value ↵Chris Lattner2007-08-251-8/+9
| | | | | | immediate operands. llvm-svn: 41386
* The personality function might need to be declared as:Bill Wendling2007-08-251-5/+18
| | | | | | | | | .set Lset0,___gxx_personality_v0-. .long Lset0 on some targets. Make it so! llvm-svn: 41385
* rename isOperandValidForConstraint to LowerAsmOperandForConstraint, Chris Lattner2007-08-252-17/+19
| | | | | | changing the interface to allow for future changes. llvm-svn: 41384
* Poison APFloat::operator==. Replace existing uses with bitwiseIsEqual.Dale Johannesen2007-08-241-1/+1
| | | | | | This means backing out the preceding change to Constants.cpp, alas. llvm-svn: 41378
* Use APFloat internally for ConstantFPSDNode.Dale Johannesen2007-08-241-1/+1
| | | | llvm-svn: 41372
* Perform correct codegen for eh_dwarf_cfa intrinsic.Anton Korobeynikov2007-08-231-2/+10
| | | | llvm-svn: 41316
* move this check. ppc outputs .no_dead_strip properlyAndrew Lenharth2007-08-221-6/+6
| | | | llvm-svn: 41286
* Minor cleanups to reduce some spurious differences between differentDan Gohman2007-08-201-9/+11
| | | | | | scheduler implementations. llvm-svn: 41191
* Partial implementation of calling functions with byval arguments:Rafael Espindola2007-08-201-0/+10
| | | | | | | *) The needed information is propagated to the DAG *) The X86-64 backend detects it and aborts llvm-svn: 41179
* Fold C ? 0 : 1 to ~C or zext(~C) or trunc(~C) depending the types.Evan Cheng2007-08-181-3/+14
| | | | llvm-svn: 41163
* Avoid issue on 64-bit hosts.Evan Cheng2007-08-171-1/+2
| | | | llvm-svn: 41143
* Fix GLIBCXX_DEBUG error of comparing two singular iteratorsDavid Greene2007-08-171-3/+8
| | | | llvm-svn: 41139
* If dynamic_stackalloc alignment is > stack alignment, first issue an ↵Evan Cheng2007-08-161-5/+12
| | | | | | instruction to align the stack ptr before the decrement. llvm-svn: 41133
* - If a dynamic_stackalloc alignment requirement is <= stack alignment, then ↵Evan Cheng2007-08-161-12/+12
| | | | | | | | | the alignment argument is ignored. - *Always* round up the size of the allocation to multiples of stack alignment to ensure the stack ptr is never left in an invalid state after a dynamic_stackalloc. llvm-svn: 41132
* Fix some kill info update bugs; add hidden option -disable-rematerialization ↵Evan Cheng2007-08-162-1/+16
| | | | | | to turn off remat for debugging. llvm-svn: 41118
* Implement FPOWI ExpandOp.Lauro Ramos Venancio2007-08-151-0/+5
| | | | | | Fix PR1287. llvm-svn: 41112
* If the source of a move is in spill slot, the reload may be folded to ↵Evan Cheng2007-08-151-13/+19
| | | | | | essentially a load from stack slot. It's ok to mark the stack slot value as available for reuse. But it should not be clobbered since the destination of the move is live. llvm-svn: 41109
* - If a def is dead, do not spill it.Evan Cheng2007-08-141-61/+115
| | | | | | | - If the defs of a spilled rematerializable MI are dead after the spill store is deleted, delete the def MI as well. llvm-svn: 41086
* Fix for PR1596: AdjustCopiesBackFrom() should conservatively check if any of ↵Evan Cheng2007-08-141-0/+13
| | | | | | its sub-registers may overlap with the interval of the copy that's being coalesced. llvm-svn: 41084
* If a MI's def is remat as well as spilled, and the store is later deemed ↵Evan Cheng2007-08-141-2/+29
| | | | | | dead, mark the def operand as isDead. llvm-svn: 41083
* If a spilled value is being reused and the use is a kill, that means there areEvan Cheng2007-08-141-18/+32
| | | | | | | no more uses within the MBB and the spilled value isn't live out of the MBB. Then it's safe to delete the spill store. llvm-svn: 41069
* If a rematerializable def is not deleted, i.e. it is also spilled, check if theEvan Cheng2007-08-141-11/+20
| | | | | | spilled value is available for reuse. llvm-svn: 41067
* Kill info update bugs.Evan Cheng2007-08-142-2/+3
| | | | llvm-svn: 41064
* Re-implement trivial rematerialization. This allows def MIs whose live ↵Evan Cheng2007-08-135-273/+379
| | | | | | intervals that are coalesced to be rematerialized. llvm-svn: 41060
* Kill info update bugs.Evan Cheng2007-08-131-5/+2
| | | | llvm-svn: 41043
* No need to remove dead range from soon-to-be-dead live interval. Its val# ↵Evan Cheng2007-08-121-3/+3
| | | | | | may be out of whack. llvm-svn: 41024
* Code to maintain kill information during register coalescing.Evan Cheng2007-08-113-29/+82
| | | | llvm-svn: 41016
* Move isSubRegOf into MRegisterInfo. Fix a missed move elimination in ↵Christopher Lamb2007-08-101-17/+24
| | | | | | LowerSubregs and add more debugging output there. llvm-svn: 41005
* Fix EXTRACT_ELEMENT, EXTRACT_SUBVECTOR, and EXTRACT_VECTOR_ELT toDan Gohman2007-08-101-3/+5
| | | | | | | use an intptr ValueType instead of i32 for the index operand in getCopyToParts. llvm-svn: 40987
* propagate struct size and alignment of byval arguments to the DAGRafael Espindola2007-08-102-2/+19
| | | | llvm-svn: 40986
* unbreak the buildChris Lattner2007-08-091-1/+1
| | | | llvm-svn: 40976
* Bug fix. ~1U marks the val# dead.Evan Cheng2007-08-091-1/+1
| | | | llvm-svn: 40975
* Update per review comments.Dale Johannesen2007-08-091-30/+15
| | | | llvm-svn: 40965
* long double 9 of N. This finishes up the X86-32 bitsDale Johannesen2007-08-092-22/+48
| | | | | | | | (constants are still not handled). Adds ConvertActions to control fp-to-fp conversions (these are currently defaulted for all other targets, so no changes there). llvm-svn: 40958
* If a target really needs to custom lower constants, it should be allowedScott Michel2007-08-081-3/+11
| | | | | | to do so. llvm-svn: 40955
* Adding kill info to val#.Evan Cheng2007-08-081-3/+10
| | | | llvm-svn: 40925
OpenPOWER on IntegriCloud