summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* 80 column violation.Evan Cheng2009-10-161-1/+2
| | | | llvm-svn: 84244
* Report errors correctly for unselected target intrinsics.Jakob Stoklund Olesen2009-10-151-6/+9
| | | | llvm-svn: 84193
* Make CodePlacementOpt align loops, rather than loop headers. TheDan Gohman2009-10-151-71/+30
| | | | | | | | | | header is just the entry block to the loop, and it needn't be at the top of the loop in the code layout. Remove the code that suppressed loop alignment for outer loops, so that outer loops are aligned. llvm-svn: 84158
* When LiveVariables is adding implicit-def to model "partial dead", add the ↵Evan Cheng2009-10-141-1/+12
| | | | | | earlyclobber marker if the superreg def has it. llvm-svn: 84153
* Print earlyclobber for implicit-defs as well.Evan Cheng2009-10-141-6/+6
| | | | llvm-svn: 84152
* Make loop not recalc getNumOperands() each time aroundJim Grosbach2009-10-141-3/+2
| | | | llvm-svn: 84138
* Add support to record DbgScope as inlined scope.Devang Patel2009-10-142-25/+44
| | | | llvm-svn: 84134
* quiet compiler warningJim Grosbach2009-10-141-1/+1
| | | | llvm-svn: 84133
* I don't see any point in having both eh.selector.i32 and eh.selector.i64,Duncan Sands2009-10-144-29/+27
| | | | | | | | | | | | | so get rid of eh.selector.i64 and rename eh.selector.i32 to eh.selector. Likewise for eh.typeid.for. This aligns us with gcc, which always uses a 32 bit value for the selector on all platforms. My understanding is that the register allocator used to assert if the selector intrinsic size didn't match the pointer size, and this was the reason for introducing the two variants. However my testing shows that this is no longer the case (I fixed some bugs in selector lowering yesterday, and some more today in the fastisel path; these might have caused the original problems). llvm-svn: 84106
* This remat entry is basically done. There are hooks to allow targetsDan Gohman2009-10-141-38/+0
| | | | | | | | to remat non-load instructions as loads, and the remat code now uses the UnmodeledSideEffects flags, MachineMemOperands, and similar things to decide which instructions are valid for rematerialization. llvm-svn: 84060
* Add a few README.txt items.Dan Gohman2009-10-131-0/+29
| | | | llvm-svn: 84059
* s/DebugLoc.CompileUnit/DebugLoc.Scope/gDevang Patel2009-10-135-22/+23
| | | | | | s/DebugLoc.InlinedLoc/DebugLoc.InlinedAtLoc/g llvm-svn: 84054
* Introduce new convenience methods for sign extending orDuncan Sands2009-10-132-54/+22
| | | | | | | | | | | | truncating an SDValue (depending on whether the target type is bigger or smaller than the value's type); or zero extending or truncating it. Use it in a few places (this seems to be a popular operation, but I only modified cases of it in SelectionDAGBuild). In particular, the eh_selector lowering was doing this wrong due to a repeated rather than inverted test, fixed with this change. llvm-svn: 84027
* Add debugging output.David Goodwin2009-10-131-2/+12
| | | | llvm-svn: 84011
* Fix a -Asserts warning.Daniel Dunbar2009-10-131-2/+3
| | | | llvm-svn: 83950
* Find enclosing subprogram info.Devang Patel2009-10-121-1/+19
| | | | llvm-svn: 83922
* Set default location for a function if it is not set.Devang Patel2009-10-121-0/+2
| | | | llvm-svn: 83921
* Revert the kludge in 76703. I got a cleanDale Johannesen2009-10-122-23/+25
| | | | | | | | | bootstrap of FSF-style PPC, so there is some reason to believe the original bug (which was never analyzed) has been fixed, probably by 82266. llvm-svn: 83871
* Remove a redundant member variable.Dan Gohman2009-10-121-1/+0
| | | | llvm-svn: 83857
* More heuristics for Combiner-AA. Still catches all important cases, butNate Begeman2009-10-121-6/+19
| | | | | | | compile time penalty on gnugo, the worst case in MultiSource, is down to about 2.5% from 30% llvm-svn: 83824
* Fix PR5087, patch by Jakub Staszak!Chris Lattner2009-10-121-0/+1
| | | | llvm-svn: 83822
* Create a new InstrEmitter class for translating SelectionDAG nodesDan Gohman2009-10-105-183/+263
| | | | | | | | into MachineInstrs. This is mostly just moving the code from ScheduleDAGSDNodesEmit.cpp into a new class. This decouples MachineInstr emitting from scheduling. llvm-svn: 83699
* Make getMachineNode return a MachineSDNode* instead of a generic SDNode*Dan Gohman2009-10-101-42/+53
| | | | | | | since it won't do any folding. This will help avoid some inconvenient casting. llvm-svn: 83698
* Fix a missing initialization of PostRAScheduler's AA member.Dan Gohman2009-10-101-0/+2
| | | | llvm-svn: 83695
* The ScheduleDAG framework now requires an AliasAnalysis argument, thoughDan Gohman2009-10-095-5/+5
| | | | | | it isn't needed in the ScheduleDAGSDNodes schedulers. llvm-svn: 83691
* Factor out LiveIntervalAnalysis' code to determine whether an instructionDan Gohman2009-10-0912-116/+135
| | | | | | | | | | | | | | is trivially rematerializable and integrate it into TargetInstrInfo::isTriviallyReMaterializable. This way, all places that need to know whether an instruction is rematerializable will get the same answer. This enables the useful parts of the aggressive-remat option by default -- using AliasAnalysis to determine whether a memory location is invariant, and removes the questionable parts -- rematting operations with virtual register inputs that may not be live everywhere. llvm-svn: 83687
* Extract scope information from the variable itself, instead of relying on ↵Devang Patel2009-10-094-32/+41
| | | | | | | | alloca or llvm.dbg.declare location. While recording beginning of a function, use scope info from the first location entry instead of just relying on first location entry itself. llvm-svn: 83684
* isTriviallyReMaterializable checks theDan Gohman2009-10-094-7/+4
| | | | | | | TargetInstrDesc::isRematerializable flag, so it isn't necessary to do this check in its callers. llvm-svn: 83671
* Add basic infrastructure and x86 support for preserving MachineMemOperandDan Gohman2009-10-091-0/+64
| | | | | | information when unfolding memory references. llvm-svn: 83656
* Check invalid debug info for enums. This may happen when underlyng enum is ↵Devang Patel2009-10-091-2/+4
| | | | | | optimized away. Eventually DwarfChecker will clean this up during llvm verification stage. llvm-svn: 83655
* when previous scratch register is killed, flag the value as no longer trackingJim Grosbach2009-10-091-1/+4
| | | | llvm-svn: 83653
* Give Dan and my recent changes, machine LICM is now code size neutral.Evan Cheng2009-10-091-4/+0
| | | | llvm-svn: 83624
* Fix a logic error that caused non-rematable loop invariants loads to be ↵Evan Cheng2009-10-091-2/+1
| | | | | | licm'ed out of loop. llvm-svn: 83622
* Reset kill markers after live interval is reconstructed.Evan Cheng2009-10-091-6/+22
| | | | llvm-svn: 83608
* Remove code that makes no sense.Evan Cheng2009-10-081-2/+0
| | | | llvm-svn: 83589
* Clear variable debug info map at the end of the function.Devang Patel2009-10-081-0/+3
| | | | llvm-svn: 83571
* Add a SelectionDAG getTargetInsertSubreg convenience function,Bob Wilson2009-10-081-0/+11
| | | | | | similar to getTargetExtractSubreg. llvm-svn: 83564
* Do not record line number to implicitly mark start of function if function ↵Devang Patel2009-10-082-12/+23
| | | | | | has arguments. Extra line number entries trip gdb in some cases. llvm-svn: 83563
* Add a form of addPreserved which takes a string argument, to allow passesDan Gohman2009-10-081-12/+12
| | | | | | | | to declare that they preserve other passes without needing to pull in additional header file or library dependencies. Convert MachineFunctionPass and CodeGenLICM to make use of this. llvm-svn: 83555
* Re-enable register scavenging in Thumb1 by default.Jim Grosbach2009-10-082-10/+6
| | | | llvm-svn: 83521
* bugfix. The target may use virtual registers that aren't tracked for re-use ↵Jim Grosbach2009-10-082-20/+27
| | | | | | but are allocated by the scavenger. The re-use algorithm needs to watch for that. llvm-svn: 83519
* reverting thumb1 scavenging default due to test failure while I figure out ↵Jim Grosbach2009-10-072-6/+10
| | | | | | what's up. llvm-svn: 83501
* second half of lazy liveness removal.Chris Lattner2009-10-071-1/+0
| | | | llvm-svn: 83500
* Enable thumb1 register scavenging by default.Jim Grosbach2009-10-072-10/+6
| | | | llvm-svn: 83496
* grammarJim Grosbach2009-10-071-1/+1
| | | | llvm-svn: 83483
* add initializers for clarity. Add missing assignment of PrevLastUseOp.Jim Grosbach2009-10-071-2/+3
| | | | llvm-svn: 83481
* Remove LazyLiveness from the tree. It doesn't work right now, and I'm not ↵Owen Anderson2009-10-071-168/+0
| | | | | | | | going to have the time to finish it any time soon. If someone's interested it, they can resurrect it from SVN history. llvm-svn: 83480
* Replace some code for aggressive-remat with MachineInstr::isInvariantLoad, andDan Gohman2009-10-071-23/+28
| | | | | | teach it how to recognize invariant physical registers. llvm-svn: 83476
* Replace TargetInstrInfo::isInvariantLoad and its target-specificDan Gohman2009-10-074-7/+48
| | | | | | | | | implementations with a new MachineInstr::isInvariantLoad, which uses MachineMemOperands and is target-independent. This brings MachineLICM and other functionality to targets which previously lacked an isInvariantLoad implementation. llvm-svn: 83475
* Add a few simple MachineVerifier checks for MachineMemOperands.Dan Gohman2009-10-071-0/+10
| | | | llvm-svn: 83474
OpenPOWER on IntegriCloud