Rationalize the names of passes that print information:

-callgraph => print-callgraph
    -callscc   => print-callgraph-sccs
    -cfgscc    => print-cfg-sccs
    -externalfnconstants => print-externalfnconstants
    -print               => print-function
    -print-alias-sets (no change)
    -print-callgraph     => dot-callgraph
    -print-cfg           => dot-cfg
    -print-cfg-only      => dot-cfg-only
    -print-dom-info (no change)
    -printm              => print-module
    -printusedtypes      => print-used-types


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56487 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan Sands 2008-09-23 12:47:39 +00:00
parent 1de42e8374
commit 3ee8fc9649
14 changed files with 123 additions and 119 deletions

View File

@ -79,15 +79,14 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if !
<tr><td><a href="#basicaa">-basicaa</a></td><td>Basic Alias Analysis (default AA impl)</td></tr>
<tr><td><a href="#basiccg">-basiccg</a></td><td>Basic CallGraph Construction</td></tr>
<tr><td><a href="#basicvn">-basicvn</a></td><td>Basic Value Numbering (default GVN impl)</td></tr>
<tr><td><a href="#callgraph">-callgraph</a></td><td>Print a call graph</td></tr>
<tr><td><a href="#callscc">-callscc</a></td><td>Print SCCs of the Call Graph</td></tr>
<tr><td><a href="#cfgscc">-cfgscc</a></td><td>Print SCCs of each function CFG</td></tr>
<tr><td><a href="#codegenprepare">-codegenprepare</a></td><td>Optimize for code generation</td></tr>
<tr><td><a href="#count-aa">-count-aa</a></td><td>Count Alias Analysis Query Responses</td></tr>
<tr><td><a href="#debug-aa">-debug-aa</a></td><td>AA use debugger</td></tr>
<tr><td><a href="#domfrontier">-domfrontier</a></td><td>Dominance Frontier Construction</td></tr>
<tr><td><a href="#domtree">-domtree</a></td><td>Dominator Tree Construction</td></tr>
<tr><td><a href="#externalfnconstants">-externalfnconstants</a></td><td>Print external fn callsites passed constants</td></tr>
<tr><td><a href="#dot-callgraph">-dot-callgraph</a></td><td>Print Call Graph to 'dot' file</td></tr>
<tr><td><a href="#dot-cfg">-dot-cfg</a></td><td>Print CFG of function to 'dot' file</td></tr>
<tr><td><a href="#dot-cfg-only">-dot-cfg-only</a></td><td>Print CFG of function to 'dot' file (with no function bodies)</td></tr>
<tr><td><a href="#globalsmodref-aa">-globalsmodref-aa</a></td><td>Simple mod/ref analysis for globals</td></tr>
<tr><td><a href="#instcount">-instcount</a></td><td>Counts the various types of Instructions</td></tr>
<tr><td><a href="#intervals">-intervals</a></td><td>Interval Partition Construction</td></tr>
@ -98,13 +97,14 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if !
<tr><td><a href="#no-profile">-no-profile</a></td><td>No Profile Information</td></tr>
<tr><td><a href="#postdomfrontier">-postdomfrontier</a></td><td>Post-Dominance Frontier Construction</td></tr>
<tr><td><a href="#postdomtree">-postdomtree</a></td><td>Post-Dominator Tree Construction</td></tr>
<tr><td><a href="#print">-print</a></td><td>Print function to stderr</td></tr>
<tr><td><a href="#print-alias-sets">-print-alias-sets</a></td><td>Alias Set Printer</td></tr>
<tr><td><a href="#print-callgraph">-print-callgraph</a></td><td>Print Call Graph to 'dot' file</td></tr>
<tr><td><a href="#print-cfg">-print-cfg</a></td><td>Print CFG of function to 'dot' file</td></tr>
<tr><td><a href="#print-cfg-only">-print-cfg-only</a></td><td>Print CFG of function to 'dot' file (with no function bodies)</td></tr>
<tr><td><a href="#printm">-printm</a></td><td>Print module to stderr</td></tr>
<tr><td><a href="#printusedtypes">-printusedtypes</a></td><td>Find Used Types</td></tr>
<tr><td><a href="#print-callgraph">-print-callgraph</a></td><td>Print a call graph</td></tr>
<tr><td><a href="#print-callgraph-sccs">-print-callgraph-sccs</a></td><td>Print SCCs of the Call Graph</td></tr>
<tr><td><a href="#print-cfg-sccs">-print-cfg-sccs</a></td><td>Print SCCs of each function CFG</td></tr>
<tr><td><a href="#print-externalfnconstants">-print-externalfnconstants</a></td><td>Print external fn callsites passed constants</td></tr>
<tr><td><a href="#print-function">-print-function</a></td><td>Print function to stderr</td></tr>
<tr><td><a href="#print-module">-print-module</a></td><td>Print module to stderr</td></tr>
<tr><td><a href="#print-used-types">-print-used-types</a></td><td>Find Used Types</td></tr>
<tr><td><a href="#profile-loader">-profile-loader</a></td><td>Load profile information from llvmprof.out</td></tr>
<tr><td><a href="#scalar-evolution">-scalar-evolution</a></td><td>Scalar Evolution Analysis</td></tr>
<tr><td><a href="#targetdata">-targetdata</a></td><td>Target Data Layout</td></tr>
@ -315,39 +315,6 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if !
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="callgraph">Print a call graph</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the call graph to
standard output in a human-readable form.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="callscc">Print SCCs of the Call Graph</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the SCCs of the call
graph to standard output in a human-readable form.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="cfgscc">Print SCCs of each function CFG</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the SCCs of each
function CFG to standard output in a human-readable form.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="codegenprepare">Optimize for code generation</a>
@ -412,14 +379,38 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if !
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="externalfnconstants">Print external fn callsites passed constants</a>
<a name="dot-callgraph">Print Call Graph to 'dot' file</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints out call sites to
external functions that are called with constant arguments. This can be
useful when looking for standard library functions we should constant fold
or handle in alias analyses.
This pass, only available in <code>opt</code>, prints the call graph into a
<code>.dot</code> graph. This graph can then be processed with the "dot" tool
to convert it to postscript or some other suitable format.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="dot-cfg">Print CFG of function to 'dot' file</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the control flow graph
into a <code>.dot</code> graph. This graph can then be processed with the
"dot" tool to convert it to postscript or some other suitable format.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="dot-cfg-only">Print CFG of function to 'dot' file (with no function bodies)</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the control flow graph
into a <code>.dot</code> graph, omitting the function bodies. This graph can
then be processed with the "dot" tool to convert it to postscript or some
other suitable format.
</p>
</div>
@ -557,7 +548,61 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if !
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="print">Print function to stderr</a>
<a name="print-alias-sets">Alias Set Printer</a>
</div>
<div class="doc_text">
<p>Yet to be written.</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="print-callgraph">Print a call graph</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the call graph to
standard output in a human-readable form.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="print-callgraph-sccs">Print SCCs of the Call Graph</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the SCCs of the call
graph to standard output in a human-readable form.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="print-cfg-sccs">Print SCCs of each function CFG</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the SCCs of each
function CFG to standard output in a human-readable form.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="print-externalfnconstants">Print external fn callsites passed constants</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints out call sites to
external functions that are called with constant arguments. This can be
useful when looking for standard library functions we should constant fold
or handle in alias analyses.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="print-function">Print function to stderr</a>
</div>
<div class="doc_text">
<p>
@ -569,52 +614,7 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if !
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="print-alias-sets">Alias Set Printer</a>
</div>
<div class="doc_text">
<p>Yet to be written.</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="print-callgraph">Print Call Graph to 'dot' file</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the call graph into a
<code>.dot</code> graph. This graph can then be processed with the "dot" tool
to convert it to postscript or some other suitable format.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="print-cfg">Print CFG of function to 'dot' file</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the control flow graph
into a <code>.dot</code> graph. This graph can then be processed with the
"dot" tool to convert it to postscript or some other suitable format.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="print-cfg-only">Print CFG of function to 'dot' file (with no function bodies)</a>
</div>
<div class="doc_text">
<p>
This pass, only available in <code>opt</code>, prints the control flow graph
into a <code>.dot</code> graph, omitting the function bodies. This graph can
then be processed with the "dot" tool to convert it to postscript or some
other suitable format.
</p>
</div>
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="printm">Print module to stderr</a>
<a name="print-module">Print module to stderr</a>
</div>
<div class="doc_text">
<p>
@ -624,7 +624,7 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if !
<!-------------------------------------------------------------------------- -->
<div class="doc_subsection">
<a name="printusedtypes">Find Used Types</a>
<a name="print-used-types">Find Used Types</a>
</div>
<div class="doc_text">
<p>

View File

@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
//
// This file defines a '-print-cfg' analysis pass, which emits the
// This file defines a '-dot-cfg' analysis pass, which emits the
// cfg.<fnname>.dot file for each function in the program, with a graph of the
// CFG for that function.
//
@ -165,7 +165,7 @@ namespace {
char CFGPrinter::ID = 0;
static RegisterPass<CFGPrinter>
P1("print-cfg", "Print CFG of function to 'dot' file", false, true);
P1("dot-cfg", "Print CFG of function to 'dot' file", false, true);
namespace {
struct VISIBILITY_HIDDEN CFGOnlyPrinter : public CFGPrinter {
@ -188,7 +188,7 @@ namespace {
char CFGOnlyPrinter::ID = 0;
static RegisterPass<CFGOnlyPrinter>
P2("print-cfg-only",
P2("dot-cfg-only",
"Print CFG of function to 'dot' file (with no function bodies)", false, true);
/// viewCFG - This function is meant for use from the debugger. You can just

View File

@ -23,7 +23,7 @@ using namespace llvm;
char FindUsedTypes::ID = 0;
static RegisterPass<FindUsedTypes>
X("printusedtypes", "Find Used Types", false, true);
X("print-used-types", "Find Used Types", false, true);
// IncorporateType - Incorporate one type and all of its subtypes into the
// collection of used types.

View File

@ -41,10 +41,10 @@ AssemblyAnnotationWriter::~AssemblyAnnotationWriter() {}
char PrintModulePass::ID = 0;
static RegisterPass<PrintModulePass>
X("printm", "Print module to stderr");
X("print-module", "Print module to stderr");
char PrintFunctionPass::ID = 0;
static RegisterPass<PrintFunctionPass>
Y("print","Print function to stderr");
Y("print-function","Print function to stderr");
//===----------------------------------------------------------------------===//

View File

@ -1,4 +1,5 @@
; RUN: llvm-as < %s | opt -callgraph -disable-output |& grep {Calls function 'callee'} | count 2
; RUN: llvm-as < %s | opt -print-callgraph -disable-output |& \
; RUN: grep {Calls function 'callee'} | count 2
define internal void @callee(...) {
entry:

View File

@ -1,4 +1,5 @@
; RUN: llvm-as < %s | opt -callgraph -disable-output |& grep {Calls function}
; RUN: llvm-as < %s | opt -print-callgraph -disable-output |& \
; RUN: grep {Calls function}
@a = global void ()* @f ; <void ()**> [#uses=0]

View File

@ -1,6 +1,6 @@
; Call graph construction crash: Not handling indirect calls right
;
; RUN: llvm-as < %s | opt -analyze -callgraph >& /dev/null
; RUN: llvm-as < %s | opt -analyze -print-callgraph >& /dev/null
;
%FunTy = type i32 (i32)

View File

@ -1,4 +1,4 @@
;RUN: llvm-as < %s | opt -analyze -print-cfg-only -disable-output 2>/dev/null
;RUN: llvm-as < %s | opt -analyze -dot-cfg-only -disable-output 2>/dev/null
;PR 1497
define void @foo() {

View File

@ -1,4 +1,4 @@
; RUN: llvm-as < %s | opt -block-placement -disable-output -print 2> /dev/null
; RUN: llvm-as < %s | opt -block-placement -disable-output -print-function 2> /dev/null
define i32 @test() {
br i1 true, label %X, label %Y

View File

@ -1,4 +1,4 @@
; RUN: llvm-as < %s | opt -inline -disable-output -print 2> /dev/null
; RUN: llvm-as < %s | opt -inline -disable-output -print-function 2> /dev/null
define i32 @func(i32 %i) {
ret i32 %i

View File

@ -1,5 +1,6 @@
; RUN: llvm-as < %s | opt -prune-eh -inline -callgraph -disable-output |& \
; RUN: grep {Calls.*ce3806g__fxio__put__put_int64__4.1339} | count 2
; RUN: llvm-as < %s | opt -prune-eh -inline -print-callgraph \
; RUN: -disable-output |& \
; RUN: grep {Calls.*ce3806g__fxio__put__put_int64__4.1339} | count 2
%struct.FRAME.ce3806g = type { %struct.string___XUB, %struct.string___XUB, %struct.string___XUB, %struct.string___XUB }
%struct.FRAME.ce3806g__fxio__put__4 = type { i32, i32, i32, %struct.system__file_control_block__pstring*, i32, i32, i8 }
%struct.RETURN = type { i8, i32 }

View File

@ -65,7 +65,8 @@ namespace {
char ExternalFunctionsPassedConstants::ID = 0;
RegisterPass<ExternalFunctionsPassedConstants>
P1("externalfnconstants", "Print external fn callsites passed constants");
P1("print-externalfnconstants",
"Print external fn callsites passed constants");
struct CallGraphPrinter : public ModulePass {
static char ID; // Pass ID, replacement for typeid
@ -83,5 +84,5 @@ namespace {
char CallGraphPrinter::ID = 0;
RegisterPass<CallGraphPrinter>
P2("callgraph", "Print a call graph");
P2("print-callgraph", "Print a call graph");
}

View File

@ -79,7 +79,7 @@ namespace {
};
char CallGraphPrinter::ID = 0;
RegisterPass<CallGraphPrinter> P2("print-callgraph",
RegisterPass<CallGraphPrinter> P2("dot-callgraph",
"Print Call Graph to 'dot' file");
}

View File

@ -14,12 +14,12 @@
//
// (1) As a reference for how to use the scc_iterator.
// (2) To print out the SCCs for a CFG or a CallGraph:
// analyze -cfgscc to print the SCCs in each CFG of a module.
// analyze -cfgscc -stats to print the #SCCs and the maximum SCC size.
// analyze -cfgscc -debug > /dev/null to watch the algorithm in action.
// analyze -print-cfg-sccs to print the SCCs in each CFG of a module.
// analyze -print-cfg-sccs -stats to print the #SCCs and the maximum SCC size.
// analyze -print-cfg-sccs -debug > /dev/null to watch the algorithm in action.
//
// and similarly:
// analyze -callscc [-stats] [-debug] to print SCCs in the CallGraph
// analyze -print-callgraph-sccs [-stats] [-debug] to print SCCs in the CallGraph
//
// (3) To test the scc_iterator.
//
@ -64,11 +64,11 @@ namespace {
char CFGSCC::ID = 0;
RegisterPass<CFGSCC>
Y("cfgscc", "Print SCCs of each function CFG");
Y("print-cfg-sccs", "Print SCCs of each function CFG");
char CallGraphSCC::ID = 0;
RegisterPass<CallGraphSCC>
Z("callscc", "Print SCCs of the Call Graph");
Z("print-callgraph-sccs", "Print SCCs of the Call Graph");
}
bool CFGSCC::runOnFunction(Function &F) {