summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* misched: fix LI update for bottom-up.Andrew Trick2012-03-211-1/+7
| | | | llvm-svn: 153158
* It's possible to have a constant expression who's size is quite big (e.g.,Bill Wendling2012-03-201-11/+17
| | | | | | | | | | | | | | i128). In that case, we may not be able to print out the MCExpr as an expression. For instance, we could have an MCExpr like this: 0xBEEF0000BEEF0000 | (0xBEEF0000BEEF0000 << 64) The MCExpr printer handles sizes up to 64-bits, but this expression would require 128-bits. In this situation, try to evaluate the constant expression and emit that as the value into 64-bit chunks. <rdar://problem/11070338> llvm-svn: 153081
* When combining (vextract shuffle (load ), <1,u,u,u>), 0) -> (load ), add ↵Craig Topper2012-03-201-0/+1
| | | | | | users of the final load to the worklist too. Needed by changes I'm preparing to make to X86 backend. llvm-svn: 153078
* Do everything up to generating code to try to get a register forEric Christopher2012-03-201-1/+6
| | | | | | | | | | a variable. The previous code would break the debug info changing code invariant. This will regress debug info for arguments where we elide the alloca created. Fixes rdar://11066468 llvm-svn: 153074
* Untabify.Eric Christopher2012-03-201-2/+2
| | | | llvm-svn: 153073
* Add another debugging statement here.Eric Christopher2012-03-201-0/+4
| | | | llvm-svn: 153072
* Use lookUpRegForValue here instead of duplicating the code.Eric Christopher2012-03-201-9/+2
| | | | llvm-svn: 153071
* f16 FDIV can now be legalized by promoting to f32Pete Cooper2012-03-191-1/+2
| | | | llvm-svn: 153064
* Add an option to the MI scheduler to cut off scheduling after a fixed number ofLang Hames2012-03-191-1/+19
| | | | | | | instructions have been scheduled. Handy for tracking down scheduler bugs, or bugs exposed by scheduling. llvm-svn: 153045
* Fix DAG combine which creates illegal vector shuffles. Patch by Heikki Kultala.Duncan Sands2012-03-191-0/+6
| | | | llvm-svn: 153035
* CriticalAntiDepBreaker: Replace a SmallSet of regs with a much denser BitVector.Benjamin Kramer2012-03-172-11/+12
| | | | llvm-svn: 152999
* MachineInstr: Inline the fast path (non-bundle instruction) of hasProperty.Benjamin Kramer2012-03-171-6/+2
| | | | | | This is particularly helpful as both arguments tend to be constants. llvm-svn: 152991
* ScheduleDAGInstrs: When adding uses we add them into a set that's empty at ↵Benjamin Kramer2012-03-161-2/+2
| | | | | | the beginning, no need to maintain another set for the added regs. llvm-svn: 152934
* Limit the number of memory operands in MachineInstr to 2^16 and store the ↵Benjamin Kramer2012-03-161-11/+10
| | | | | | | | number in padding. Saves one machine word on MachineInstr (88->80 bytes on x86_64, 48->44 on i386). llvm-svn: 152930
* CriticalAntiDepBreaker: BasicBlock::size is an expensive operation, reuse ↵Benjamin Kramer2012-03-161-7/+7
| | | | | | | | the cached value. No functionality change. llvm-svn: 152927
* misched: add DAG edges from vreg defs to ExitSU.Andrew Trick2012-03-161-1/+3
| | | | | | | | | | These edges are not really necessary, but it is consistent with the way we currently create physreg edges. Scheduler heuristics that expect a DAG edge to the block terminator could benefit from this change. Although in the future I hope we have a better mechanism for modeling latency across scheduling regions. llvm-svn: 152895
* Revert r152705, which reapplied r152486 as this appears to be causing failuresChad Rosier2012-03-161-128/+34
| | | | | | | | | | | on our internal nightly testers. So, basically revert r152486 again. Abbreviated original commit message: Implement a more intelligent way of spilling uses across an invoke boundary. It looks as if Chander's inlining work, r152737, exposed an issue. llvm-svn: 152887
* Revert r152613 (and r152614), "Inline the d'tor and add an anchor instead." ↵NAKAMURA Takumi2012-03-161-1/+1
| | | | | | | | | for workaround of g++-4.4's miscompilation. It caused MSP430DAGToDAGISel::SelectIndexedBinOp() to be miscompiled. When two ReplaceUses()'s are expanded as inline, vtable in base class is stored to latter (ISelUpdater)ISU. llvm-svn: 152877
* For types with a parent of the compile unit make sure and emitEric Christopher2012-03-151-5/+4
| | | | | | | | the DECL information. rdar://10855921 llvm-svn: 152876
* We actually handle AllocaInst via getRegForValue below just fine.Eric Christopher2012-03-151-1/+1
| | | | | | Part of rdar://8905263 llvm-svn: 152845
* Add some debugging output into fast isel as well.Eric Christopher2012-03-151-2/+6
| | | | llvm-svn: 152844
* Add another debug statement.Eric Christopher2012-03-151-1/+3
| | | | llvm-svn: 152843
* Tabs.Eric Christopher2012-03-151-3/+3
| | | | llvm-svn: 152842
* Typo.Eric Christopher2012-03-151-1/+1
| | | | llvm-svn: 152841
* When optimizing certain BUILD_VECTOR nodes into other BUILD_VECTOR nodes, ↵Nadav Rotem2012-03-151-0/+4
| | | | | | add the new node into the work list because there is a potential for further optimizations. llvm-svn: 152784
* Revert the removal of DW_AT_MIPS_linkage_name when we aren't puttingEric Christopher2012-03-151-5/+8
| | | | | | | | | out the DW_AT_name. Older gdbs unfortunately still use it to disambiguate member functions in templated classes (gdb.cp/templates.exp). rdar://11043421 (which is now deferred for a bit) llvm-svn: 152782
* Add a xform to the DAG combiner.Bill Wendling2012-03-151-0/+17
| | | | | | | | | | | | Transform: (fsub x, (fadd x, y)) -> (fneg y) and (fsub x, (fadd y, x)) -> (fneg y) if 'unsafe math' is specified. <rdar://problem/7540295> llvm-svn: 152777
* Silence operator precedence warnings.Benjamin Kramer2012-03-141-3/+3
| | | | llvm-svn: 152711
* Reapply r152486 with a fix for the nightly testers.Bill Wendling2012-03-141-34/+128
| | | | | | | | | There were cases where a value could be used and it's both crossing an invoke and NOT crossing an invoke. This could happen in the landing pads. In that case, we will demote the value to the stack like we did before. <rdar://problem/10609139> llvm-svn: 152705
* Insert the debugging instructions in one fell-swoop so that it doesn't call theBill Wendling2012-03-141-7/+8
| | | | | | | expensive "getFirstTerminator" call. This reduces the time of compilation in PR12258 from >10 minutes to < 10 seconds. llvm-svn: 152704
* misched: implemented a framework for top-down or bottom-up scheduling.Andrew Trick2012-03-143-103/+275
| | | | | | | | | | | | | | | | | | | New flags: -misched-topdown, -misched-bottomup. They can be used with the default scheduler or with -misched=shuffle. Without either topdown/bottomup flag -misched=shuffle now alternates scheduling direction. LiveIntervals update is unimplemented with bottom-up scheduling, so only -misched-topdown currently works. Capped the ScheduleDAG hierarchy with a concrete ScheduleDAGMI class. ScheduleDAGMI is aware of the top and bottom of the unscheduled zone within the current region. Scheduling policy can be plugged into the ScheduleDAGMI driver by implementing MachineSchedStrategy. ConvergingScheduler is now the default scheduling algorithm. It exercises the new driver but still does no reordering. llvm-svn: 152700
* misched commentsAndrew Trick2012-03-141-0/+15
| | | | llvm-svn: 152699
* Remove the DW_AT_MIPS_linkage name attribute when we don't need itEric Christopher2012-03-141-5/+5
| | | | | | | | | | | output (we're emitting a specification already and the information isn't changing). Saves 1% on the debug information for a build of llvm. Fixes rdar://11043421 llvm-svn: 152697
* Fortify r152675 a bit. Although I'm not able to come up with a test case ↵Evan Cheng2012-03-131-3/+11
| | | | | | that would trigger the truncation case. llvm-svn: 152678
* DAG combine incorrectly optimize (i32 vextract (v4i16 load $addr), c) toEvan Cheng2012-03-131-4/+19
| | | | | | | | | (i16 load $addr+c*sizeof(i16)) and replace uses of (i32 vextract) with the i16 load. It should issue an extload instead: (i32 extload $addr+c*sizeof(i16)). rdar://11035895 llvm-svn: 152675
* s/SjLjEHPass/SjLjEHPrepare/Bill Wendling2012-03-132-18/+18
| | | | | | No functionality change. llvm-svn: 152658
* Add a return type.Bill Wendling2012-03-131-1/+1
| | | | llvm-svn: 152614
* Inline the d'tor and add an anchor instead.Bill Wendling2012-03-131-1/+1
| | | | llvm-svn: 152613
* Refactor the SelectionDAG's 'dump' methods into their own .cpp file.Bill Wendling2012-03-133-633/+632
| | | | | | No functionality change. llvm-svn: 152611
* Fixed typo in comment.Lang Hames2012-03-131-1/+1
| | | | llvm-svn: 152610
* Revert due to nightly test failures.Bill Wendling2012-03-121-82/+32
| | | | | | | --- Reverse-merging r152486 into '.': U lib/CodeGen/SjLjEHPrepare.cpp llvm-svn: 152571
* DwarfDebug: Store the filename/dirname pair as a zero-separated string in a ↵Benjamin Kramer2012-03-112-15/+13
| | | | | | stringmap, instead of using a highly inefficient std::map of a pair of std::strings. llvm-svn: 152541
* llvm::SwitchInstStepan Dyatkovskiy2012-03-111-1/+1
| | | | | | | Renamed methods caseBegin, caseEnd and caseDefault with case_begin, case_end, and case_default. Added some notes relative to case iterators. llvm-svn: 152532
* Microoptimize getVRegDef. def_begin isn't free, don't compute it twice.Benjamin Kramer2012-03-101-3/+2
| | | | llvm-svn: 152492
* Implement a more intelligent way of spilling uses across an invoke boundary.Bill Wendling2012-03-101-32/+82
| | | | | | | | | | | | | The old way of determine when and where to spill a value that was used inside of a landing pad resulted in spilling that value everywhere and not just at the invoke edge. This algorithm determines which values are used within a landing pad. It then spills those values before the invoke and reloads them before the uses. This should prevent excessive spilling in many cases, e.g. inside of loops. <rdar://problem/10609139> llvm-svn: 152486
* Report the defining instruction.Jakob Stoklund Olesen2012-03-101-4/+3
| | | | llvm-svn: 152460
* Add SSA verification to MachineVerifier.Jakob Stoklund Olesen2012-03-101-2/+12
| | | | | | Somehow we never verified SSA dominance before. llvm-svn: 152458
* Use SmallPtrSet instead of DenseSet.Jakob Stoklund Olesen2012-03-101-3/+4
| | | | llvm-svn: 152457
* Give dagcombiner's worklist some inline capacity.Benjamin Kramer2012-03-101-3/+2
| | | | llvm-svn: 152454
* Assert on SSA errors in LiveVariables.Jakob Stoklund Olesen2012-03-091-0/+1
| | | | | | All uses of a virtual register must be dominated by its def. llvm-svn: 152449
OpenPOWER on IntegriCloud