summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Temporarily disable on-demand fast-isel.Dan Gohman2010-07-011-0/+2
| | | | llvm-svn: 107393
* Use FuncInfo's isExportedInst accessor method instead ofDan Gohman2010-07-011-1/+1
| | | | | | doing the work manually. llvm-svn: 107384
* Rename CreateRegForValue to CreateReg, and change its argumentDan Gohman2010-07-011-1/+1
| | | | | | | from a Value to a Type, because it doesn't actually care about the Value. llvm-svn: 107383
* Enable on-demand fast-isel.Dan Gohman2010-07-011-0/+6
| | | | llvm-svn: 107377
* Reapply r106634, now that the bug it exposed is fixed.Dan Gohman2010-06-241-99/+1
| | | | llvm-svn: 106746
* Revert r106263, "Fold the ShrinkDemandedOps pass into the regular ↵Daniel Dunbar2010-06-231-1/+99
| | | | | | DAGCombiner pass,"... it was causing both 'file' (with clang) and 176.gcc (with llvm-gcc) to be miscompiled. llvm-svn: 106634
* Minor code simplifications.Dan Gohman2010-06-181-18/+12
| | | | llvm-svn: 106286
* Give NamedRegionTimer an Enabled flag, allowing all its clients toDan Gohman2010-06-181-48/+28
| | | | | | | | | | | | | | | | | | | | switch from this: if (TimePassesIsEnabled) { NamedRegionTimer T(Name, GroupName); do_something(); } else { do_something(); // duplicate the code, this time without a timer! } to this: { NamedRegionTimer T(Name, GroupName, TimePassesIsEnabled); do_something(); } llvm-svn: 106285
* Fold the ShrinkDemandedOps pass into the regular DAGCombiner pass,Dan Gohman2010-06-181-99/+1
| | | | | | which is faster, simpler, and less surprising. llvm-svn: 106263
* SelectionDAG shouldn't have a FunctionLoweringInfo member. RegsForValueDan Gohman2010-05-291-2/+2
| | | | | | | shouldn't have a TargetLoweringInfo member. And FunctionLoweringInfo::set doesn't needs its EnableFastISel argument. llvm-svn: 105101
* Add FIXME comment to remove this.Bill Wendling2010-05-261-0/+2
| | | | llvm-svn: 104749
* Add "setjmp_syscall", "savectx", "qsetjmp", "vfork", "getcontext" to the list ofBill Wendling2010-05-261-21/+24
| | | | | | usual suspects that could "return twice". llvm-svn: 104737
* Update debug info when live-in reg is copied into a vreg.Devang Patel2010-05-261-0/+22
| | | | llvm-svn: 104732
* Move the check for "calls setjmp" to SelectionDAGISel so that it can be used byBill Wendling2010-05-261-0/+32
| | | | | | more than just the stack slot coloring algorithm. llvm-svn: 104722
* Temporarily revert r104655 as it's breaking the bots.Eric Christopher2010-05-261-34/+0
| | | | llvm-svn: 104664
* Dale and Evan suggested putting the "check for setjmp" much earlier in theBill Wendling2010-05-261-0/+34
| | | | | | machine code generation. That's a good idea, so I made it so. llvm-svn: 104655
* Add a hybrid bottom up scheduler that reduce register usage while avoidingEvan Cheng2010-05-201-2/+4
| | | | | | | | | pipeline stall. It's useful for targets like ARM cortex-a8. NEON has a lot of long latency instructions so a strict register pressure reduction scheduler does not work well. Early experiments show this speeds up some NEON loops by over 30%. llvm-svn: 104216
* Code refactoring: pull SchedPreference enum from TargetLowering.h to ↵Evan Cheng2010-05-191-3/+3
| | | | | | TargetMachine.h and put it in its own namespace. llvm-svn: 104147
* - Set the "HasCalls" flag after instruction selection is finished.Bill Wendling2010-05-171-13/+19
| | | | | | | - Change the logic DisableFramePointerElim() to check for the -disable-non-leaf-fp-elim before -disable-fp-elim. llvm-svn: 103990
* Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe whatBill Wendling2010-05-141-0/+14
| | | | | | | | | the variable actually tracks. N.B., several back-ends are using "HasCalls" as being synonymous for something that adjusts the stack. This isn't 100% correct and should be looked into. llvm-svn: 103802
* Instruction selection optimizations may have moved the def of a function ↵Evan Cheng2010-05-041-1/+2
| | | | | | argument out of the entry block. rdar://7937489 llvm-svn: 102993
* Remove the code for special-casing byval for fast-isel. SelectionDAGDan Gohman2010-05-011-18/+2
| | | | | | | handles argument lowering anyway, so there's no need for special casing here. llvm-svn: 102828
* Fix whitespace.Dan Gohman2010-05-011-1/+1
| | | | llvm-svn: 102817
* Reorgnaize more switch code lowering to clean up some trickyDan Gohman2010-05-011-21/+22
| | | | | | | | | | | code, and to eliminate the need for the SelectionDAGBuilder state to be live during CodeGenAndEmitDAG calls. Call SDB->clear() before CodeGenAndEmitDAG calls instead of before it, and move the CurDAG->clear() out of SelectionDAGBuilder, which doesn't own the DAG, and into CodeGenAndEmitDAG. llvm-svn: 102814
* Get rid of the EdgeMapping map. Instead, just check for BasicBlockDan Gohman2010-05-011-14/+6
| | | | | | changes before doing phi lowering for switches. llvm-svn: 102809
* Remove this debug output. The MachineFunction will be printed once all ofDan Gohman2010-04-301-3/+0
| | | | | | | instruction selection is done; it's confusing to see parts of it printed, while other parts are omitted, along the way. llvm-svn: 102771
* Re-enable 102565 with fixes.Evan Cheng2010-04-291-5/+1
| | | | llvm-svn: 102602
* Temporarily disable my changes to unbreak the build.Evan Cheng2010-04-291-0/+4
| | | | llvm-svn: 102590
* Avoid emitting a dbg_value machineinstr that's not going to be inserted into ↵Evan Cheng2010-04-291-2/+0
| | | | | | entry block. llvm-svn: 102581
* Check Reg against zero.Evan Cheng2010-04-291-0/+2
| | | | llvm-svn: 102573
* Replace r102368 with code that's less fragile. This creates DBG_VALUE ↵Evan Cheng2010-04-281-5/+19
| | | | | | instructions for function arguments early and insert them after instruction selection is done. llvm-svn: 102554
* Move FastISel's HandlePHINodesInSuccessorBlocks call down into FastISelDan Gohman2010-04-231-14/+0
| | | | | | itself too. llvm-svn: 102176
* Sink SelectionDAGBuilder's HandlePHINodesInSuccessorBlocks downDan Gohman2010-04-221-13/+1
| | | | | | into SelectionDAGBuilder itself. llvm-svn: 102128
* Move HandlePHINodesInSuccessorBlocks functions out of SelectionDAGISelDan Gohman2010-04-221-3/+4
| | | | | | and into SelectionDAGBuilder and FastISel. llvm-svn: 102123
* Move PHINodesToUpdate out of SelectionDAGBuilder and intoDan Gohman2010-04-221-27/+32
| | | | | | | | | FunctionLoweringInfo, as it isn't SelectionDAG-specific. This isn't completely natural, as PHI node state is not per-function but rather per-basic-block, however there's currently no other convenient per-basic-block state to group it with. llvm-svn: 102109
* Add more const qualifiers on TargetMachine and friends.Dan Gohman2010-04-211-1/+1
| | | | llvm-svn: 101977
* Sink the CopyToExportRegsIfNeeded calls out of SelectionDAGISelDan Gohman2010-04-201-6/+0
| | | | | | | | into SelectionDAGBuilder. This avoids a separate pass over the instructions, and has the side effect of providing debug location information to the copy. llvm-svn: 101906
* Don't send PHI nodes down to SelectionDAGBuilder of FastISel, sinceDan Gohman2010-04-201-1/+1
| | | | | | they end up doing nothing. llvm-svn: 101904
* Remove this debug output; it isn't that useful, and it's incompleteDan Gohman2010-04-201-2/+0
| | | | | | in the case where a basic block is split. llvm-svn: 101850
* Sink DebugLoc handling out of SelectionDAGISel into FastISel andDan Gohman2010-04-201-36/+2
| | | | | | SelectionDAGBuilder, where it doesn't have to be as complicated. llvm-svn: 101848
* Remove MachineFunction's DefaultDebugLoc member, and make DwarfDebug.cppDan Gohman2010-04-201-5/+0
| | | | | | responsible for figuring out what that's supposed to be on its own. llvm-svn: 101844
* Reapply the removal of SelectionDAGISel's BB, with a fix for the caseDan Gohman2010-04-201-17/+21
| | | | | | | where multiple blocks are emitted; functions which do this need to return the new BB so that their callers can stay current. llvm-svn: 101843
* Revert 101825, which is causing trouble.Dan Gohman2010-04-191-15/+14
| | | | llvm-svn: 101832
* Eliminate SelectionDAGISel's "current block" member. Just pass it asDan Gohman2010-04-191-14/+15
| | | | | | an argument to things that need it. llvm-svn: 101825
* Eliminate the CurMBB member from SelectionDAGBuilder. For places thatDan Gohman2010-04-191-12/+8
| | | | | | | need it, just pass around the parent block of the current instruction explicitly. llvm-svn: 101822
* Give SelectionDAG a TargetMachine too, rather than having itDan Gohman2010-04-191-1/+1
| | | | | | fetch one from the MachineFunction. llvm-svn: 101807
* Code that needs a TargetMachine should have access to one directly, ratherDan Gohman2010-04-191-3/+2
| | | | | | than just getting one through a TargetLowering. llvm-svn: 101802
* Use const qualifiers with TargetLowering. This eliminates severalDan Gohman2010-04-171-2/+4
| | | | | | | | | | | | | const_casts, and it reinforces the design of the Target classes being immutable. SelectionDAGISel::IsLegalToFold is now a static member function, because PIC16 uses it in an unconventional way. There is more room for API cleanup here. And PIC16's AsmPrinter no longer uses TargetLowering. llvm-svn: 101635
* More work to allow dag combiner to promote 16-bit ops to 32-bit.Evan Cheng2010-04-171-1/+1
| | | | llvm-svn: 101621
* Avoid creating virtual registers for unused values.Dan Gohman2010-04-161-1/+1
| | | | llvm-svn: 101480
OpenPOWER on IntegriCloud