The following list of command line switches was generated using
java scale.test.Scale -help allThis page is not necessarily updated when the command line switches are modified.
Usage: java scale.test.Scale [-o] [-output_assembly] [-output_c] [-S] [-arch string] [-I [string]+] [-I_ [string]+] [-E] [-O string] [-inl integer] [-inlsstring] [-data_dependence string] [-profile_inlining_unrolling] [-loop_profile_unrolling] [-loop_count_unrolling] [-cross_module_inlining] [-M] [-multicompilation_edg] [-Alias_Analysis integer] [-cat integer] [-A [string]+] [-inline_complex_ftns] [-L] [-r string] [-dir string] [-D [string]+] [-U [string]+] [-g] [-naln] [-unsafe] [-fp_reorder] [-hb string] [-instruction_scheduling] [-builtin_inlining] [-peephole_hacker] [-new_parser] [-display_macros] [-c89] [-c99] [-gcc] [-ckr] [-ansi] [-signed_chars] [-unsigned_chars] [-clef_c_before] [-clef_c_after] [-clef_graph_before] [-clef_graph_after] [-scribble_c_before string] [-scribble_c_after string] [-scribble_graph_before string] [-scribble_graph_after string] [-display_call_graphs] [-daVinci] [-vcg] [-G string] [-P string] [-Path_Stats string] [-Use_Profiles [string]+] [-cc string] [-asm string] [-edg string] [-clef string] [-for string] [-wrap_on_overflow string] [-dinteger] [-t [string]+] [-f [string]+] [-version] [-stat integer] [-stat_file string] [-clef_display_depth integer] [-show_annotation_nodes integer] [-snap] [-quiet] [-w] [-dummy_aliases] [-ignore_heuristics string] [files]
Use java scale.test.Scale -help parameter to display help on the specified parameter. Or, use java scale.test.Scale -help all to display help on the all the parameters. Parameters containing words separated by a '_' or '-' can be abbreviated using the first letter of each word. The '_' and '-' characters may be used interchangeably in a parameter name. Parameters that do not accept an argument may be prefaced with "no_" (long form) or "n" (abbreviated form) to specify turning off that switch.
[-o] - generate .o files - default is false. [-output_assembly] - generate .o files from generated assembly language files - default is false. [-output_c] - generate .o files from generated C language files - default is false. [-S] - generate .s files only - default is false. [-arch string] - generate code for this architecture - default is "i386". alpha - EV5 processor sparc - V8 or V9 processor using V8 ABI mips - incomplete implementation ppc - G4 processor - under development trips2 - UT TRIPS EDGE architecture - under development Note - if this parameter is not specified the compiler obtains the architecture from the os.arch property. The architecture (e.g., xxx) is used to find the code generator for that architecture. There must be a scale.backend.xxx directory and there must ba a xxxMachine class in that directory. [-I [string]+] - specify the user include file directory(s) [-I_ [string]+] - specify the system include file directory(s) [-E] - run just the C pre-processor. - default is false. [-O string] - specify optimizations - default is "fgjcamnpxmnpibudl". letter optimization ------ --------------------------------------- 0 No optimizations 1 Same as -O cmnpud 2 Same as -O gacmnpibudl 3 Same as -O fgjacmnpmxnpibudl 4 Same as -O fgjacmnpxmnpibudl a Array Access Strength Reduction b Basic Block Optimizations c Sparse Conditional Constant Propagation d Dead Variable Elimination e Partial Redundancy Elimination f Structure Fields In Registers g Global Variable Replacement i Expression Tree Height Reduction j Loop Unrolling l Loop Test at End m Loop Invariant Code Motion n Global Value Numbering p Copy Propagation s None t Loop Permutation u Useless Copy Removal x Scalar Replacement [-inl integer] - specify the inlining code bloat limit - default is 0. 0 - none 1 - 1% code bloat 2 - 2% code bloat 3 - 5% code bloat n - n% code bloat The compilation time is a non-linear function of the bloat limit. Use -f scale.score.trans.Inlining.ignoreHeuristics=1 to inhibit the callee complexity filter. If the -M switch is specified, inlining may be performed between source modules. [-inls string] - specify the file to hold inlining status information - default is "". [-data_dependence string] - specify the data dependence testing to use - default is "tibBO". t - use transitive closure i - scalar replacement within inner loops only b - basic test B - Banerjee test O - Omega Library [-profile_inlining_unrolling] - use an edge profile (but generated with -P p) to guide inlining and unrolling - default is false. [-loop_profile_unrolling] - use a loop trip count profile (generated with -P l) to guide unrolling. - default is false. Note that -UP and "-O j" are also needed. At the end of program execution, the executing program dumps the LTCH profile to disk in the form of .pft files -- one for each source file. These are text files that are pretty easy to read. A second run of the compiler reads in the profile from the .pft files and applies it to each routine. The loop unrolling optimization uses a loop's histogram. A loop histogram for a particular loop is a map from slots to frequencies; slots with frequencies of zero are not present in the map. Each slot corresponds to a single trip count or to a range of trip counts. Currently, there are 100 slots, numbered 0 through 99. Slots 1 - 64 are used for trip counts 1 - 64. (Note that a trip count of 0 is not possible, since LTCH profiling defines trip count as the number of executions of the loop header, not the loop back edge. Slot 0 is not used) Slots 65 - 99 are used for trip counts 65 - 2^41 using the mapping function f(c) = floor(lg(c - 1)) + 59, where c is the trip count, and f(c) is the corresponding slot. A few shortcomings of LTCH profiling: Currently, all profiling in Scale works only via the multi-compilation route (i.e., using -P or -UP automatically activates -M). Multi-compilation shouldn't cause any problems, although some benchmarks have problems with cross-module inlining, which you can disable using -cmi. The LTCH profile is not maintained during optimizations (including unrolling). Thus, if you read in an LTCH profile and then do inlining, you can't use the profile for unrolling. One solution is to read in the LTCH profile *after* inlining (and thus also instrument the program *after* inlining). In the same run of the compiler, you can not instrument a program both for path profiling (which is used to drive edge profile-guided inlining) and for LTCH profiling. It's currently possible to have multiple *rounds* of path profiling (e.g., first round drives inlining and unrolling, and second round drives hyperblock formation). However, right now it's only possible to have one round of LTCH profiling. This shouldn't be a problem because LTCH profiling will only be used once in a run of the compiler -- for unrolling. And, it should still be possible to have multiple rounds of path profiling in addition to the single round of LTCH profiling. [-loop_count_unrolling] - Use a static loop instruction count profile to guide unrolling. [-cross_module_inlining] - disable cross-module inlining (only applies if -M is selected but -me is not - default is true. [-M] - force multi-compilation - default is false. Scale supports three modes of compiling: single, batch, and multi-compilation. The compiler can be invoked on a single source file or it can be invoked on multiple source files (batch). The batch method saves the overhead of establishing the Java environment for each source file that is compiled. If multiple source files are specified with one invocation of the compiler, multi- (or cross) compiling can be enabled. Multi-compilation converts all the specified source files to AST form before generating the CFG form of the programs. Once all CFGs have been generated, then the code generators are run. This allows inter-procedural optimizations to be performed. Multi-compilation is not recommended because of the very large amount of memory required which results in excessive JVM GCs. Currently, only function inlining can take advantage of multi-compilation by inlining functions across modules. To support this multi-compilation renames all static functions and variables and makes them global. [-multicompilation_edg] - deprecated. - default is false. [-Alias_Analysis integer] - specify alias analysis level - default is 1. 0 - No alias analysis, 1 - Simple intra-procedural alias analysis, 2 - Steensgard intra-procedural alias analyses, 3 - Shapiro intra-procedural alias analyses, 4 - Simple inter-procedural alias analysis, 5 - Steensgard inter-procedural alias analysis, 6 - Shapiro inter-procedural alias analysis [-cat integer] - specify the number of categories for Shapiro alias analysis - default is 2. [-A [string]+] - specify annotation file(s) [-inline_complex_ftns] - inline complex functions - default is false. [-L] - enable source line number information. - default is false. [-r string] - limit optimizations, graphic displays, etc to only the source routine specified by this name [-dir string] - specify the directory to place any generated files - default is ".". [-D [string]+] - specify macro definitions for the pre-processor [-U [string]+] - specify macros to be be un-defined by the pre-processor Only pre-processor defined macros can be un-defined. [-g] - generate debug information - default is false. [-naln] - assume non-ANSI C data alignment on indirect references - default is false. [-unsafe] - allow unsafe optimizations - default is false. [-fp_reorder] - allows floating point operations to be reordered during optimizations which may affect the results - default is false. [-hb string] - enable backend hyperblock formation - default is "". [-instruction_scheduling] - enable instruction scheduling - default is true. [-builtin_inlining] - inhibit inlining of certain standard C library routines - default is true. [-peephole_hacker] - perform peephole optimizations - default is true. [-new_parser] - deprecated. - default is true. [-display_macros] - display all macro definitions - default is false. If used with -E, the macro definitions are sent to stdout without the preprocessed text of the program. Otherwise, the macro definitions are placed as comments in the generated C or assembly code. This switch is ignored if the EDG parser is used. [-c89] - select the C89 dialect of C - default is false. [-c99] - select the C99 dialect of C - default is false. [-gcc] - select the Gnu dialect of C - default is false. [-ckr] - select the K&R dialect of C - default is false. [-ansi] - specify strict ANSI C mode - default is false. [-signed_chars] - specifies whether or not the *char* type is signed - default is true. The -sc switch specifies that type *char* has the same range, representation, and behavior as type *signed char*. The -uc switch specifies that type *char* has the same range, representation, and behavior as type *unsigned char*. [-unsigned_chars] - specifies whether or not the *char* type is signed - default is false. The -sc switch specifies that type *char* has the same range, representation, and behavior as type *signed char*. The -uc switch specifies that type *char* has the same range, representation, and behavior as type *unsigned char*. [-clef_c_before] - generate C code from the Clef AST before optimizeClef has been called - default is false. [-clef_c_after] - generate C code from the Clef AST after optimizeClef has been called - default is false. [-clef_graph_before] - graphically display the Clef AST before the optimizeClef method is called - default is false. [-clef_graph_after] - graphically display the Clef AST after the optimizeClef method is called - default is false. [-scribble_c_before string] - generate C code from the CFG before the specified optimizations (see -O) - default is "". The generated C code can be limited to just one routine by using the -r switch. [-scribble_c_after string] - generate C code from the CFG after the specified optimizations (see -O) - default is "". The generated C code can be limited to just one routine by using the -r switch. [-scribble_graph_before string] - graphically display the CFG before the specified optimizations (see -O) - default is "". The CFG display can be limited to just one routine by using the -r switch. [-scribble_graph_after string] - graphically display the CFG after the specified optimizations (see -O) - default is "". The CFG display can be limited to just one routine by using the -r switch. [-display_call_graphs] - graphically display the call graphs - default is false. [-daVinci] - use the daVinci graphing tool - default is false. The DaVinci graphics package must be installed on your system and the executable must be on your path. The default is to use the Scale graphing tool. [-vcg] - output graphs to files in VCG format - default is false. [-G string] - specify graphic display options - default is "e". e - expressions a - annotations m - may-use links u - use-def links t - types d - data dependence D - domination C - control dependence P - post domination c - Clef [-P string] - specify profile instrumentation to insert - default is "". p - path frequencies e - edge frequencies b - basic block frequencies l - loop trip count frequencies [-Path_Stats string] - load a path profiling settings (.pft) file - default is "". [-Use_Profiles [string]+] - use profile information from the specified directory/ies Defaults to the directory specified by -dir or to the current directory. [-cc string] - specify the native C compiler to use when the -oc switch is used - default is "cc". [-asm string] - specify the assmebler command to use when the -oa switch is specified - default is "as". [-edg string] - deprecated. [-clef string] - deprecated. [-for string] - a name to use to tag statistical output - see -stat - default is "??". [-wrap_on_overflow string] - use the following integer overflow behavior - default is "all". all - all integers wrap on overflow (safest, slowest) unsigned - unsigned integers wrap on overflow, signed may not none - all integers may not wrap on overflow (not valid for C) [-d integer] - set the debug level - default is 0. 0 - normal 1 - informative messages and validity checks 2 - more detailed information 3 - brain dump [-t [string]+] - set the classTrace field true for the specified classes - e.g., -t scale.backend.Generator [-f [string]+] - set the specified static fields for the specified classes to the specified values - e.g., -f class.field=3 [-version] - print compiler version - default is false. [-stat integer] - display status at level - default is 0. 0 - none 1 - normal statistics + compilation progress 2 - spawned processes n - undefined. [-stat_file string] - specifies the file to receive the compiler statistics - default is "". The default is stdout. [-clef_display_depth integer] - node display depth - default is 4. The node display depth controls the debugging displays when print statements are added to the compiler that display AST or CFG nodes. [-show_annotation_nodes integer] - show annotations in trace information to this level - default is 0. This controls the depth to which debugging displays show annotations when print statements are added to the compiler that display AST or CFG nodes. [-snap] - deprecated - enable snapshot statistics - default is false. [-quiet] - inhibit informative messages - default is true. [-w] - do not print warning messages - default is false. [-dummy_aliases] - Assumes that dummy (formal) arguments to procedures share memory - default is false. locations with other dummy arguments or with COMMON variables that are assigned. These program semantics slow performance and do not strictly obey the FORTRAN-77 Standard. The default is to assume there are no dummy aliases. [-ignore_heuristics string] - ignore heuristics in the specified optimizations - default is "". Most optimizations increase register pressure which can result in register spilling and degraded performance. These optimizations employ heuristics to minimize this degraded performance. [-files [string]+] - compile the source file(s) specified. They can be a .c, .f, .ilf, or .ilc files.