summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add some new debugging APIs to print out "raw" SelectionDAGs to makeDavid Greene2010-01-191-1/+1
| | | | | | understanding CannotYTetSelect and other errors easier. llvm-svn: 93901
* Add some debug routines to SelectionDAG to dump full DAGs.David Greene2010-01-151-1/+1
| | | | | | | | | | | print/dumpWithDepth allows one to dump a DAG up to N levels deep. dump/printWithFullDepth prints the whole DAG, subject to a depth limit on 100 in the default case (to prevent infinite recursion). Have CannotYetSelect to a dumpWithFullDepth so it is clearer exactly what the non-matching DAG looks like. llvm-svn: 93538
* fix 80-column violationsJim Grosbach2010-01-151-12/+14
| | | | llvm-svn: 93487
* Update a partially obsolete comment.Dan Gohman2010-01-121-1/+1
| | | | llvm-svn: 93228
* Avoid adding PHI arguments for a predecessor that has gone away when a ↵Jakob Stoklund Olesen2010-01-111-14/+19
| | | | | | | | BRCOND was constant folded. This fixes PR5980. llvm-svn: 93184
* Dan pointed out checking whether a node is dead by comparing its opcode to ↵Evan Cheng2010-01-091-8/+26
| | | | | | ISD::DELETED_NODE is not safe. Use a DAGUpdateListener to remove dead nodes from work list instead. llvm-svn: 93031
* ReplaceAllUsesOfValueWith may delete other nodes that the one being ↵Evan Cheng2010-01-081-1/+2
| | | | | | replaced. Do not delete dead nodes again. llvm-svn: 92988
* Use pop_back_val instead of back()+pop_back.Benjamin Kramer2010-01-071-7/+4
| | | | llvm-svn: 92918
* Comment.Evan Cheng2010-01-061-0/+3
| | | | llvm-svn: 92850
* Teach dag combine to fold the following transformation more aggressively:Evan Cheng2010-01-061-1/+72
| | | | | | | | | | (OP (trunc x), (trunc y)) -> (trunc (OP x, y)) Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel. This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places. llvm-svn: 92849
* Avoid going through the LLVMContext for type equality where it's safe to ↵Benjamin Kramer2010-01-051-1/+1
| | | | | | dereference the type pointer. llvm-svn: 92726
* Change errs() to dbgs().David Greene2010-01-051-19/+19
| | | | llvm-svn: 92597
* Change SelectCode's argument from SDValue to SDNode *, to make it moreDan Gohman2010-01-051-13/+13
| | | | | | | | | clear what information these functions are actually using. This is also a micro-optimization, as passing a SDNode * around is simpler than passing a { SDNode *, int } by value or reference. llvm-svn: 92564
* Final step in the metadata API restructuring: move the Chris Lattner2009-12-291-4/+2
| | | | | | | | getMDKindID/getMDKindNames methods to LLVMContext (and add convenience methods to Module), eliminating MetadataContext. Move the state that it maintains out to LLVMContext. llvm-svn: 92259
* This is a major cleanup of the instruction metadata interfaces thatChris Lattner2009-12-281-8/+7
| | | | | | | | | | | | | | | | | | | | | | I asked Devang to do back on Sep 27. Instead of going through the MetadataContext class with methods like getMD() and getMDs(), just ask the instruction directly for its metadata with getMetadata() and getAllMetadata(). This includes a variety of other fixes and improvements: previously all Value*'s were bloated because the HasMetadata bit was thrown into value, adding a 9th bit to a byte. Now this is properly sunk down to the Instruction class (the only place where it makes sense) and it will be folded away somewhere soon. This also fixes some confusion in getMDs and its clients about whether the returned list is indexed by the MDID or densely packed. This is now returned sorted and densely packed and the comments make this clear. This introduces a number of fixme's which I'll follow up on. llvm-svn: 92235
* rename getMDKind -> getMDKindID, make it autoinsert if an MD KindChris Lattner2009-12-281-28/+24
| | | | | | | doesn't exist already, eliminate registerMDKind. Tidy up a bunch of random stuff. llvm-svn: 92225
* Remove dead store.Bill Wendling2009-12-281-2/+2
| | | | llvm-svn: 92190
* Use more sensible type for flags in asms. PR 5570.Dale Johannesen2009-12-231-2/+1
| | | | | | Patch by Sylve`re Teissier (sorry, ASCII only). llvm-svn: 91988
* Fix this to properly clear the FastISel debug location. Thanks toDan Gohman2009-12-141-1/+1
| | | | | | Bill for spotting this! llvm-svn: 91355
* Remove old DBG_LABEL code.Dan Gohman2009-12-051-8/+0
| | | | llvm-svn: 90669
* Remove the unused DisableLegalizeTypes option and related code.Dan Gohman2009-12-051-50/+46
| | | | llvm-svn: 90668
* Don't blindly set the debug location for PHI node copies.Dan Gohman2009-12-051-3/+3
| | | | llvm-svn: 90637
* Make TargetSelectInstruction protected and called from FastISel.cppDan Gohman2009-12-051-6/+0
| | | | | | instead of SelectionDAGISel.cpp. llvm-svn: 90636
* The debug information for an LLVM Instruction applies to that InstructionDan Gohman2009-12-051-33/+57
| | | | | | | and that Instruction only. Implement this by setting the "current debug position" back to Unknown after processing each instruction. llvm-svn: 90632
* improve portability to avoid conflicting with std::next in c++'0x.Chris Lattner2009-12-031-1/+1
| | | | | | Patch by Howard Hinnant! llvm-svn: 90365
* Move CopyCatchInfo into FunctionLoweringInfo.cpp too, for consistency.Dan Gohman2009-11-231-14/+1
| | | | llvm-svn: 89683
* Rename SelectionDAGLowering to SelectionDAGBuilder, and renameDan Gohman2009-11-231-102/+102
| | | | | | SelectionDAGBuild.cpp to SelectionDAGBuilder.cpp. llvm-svn: 89681
* Move the FunctionLoweringInfo class and some related utility functions outDan Gohman2009-11-231-1/+2
| | | | | | | of SelectionDAGBuild.h/cpp into its own files, to help separate general lowering logic from SelectionDAG-specific lowering logic. llvm-svn: 89667
* Fix fast-isel to avoid selecting the return instruction if aDan Gohman2009-11-201-3/+15
| | | | | | tail call has been encountered. llvm-svn: 89444
* Implement support to debug inlined functions.Devang Patel2009-11-101-15/+17
| | | | llvm-svn: 86748
* Hide a couple of options.Evan Cheng2009-11-091-1/+1
| | | | llvm-svn: 86522
* Move some code from being emitted as boilerplate duplicated in everyDan Gohman2009-10-291-0/+52
| | | | | | *ISelDAGToDAG.cpp to being regular code in SelectionDAGISel.cpp. llvm-svn: 85530
* Rename usesCustomDAGSchedInserter to usesCustomInserter, and update aDan Gohman2009-10-291-3/+7
| | | | | | | | bunch of associated comments, because it doesn't have anything to do with DAGs or scheduling. This is another step in decoupling MachineInstr emitting from scheduling. llvm-svn: 85517
* pseudosourcevalue is also still using getGlobalContext(), so it isn'tChris Lattner2009-10-271-0/+1
| | | | | | thread safe either. llvm-svn: 85253
* Indent code.Zhongxing Xu2009-10-161-1/+1
| | | | llvm-svn: 84247
* Set default location for a function if it is not set.Devang Patel2009-10-121-0/+2
| | | | llvm-svn: 83921
* Set default location for the function if it is not already set.Devang Patel2009-10-061-0/+2
| | | | | | This code is not yet enabled. llvm-svn: 83349
* Remove unnecessary cast.Devang Patel2009-09-291-4/+2
| | | | llvm-svn: 83100
* s/class Metadata/class MetadataContext/gDevang Patel2009-09-281-2/+2
| | | | llvm-svn: 83019
* Do not use global typedef for MDKindID.Devang Patel2009-09-281-2/+2
| | | | llvm-svn: 83016
* Tabs -> spaces, and remove trailing whitespace.Daniel Dunbar2009-09-201-70/+70
| | | | llvm-svn: 82355
* Fix PR4926. When target hook EmitInstrWithCustomInserter() insert new basic ↵Evan Cheng2009-09-191-6/+8
| | | | | | blocks and update CFG, it should also inform sdisel of the changes so the phi source operands will come from the right basic blocks. llvm-svn: 82311
* Enhance EmitInstrWithCustomInserter() so target can specify CFG changes that ↵Evan Cheng2009-09-181-6/+13
| | | | | | | | sdisel will use to properly complete phi nodes. Not functionality change yet. llvm-svn: 82273
* Revert r82214. It broke 403.gcc on x86_64 / Darwin.Evan Cheng2009-09-181-12/+5
| | | | llvm-svn: 82215
* Fix a bug in sdisel switch lowering code. When it updates the phi nodes in ↵Evan Cheng2009-09-181-5/+12
| | | | | | | | switch successor blocks, it can introduce multiple phi operands of the same value from different blocks (and may not be on the predecessor list). This can be seen on CodeGen/Generic/2006-09-06-SwitchLowering.ll. But it's not known to cause any real regression (but I have added an assertion for it now). llvm-svn: 82214
* Fix typo.Devang Patel2009-09-161-1/+1
| | | | llvm-svn: 82080
* At iSel time, update DebugLoc based on debug info attached with an instruction.Devang Patel2009-09-161-1/+30
| | | | llvm-svn: 82077
* eliminate uses of cerr()Chris Lattner2009-08-231-5/+5
| | | | llvm-svn: 79834
* remove a few DOUTs here and there.Chris Lattner2009-08-231-14/+15
| | | | llvm-svn: 79832
* Push LLVMContexts through the IntegerType APIs.Owen Anderson2009-08-131-1/+1
| | | | llvm-svn: 78948
OpenPOWER on IntegriCloud