summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Re-apply 56835 along with header file changes.Evan Cheng2008-09-303-8/+20
| | | | llvm-svn: 56848
* Revert commit 56835 since it breaks the build.Duncan Sands2008-09-303-20/+8
| | | | | | | | | | "If a re-materializable instruction has a register operand, the spiller will change the register operand's spill weight to HUGE_VAL to avoid it being spilled. However, if the operand is already in the queue ready to be spilled, avoid re-materializing it". llvm-svn: 56837
* If a re-materializable instruction has a register operand, the spiller will ↵Evan Cheng2008-09-303-8/+20
| | | | | | change the register operand's spill weight to HUGE_VAL to avoid it being spilled. However, if the operand is already in the queue ready to be spilled, avoid re-materializing it. llvm-svn: 56835
* Remove misuse of ReplaceNodeResults for atomics withDale Johannesen2008-09-291-3/+0
| | | | | | valid types. No functional change. llvm-svn: 56808
* Fix FastISel to not initialize the PIC-base register multiple timesDan Gohman2008-09-291-60/+65
| | | | | | in functions with PIC references from more than one basic block. llvm-svn: 56807
* Temporarily reverting r56683. This is causing a failure during the build of ↵Bill Wendling2008-09-261-4/+1
| | | | | | | | | | | | | | | | | llvm-gcc: /Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -mmacosx-version-min=10.4 -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Gir/devel/llvm/clean/llvm.obj/include -I/Volumes/Gir/devel/llvm/clean/llvm.src/include -fexceptions -fvisibility=hidden -DHIDE_EXPORTS -c ../../llvm-gcc.src/gcc/unwind-dw2-fde-darwin.c -o libgcc/./unwind-dw2-fde-darwin.o Assertion failed: (TargetRegisterInfo::isVirtualRegister(regA) && TargetRegisterInfo::isVirtualRegister(regB) && "cannot update physical register live information"), function runOnMachineFunction, file /Volumes/Gir/devel/llvm/clean/llvm.src/lib/CodeGen/TwoAddressInstructionPass.cpp, line 311. ../../llvm-gcc.src/gcc/unwind-dw2.c:1527: internal compiler error: Abort trap Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://developer.apple.com/bugreporter> for instructions. {standard input}:3521:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb" {standard input}:3521:symbol: "_dwarf_reg_size_table" can't be undefined in a subtraction expression {standard input}:3520:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb" ... llvm-svn: 56703
* Rename ConstantSDNode's getSignExtended to getSExtValue, forDan Gohman2008-09-262-10/+10
| | | | | | | consistancy with ConstantInt, and re-implement it in terms of ConstantInt's getSExtValue. llvm-svn: 56700
* Fix @llvm.frameaddress codegen. FP elimination optimization should be ↵Evan Cheng2008-09-261-1/+4
| | | | | | disabled when frame address is desired. Also add support for depth > 0. llvm-svn: 56683
* Add "inreg" field to CallSDNode (doesn't increaseDale Johannesen2008-09-265-17/+24
| | | | | | | | | its size). Adjust various lowering functions to pass this info through from CallInst. Use it to implement sseregparm returns on X86. Remove X86_ssecall calling convention. llvm-svn: 56677
* We don't need to insert copies for implicit_def's.Owen Anderson2008-09-261-1/+5
| | | | llvm-svn: 56674
* If we have a function with an unreachable statement such that the ending debugBill Wendling2008-09-261-6/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | information is in an unreachable block, then it's possible that the high/low pc values won't be set for the dwarf information. E.g., this function: void abort(void) __attribute__((__noreturn__)); void dead_beef(void) __attribute__ ((noreturn)); int *b; void dead_beef(void) { *b=0xdeadbeef; abort(); } has a call to "@llvm.dbg.region.end" only in the unreachable block: define void @dead_beef() noreturn nounwind { entry: call void @llvm.dbg.func.start(...) call void @llvm.dbg.stoppoint(...) ... call void @abort( ) noreturn nounwind unreachable return: ; No predecessors! call void @llvm.dbg.stoppoint(...) call void @llvm.dbg.region.end(...) ret void } The dwarf information emitted is something like: 0x00000084: TAG_subprogram [5] AT_name( "dead_beef" ) AT_external( 0x01 ) AT_prototyped( 0x01 ) AT_decl_file( 0x01 ) AT_decl_line( 0x08 ) Note that this is *not* the best fix for this problem, but a band-aid for an gaping wound. This code needs to be changed when we revamp our debugging information. llvm-svn: 56628
* Large mechanical patch.Devang Patel2008-09-253-21/+21
| | | | | | | | | | | | | | | s/ParamAttr/Attribute/g s/PAList/AttrList/g s/FnAttributeWithIndex/AttributeWithIndex/g s/FnAttr/Attribute/g This sets the stage - to implement function notes as function attributes and - to distinguish between function attributes and return value attributes. This requires corresponding changes in llvm-gcc and clang. llvm-svn: 56622
* Accept 'inreg' attribute on x86 functions asDale Johannesen2008-09-251-2/+7
| | | | | | | | meaning sse_regparm (i.e. float/double values go in XMM0 instead of ST0). Update documentation to reflect reality. llvm-svn: 56619
* Support for i1 XOR in FastISel. It is actually safe becauseDan Gohman2008-09-251-2/+3
| | | | | | i1 operands are assumed to already by zero-extended. llvm-svn: 56615
* Don't print fast-isel debug messages by default. Thanks Chris!Dan Gohman2008-09-251-3/+6
| | | | llvm-svn: 56614
* Don't forget the newline in debug output.Dan Gohman2008-09-251-1/+1
| | | | llvm-svn: 56613
* FastISel support for debug info.Dan Gohman2008-09-253-3/+117
| | | | llvm-svn: 56610
* bug 2812: Segmentation fault on a big emdiam processor.Richard Pennington2008-09-251-1/+1
| | | | llvm-svn: 56609
* Fix a recent fast-isel coverage regression - don't bail out beforeDan Gohman2008-09-251-3/+4
| | | | | | giving the target a chance to materialize constants. llvm-svn: 56605
* Enable DeadMachineInstructionElim when Fast-ISel is enabled.Dan Gohman2008-09-252-3/+13
| | | | llvm-svn: 56604
* Add debug output to this pass.Dan Gohman2008-09-251-0/+2
| | | | llvm-svn: 56602
* Refactor the code that adds standard LLVM codegen passes intoDan Gohman2008-09-251-109/+44
| | | | | | | a separate function, eliminating duplication between the add-passes-for-file and add-passes-for-machine-code code. llvm-svn: 56599
* <rdar://problem/6234798> Assertion failed: ↵Evan Cheng2008-09-251-2/+5
| | | | | | (!OpInfo.AssignedRegs.Regs.empty() && "Couldn't allocate input reg!") llvm-svn: 56597
* Give LowerSubregs.cpp a top-level description.Dan Gohman2008-09-241-0/+7
| | | | llvm-svn: 56596
* Remove SelectionDag early allocation of registersDale Johannesen2008-09-243-41/+61
| | | | | | | for earlyclobbers. Teach Local RA about earlyclobber, and add some tests for it. llvm-svn: 56592
* Use helperAnton Korobeynikov2008-09-241-8/+2
| | | | llvm-svn: 56584
* SmallPtrSet will be betterAnton Korobeynikov2008-09-241-3/+2
| | | | llvm-svn: 56583
* Use generic section-handling stuff to emit constant pool entriesAnton Korobeynikov2008-09-241-45/+36
| | | | llvm-svn: 56579
* Get rid of duplicate char*/Section* DataSectionAnton Korobeynikov2008-09-242-5/+5
| | | | llvm-svn: 56575
* Get rid of duplicate char*/Section* TextSectionAnton Korobeynikov2008-09-243-11/+13
| | | | llvm-svn: 56574
* Move actual section printing stuff to AsmPrinter from TAI reducing heap traffic.Anton Korobeynikov2008-09-241-3/+13
| | | | llvm-svn: 56573
* Drop obsolete hook and change all usage to new interfaceAnton Korobeynikov2008-09-241-6/+1
| | | | llvm-svn: 56572
* Provide direct function to switch to SectionAnton Korobeynikov2008-09-241-0/+20
| | | | llvm-svn: 56571
* Fix off-by-one error when updating live intervals.Owen Anderson2008-09-241-1/+1
| | | | llvm-svn: 56567
* Reapplying r56550Bill Wendling2008-09-241-13/+13
| | | | llvm-svn: 56553
* Forgot this part with my last patch. Sorry about the breakage.Bill Wendling2008-09-241-27/+38
| | | | llvm-svn: 56552
* Temporarily revert r56550 until missing commit can be added.Eric Christopher2008-09-241-13/+13
| | | | llvm-svn: 56551
* Refactor the constant folding code into it's own function. And call it from bothBill Wendling2008-09-241-13/+13
| | | | | | | | | | the SelectionDAG and DAGCombiner code. The only functionality change is that now the DAG combiner is performing the constant folding for these operations instead of being a no-op. This is *not* in response to a bug, so there isn't a testcase. llvm-svn: 56550
* Next round of earlyclobber handling. Approach theDale Johannesen2008-09-249-176/+38
| | | | | | | | | | RA problem by expanding the live interval of an earlyclobber def back one slot. Remove overlap-earlyclobber throughout. Remove earlyclobber bits and their handling from live internals. llvm-svn: 56539
* Refactor the logic for testing if an instruction is dead into aDan Gohman2008-09-241-37/+48
| | | | | | separate method. llvm-svn: 56531
* Set SetStore to false, to allow this pass to deleteDan Gohman2008-09-241-1/+2
| | | | | | dead loads. llvm-svn: 56529
* Add a method to MachineInstr for testing whether it makesDan Gohman2008-09-241-9/+30
| | | | | | any volatile memory references. llvm-svn: 56528
* Properly handle 'm' inline asm constraints. If a GV is being selected for ↵Evan Cheng2008-09-242-5/+25
| | | | | | the addressing mode, it requires the same logic for PIC relative addressing, etc. llvm-svn: 56526
* s/ParameterAttributes/Attributes/gDevang Patel2008-09-232-2/+0
| | | | llvm-svn: 56513
* Now that DeadMachineInstructionElim is basically workingDan Gohman2008-09-231-6/+0
| | | | | | | correctly, it's not necessary to explicitly remove registers from their use-def lists. llvm-svn: 56509
* Arrange for FastISel code to have access to the MachineModuleInfoDan Gohman2008-09-232-5/+10
| | | | | | object. This will be needed to support debug info. llvm-svn: 56508
* Track local physical register liveness. This is not the mostDan Gohman2008-09-231-3/+53
| | | | | | | efficient implementation possible, but it's pretty simple and good enough for the time being. llvm-svn: 56504
* Replace the LiveRegs SmallSet with a simple counter that keepsDan Gohman2008-09-232-23/+29
| | | | | | | track of the number of live registers, which is all the set was being used for. llvm-svn: 56498
* Add initial support for inserting last minute copies.Owen Anderson2008-09-231-28/+53
| | | | llvm-svn: 56485
* Fix the alignment of loads from constant pool entries when theDan Gohman2008-09-222-1/+7
| | | | | | | load address has an offset from the base of the constant pool entry. llvm-svn: 56479
OpenPOWER on IntegriCloud