mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 05:29:24 +00:00
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:
parent
1de42e8374
commit
3ee8fc9649
192
docs/Passes.html
192
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>
|
||||
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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");
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -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:
|
||||
|
@ -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]
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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() {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 }
|
||||
|
@ -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");
|
||||
}
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user