summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Tidy a bit more.Chris Lattner2009-03-241-3/+3
| | | | llvm-svn: 67617
* simplify this code a bit now that "allocation to a vreg class" can neverChris Lattner2009-03-241-16/+13
| | | | | | fail. llvm-svn: 67616
* Model inline asm constraint which ties an input to an output register as ↵Evan Cheng2009-03-231-29/+21
| | | | | | machine operand TIED_TO constraint. This eliminated the need to pre-allocate registers for these. This also allows register allocator can eliminate the unneeded copies. llvm-svn: 67512
* For inline asm output operand that matches an input. Encode the input ↵Evan Cheng2009-03-201-22/+34
| | | | | | operand index in the high bits. llvm-svn: 67387
* Don't force promotion of return arguments on the callee.Rafael Espindola2009-03-171-9/+0
| | | | | | | Some architectures (like x86) don't require it. This fixes bug 3779. llvm-svn: 67132
* Fix codegen to compute the size of an allocation by multiplying theChris Lattner2009-03-171-8/+17
| | | | | | | | | | | size by the array amount as an i32 value instead of promoting from i32 to i64 then doing the multiply. Not doing this broke wrap-around assumptions that the optimizers (validly) made. The ultimate real fix for this is to introduce i64 version of alloca and remove mallocinst. This fixes PR3829 llvm-svn: 67093
* Oops...I committed too much.Bill Wendling2009-03-131-8/+12
| | | | llvm-svn: 66867
* Temporarily XFAIL this test.Bill Wendling2009-03-131-12/+8
| | | | llvm-svn: 66866
* Pass in a std::string when getting the names of debugging things. This cuts downBill Wendling2009-03-091-8/+12
| | | | | | on the number of times a std::string is created and copied. llvm-svn: 66396
* Revert BuildVectorSDNode related patches: 65426, 65427, and 65296.Evan Cheng2009-02-251-8/+11
| | | | llvm-svn: 65482
* Fix big-endian codegen bug. We're splitting upDale Johannesen2009-02-251-1/+2
| | | | | | | | | | | overly long ints, e.g. i96, into pieces at PHIs and the nodes that feed into them; however big-endian reverses the order of the pieces (for some reason), and wasn't doing it the same way on both sides, so the pieces didn't match and runtime failures ensued. Fixes 188.ammp and sqlite3 on ppc32. llvm-svn: 65481
* Clean up dwarf writer, part 1. This eliminated the horrible recursive ↵Evan Cheng2009-02-251-13/+13
| | | | | | | | getGlobalVariablesUsing and replaced it something readable. It eliminated use of slow UniqueVector and replaced it with StringMap, SmallVector, and DenseMap, etc. It also fixed some non-deterministic behavior. This is a very minor compile time win. llvm-svn: 65438
* Overhaul my earlier submission due to feedback. It's a large patch, but most ofBill Wendling2009-02-241-1/+0
| | | | | | | | | | | | them are generic changes. - Use the "fast" flag that's already being passed into the asm printers instead of shoving it into the DwarfWriter. - Instead of calling "MI->getParent()->getParent()" for every MI, set the machine function when calling "runOnMachineFunction" in the asm printers. llvm-svn: 65379
* - Use the "Fast" flag instead of "OptimizeForSize" to determine whether to emitBill Wendling2009-02-241-5/+3
| | | | | | | | | | a DBG_LABEL or not. We want to fall back to the original way of emitting debug info when we're in -O0/-fast mode. - Add plumbing in to pass the "Fast" flag to places that need it. - XFAIL DebugInfo/deaddebuglabel.ll. This is finding 11 labels instead of 8. I need to investigate still. llvm-svn: 65367
* Introduce the BuildVectorSDNode class that encapsulates the ISD::BUILD_VECTORScott Michel2009-02-221-11/+8
| | | | | | | | | instruction. The class also consolidates the code for detecting constant splats that's shared across PowerPC and the CellSPU backends (and might be useful for other backends.) Also introduces SelectionDAG::getBUID_VECTOR() for generating new BUILD_VECTOR nodes. llvm-svn: 65296
* Temporarily revert r65065. It was causing test failures.Bill Wendling2009-02-191-1/+3
| | | | llvm-svn: 65068
* Check for -fast here too.Bill Wendling2009-02-191-3/+1
| | | | llvm-svn: 65065
* Generate these labels when we're in "fast" mode, not simply when we're no inBill Wendling2009-02-191-8/+2
| | | | | | "optimize-for-size" mode. llvm-svn: 65064
* Remove trailing whitespace to reduce later commit patch noise.Scott Michel2009-02-171-92/+92
| | | | | | | | (Note: Eventually, commits like this will be handled via a pre-commit hook that does this automagically, as well as expand tabs to spaces and look for 80-col violations.) llvm-svn: 64827
* --- Merging (from foreign repository) r64714 into '.':Bill Wendling2009-02-171-16/+32
| | | | | | | | | | | | U include/llvm/CodeGen/DebugLoc.h U lib/CodeGen/SelectionDAG/LegalizeDAG.cpp U lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp Enable debug location generation at -Os. This goes with the reapplication of the r63639 patch. llvm-svn: 64715
* Unbreak the build on win32.Cedric Venet2009-02-141-1/+2
| | | | | | | | | | Cleanup some warning. Remark: when struct/class are declared differently than they are defined, this make problem for VC++ since it seems to mangle class differently that struct. These error are very hard to understand and find. So please, try to keep your definition/declaration in sync. Only tested with VS2008. hope it does not break anything. feel free to revert. llvm-svn: 64554
* Revert this. It was breaking stuff.Bill Wendling2009-02-131-9/+27
| | | | llvm-svn: 64428
* Turn off the old way of handling debug information in the code generator. UseBill Wendling2009-02-131-27/+9
| | | | | | | the new way, where all of the information is passed on SDNodes and machine instructions. llvm-svn: 64427
* Simplify code.Evan Cheng2009-02-091-5/+6
| | | | llvm-svn: 64164
* Make sure constant subscript is truncated to ptr size if it may not fit.Evan Cheng2009-02-091-1/+8
| | | | llvm-svn: 64163
* Remove more non-DebugLoc getNode variants. UseDale Johannesen2009-02-061-16/+11
| | | | | | | | getCALLSEQ_{END,START} to permit passing no DebugLoc there. UNDEF doesn't logically have DebugLoc; add getUNDEF to encapsulate this. llvm-svn: 63978
* Clear out the CurDebugLoc info when doing a 'clear' on the SDL object.Bill Wendling2009-02-061-0/+1
| | | | llvm-svn: 63967
* Reapply 63765. Patches for clang and llvm-gcc to follow.Dale Johannesen2009-02-051-0/+9
| | | | llvm-svn: 63812
* Remove non-DebugLoc versions of getMergeValues, ZeroExtendInReg.Dale Johannesen2009-02-051-3/+5
| | | | llvm-svn: 63800
* Reverting 63765. This broke the build of both clangDale Johannesen2009-02-041-9/+0
| | | | | | and llvm-gcc. llvm-svn: 63786
* New feature: add support for target intrinsics being defined in theNate Begeman2009-02-041-0/+9
| | | | | | | | | target directories themselves. This also means that VMCore no longer needs to know about every target's list of intrinsics. Future work will include converting the PowerPC target to this interface as an example implementation. llvm-svn: 63765
* Remove some more non-DebugLoc versions of constructionDale Johannesen2009-02-041-18/+22
| | | | | | functions, with callers adjusted to fit. llvm-svn: 63705
* Remove a few non-DebugLoc versions of node creationDale Johannesen2009-02-041-5/+10
| | | | | | functions. llvm-svn: 63703
* DebugLoc propagation; adjustment to things omittedDale Johannesen2009-02-031-16/+19
| | | | | | from SelectionDagBuild. llvm-svn: 63680
* Pass in something sensible for the debug location information when creating theBill Wendling2009-02-031-4/+49
| | | | | | initial PHI nodes of the machine function. llvm-svn: 63598
* Explicitly pass in the "unknown" debug location. This is probably notBill Wendling2009-02-031-1/+2
| | | | | | | correct. We need more infrastructure before we can get the DebugLoc info for these instructions. llvm-svn: 63593
* Create DebugLoc information in FastISel. Several temporary methods wereBill Wendling2009-02-031-2/+4
| | | | | | | created. Specifically, those BuildMIs which use "DebugLoc::getUnknownLoc()". I'll remove them soon. llvm-svn: 63584
* Fix PR3401: when using large integers, the typeDuncan Sands2009-01-311-16/+16
| | | | | | | | | | | | | returned by getShiftAmountTy may be too small to hold shift values (it is an i8 on x86-32). Before and during type legalization, use a large but legal type for shift amounts: getPointerTy; afterwards use getShiftAmountTy, fixing up any shift amounts with a big type during operation legalization. Thanks to Dan for writing the original patch (which I shamelessly pillaged). llvm-svn: 63482
* Move CurDebugLoc into SelectionDAGLowering.Dale Johannesen2009-01-311-221/+224
| | | | llvm-svn: 63468
* Make LowerCallTo and LowerArguments take a DebugLocDale Johannesen2009-01-301-9/+11
| | | | | | argument. Adjust all callers and overloaded versions. llvm-svn: 63444
* Propagate debug info when building SelectionDAG.Dale Johannesen2009-01-301-399/+519
| | | | llvm-svn: 63359
* Make isOperationLegal do what its name suggests, and introduce aDan Gohman2009-01-281-2/+2
| | | | | | | | | | | | | | | new isOperationLegalOrCustom, which does what isOperationLegal previously did. Update a bunch of callers to use isOperationLegalOrCustom instead of isOperationLegal. In some case it wasn't obvious which behavior is desired; when in doubt I changed then to isOperationLegalOrCustom as that preserves their previous behavior. This is for the second half of PR3376. llvm-svn: 63212
* Formatting.Duncan Sands2009-01-281-8/+5
| | | | llvm-svn: 63199
* Delete redundant return statements.Dan Gohman2009-01-271-7/+0
| | | | llvm-svn: 63120
* During bittest switch lowering emit shift in the test block, which should ↵Anton Korobeynikov2009-01-261-11/+9
| | | | | | | | (theoretically) allow us to generate more efficient code. We don't do this now though :) llvm-svn: 63027
* Cleanup whitespace and comments, and tweak someDuncan Sands2009-01-211-5/+4
| | | | | | | prototypes, in operand type legalization. No functionality change. llvm-svn: 62680
* Allow targets to legalize operations (with illegal operands) that produces ↵Sanjiv Gupta2009-01-211-0/+9
| | | | | | multiple values. For example, a load with an illegal operand (a load produces two values, a value and chain). llvm-svn: 62663
* Use "SINT_TO_FP" instead of "UINT_TO_FP" when getting the exponent. This wasBill Wendling2009-01-201-12/+13
| | | | | | | causing the limited precision stuff to produce the wrong result for values in the range [0, 1). llvm-svn: 62615
* Shift types need to match.Bill Wendling2009-01-201-8/+9
| | | | llvm-svn: 62571
* Verify debug info.Devang Patel2009-01-191-4/+4
| | | | llvm-svn: 62545
OpenPOWER on IntegriCloud