summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* whitespaceAndrew Trick2012-02-081-11/+11
| | | | llvm-svn: 150098
* Move pass configuration out of pass constructors: StackSlotColoring.Andrew Trick2012-02-082-3/+3
| | | | llvm-svn: 150097
* Move pass configuration out of pass constructors: PostRAScheduler.Andrew Trick2012-02-082-7/+9
| | | | llvm-svn: 150096
* Move pass configuration out of pass constructors: BranchFolderPassAndrew Trick2012-02-083-13/+20
| | | | llvm-svn: 150095
* whitespaceAndrew Trick2012-02-088-80/+80
| | | | llvm-svn: 150094
* Added TargetPassConfig::setOptAndrew Trick2012-02-082-1/+12
| | | | llvm-svn: 150093
* Added Pass::createPass(ID) to handle pass configuration by IDAndrew Trick2012-02-081-2/+6
| | | | llvm-svn: 150092
* Move pass configuration out of pass constructors: TailDuplicate::PreRegAllocAndrew Trick2012-02-082-8/+9
| | | | llvm-svn: 150091
* Add Register mask support to RABasic.Jakob Stoklund Olesen2012-02-081-0/+14
| | | | | | | When a virtual register is live across a call, limit the search space to call-preserved registers. llvm-svn: 150081
* Keep track of register masks in LiveIntervalAnalysis.Jakob Stoklund Olesen2012-02-081-0/+62
| | | | | | | | | | | | | Build an ordered vector of register mask operands (i.e., calls) when computing live intervals. Provide a checkRegMaskInterference() function that computes a bit mask of usable registers for a live range. This is a quick way of determining of a live range crosses any calls, and restricting it to the callee saved registers if it does. Previously, we had to discover call clobbers for each candidate register independently. llvm-svn: 150077
* Added MachineInstr::isBundled() to check if an instruction is part of a bundle.Andrew Trick2012-02-082-1/+11
| | | | llvm-svn: 150044
* misched: bug in debug output.Andrew Trick2012-02-081-2/+4
| | | | llvm-svn: 150043
* stale commentAndrew Trick2012-02-081-2/+0
| | | | llvm-svn: 150041
* Remove tabs.Devang Patel2012-02-071-17/+17
| | | | llvm-svn: 150012
* Expose TargetPassConfig to PEI PassAndrew Trick2012-02-062-0/+2
| | | | llvm-svn: 149927
* Add TargetPassConfig to the PassManager for use inside passesAndrew Trick2012-02-061-2/+2
| | | | llvm-svn: 149926
* Don't explicitly renumber slot indices.Jakob Stoklund Olesen2012-02-061-2/+0
| | | | | | We have automatic local renumbering now. llvm-svn: 149920
* Make sure a reserved register has a live interval before merging.Jakob Stoklund Olesen2012-02-061-1/+5
| | | | llvm-svn: 149910
* [unwind removal] Remove all of the code for the dead 'unwind' instruction. ThereBill Wendling2012-02-063-7/+0
| | | | | | | were no 'unwind' instructions being generated before this, so this is in effect a no-op. llvm-svn: 149906
* [unwind removal] We no longer have 'unwind' instructions being generated, soBill Wendling2012-02-061-2/+1
| | | | | | remove the code that handles them. llvm-svn: 149901
* DebugInfo: Provide a new hook to encode relationship between a property and ↵Devang Patel2012-02-061-0/+11
| | | | | | an ivar. llvm-svn: 149874
* Move some llvm_unreachable's from r149849 out of switch statements to ↵Craig Topper2012-02-061-2/+2
| | | | | | satisfy -Wcovered-switch-default llvm-svn: 149860
* Persuade GCC that there is nothing worth warning about here (there isn't).Duncan Sands2012-02-051-0/+1
| | | | llvm-svn: 149834
* Add additional documentation to the extract-and-trunc dagcombine optimization.Nadav Rotem2012-02-051-3/+8
| | | | llvm-svn: 149823
* Convert assert(0) to llvm_unreachableCraig Topper2012-02-0513-46/+41
| | | | llvm-svn: 149816
* reapply the patches reverted in r149470 that reenable ConstantDataArray,Chris Lattner2012-02-052-40/+25
| | | | | | | | | but with a critical fix to the SelectionDAG code that optimizes copies from strings into immediate stores: the previous code was stopping reading string data at the first nul. Address this by adding a new argument to llvm::getConstantStringInfo, preserving the behavior before the patch. llvm-svn: 149800
* Drop the REDEF_BY_EC VNInfo flag.Jakob Stoklund Olesen2012-02-043-37/+0
| | | | | | | | | | A live range that has an early clobber tied redef now looks like a normal tied redef, except the early clobber def uses the early clobber slot. This is enough to handle any strange interference problems. llvm-svn: 149769
* Correctly terminate a physreg redefined by an early clobber.Jakob Stoklund Olesen2012-02-041-1/+1
| | | | | | | | | | | | | | | | | I don't have a test that fails because of this, but a test case like CodeGen/X86/2009-12-01-EarlyClobberBug.ll exposes the problem. EAX is redefined by a tied early clobber operand on inline asm, and the live range should look like this: %EAX,inf = [48r,64e:0)[64e,80r:1) 0@48r 1@64e Previously, the two values got merged: %EAX,inf = [48r,80r:0) 0@48r With this bug fixed, the REDEF_BY_EC VNInfo flag is no longer needed. llvm-svn: 149768
* Fix a leak!Nick Lewycky2012-02-041-0/+2
| | | | | | | | | | | | Andy, in a previous commit you made this into an ImmutablePass so that you could add it to the PassManager, then in the next commit you left it a Pass but removed the code that added it to the PM. If you do add it to the PM then the PM should take care of deleting it, but it's also true that nothing in codegen needs this object to exist after it's done its work here. It's not clear to me which design you want; this should likely either cease to be a Pass or be added to the PM where other parts of CodeGen will request it. llvm-svn: 149765
* Don't store COPY pointers in VNInfo.Jakob Stoklund Olesen2012-02-047-96/+46
| | | | | | | | | | If a value is defined by a COPY, that instuction can easily and cheaply be found by getInstructionFromIndex(VNI->def). This reduces the size of VNInfo from 24 to 16 bytes, and improves llc compile time by 3%. llvm-svn: 149763
* TargetPassConfig: confine the MC configuration to TargetMachine.Andrew Trick2012-02-042-87/+108
| | | | | | | | | | Passes prior to instructon selection are now split into separate configurable stages. Header dependencies are simplified. The bulk of this diff is simply removal of the silly DisableVerify flags. Sorry for the target header churn. Attempting to stabilize them. llvm-svn: 149754
* Move TargetPassConfig implementation into Passes.cppAndrew Trick2012-02-042-305/+312
| | | | llvm-svn: 149753
* Make TargetPassConfig an ImmutablePass so CodeGenPasses can query optionsAndrew Trick2012-02-043-15/+37
| | | | llvm-svn: 149752
* Emit new property tag.Devang Patel2012-02-041-1/+29
| | | | llvm-svn: 149737
* [fast-isel] HandlePHINodesInSuccessorBlocks() can promite i8 and i16 types too.Chad Rosier2012-02-041-2/+2
| | | | llvm-svn: 149730
* Trim headers.Jakob Stoklund Olesen2012-02-031-8/+0
| | | | llvm-svn: 149722
* Delete some dead code.Jakob Stoklund Olesen2012-02-031-5/+0
| | | | llvm-svn: 149717
* Handle register mask operands in setPhysRegsDeadExcept().Jakob Stoklund Olesen2012-02-031-0/+12
| | | | | | | | | | | Calls that use register mask operands don't have implicit defs for returned values. The register mask operand handles the call clobber, but it always behaves like a set of dead defs. Add live implicit defs for any implicitly defined physregs that are actually used. llvm-svn: 149715
* ArrayRef'ize MI::setPhysRegsDeadExcept().Jakob Stoklund Olesen2012-02-031-3/+3
| | | | llvm-svn: 149709
* Handle all live physreg defs in the same place.Jakob Stoklund Olesen2012-02-032-44/+47
| | | | | | | | | | | SelectionDAG has 4 different ways of passing physreg defs to users. Collect all of the uses at the same time, and pass all of them to MI->setPhysRegsDeadExcept() to mark the remaining defs dead. The setPhysRegsDeadExcept() function will soon add the required implicit-defs to instructions with register mask operands. llvm-svn: 149708
* Initialize all common codegen passes before configuration so we can use ↵Andrew Trick2012-02-031-0/+7
| | | | | | their PassIDs. llvm-svn: 149705
* The type-legalizer often scalarizes code. One of the common patterns is ↵Nadav Rotem2012-02-031-0/+34
| | | | | | | | | extract-and-truncate. In this patch we optimize this pattern and convert the sequence into extract op of a narrow type. This allows the BUILD_VECTOR dag optimizations to construct efficient shuffle operations in many cases. llvm-svn: 149692
* Added TargetPassConfig. The first little step toward configuring codegen passes.Andrew Trick2012-02-031-44/+50
| | | | | | | | | | | Allows command line overrides to be centralized in LLVMTargetMachine.cpp. LLVMTargetMachine can intercept common passes and give precedence to command line overrides. Allows adding "internal" target configuration options without touching TargetOptions. Encapsulates the PassManager. Provides a good point to initialize all CodeGen passes so that Pass ID's can be used in APIs. Allows modifying the target configuration hooks without rebuilding the world. llvm-svn: 149672
* whitespaceAndrew Trick2012-02-032-11/+11
| | | | llvm-svn: 149671
* Add a new MachineJumpTableInfo entry type, EK_GPRel64BlockAddress, which isAkira Hatanaka2012-02-032-0/+13
| | | | | | | | needed to emit a 64-bit gp-relative relocation entry. Make changes necessary for emitting jump tables which have entries with directive .gpdword. This patch does not implement the parts needed for direct object emission or JIT. llvm-svn: 149668
* Require non-NULL register masks.Jakob Stoklund Olesen2012-02-023-9/+3
| | | | | | | It doesn't seem worthwhile to give meaning to a NULL register mask pointer. It complicates all the code using register mask operands. llvm-svn: 149646
* Re-apply the coalescer fix from r149147. Commit r149597 should have fixed ↵Lang Hames2012-02-021-0/+24
| | | | | | the llvm-gcc and clang self-host issues. llvm-svn: 149598
* Break as soon as the MustMapCurValNos flag is set - no need to reiterate.Lang Hames2012-02-021-1/+3
| | | | llvm-svn: 149596
* PR11868. The previous loop in LiveIntervals::join would sometimes fall over ifLang Hames2012-02-021-11/+12
| | | | | | | more than two adjacent ranges needed to be merged. The new version should be able to handle an arbitrary sequence of adjancent ranges. llvm-svn: 149588
* fix cmakeAndrew Trick2012-02-011-1/+1
| | | | llvm-svn: 149553
OpenPOWER on IntegriCloud