summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Rename ISD::FLT_ROUNDS to ISD::FLT_ROUNDS_ to avoid conflictingDan Gohman2008-01-316-10/+10
| | | | | | with the real FLT_ROUNDS (defined in <float.h>). llvm-svn: 46587
* Also avoid adding callee save code before debug labels.Evan Cheng2008-01-311-1/+9
| | | | llvm-svn: 46586
* Create a new class, MemOperand, for describing memory referencesDan Gohman2008-01-3111-142/+287
| | | | | | | | | | | | | | | | in the backend. Introduce a new SDNode type, MemOperandSDNode, for holding a MemOperand in the SelectionDAG IR, and add a MemOperand list to MachineInstr, and code to manage them. Remove the offset field from SrcValueSDNode; uses of SrcValueSDNode that were using it are all all using MemOperandSDNode now. Also, begin updating some getLoad and getStore calls to use the PseudoSourceValue objects. Most of this was written by Florian Brander, some reorganization and updating to TOT by me. llvm-svn: 46585
* Fixed a bug in MergeValueInAsValue() pointed out by David Greene. Replace ↵Evan Cheng2008-01-301-3/+3
| | | | | | val# with previous liverange's. llvm-svn: 46579
* Treat the label for the first @llvm.dbg.stoppoint the same way as the ↵Evan Cheng2008-01-302-8/+12
| | | | | | | | | | dbg_func_start label. Make sure nothing else is inserted before them. Note this solution might be somewhat fragile since ISD::LABEL may be used for other purposes. If that ends up to be an issue, we may need to introduce a different node for debug labels. llvm-svn: 46571
* Adjust loop per review feedback.Dale Johannesen2008-01-301-4/+2
| | | | llvm-svn: 46569
* A semi-gross fix for a debug info issue. When inserting the "function start" ↵Evan Cheng2008-01-301-9/+26
| | | | | | label (i.e. first label in the entry block) take care to insert it at the beginning of the block. llvm-svn: 46568
* Accept getelementptr starting at GV with all 0 indices as aDale Johannesen2008-01-301-0/+14
| | | | | | legitimate way of representing global variable GV in debug info. llvm-svn: 46565
* Even though InsertAtEndOfBasicBlock is an ugly hack it still deserves a ↵Evan Cheng2008-01-3012-35/+19
| | | | | | | | proper name. Rename it to EmitInstrWithCustomInserter since it does not necessarily insert instruction at the end. llvm-svn: 46562
* Add a new PseudoSourceValue class, which will be used to help trackDan Gohman2008-01-301-0/+33
| | | | | | | memory reference information in the backend. Most of this was written by Florian Brander, cleanup and updating to TOT by me. llvm-svn: 46556
* Remove a couple more cases of "getNumUses() == 0". No need to walk the linkedNick Lewycky2008-01-301-2/+2
| | | | | | list just to see if whether the list is empty. llvm-svn: 46555
* Use empty() instead of comparing size() with zero.Nick Lewycky2008-01-301-1/+1
| | | | llvm-svn: 46554
* Don't DCE FreeInst's. We were using those! Patch from Owen Anderson.Nick Lewycky2008-01-301-1/+1
| | | | llvm-svn: 46553
* Skip over the label which marks the beginning of the function before ↵Evan Cheng2008-01-301-0/+6
| | | | | | inserting prologue code. llvm-svn: 46546
* Back out mods to llvmAsmParser, incorrectly committedScott Michel2008-01-303-4562/+3410
| | | | llvm-svn: 46545
* More cleanups for CellSPU:Scott Michel2008-01-3018-3868/+4951
| | | | | | | | | - Expand tabs... (poss 80-col violations, will get them later...) - Consolidate logic for SelectDFormAddr and SelectDForm2Addr into a single function, simplifying maintenance. Also reduced custom instruction generation for SPUvecinsert/INSERT_MASK. llvm-svn: 46544
* Make DSE much more aggressive by performing DCE earlier. Update a testcase ↵Owen Anderson2008-01-301-2/+55
| | | | | | to reflect this increased aggressiveness. llvm-svn: 46542
* Fix an issue where, under very specific circumstances, memdep could end up ↵Owen Anderson2008-01-301-2/+2
| | | | | | | | dereferencing the end of one of its internal maps. llvm-svn: 46541
* Fix a bug where scalarrepl would discard offset if type would match.Chris Lattner2008-01-301-2/+2
| | | | | | | In practice this can only happen on code with already undefined behavior, but this is still a good thing to handle correctly. llvm-svn: 46539
* Factor the addressing mode and the load/store VT out of LoadSDNodeDan Gohman2008-01-3014-108/+108
| | | | | | | | and StoreSDNode into their common base class LSBaseSDNode. Member functions getLoadedVT and getStoredVT are replaced with the common getMemoryVT to simplify code that will handle both loads and stores. llvm-svn: 46538
* Work in progress. This patch *fixes* x86-64 calls which are modelled as ↵Evan Cheng2008-01-296-96/+283
| | | | | | | | StructRet but really should be return in registers, e.g. _Complex long double, some 128-bit aggregates. This is a short term solution that is necessary only because llvm, for now, cannot model i128 nor call's with multiple results. Status: This only works for direct calls, and only the caller side is done. Disabled for now. llvm-svn: 46527
* When expanding an operand, it's not the result valueDuncan Sands2008-01-291-2/+2
| | | | | | | | | | | type that matters but the operand type. This fixes 2008-01-08-IllegalCMP.ll which crashed with the new legalize infrastructure because SETCC with result type i8 and operand type i64 was being custom expanded by the X86 backend. With this fix, the gcc build gets as far as the first libcall. llvm-svn: 46525
* Don't let globalopt hack on volatile loads or stores.Chris Lattner2008-01-291-1/+4
| | | | llvm-svn: 46523
* Use empty() instead of comparing size() with zero.Dan Gohman2008-01-2917-22/+22
| | | | llvm-svn: 46514
* Fix a typo in a comment.Dan Gohman2008-01-291-1/+1
| | | | llvm-svn: 46513
* Fix 80-col violations.Dan Gohman2008-01-293-10/+17
| | | | llvm-svn: 46510
* Remove top-level const qualifiers from casts, avoiding associatedDan Gohman2008-01-291-10/+10
| | | | | | compiler warnings. llvm-svn: 46509
* Fix a typo in a comment.Dan Gohman2008-01-291-1/+0
| | | | llvm-svn: 46508
* Add explicit keywords.Dan Gohman2008-01-291-2/+2
| | | | llvm-svn: 46506
* eliminate additions of 0.0 when they are obviously dead. This has to be ↵Chris Lattner2008-01-291-0/+47
| | | | | | | | careful to avoid turning -0.0 + 0.0 -> -0.0 which is incorrect. llvm-svn: 46499
* Use getPreferredAlignmentLog or getPreferredAlignmentDuncan Sands2008-01-296-19/+26
| | | | | | | to get the alignment of global variables, rather than using hand-made versions. llvm-svn: 46495
* Add support for eliminating memcpy's at the end of functions. Also fix some ↵Owen Anderson2008-01-291-26/+63
| | | | | | | | errors I noticed in the handling of eliminating stores to byval arguments. llvm-svn: 46494
* RegAllocBigBlock doesn't need LiveVariables either.Owen Anderson2008-01-291-13/+2
| | | | llvm-svn: 46488
* Properly expand extract-element for non-power-of-2 codegenNate Begeman2008-01-291-2/+3
| | | | llvm-svn: 46486
* Handle 'X' constraint in asm's better.Dale Johannesen2008-01-295-21/+69
| | | | llvm-svn: 46485
* Filter loops that subtract induction variables.Devang Patel2008-01-291-17/+17
| | | | | | | | These loops are not yet handled. Fix PR 1912. llvm-svn: 46484
* Overhaul Cell SPU's addressing mode internals so that there are nowScott Michel2008-01-298-680/+566
| | | | | | | | | | | | | | only two addressing mode nodes, SPUaform and SPUindirect (vice the three previous ones, SPUaform, SPUdform and SPUxform). This improves code somewhat because we now avoid using reg+reg addressing when it can be avoided. It also simplifies the address selection logic, which was the main point for doing this. Also, for various global variables that would be loaded using SPU's A-form addressing, prefer D-form offs[reg] addressing, keeping the base in a register if the variable is used more than once. llvm-svn: 46483
* Simplify the code and fix a typo.Lauro Ramos Venancio2008-01-281-7/+4
| | | | llvm-svn: 46458
* Fix fpcmp infinite loop when comparing "29-266" with "29-268".Lauro Ramos Venancio2008-01-281-5/+21
| | | | llvm-svn: 46455
* If the function has no machine instructions, then emit a "nop" so thatBill Wendling2008-01-281-0/+10
| | | | | | the function label isn't associated with something it shouldn't be. llvm-svn: 46449
* Transform calls to memcpy into llvm.memcpy calls, patch by Eli Friedman.Chris Lattner2008-01-281-0/+30
| | | | llvm-svn: 46433
* Handle some more combinations of extend and icmp. Fixes PR1940.Nick Lewycky2008-01-282-8/+25
| | | | llvm-svn: 46431
* Fix PR1932 by disabling an xform invalid for fdiv.Chris Lattner2008-01-281-9/+10
| | | | llvm-svn: 46429
* Fix PR1938 by forcing the code that uses an undefined value to branch oneChris Lattner2008-01-281-4/+19
| | | | | | | | way or the other. Rewriting the code itself prevents subsequent analysis passes from making contradictory conclusions about the code that could cause an infeasible path to be made feasible. llvm-svn: 46427
* Fix PowerPC/./2007-10-18-PtrArithmetic.llChris Lattner2008-01-271-7/+14
| | | | llvm-svn: 46424
* fix a crash on CodeGen/X86/vector-rem.llChris Lattner2008-01-271-4/+6
| | | | llvm-svn: 46422
* Reg alloc doesn't really need LiveVariables.Owen Anderson2008-01-271-9/+2
| | | | llvm-svn: 46420
* Be more careful modifying the use_list while also iterating through it.Nick Lewycky2008-01-271-1/+2
| | | | llvm-svn: 46417
* Revert r46393: readonly/readnone functions are noDuncan Sands2008-01-271-9/+6
| | | | | | longer allowed to write through byval arguments. llvm-svn: 46416
* Implement some dag combines that allow doing fneg/fabs/fcopysign in integerChris Lattner2008-01-271-2/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | registers if used by a bitconvert or using a bitconvert. This allows us to avoid constant pool loads and use cheaper integer instructions when the values come from or end up in integer regs anyway. For example, we now compile CodeGen/X86/fp-in-intregs.ll to: _test1: movl $2147483648, %eax xorl 4(%esp), %eax ret _test2: movl $1065353216, %eax orl 4(%esp), %eax andl $3212836864, %eax ret Instead of: _test1: movss 4(%esp), %xmm0 xorps LCPI2_0, %xmm0 movd %xmm0, %eax ret _test2: movss 4(%esp), %xmm0 andps LCPI3_0, %xmm0 movss LCPI3_1, %xmm1 andps LCPI3_2, %xmm1 orps %xmm0, %xmm1 movd %xmm1, %eax ret bitconverts can happen due to various calling conventions that require fp values to passed in integer regs in some cases, e.g. when returning a complex. llvm-svn: 46414
OpenPOWER on IntegriCloud