summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Experimental post-pass scheduling support. Post-pass schedulingDan Gohman2008-11-191-79/+11
| | | | | | | | | | | | | | | | | is currently off by default, and can be enabled with -disable-post-RA-scheduler=false. This doesn't have a significant impact on most code yet because it doesn't yet do anything to address anti-dependencies and it doesn't attempt to disambiguate memory references. Also, several popular targets don't have pipeline descriptions yet. The majority of the changes here are splitting the SelectionDAG-specific code out of ScheduleDAG, so that ScheduleDAG can be moved to libLLVMCodeGen.a. The interface between ScheduleDAG-using code and the rest of the scheduling code is somewhat rough and will evolve. llvm-svn: 59676
* Move the code for printing a graph node label for an SUnit intoDan Gohman2008-11-191-21/+18
| | | | | | a virtual method of SelectionDAG. llvm-svn: 59667
* Check in the correct version of the patch in r59279.Dan Gohman2008-11-141-1/+1
| | | | llvm-svn: 59280
* Debug printing for SUnits that carry MachineInstrs.Dan Gohman2008-11-141-10/+17
| | | | llvm-svn: 59279
* Initial support for carrying MachineInstrs in SUnits.Dan Gohman2008-11-141-4/+17
| | | | llvm-svn: 59278
* Change DOTGraphTraits<ScheduleDAG*>::getGraphName how to find the name ofDan Gohman2008-11-131-1/+1
| | | | | | the current function on its own, rather than relying on the SelectionDAG. llvm-svn: 59277
* Remove the FlaggedNodes member from SUnit. Instead of requiring each SUnitDan Gohman2008-11-131-8/+11
| | | | | | | | | | to carry a SmallVector of flagged nodes, just calculate the flagged nodes dynamically when they are needed. The local-liveness change is due to a trivial scheduling change where the scheduler arbitrary decision differently. llvm-svn: 59273
* Make the Node member of SUnit private, and add accessors.Dan Gohman2008-11-131-2/+2
| | | | llvm-svn: 59264
* Change ScheduleDAG's DAG member from a reference to a pointer, to prepareDan Gohman2008-11-131-4/+4
| | | | | | for the possibility of scheduling without a SelectionDAG being present. llvm-svn: 59263
* Fix bogus comparison of "const char *" with c-string literal. Use strcmp ↵Ted Kremenek2008-10-271-2/+2
| | | | | | instead. llvm-svn: 58290
* Add setSubgraphColor to color an entire portion of a SelectionDAG. ThisDavid Greene2008-10-271-0/+57
| | | | | | will be used to support debug features in TableGen. llvm-svn: 58257
* Don't truncate GlobalAddress offsets to int in debug output.Dan Gohman2008-10-181-1/+1
| | | | llvm-svn: 57770
* don't print GlobalAddressSDNode's with an offset of zero as "foo0".Chris Lattner2008-09-211-5/+6
| | | | llvm-svn: 56399
* Reverting r56249. On further investigation, this functionality isn't needed.Bill Wendling2008-09-161-2/+3
| | | | | | Apologies for the thrashing. llvm-svn: 56251
* Include the alignment value when displaying ConstantPoolSDNodes.Dan Gohman2008-09-161-0/+1
| | | | llvm-svn: 56250
* - Change "ExternalSymbolSDNode" to "SymbolSDNode".Bill Wendling2008-09-161-3/+2
| | | | | | | | | | - Add linkage to SymbolSDNode (default to external). - Change ISD::ExternalSymbol to ISD::Symbol. - Change ISD::TargetExternalSymbol to ISD::TargetSymbol These changes pave the way to allowing SymbolSDNodes with non-external linkage. llvm-svn: 56249
* Define CallSDNode, an SDNode subclass for use with ISD::CALL.Dan Gohman2008-09-131-0/+6
| | | | | | | | | | | | | Currently it just holds the calling convention and flags for isVarArgs and isTailCall. And it has several utility methods, which eliminate magic 5+2*i and similar index computations in several places. CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle nodes that are not CSE'd gracefully. llvm-svn: 56183
* Rename ConstantSDNode::getValue to getZExtValue, for consistencyDan Gohman2008-09-121-1/+1
| | | | | | | with ConstantInt. This led to fixing a bug in TargetLowering.cpp using getValue instead of getAPIntValue. llvm-svn: 56159
* erect abstraction boundaries for accessing SDValue members, rename Val -> ↵Gabor Greif2008-08-281-3/+3
| | | | | | Node to reflect semantics llvm-svn: 55504
* disallow direct access to SDValue::ResNo, provide a getter insteadGabor Greif2008-08-261-2/+2
| | | | llvm-svn: 55394
* get MachineConstantPool off std::ostream, onto raw_ostream. It would beChris Lattner2008-08-231-10/+17
| | | | | | really nice if someone converted MachineFunction::print to raw_ostream. llvm-svn: 55268
* Move SelectionDAG::viewGraph() out of line; as an inline functionDan Gohman2008-07-301-0/+5
| | | | | | it isn't always visible to gdb. llvm-svn: 54228
* Make the ScheduleDAG's GraphRoot edge be blue and dashed too, likeDan Gohman2008-07-271-1/+2
| | | | | | the SelectionDAG's. llvm-svn: 54129
* Rename SDOperand to SDValue.Dan Gohman2008-07-271-1/+1
| | | | llvm-svn: 54128
* Make the GraphRoot edge look like a chain edge, which is more accurate,Dan Gohman2008-07-221-1/+2
| | | | | | | and use the right result number, in the off chance that the graph root has multiple result values. llvm-svn: 53923
* Enhance the GraphWriter support for edge destinations, and teach theDan Gohman2008-07-211-6/+31
| | | | | | | | SelectionDAG graph writer to make use of them. Now, nodes with multiple values are displayed as such, with incoming edges pointing to the specific value they use. llvm-svn: 53875
* Add titles to the various SelectionDAG viewGraph callsDan Gohman2008-07-211-3/+6
| | | | | | | that include useful information like the name of the block being viewed and the current phase of compilation. llvm-svn: 53872
* Eliminate unused variable.Duncan Sands2008-07-181-1/+1
| | | | llvm-svn: 53772
* When printing MemOperand nodes, only use print() forDan Gohman2008-07-171-3/+10
| | | | | | | | PseudoSourceValue values, which never have names. Use getName() for all other values, because we want to print just a short summary of the value, not the entire instruction. llvm-svn: 53738
* Improve debug output for MemOperandSDNode. PseudoSourceValue nodesDan Gohman2008-07-141-4/+7
| | | | | | | don't have value names, so use print instead of getName() to get a useful string. llvm-svn: 53563
* Revert my previous check-in that split up MachineModuleInfo. It turns out toBill Wendling2008-07-031-1/+1
| | | | | | slow the compiler down at -O0 some 30% or more. Ooops. llvm-svn: 53120
* Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminatingDan Gohman2008-07-011-0/+2
| | | | | | | | | | | | | | | | the need for a flavor operand, and add a new SDNode subclass, LabelSDNode, for use with them to eliminate the need for a label id operand. Change instruction selection to let these label nodes through unmodified instead of creating copies of them. Teach the MachineInstr emitter how to emit a MachineInstr directly from an ISD label node. This avoids the need for allocating SDNodes for the label id and flavor value, as well as SDNodes for each of the post-isel label, label id, and label flavor. llvm-svn: 52943
* Rename ISD::LOCATION to ISD::DBG_STOPPOINT to better reflect itsDan Gohman2008-06-301-2/+6
| | | | | | | | | | | | | | | | | purpose, and give it a custom SDNode subclass so that it doesn't need to have line number, column number, filename string, and directory string, all existing as individual SDNodes to be the operands. This was the only user of ISD::STRING, StringSDNode, etc., so remove those and some associated code. This makes stop-points considerably easier to read in -view-legalize-dags output, and reduces overhead (creating new nodes and copying std::strings into them) on code containing debugging information. llvm-svn: 52924
* Remove ScheduleDAG's SUnitMap altogether. Instead, use SDNode's NodeIdDan Gohman2008-06-211-3/+3
| | | | | | | field, which is otherwise unused after instruction selection, as an index into the SUnit array. llvm-svn: 52583
* Change ScheduleDAG's SUnitMap from DenseMap<SDNode*, vector<SUnit*> >Dan Gohman2008-06-211-1/+1
| | | | | | | | to DenseMap<SDNode*, SUnit*>, and adjust the way cloned SUnit nodes are handled so that only the original node needs to be in the map. This speeds up llc on 447.dealII.llvm.bc by about 2%. llvm-svn: 52576
* Wrap MVT::ValueType in a struct to get type safetyDuncan Sands2008-06-061-5/+5
| | | | | | | | | | | | | | | | and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). llvm-svn: 52044
* Fix an out-of-bounds access in -view-sunit-dags in the case of anDan Gohman2008-04-211-1/+2
| | | | | | empty ScheduleDAG. llvm-svn: 50054
* In -view-sunit-dags, display "special" chain dependencies as cyanDan Gohman2008-04-141-0/+2
| | | | | | instead of blue to distinguish them from regular dependencies. llvm-svn: 49696
* Fix -view-sunit-dags to support cross-rc-copy nodes.Dan Gohman2008-03-211-1/+4
| | | | llvm-svn: 48664
* Introduce a new node for holding call argumentDuncan Sands2008-03-211-0/+2
| | | | | | | | | | | | | | | | | flags. This is needed by the new legalize types infrastructure which wants to expand the 64 bit constants previously used to hold the flags on 32 bit machines. There are two functional changes: (1) in LowerArguments, if a parameter has the zext attribute set then that is marked in the flags; before it was being ignored; (2) PPC had some bogus code for handling two word arguments when using the ELF 32 ABI, which was hard to convert because of the bogusness. As suggested by the original author (Nicolas Geoffray), I've disabled it for the moment. Tested with "make check" and the Ada ACATS testsuite. llvm-svn: 48640
* Final de-tabification.Bill Wendling2008-02-271-1/+1
| | | | llvm-svn: 47663
* Rename PrintableName to Name.Bill Wendling2008-02-261-1/+1
| | | | llvm-svn: 47629
* Change "Name" to "AsmName" in the target register info. Gee, a refactoring toolBill Wendling2008-02-261-1/+2
| | | | | | would have been a Godsend here! llvm-svn: 47625
* Rename MRegisterInfo to TargetRegisterInfo.Dan Gohman2008-02-101-2/+2
| | | | llvm-svn: 46930
* Re-apply the memory operand changes, with a fix for the staticDan Gohman2008-02-061-2/+7
| | | | | | | | initializer problem, a minor tweak to the way the DAGISelEmitter finds load/store nodes, and a renaming of the new PseudoSourceValue objects. llvm-svn: 46827
* Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and ↵Evan Cheng2008-01-311-7/+2
| | | | | | re-commit. llvm-svn: 46623
* Create a new class, MemOperand, for describing memory referencesDan Gohman2008-01-311-2/+7
| | | | | | | | | | | | | | | | in the backend. Introduce a new SDNode type, MemOperandSDNode, for holding a MemOperand in the SelectionDAG IR, and add a MemOperand list to MachineInstr, and code to manage them. Remove the offset field from SrcValueSDNode; uses of SrcValueSDNode that were using it are all all using MemOperandSDNode now. Also, begin updating some getLoad and getStore calls to use the PseudoSourceValue objects. Most of this was written by Florian Brander, some reorganization and updating to TOT by me. llvm-svn: 46585
* Factor the addressing mode and the load/store VT out of LoadSDNodeDan Gohman2008-01-301-2/+2
| | | | | | | | and StoreSDNode into their common base class LSBaseSDNode. Member functions getLoadedVT and getStoredVT are replaced with the common getMemoryVT to simplify code that will handle both loads and stores. llvm-svn: 46538
* include alignment and volatility information in -view-*-dags outputChris Lattner2008-01-251-3/+10
| | | | llvm-svn: 46347
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
OpenPOWER on IntegriCloud