diff options
-rw-r--r-- | docs/Passes.html | 138 | ||||
-rw-r--r-- | lib/Analysis/CFGPrinter.cpp | 6 | ||||
-rw-r--r-- | lib/Analysis/IPA/FindUsedTypes.cpp | 2 | ||||
-rw-r--r-- | lib/VMCore/AsmWriter.cpp | 4 | ||||
-rw-r--r-- | test/Analysis/CallGraph/2008-09-09-DirectCall.ll | 3 | ||||
-rw-r--r-- | test/Analysis/CallGraph/2008-09-09-UsedByGlobal.ll | 3 | ||||
-rw-r--r-- | test/Other/2002-01-31-CallGraph.ll | 2 | ||||
-rw-r--r-- | test/Other/2007-06-05-PassID.ll | 2 | ||||
-rw-r--r-- | test/Transforms/BlockPlacement/basictest.ll | 2 | ||||
-rw-r--r-- | test/Transforms/Inline/basictest.ll | 2 | ||||
-rw-r--r-- | test/Transforms/PruneEH/2008-09-05-CGUpdate.ll | 5 | ||||
-rw-r--r-- | tools/opt/AnalysisWrappers.cpp | 5 | ||||
-rw-r--r-- | tools/opt/GraphPrinters.cpp | 2 | ||||
-rw-r--r-- | tools/opt/PrintSCC.cpp | 12 |
14 files changed, 96 insertions, 92 deletions
diff --git a/docs/Passes.html b/docs/Passes.html index bb1a64b..22a7351 100644 --- a/docs/Passes.html +++ b/docs/Passes.html @@ -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> @@ -317,39 +317,6 @@ perl -e '$/ = undef; for (split(/\n/, <>)) { s:^ *///? ?::; print " <p>\n" if ! <!-------------------------------------------------------------------------- --> <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> </div> <div class="doc_text"> @@ -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,64 +548,73 @@ 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> - The <code>PrintFunctionPass</code> class is designed to be pipelined with - other <code>FunctionPass</code>es, and prints out the functions of the module - as they are processed. + 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-alias-sets">Alias Set Printer</a> + <a name="print-callgraph-sccs">Print SCCs of the Call Graph</a> </div> <div class="doc_text"> - <p>Yet to be written.</p> + <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-callgraph">Print Call Graph to 'dot' file</a> + <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 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. + 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-cfg">Print CFG of function to 'dot' file</a> + <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 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. + 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-cfg-only">Print CFG of function to 'dot' file (with no function bodies)</a> + <a name="print-function">Print function to stderr</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. + The <code>PrintFunctionPass</code> class is designed to be pipelined with + other <code>FunctionPass</code>es, and prints out the functions of the module + as they are processed. </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> diff --git a/lib/Analysis/CFGPrinter.cpp b/lib/Analysis/CFGPrinter.cpp index 46d3930..143220c 100644 --- a/lib/Analysis/CFGPrinter.cpp +++ b/lib/Analysis/CFGPrinter.cpp @@ -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 diff --git a/lib/Analysis/IPA/FindUsedTypes.cpp b/lib/Analysis/IPA/FindUsedTypes.cpp index c3b08de..88a180a 100644 --- a/lib/Analysis/IPA/FindUsedTypes.cpp +++ b/lib/Analysis/IPA/FindUsedTypes.cpp @@ -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. diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index 1088236..ab8b59b 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -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"); //===----------------------------------------------------------------------===// diff --git a/test/Analysis/CallGraph/2008-09-09-DirectCall.ll b/test/Analysis/CallGraph/2008-09-09-DirectCall.ll index a3afc37..456ffa2 100644 --- a/test/Analysis/CallGraph/2008-09-09-DirectCall.ll +++ b/test/Analysis/CallGraph/2008-09-09-DirectCall.ll @@ -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: diff --git a/test/Analysis/CallGraph/2008-09-09-UsedByGlobal.ll b/test/Analysis/CallGraph/2008-09-09-UsedByGlobal.ll index 8e6e5d2..ffc27bb 100644 --- a/test/Analysis/CallGraph/2008-09-09-UsedByGlobal.ll +++ b/test/Analysis/CallGraph/2008-09-09-UsedByGlobal.ll @@ -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] diff --git a/test/Other/2002-01-31-CallGraph.ll b/test/Other/2002-01-31-CallGraph.ll index da638d8..bb4c23e 100644 --- a/test/Other/2002-01-31-CallGraph.ll +++ b/test/Other/2002-01-31-CallGraph.ll @@ -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) diff --git a/test/Other/2007-06-05-PassID.ll b/test/Other/2007-06-05-PassID.ll index 81e9ef6..b6bba36 100644 --- a/test/Other/2007-06-05-PassID.ll +++ b/test/Other/2007-06-05-PassID.ll @@ -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() { diff --git a/test/Transforms/BlockPlacement/basictest.ll b/test/Transforms/BlockPlacement/basictest.ll index e7755cf..4eec23e 100644 --- a/test/Transforms/BlockPlacement/basictest.ll +++ b/test/Transforms/BlockPlacement/basictest.ll @@ -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 diff --git a/test/Transforms/Inline/basictest.ll b/test/Transforms/Inline/basictest.ll index 59cacb6..d954238 100644 --- a/test/Transforms/Inline/basictest.ll +++ b/test/Transforms/Inline/basictest.ll @@ -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 diff --git a/test/Transforms/PruneEH/2008-09-05-CGUpdate.ll b/test/Transforms/PruneEH/2008-09-05-CGUpdate.ll index 828be7a..6e847fc 100644 --- a/test/Transforms/PruneEH/2008-09-05-CGUpdate.ll +++ b/test/Transforms/PruneEH/2008-09-05-CGUpdate.ll @@ -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 } diff --git a/tools/opt/AnalysisWrappers.cpp b/tools/opt/AnalysisWrappers.cpp index 454e738..94cca50 100644 --- a/tools/opt/AnalysisWrappers.cpp +++ b/tools/opt/AnalysisWrappers.cpp @@ -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"); } diff --git a/tools/opt/GraphPrinters.cpp b/tools/opt/GraphPrinters.cpp index 7f1199a..31515c8 100644 --- a/tools/opt/GraphPrinters.cpp +++ b/tools/opt/GraphPrinters.cpp @@ -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"); } diff --git a/tools/opt/PrintSCC.cpp b/tools/opt/PrintSCC.cpp index 0b9c12f..f314baa 100644 --- a/tools/opt/PrintSCC.cpp +++ b/tools/opt/PrintSCC.cpp @@ -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) { |