aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Kill the Mach-O writer, and temporarily make filetype=obj an error.Nate Begeman2010-02-013-230/+1
| | | | | | | The MCStreamer based assemblers will take over for this functionality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95033 91177308-0d34-0410-b5e6-96231b3b80d8
* Improve EXTRACT_VECTOR_ELT patch based on comments from DuncanMon P Wang2010-02-012-10/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95012 91177308-0d34-0410-b5e6-96231b3b80d8
* eliminate a bunch of pointless LLVMContext arguments.Chris Lattner2010-02-011-2/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95001 91177308-0d34-0410-b5e6-96231b3b80d8
* fix PR 6157. Testcase pending.Dale Johannesen2010-02-011-0/+35
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94996 91177308-0d34-0410-b5e6-96231b3b80d8
* Fixed a couple of optimization with EXTRACT_VECTOR_ELT that assumes the resultMon P Wang2010-02-012-5/+12
| | | | | | | | | type is the same as the element type of the vector. EXTRACT_VECTOR_ELT can be used to extended the width of an integer type. This fixes a bug for Generic/vector-casts.ll on a ppc750. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94990 91177308-0d34-0410-b5e6-96231b3b80d8
* Emit declaration DIE for the class static variables.Devang Patel2010-01-301-1/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94870 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a case where debug_value could affect codegen.Dale Johannesen2010-01-301-0/+12
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94866 91177308-0d34-0410-b5e6-96231b3b80d8
* Add size and location info in DW_TAG_class_type descriptor.Devang Patel2010-01-291-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94822 91177308-0d34-0410-b5e6-96231b3b80d8
* Change the SREM case to match the logic in the IR version ComputeMaskedBits.Duncan Sands2010-01-291-8/+17
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94805 91177308-0d34-0410-b5e6-96231b3b80d8
* Assign the ordering of SDNodes in a much less intrusive fashion. After theBill Wendling2010-01-283-691/+171
| | | | | | | | "visit*" method is called, take the newly created nodes, walk them in a DFS fashion, and if they don't have an ordering set, then give it one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94757 91177308-0d34-0410-b5e6-96231b3b80d8
* add target hooks for emitting random gunk before and after the function body.Chris Lattner2010-01-281-0/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94732 91177308-0d34-0410-b5e6-96231b3b80d8
* Update of 94055 to track the IR level call site information via an intrinsic.Jim Grosbach2010-01-284-6/+36
| | | | | | | | | This allows code gen and the exception table writer to cooperate to make sure landing pads are associated with the correct invoke locations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94726 91177308-0d34-0410-b5e6-96231b3b80d8
* Give AsmPrinter the most common expected implementation of Chris Lattner2010-01-281-3/+2
| | | | | | | | | | runOnMachineFunction, and switch PPC to use EmitFunctionBody. The two ppc asmprinters now don't heave to define runOnMachineFunction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94722 91177308-0d34-0410-b5e6-96231b3b80d8
* emit a 0 byte instead of a noop if a function is empty on darwin.Chris Lattner2010-01-281-4/+2
| | | | | | | "0" is nice and target independent. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94718 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the argument from EmitJumpTableInfo, because it doesn't need it.Chris Lattner2010-01-281-11/+66
| | | | | | | | | | Move the X86 implementation of function body emission up to AsmPrinter::EmitFunctionBody, which works by calling the virtual EmitInstruction method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94716 91177308-0d34-0410-b5e6-96231b3b80d8
* Drop the argument to AsmPrinter::EmitConstantPool and make it virtual.Chris Lattner2010-01-281-2/+3
| | | | | | | | | Overload it in the ARM backend to do nothing, since is does insane constant pool emission. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94708 91177308-0d34-0410-b5e6-96231b3b80d8
* rename printVisibility to EmitVisibility and make it private,Chris Lattner2010-01-281-6/+5
| | | | | | | constify EmitLinkage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94705 91177308-0d34-0410-b5e6-96231b3b80d8
* If the only use of something is a DEBUG_VALUE, don'tDale Johannesen2010-01-271-0/+14
| | | | | | | | | let that stop it from being deleted, and change the DEBUG_VALUE value to undef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94694 91177308-0d34-0410-b5e6-96231b3b80d8
* Silence GCC warnings with asserts turned off. No functionality change.Chandler Carruth2010-01-272-3/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94673 91177308-0d34-0410-b5e6-96231b3b80d8
* add a new AsmPrinter::EmitFunctionEntryLabel virtual function,Chris Lattner2010-01-271-2/+9
| | | | | | | | which allows targets to override function entry label emission. Use it to convert linux/ppc to use EmitFunctionHeader(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94667 91177308-0d34-0410-b5e6-96231b3b80d8
* Eliminate target hook IsEligibleForTailCallOptimization.Evan Cheng2010-01-271-9/+0
| | | | | | | | | | Target independent isel should always pass along the "tail call" property. Change target hook LowerCall's parameter "isTailCall" into a refernce. If the target decides it's impossible to honor the tail call request, it should set isTailCall to false to make target independent isel happy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94626 91177308-0d34-0410-b5e6-96231b3b80d8
* mcize label emission for functions.Chris Lattner2010-01-261-5/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94624 91177308-0d34-0410-b5e6-96231b3b80d8
* use EmitLinkage for functions as well as globals. One outputChris Lattner2010-01-261-31/+4
| | | | | | | | | | change is that we now use ".linkonce discard" for global variables instead of ".linkonce samesize". These should be the same, just less strict. If anyone is interested in mcizing MCSection for COFF targets, this should be easy to fix. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94623 91177308-0d34-0410-b5e6-96231b3b80d8
* pull linkage emission code out to a new EmitLinkage function.Chris Lattner2010-01-261-43/+46
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94621 91177308-0d34-0410-b5e6-96231b3b80d8
* rearrange some directives, no functionality change.Chris Lattner2010-01-261-3/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94620 91177308-0d34-0410-b5e6-96231b3b80d8
* remove a noop function.Chris Lattner2010-01-261-3/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94616 91177308-0d34-0410-b5e6-96231b3b80d8
* now that enough stuff is constified, move function header printingChris Lattner2010-01-261-1/+69
| | | | | | | | logic up from X86 into the common code. The other targets will hopefully start using this soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94614 91177308-0d34-0410-b5e6-96231b3b80d8
* constify a bunch of dwarf stuff now that the registerinfo methodChris Lattner2010-01-266-13/+13
| | | | | | | | is constified. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94613 91177308-0d34-0410-b5e6-96231b3b80d8
* Allow some automatic tailcall optimization without changing ABI.Evan Cheng2010-01-261-6/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94611 91177308-0d34-0410-b5e6-96231b3b80d8
* emit jump table an alias ".set" directives through MCStreamer as Chris Lattner2010-01-262-4/+10
| | | | | | | | | | | | | | assignments. .set x, a-b is the same as: x = a-b git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94596 91177308-0d34-0410-b5e6-96231b3b80d8
* Use AssertingVH, just to be paranoid.Devang Patel2010-01-261-2/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94593 91177308-0d34-0410-b5e6-96231b3b80d8
* Emit DW_AT_containing_type attribute for a class if containing type is known.Devang Patel2010-01-261-0/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94587 91177308-0d34-0410-b5e6-96231b3b80d8
* Eliminate SetDirective, and replace it with HasSetDirective.Chris Lattner2010-01-262-7/+7
| | | | | | | | | | | | | Default HasSetDirective to true, since most targets have it. The targets that claim to not have it probably do, or it is spelled differently. These include Blackfin, Mips, Alpha, and PIC16. All of these except pic16 are normal ELF targets, so they almost certainly have it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94585 91177308-0d34-0410-b5e6-96231b3b80d8
* eliminate MCAsmInfo::NeedsSet: we now just use .set on any platformChris Lattner2010-01-262-8/+5
| | | | | | | that has it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94581 91177308-0d34-0410-b5e6-96231b3b80d8
* eliminate the TargetLowering::UsesGlobalOffsetTable bool, which isChris Lattner2010-01-262-11/+11
| | | | | | | | subsumed by TargetLowering::getJumpTableEncoding(). Change uses of it to be more specific. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94529 91177308-0d34-0410-b5e6-96231b3b80d8
* Now that printPICJumpTableSetLabel is not overloaded,Chris Lattner2010-01-261-22/+18
| | | | | | | | inline it into its only caller, allowing us to simplify it and hoist bits out of the loop. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94528 91177308-0d34-0410-b5e6-96231b3b80d8
* Move getJTISymbol from MachineJumpTableInfo to MachineFunction,Chris Lattner2010-01-263-25/+27
| | | | | | | | | | | | | | | | | | | | which is more convenient, and change getPICJumpTableRelocBaseExpr to take a MachineFunction to match. Next, move the X86 code that create a PICBase symbol to X86TargetLowering::getPICBaseSymbol from X86MCInstLower::GetPICBaseSymbol, which was an asmprinter specific library. This eliminates a 'gross hack', and allows us to implement X86ISelLowering::getPICJumpTableRelocBaseExpr which now calls it. This in turn allows us to eliminate the X86AsmPrinter::printPICJumpTableSetLabel method, which was the only overload of printPICJumpTableSetLabel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94526 91177308-0d34-0410-b5e6-96231b3b80d8
* add a new MachineJumpTableInfo::getJTISymbol method,Chris Lattner2010-01-263-20/+40
| | | | | | | use it to implement the default TargetLowering::getPICJumpTableRelocBaseExpr git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94523 91177308-0d34-0410-b5e6-96231b3b80d8
* stub out a new target hook, need some refactoring before I canChris Lattner2010-01-261-0/+11
| | | | | | | implement it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94521 91177308-0d34-0410-b5e6-96231b3b80d8
* simplify asmprinter: only emit .set directives when entries haveChris Lattner2010-01-261-5/+7
| | | | | | | | | EK_LabelDifference32 kind and the target has .set support. Simplify X86AsmPrinter::printPICJumpTableSetLabel to make use of recent helpers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94518 91177308-0d34-0410-b5e6-96231b3b80d8
* rename printPICJumpTableEntry -> EmitJumpTableEntry,Chris Lattner2010-01-261-19/+10
| | | | | | | | make it private and non-virtual. It handles the non-pic case too, so just use it, simplifying EmitJumpTableInfo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94517 91177308-0d34-0410-b5e6-96231b3b80d8
* add a new MachineBasicBlock::getSymbol method, replacingChris Lattner2010-01-262-15/+23
| | | | | | | the AsmPrinter::GetMBBSymbol. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94515 91177308-0d34-0410-b5e6-96231b3b80d8
* New PBQP solver.Lang Hames2010-01-2612-2056/+1503
| | | | | | | | | | | * Fixed a reduction bug which occasionally led to infinite-cost (invalid) register allocation solutions despite the existence finite-cost solutions. * Significantly reduced memory usage (>50% reduction). * Simplified a lot of the solver code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94514 91177308-0d34-0410-b5e6-96231b3b80d8
* make MachineFunction keep track of its ID and make Chris Lattner2010-01-263-8/+14
| | | | | | | | | MachineFunctionAnalysis dole them out, instead of having AsmPrinter do both. Have the AsmPrinter::SetupMachineFunction method set the 'AsmPrinter::MF' variable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94509 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for target-specific 32-bit custom-lowered Chris Lattner2010-01-262-5/+8
| | | | | | | jump table entries. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94505 91177308-0d34-0410-b5e6-96231b3b80d8
* switch jump table entry emission to be based on EntryKindChris Lattner2010-01-261-16/+39
| | | | | | | instead of magic variables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94500 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement cond ? -1 : 0 with sbb.Evan Cheng2010-01-261-0/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94490 91177308-0d34-0410-b5e6-96231b3b80d8
* Generate DEBUG_VALUE comments on x86. The (limited)Dale Johannesen2010-01-261-0/+3
| | | | | | | | | dbg.declare's we currently generate go through both register allocators without perturbing the results. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94480 91177308-0d34-0410-b5e6-96231b3b80d8
* Rearrange handling of jump tables. Highlights:Chris Lattner2010-01-256-65/+131
| | | | | | | | | | | | | | | | | | | | 1. MachineJumpTableInfo is now created lazily for a function the first time it actually makes a jump table instead of for every function. 2. The encoding of jump table entries is now described by the MachineJumpTableInfo::JTEntryKind enum. This enum is determined by the TLI::getJumpTableEncoding() hook, instead of by lots of code scattered throughout the compiler that "knows" that jump table entries are always 32-bits in pic mode (for example). 3. The size and alignment of jump table entries is now calculated based on their kind, instead of at machinefunction creation time. Future work includes using the EntryKind in more places in the compiler, eliminating other logic that "knows" the layout of jump tables in various situations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94470 91177308-0d34-0410-b5e6-96231b3b80d8
* prep work to support a future where getJumpTableInfo will returnChris Lattner2010-01-251-3/+4
| | | | | | | | a null pointer for functions with no jump tables. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94469 91177308-0d34-0410-b5e6-96231b3b80d8