cc options
| Introduction | |
| Options | |
| Alternatives |
Introduction
There are multiple flags used with cc in makefiles. Here is a list from Oracle.com
Options
| Function | Option Flag | |
|---|---|---|
| Licensing | ||
| Instructs the compiler not to queue this compile request if a license is not available. | -noqueue | |
| Returns information about the licensing system. | -xlicinfo | |
| Optimization and Performance | ||
| Selects the optimum combination of compilation options for speed. | -fast | |
| Prepares the object code to collect data for profiling | -p | |
| Optimizes for the 80386 processor. | -x386 | |
| Optimizes for the 80486 processor. | -x486 | |
| Inserts code to count how many times each basic block is executed. | -xa | |
| Enables optimization and inlining across source files. | -xcrossfile=[n] | |
| Analyzes loops for inter-iteration data dependencies and does loop restructuring. | -xdepend | |
| Enables performance analysis of the executable using the Analyzer. | -xF | |
| Tries to inline only those functions specified. | -xinline | |
| Inlines some library routines for faster execution. | -xlibmil | |
| Links in the Sun-supplied performance libraries. | -xliclib=sunperf | |
| This command limits the level of pragma opt to the level specified. | -xmaxopt=off,1,2,3,4,5 | |
| Optimizes the object code. | -xo[1|1|2|3|4|5] | |
| Optimizes for the PentiumTM processor. | -xpentium | |
| Enable prefetch instructions. | -xprefetch | |
| Collects data for a profile or uses a profile to optimize. | -xprofile=p | |
| Treats pointer-valued function parameters as restricted pointers. | -xrestrict=f | |
| Allows the compiler to assume no memory-based traps occur. | -xsafe=mem | |
| Does no optimizations or parallelization of loops that increase code size. | -xspace | |
| Suggests to the optimizer to unroll loops n times. | -xunroll=n | |
| Data Alignment | ||
| Produce an integer constant by placing the characters of a multi-character character-constant in the specified byte order. | -xchar_byte_order=o | |
| Specify maximum assumed memory alignment and behavior of misaligned data accesses. | -xmemalign=ab | |
| Does not inline math library routines. | -xnolibmil | |
| Numerics and Floating-Point | ||
| Causes nonstandard initialization of floating-point arithmetic hardware. | -fnonstd | |
| Turns on the SPARC nonstandard floating-point mode. | -fns[={no,yes}] | |
| Initializes the rounding-precision mode bits in the Floating-point Control Word | -fprecision=p | |
| Sets the IEEE 754 rounding mode that is established at runtime during the program initialization. | -fround=r | |
| Allows the optimizer to make simplifying assumptions concerning floating-point arithmetic. | -fsimple=n | |
| Causes the compiler to evaluate float expressions as single precision rather than double precision. | -fsingle | |
| Causes the compiler to convert the value of a floating-point expression or function to the type on the left-hand side of an assignment | -fstore | |
| Sets the IEEE 754 trapping mode in effect at startup. | -ftrap=t | |
| Does not convert the value of a floating-point expression or function to the type on the left-hand side of an assignment | -nofstore | |
| Forces IEEE 754 style return values for math routines in exceptional cases. | -xlibmieee | |
| Represents unsuffixed floating-point constants as single precision | -xsfpconst | |
| Enable automatic generation of calls to the vector library functions. | -xvector=[{yes|no}] | |
| Parallelization | ||
| Macro option that expands to -D_REENTRANT -lthread. | -mt | |
| Turns on automatic parallelization for multiple processors. | -xautopar | |
| Generates parallelized code based on specification of #pragma MP directives. | -xexplicitpar | |
| Shows which loops are parallelized and which are not. | -xloopinfo | |
| Parallelizes loops both automatically by the compiler and explicitly specified by the programmer. | -xparallel | |
| Turns on reduction recognition during automatic parallelization. | -xreduction | |
| Warns about loops that have #pragma MP directives specified but may not be properly specified for parallelization. | -xvpara | |
| Creates the program database for lock_lint, but does not actually compile. | -Zll | |
| Prepares object files for the loop profiler, looptool. | -Zlp | |
| Source Code | ||
| Associates name as a predicate with the specified tokens as if by a #assert preprocessing directive. | -Aname[(tokens)] | |
| Prevents the preprocessor from removing comments, except those on the preprocessing directive lines. | -C | |
| Associates name with the specified tokens as if by a #define preprocessing directive. | -Dname[=tokens] | |
| Runs the source file through the preprocessor only and sends the output to stdout. | -E | |
| Reports K&R-style function definitions and declarations. | -fd | |
| Prints to standard error, one per line, the path name of each file included during the current compilation. | -H | |
| Adds directories to the list that is searched for #include files with relative file names. | -Idir | |
| Runs the source file through the C preprocessor only. | -P | |
| Removes any initial definition of the preprocessor symbol name. | -Uname | |
| Accepts the C++-style comments. | -xCC | |
| Runs only the preprocessor on the named C programs, requesting that it generate makefile dependencies and send the result to the standard output | -xM | |
| Collects dependencies like -xM, but excludes /usr/include files. | -xM1 | |
| Prints prototypes for all K&R C functions defined in this module | -xP | |
| Prepares the object code to collect data for profiling with gprof(1). | -xpg | |
| Generates extra symbol table information for the Source Browser. | -xsb | |
| Creates the database for the Source Browser. | -xsbfast | |
| Compiled Code | ||
| Directs the compiler to suppress linking with ld(1) and to produce a .o file for each source file | -c | |
| Names the output file | -o filename | |
| Directs the compiler to produce an assembly source file but not to assemble the program. | -S | |
| Compilation Mode | ||
| Turns on verbose mode, showing each component as it is invoked. | -# | |
| Shows each component as it would be invoked, but does not actually execute it. | -### | |
| Retains temporary files created during compilation instead of deleting them automatically. | -keeptmp | |
| Directs cc to print the name and version ID of each component as the compiler executes. | -V | |
| The -X options specify varying degrees of compliance to the ANSI/ISO C standard. | -X[a|c|s|t] | |
| Displays on-line help information. | -xhelp=f | |
| Sets the directory for temporary files used by cc to dir. | -xtemp=dir | |
| Reports the time and resources used by each compilation component. | -xtime | |
| Diagnostics | ||
| Suppresses compiler warning messages. | -erroff=t | |
| Displays the message tag for each warning message. | -errtags=a | |
| If the indicated warning message is issued, cc exits with a failure status. | -errwarn=t | |
| Directs the compiler to perform stricter semantic checks and to enable other lint-like checks. | -v | |
| Suppresses compiler warning messages. | -w | |
| Performs only syntax and semantic checking on the source file, but does not produce any object or executable code. | -xe | |
| Issues warnings for the differences between K&R C and Sun ANSI/ISO C. | -xtransition | |
| Warns about loops that have #pragma MP directives specified but may not be properly specified for parallelization. | -xvpara | |
| Debugging | ||
| Produces additional symbol table information for the debugger. | -g | |
| Removes all symbolic debugging information from the output object file. | -s | |
| Disables Auto-Read for dbx. | -xs | |
| Linking and Libraries | ||
| Specifies whether bindings of libraries for linking are static or dynamic. | -B[static|dynamic] | |
| Specifies dynamic or static linking in the link editor. | -d[y|n] | |
| Passes the option to the link editor to produce a shared object rather than a dynamically linked executable. | -G | |
| Assigns a name to a shared dynamic library as a way to have different versions of a library. | -h name | |
| Passes the option to the linker to ignore any LD_LIBRARY_PATH setting. | -i | |
| Adds directories to the list that the linker searches for libraries. | -Ldir | |
| Links with object library libname.so, or libname.a. | -lname | |
| Removes duplicate strings from the .comment section of the object file. | -mc | |
| Removes all strings from the .comment section. | -mr | |
| Removes all strings from the .comment section and inserts string in that section of the object file. | -mr,string | |
| Emits or does not emit identification information to the output file. | -Q[y|n] | |
| Passes a colon-separated list of directories used to specify library search directories to the runtime linker. | -Rdir[:dir] | |
| Merges data segments into text segments. | -xMerge | |
| Specify code address space. | -xcode=v | |
| Inserts string literals into the read-only data section of the text segment instead of the default data segment. | -xstrconst | |
| Turns off the incremental linker and forces the use of ld. | -xildoff | |
| Turns on the incremental linker and forces the use of ild in incremental mode. | -xildon | |
| Does not link any libraries by default | -xnolib | |
| Does not inline math library routines. | -xnolibmil | |
| Target Platform | ||
| Specify instruction set architecture. | -xarch | |
| Defines the cache properties for use by the optimizer. | -xcache | |
| Specifies values for -xarch, -xchip, and -xcache. | -xcg[89|92] | |
| Specifies the target processor for use by the optimizer. | -xchip | |
| Specifies the usage of registers for the generated code. | -xregs=r | |
| Specifies the target system for instruction set and optimization. | -xtarget |
The cc Options
This section describes the cc options, arranged alphabetically. These descriptions are also available in the man page, cc(1). Use the cc -flags option for a one-line summary of these descriptions. Options noted as being unique to one or more platforms are accepted without error and ignored on all other platforms. For an explanation of the typographic notations used with the options and arguments, refer to Typographic Conventions. -# Turns on verbose mode, showing each component as it is invoked. -### Shows each component as it would be invoked, but does not actually execute it. -Aname[(tokens)] Associates name as a predicate with the specified tokens as if by a #assert preprocessing directive. Preassertions:
- system(unix)
- machine(sparc) (SPARC)
- machine(i386) (x86)
- cpu(sparc) (SPARC)
- cpu(i386) (x86)
These preassertions are not valid in -Xc mode. -B[static|dynamic] Specifies whether bindings of libraries for linking are static or dynamic, indicating whether libraries are non-shared or shared, respectively. -Bdynamic causes the link editor to look for files named libx.so and then for files named libx.a when given the -lx option. -Bstatic causes the link editor to look only for files named libx.a. This option may be specified multiple times on the command line as a toggle. This option and its argument are passed to ld.
Note Many system libraries, such as libc, are only available as dynamic libraries in the Solaris 64-bit compilation environment. Therefore, do not use -Bstatic as the last toggle on the command line.
-C Prevents the C preprocessor from removing comments, except those on the preprocessing directive lines. -c Directs cc to suppress linking with ld(1) and to produce a .o file for each source file. You can explicitly name a single object file using the -o option. When the compiler produces object code for each .i or .c input file, it always creates an object (.o) file in the current working directory. If you suppress the linking step, you also suppress the removal of the object files. -Dname[=tokens] Associates name with the specified tokens as if by a #define preprocessing directive. If no =tokens is specified, the token 1 is supplied. Predefinitions (not valid in -Xc mode):
- sun
- unix
- sparc (SPARC)
- i386 (x86)
Note Many system libraries are only available as dynamic libraries in the Solaris 7 64-bit compilation environment. As a result, this option causes fatal errors if you use it in combination with -Xarch=v9.
-dalign -dalign is equivalent to -xmemalign=8s. See -xmemalign=ab. -E Runs the source file through the preprocessor only and sends the output to stdout. The preprocessor is built directly into the compiler, except in -Xs mode, where /usr/ccs/lib/cpp is invoked. Includes the preprocessor line numbering information. See also the -P option. -erroff=t Suppresses cc warning messages. Has no effect on error messages. t is a comma-separated list that consists of one or more of the following: tag, no%tag, %all, %none. Order is important; for example, %all,no%tag suppresses all warning messages except tag. The following table lists the -erroff values:
| Value | Meaning |
|---|---|
| tag | Suppresses the warning message specified by this tag. You can display the tag for a message by using the -errtags=yes option. |
| no%tag | Enables the warning message specified by this tag |
| %all | Suppresses all warning messages |
| %none | Enables all warning messages (default) |
| tag | Cause cc to exit with a fatal status if the message specified by this tag is issued as a warning message. Has no effect if tag is not issued. |
| no%tag | Prevent cc from exiting with a fatal status if the message specified by tag is issued only as a warning message. Has no effect if the message specified by tag is not issued. Use this option to revert a warning message that was previously specified by this option with tag or %all from causing cc to exit with a fatal status when issued as a warning message. |
| %all | Cause cc to exit with a fatal status if any warning messages are issued. %all can be followed by no%tag to exempt specific warning messages from this behavior. |
| %none | Prevents any warning message from causing cc to exit with a fatal status should any warning message be issued. |
| cc -fast -xtarget=ultra ... |
| % cc -fast -xnolibmil |
| Option | SPARC | x86 |
|---|---|---|
| -dalign | X | - |
| -fns | X | X |
| -fsimple=2 | X | - |
| -ftrap=%none | X | X |
| -xlibmil | X | X |
| -xtarget=native | X | X |
| -nofstore | - | X |
| -xO5 | X | X |
| -fsingle | X | X |
- With no -fsimple[=n], the compiler uses -fsimple=0
- With only -fsimple, no =n, the compiler uses -fsimple=1
- IEEE 754 default rounding/trapping modes do not change after process initialization.
- Computations producing no visible result other than potential floating point exceptions may be deleted.
- Computations with Infinity or NaNs as operands need not propagate NaNs to their results; for example, x*0 may be replaced by 0.
- Computations do not depend on sign of zero.
- %all turns on all the trapping modes.
- %none, the default, turns off all trapping modes.
- A no% prefix turns off that specific trapping mode.
| % cc -H sample.c /usr/include/stdio.h /usr/include/math.h /usr/include/floatingpoint.h /usr/include/sys/ieeefp.h |
| #include <stdio.h> main(void) { printf("Hello World.\n"); } |
| a | Assembler (fbe); (gas) | ||||||||||||||||
| c | C code generator (cg) (SPARC) | ||||||||||||||||
| d |
cc driver1
|
h
|
Intermediate code translator (ir2hf)(Intel)
|
i
|
Inter-procedure analysis (ube_ipa)(Intel)
|
l
|
Link editor (ld)
|
m
|
mcs
|
p
|
Preprocessor (cpp)
|
u
|
C code generator (ube) (Intel)
|
0
|
Compiler (acomp) (ssbd, SPARC)
|
2
|
Optimizer (iropt) (SPARC)
| |
| 1 You cannot use -Wd to pass the cc options listed in this chapter to the C compiler. |
| Platform | Valid -xarch Keywords |
|---|---|
| SPARC | generic, native, v7, v8a, v8, v8plus, v8plusa, v8plusb, v9, v9a, v9b |
| x86 | generic, 386, pentium_pro |
- % cc -xtarget=ultra2 -xarch=v8plusb ...
| Instruction Set of SPARC Machine: | |||||||
|---|---|---|---|---|---|---|---|
| V7 | V8a | V8 | V9 (Non-Sun Processor) | V9 (Sun processor) | V9b | ||
| -xarch compilation option | v7 | N | S | S | S | S | S |
| v8a | PD | N | S | S | S | S | |
| v8 | PD | PD | N | S | S | S | |
| v8plus | NE | NE | NE | N | S | S | |
| v8plusa | NE | NE | NE | ** | N | S | |
| v8plusb | NE | NE | NE | ** | NE | N | |
| v9 | NE | NE | NE | N | S | S | |
| v9a | NE | NE | NE | ** | N | S | |
| v9b | NE | NE | NE | ** | NE | N | |
| ** Note: An executable compiled with this instruction set may perform nominally on a V9 non-Sun processor chip or it may not execute at all. Check with your hardware vendor to make sure your executable can run on its target machine. | |||||||
- N reflects Nominal performance. The program executes and takes full advantage of the processor's instruction set.
- S reflects Satisfactory performance. The program executes but may not exploit all available processor instructions.
- PD reflects Performance Degradation. The program executes, but depending on the instructions used, may experience slight to significant performance degradation. The degradation occurs when instructions that are not implemented by the processor are emulated by the kernel.
- NE means Not Executable. The program will not execute because the kernel does not emulate the instructions that are not implemented by the processor.
- SPARC instruction set architectures V7, V8, and V8a are all binary compatible.
- Object binary files (.o) compiled with v8plus and v8plusa can be linked and can execute together, but only on a SPARC V8plusa compatible platform.
- Object binary files (.o) compiled with v8plus, v8plusa, and v8plusb can be linked and can execute together, but only on a SPARC V8plusb compatible platform.
- -xarch values v9, v9a, and v9b are only available on UltraSPARC 64-bit Solaris environments.
- Object binary files (.o) compiled with v9 and v9a can be linked and can execute together, but will run only on a SPARC V9a compatible platform.
- Object binary files (.o) compiled with v9, v9a, and v9b can be linked and can execute together, but will run only on a SPARC V9b compatible platform.
| Value | Meaning |
|---|---|
| generic | Limits instruction set to the Intel x86 architecture and is the equivalent of the 386 option. |
| 386 | Limits the instruction set to the Intel 386/486 architecture. |
| pentium | Limits the instruction set to the pentium architecture. |
| pentium_pro | Limits the instruction set to the pentium_pro architecture. |
| % psrinfo 0 on-line since 01/12/95 10:41:54 1 on-line since 01/12/95 10:41:54 3 on-line since 01/12/95 10:41:54 4 on-line since 01/12/95 10:41:54 |
- Do not request more processors than are available.
- If N is the number of processors on the machine, then for a one-user, multiprocessor system, try PARALLEL=N-1.
- generic (SPARC,x86)
- s1/l1/a1
- s1/l1/a1:s2/l2/a2
- s1/l1/a1:s2/l2/a2:s3/l3/a3
| si | The size of the data cache at level i, in kilobytes |
| li | The line size of the data cache at level i, in bytes |
| ai | The associativity of the data cache at level i |
| Value | Meaning | ||||||
|---|---|---|---|---|---|---|---|
| generic |
Define the cache properties for good performance on most x86 and SPARC architectures. This is the default value which directs the compiler to use cache properties for good performance on most x86 and SPARC processors, without major performance degradation on any of them. With each new release, these best timing properties will be adjusted, if appropriate.
|
s1/l1/a1
|
Define level 1 cache properties.
|
s1/l1/a1:s2/l2/a2
|
Define levels 1 and 2 cache properties.
|
s1/l1/a1:s2/l2/a2:s3/l3/a3
|
Define levels 1, 2, and 3 cache properties.
| |
| Level 1 cache has: 16K bytes 32 bytes line size 4-way associativity | Level 2 cache has: 1024K bytes 32 bytes line size Direct mapping associativity |
- low: place the characters of a multi-character character-constant in low-to-high byte order.
- high: place the characters of a multi-character character-constant in high-to-low byte order.
- default: place the characters of a multi-character character-constant in an order determined by the compilation mode -X[a|c|s|t]. For more information, see Character Constants.
- The ordering of instructions, that is, scheduling
- The way the compiler uses branches
- The instructions to use in cases where semantically equivalent alternatives are available
- A routine compiled with either -xcode=pic13 or -xcode=pic32 executes a few extra instructions upon entry to set a register to point at a table (_GLOBAL_OFFSET_TABLE_) used for accessing a shared library's global or static variables.
- Each access to a global or static variable involves an extra indirect memory reference through _GLOBAL_OFFSET_TABLE_. If the compile is done with -xcode=pic32, there are two additional instructions per global and static memory reference.
| % nm file.o | grep _GLOBAL_OFFSET_TABLE_ U _GLOBAL_OFFSET_TABLE_ |
- Analyze the loops to find those that are safe to parallelize.
- Insert #pragma MP to parallelize a loop. See the Explicit Parallelization and Pragmas" for more information.
- Use the -xexplicitpar option.
| #pragma MP taskloop for (j=0; j<1000; j++){ ... } |
- Optimization is less than -xO3.
- The routine cannot be found.
- Inlining the routine does not look practicable to the optimizer.
- The source for the routine is not in the file being compiled (however, see -xcrossfile).
| #include <unistd.h> void main(void) {} |
| e.o: e.c e.o: /usr/include/unistd.h e.o: /usr/include/sys/types.h e.o: /usr/include/sys/machtypes.h e.o: /usr/include/sys/select.h e.o: /usr/include/sys/time.h e.o: /usr/include/sys/types.h e.o: /usr/include/sys/time.h e.o: /usr/include/sys/unistd.h |
| more hello.c #include<stdio.h> main() { (void)printf("hello\n"); } cc -xM hello.c hello.o: hello.c hello.o: /usr/include/stdio.h |
| cc -xM1 hello.c hello.o: hello.c |
| a | b | ||
|---|---|---|---|
| 1 | Assume at most 1 byte alignment. | i | Interpret access and continue execution. |
| 2 | Assume at most 2 byte alignment. | s | Raise signal SIGBUS. |
| 4 | Assume at most 4 byte alignment. | f | Raise signal SIGBUS for alignments less or equal to 4, otherwise interpret access and continue execution. |
| 8 | Assume at most 8 byte alignment. | ||
| 16 | Assume at most 16 byte alignment. |
- -xmemalgin=4s when -xarch has the value generic, v7, v8, v8a, v8plus, v8plusa, ILP32.
- -xmemalign=8s when -xarch has the value v9,v9a.
- -xmemalign=1i for all -xarch values.
| Command | Situation |
|---|---|
| -xmemalign=1s | There are many misaligned accesses so trap handling is too slow. |
| -xmemalign=8i | There are occasional, intentional, misaligned accesses in code that is otherwise correct. |
| -xmemalign=8s | There should be no misaligned accesses in the program. |
| -xmemalign=2s | You want to check for possible odd-byte accesses. |
| -xmemalign=2i | You want to check for possible odd-byte access and you want the program to work. |
| % cc test.c -xnolib -Bstatic -lm -Bdynamic -lc |
| % cc -fast -xnolibmil.... |
| f() { } main(argc,argv) int argc; char *argv[]; { } |
| int f(void); int main(int, char **); |
| Value | Meaning |
|---|---|
| auto | Enable automatic generation of prefetch instructions |
| no%auto | Disable automatic generation of prefetch instructions |
| explicit | Enable explicit prefetch macros |
| no%explicit | Disable explicit prefetch macros |
| yes | Same as -xprefetch=auto,explicit |
| no | Same as -xprefetch=no%auto,no%explicit |
Note tcov's code coverage report can be unreliable if there is inlining of routines due to -xO4 or -xinline.
-xreduction (SPARC) Turns on reduction recognition during automatic parallelization. -xreduction must be specified with -xautopar, or -xparallel. Parallelization options require a WorkShop license. When reduction recognition is enabled, the compiler parallelizes reductions such as dot products, maximum and minimum finding. These reductions yield different roundoffs than obtained by unparallelized code. -xregs=r (SPARC) Specifies the usage of registers for the generated code. r is a comma-separated list that consists of one or more of the following: [no%]appl, [no%]float. Example: -xregs=appl,no%float
| -xtarget= | -xarch | -xchip | -xcache |
|---|---|---|---|
| generic | generic | generic | generic |
| cs6400 | v8 | super | 16/32/4:2048/64/1 |
| entr150 | v8 | ultra | 16/32/1:512/64/1 |
| entr2 | v8 | ultra | 16/32/1:512/64/1 |
| entr2/1170 | v8 | ultra | 16/32/1:512/64/1 |
| entr2/1200 | v8 | ultra | 16/32/1:512/64/1 |
| entr2/2170 | v8 | ultra | 16/32/1:512/64/1 |
| entr2/2200 | v8 | ultra | 16/32/1:512/64/1 |
| entr3000 | v8 | ultra | 16/32/1:512/64/1 |
| entr4000 | v8 | ultra | 16/32/1:512/64/1 |
| entr5000 | v8 | ultra | 16/32/1:512/64/1 |
| entr6000 | v8 | ultra | 16/32/1:512/64/1 |
| sc2000 | v8 | super | 16/32/4:2048/64/1 |
| solb5 | v7 | old | 128/32/1 |
| solb6 | v8 | super | 16/32/4:1024/32/1 |
| ss1 | v7 | old | 64/16/1 |
| ss10 | v8 | super | 16/32/4 |
| ss10/20 | v8 | super | 16/32/4 |
| ss10/30 | v8 | super | 16/32/4 |
| ss10/40 | v8 | super | 16/32/4 |
| ss10/402 | v8 | super | 16/32/4 |
| ss10/41 | v8 | super | 16/32/4:1024/32/1 |
| ss10/412 | v8 | super | 16/32/4:1024/32/1 |
| ss10/50 | v8 | super | 16/32/4 |
| ss10/51 | v8 | super | 16/32/4:1024/32/1 |
| ss10/512 | v8 | super | 16/32/4:1024/32/1 |
| ss10/514 | v8 | super | 16/32/4:1024/32/1 |
| ss10/61 | v8 | super | 16/32/4:1024/32/1 |
| ss10/612 | v8 | super | 16/32/4:1024/32/1 |
| ss10/71 | v8 | super2 | 16/32/4:1024/32/1 |
| ss10/712 | v8 | super2 | 16/32/4:1024/32/1 |
| ss10/hs11 | v8 | hyper | 256/64/1 |
| ss10/hs12 | v8 | hyper | 256/64/1 |
| ss10/hs14 | v8 | hyper | 256/64/1 |
| ss10/hs21 | v8 | hyper | 256/64/1 |
| ss10/hs22 | v8 | hyper | 256/64/1 |
| ss1000 | v8 | super | 16/32/4:1024/32/1 |
| ss1plus | v7 | old | 64/16/1 |
| ss2 | v7 | old | 64/32/1 |
| ss20 | v8 | super | 16/32/4:1024/32/1 |
| ss20/151 | v8 | hyper | 512/64/1 |
| ss20/152 | v8 | hyper | 512/64/1 |
| ss20/50 | v8 | super | 16/32/4 |
| ss20/502 | v8 | super | 16/32/4 |
| ss20/51 | v8 | super | 16/32/4:1024/32/1 |
| ss20/512 | v8 | super | 16/32/4:1024/32/1 |
| ss20/514 | v8 | super | 16/32/4:1024/32/1 |
| ss20/61 | v8 | super | 16/32/4:1024/32/1 |
| ss20/612 | v8 | super | 16/32/4:1024/32/1 |
| ss20/71 | v8 | super2 | 16/32/4:1024/32/1 |
| ss20/712 | v8 | super2 | 16/32/4:1024/32/1 |
| ss20/hs11 | v8 | hyper | 256/64/1 |
| ss20/hs12 | v8 | hyper | 256/64/1 |
| ss20/hs14 | v8 | hyper | 256/64/1 |
| ss20/hs21 | v8 | hyper | 256/64/1 |
| ss20/hs22 | v8 | hyper | 256/64/1 |
| ss2p | v7 | powerup | 64/32/1 |
| ss4 | v8a | micro2 | 8/16/1 |
| ss4/110 | v8a | micro2 | 8/16/1 |
| ss4/85 | v8a | micro2 | 8/16/1 |
| ss5 | v8a | micro2 | 8/16/1 |
| ss5/110 | v8a | micro2 | 8/16/1 |
| ss5/85 | v8a | micro2 | 8/16/1 |
| ss600/120 | v7 | old | 64/32/1 |
| ss600/140 | v7 | old | 64/32/1 |
| ss600/41 | v8 | super | 16/32/4:1024/32/1 |
| ss600/412 | v8 | super | 16/32/4:1024/32/1 |
| ss600/51 | v8 | super | 16/32/4:1024/32/1 |
| ss600/512 | v8 | super | 16/32/4:1024/32/1 |
| ss600/514 | v8 | super | 16/32/4:1024/32/1 |
| ss600/61 | v8 | super | 16/32/4:1024/32/1 |
| ss600/612 | v8 | super | 16/32/4:1024/32/1 |
| sselc | v7 | old | 64/32/1 |
| ssipc | v7 | old | 64/16/1 |
| ssipx | v7 | old | 64/32/1 |
| sslc | v8a | micro | 2/16/1 |
| sslt | v7 | old | 64/32/1 |
| sslx | v8a | micro | 2/16/1 |
| sslx2 | v8a | micro2 | 8/16/1 |
| ssslc | v7 | old | 64/16/1 |
| ssvyger | v8a | micro2 | 8/16/1 |
| sun4/110 | v7 | old | 2/16/1 |
| sun4/15 | v8a | micro | 2/16/1 |
| sun4/150 | v7 | old | 2/16/1 |
| sun4/20 | v7 | old | 64/16/1 |
| sun4/25 | v7 | old | 64/32/1 |
| sun4/260 | v7 | old | 128/16/1 |
| sun4/280 | v7 | old | 128/16/1 |
| sun4/30 | v8a | micro | 2/16/1 |
| sun4/330 | v7 | old | 128/16/1 |
| sun4/370 | v7 | old | 128/16/1 |
| sun4/390 | v7 | old | 128/16/1 |
| sun4/40 | v7 | old | 64/16/1 |
| sun4/470 | v7 | old | 128/32/1 |
| sun4/490 | v7 | old | 128/32/1 |
| sun4/50 | v7 | old | 64/32/1 |
| sun4/60 | v7 | old | 64/16/1 |
| sun4/630 | v7 | old | 64/32/1 |
| sun4/65 | v7 | old | 64/16/1 |
| sun4/670 | v7 | old | 64/32/1 |
| sun4/690 | v7 | old | 64/32/1 |
| sun4/75 | v7 | old | 64/32/1 |
| ultra | v8 | ultra | 16/32/1:512/64/1 |
| ultra1/140 | v8 | ultra | 16/32/1:512/64/1 |
| ultra1/170 | v8 | ultra | 16/32/1:512/64/1 |
| ultra1/200 | v8 | ultra | 16/32/1:512/64/1 |
| ultra2 | v8 | ultra2 | 16/32/1:512/64/1 |
| ultra2/1170 | v8 | ultra | 16/32/1:512/64/1 |
| ultra2/1200 | v8 | ultra | 16/32/1:1024/64/1 |
| ultra2/1300 | v8 | ultra2 | 16/32/1:2048/64/1 |
| ultra2/2170 | v8 | ultra | 16/32/1:512/64/1 |
| ultra2/2200 | v8 | ultra | 16/32/1:1024/64/1 |
| ultra2/2300 | v8 | ultra2 | 16/32/1:2048/64/1 |
| ultra2i | v8 | ultra2i | 16/32/1:512/64/1 |
| ultra3 | v8 | ultra3 | 64/32/4:8192/256/1 |
- generic or native
- 386 (equivalent to -386 option) or 486 (equivalent to -486 option)
- pentium (equivalent to -pentium option) or pentium_pro
- \a is ANSI C "alert" character
- \x is ANSI C hex escape
- bad octal digit
- base type is really type tag: name
- comment is replaced by "##"
- comment does not concatenate tokens
- declaration introduces new type in ANSI C: type tag
- macro replacement within a character constant
- macro replacement within a string literal
- no macro replacement within a character constant
- no macro replacement within a string literal
- operand treated as unsigned
- trigraph sequence replaced
- ANSI C treats constant as unsigned: operator
- semantics of operator change in ANSI C; use explicit cast
Article author: Andrei Olegovich
| make | |
| Linux | |
| Bash | |
| C | |
| C++ | |
| C++ Header files | |
| Configure make install | |
| DevOps | |
| Docker | |
| OpenBSD | |
| Errors make |