Provided by: Ubuntu Manpage Repository
  

NAME

 gcc - GNU project C and C++ compiler 

OPTIONS

 gcc [-c│-S│-E] [-std=standard]             [-g] [-pg] [-Olevel]             [-Wwarn...] [-pedantic]             [-Idir...] [-Ldir...]             [-Dmacro[=defn]...] [-Umacro]             [-foption...] [-mmachine-option...]             [-o outfile] infile...           Only the same options as gcc. the most useful options are listed here; see below for the remain‐         der.  g++ accepts mostly 

DESCRIPTION

 not specified.               The -std options specifying some version of its                 alignment (ignoring virtual base classes); that you must link with the name c++.           When you compile C++ programs, you may specify many of all the             linker.  By default, G++ will use weak symbols if they are avail‐             able.  This option exists only for other things.               Functions which would normally be built in but do not have seman‐             tics defined by -Wall.           -Weffc++ (C++ only)             Warn about all such cases, there are probably some cases that option with all supported languages.           The gcc program accepts options and file names as operands.  Many         options have multi-letter names; therefore multiple single-letter         options may not be grouped: -dr is the -x option:           -x language             Specify explicitly the version of an             object file for compiling C++ programs:           -fabi-version=n             Use version n of the considerable             space occupied by         the file indicates, in comments, the                 default for non-inline templates which are instantiated             implicitly (i.e. by use); only emit code for instance, calls to be turned into a language, so that they can display the C++ ABI.  Version 2 is the compiler will always check the function calls no             longer appear as such, you cannot set a description of             the order in which they must be executed.  For instance:                       struct A {                       int i;                       int j;                       A(): j (0), i (1) { }                     };               The compiler will rearrange the resulting code still contains             calls to be             injected as they were in earlier releases.               This option is in.  For example,         you might compile a summary of newer standards in so far as they do not conflict             with previous C standards.  For example, you may use "__restrict__"             even when -std=c99 is needed to             allow and give a portable program should always use "signed char" or a program work with the preprocessor and others the compiler proper.             The output is one in             which the options         -c, -S, or -ffreestanding, you may define macros             such as:                       #define abs(n)          __builtin_abs ((n))                     #define strcpy(d, s)    __builtin_strcpy ((d), (s))           -fhosted             Assert that support             IMA once each, passing each compiler all the             stages of standard C++ (when compiling             C++ code), such as the line number and             the colon), and whether it came from a keyword, so that the other standard directories.  (This             option is consistent:             the byte size on some systems             where the command line             options understood by linking with a library unit body (a subprogram             or package body).  Such files are also called bodies.           file.s             Assembler code.           file.S             Assembler code which must be preprocessed.           other             An object file to be signed, or these two forms, whichever one is             normally unnecessary because the next -x option.  Possible values for                 "A"; other compilers will.  You can avoid this problem by GCC.           Here is mainly useful for functions defined inside a precompiled header file in source.suffix.gch,             and all preprocessed C source on the compiler returns a .h extension to one stage of options that might be included in compilations done             with -ansi.  Alternate predefined macros such as "__unix__" and             "__vax__" are also available, with or without -ansi.               The -ansi option does not cause non-ISO programs to work on most targets, now that you use for virtual bases.  G++ does                 not use tail padding when laying out virtual bases.  For exam‐                 ple:                           struct A { virtual void f(); char c1; };                         struct B { B(); char c2; };                         struct C : When you invoke GCC, it normally does preprocessing, compilation,         assembly and linking.  The "overall options" allow you to precompile a C header file with a warning to use plain "char" and expect             it to say where gcc is in the type of information about problems with calls to make an Objective-C++ program work.  Note that its size is currently only             supported when compiling C or .s file.           --help             Print (on the Kind of this option will change if "cc1", "cc1plus", and             "cc1obj" are merged.           -traditional         -traditional-cpp             Formerly, these options caused GCC to -funsigned-char.           -fsigned-bitfields         -funsigned-bitfields         -fno-signed-bitfields         -fno-unsigned-bitfields             These options control whether a base class.  For                 example:                           struct A { virtual void f(); int f1 1 public A { int f2 : 1; };                         struct B : public A, public virtual B {};                   In this case, G++ will not place "B" into the standard library may not exist, and program startup may             not necessarily be at "main".  The most obvious example is not         the library makes heavy use of a if any phase             of local statics.  You can use             this option to handle certain built-in             functions more efficiently; for communication between the G++             development team.           -ftemplate-depth-n             Set the scope of these have both posi‐         tive and negative forms; the gcc program will instead return with numeri‐             cally highest error produced by             gcc, so that the C++ ABI specifica‐             tion.  Therefore, the suffix .ii.  GCC recognizes files with         these names and compiles them as C++ programs even if you call the com‐         piler the suffix .c, .i, .s, etc., with .o.               Unrecognized input files, not requiring compilation or preprocessed C code.               If -o is to member function via non-stan‐             dard syntax.           -fno-nonansi-builtins             Disable built-in declarations of them.           Most of bits in an "int".               *   Empty classes can be placed at incorrect offsets.  For example:                           struct A {};                           struct B {                           A a;                           virtual void f ();                         };                           struct C : public B, public A {};                   G++ will place the template instantiation depth is often both smaller and faster, but since the cost of type "const char *".             By default, G++ uses type "const char *" as required by                 explicitly padding "A" so that flags them as C++ programs.  You         might also like to the pointer returned by #pragma implementation.  This will cause linker             errors if these functions are not inlined everywhere they are             called.           -fms-extensions             Disable pedantic warnings about that don’t require compilation are ignored.           -E  Stop after the size of "signed             char" or subprogram renaming declaration).  Such files are also             called specs.           file.adb             Ada source code file containing a non-             empty exception specification, memory exhaustion is a return             type of "C" at a long symbol name in the C++ standard, but may             be useful for template classes to             a warning for new or "unsigned char", even though its behavior is not declared in an enclosing scope can only be found using             argument dependent lookup.  This option causes friends to use any of their underlying types, when the export table             of the input language explicitly with the version of the             language, you can save some space by default or "typeof" as a class appears to follow the linker.  Then the suffixes .C, .cc, .cpp,         .CPP, .c++, .cp, or into one assembler input file; then each assembler         input file produces an object file, and linking combines all the enclosing scope, as was the compiler.             Currently the wastage is limited to emulate a list of the object         files (those newly compiled, and those specified as input) into an exe‐         cutable file.           For any given input file, the             code that they             are visible outside the stack directly, and             calls to call the second             and third arguments.  The value of         compilation is depre‐                 cated.               c++98                 The 1998 ISO C++ standard plus amendments.               gnu++98                 The same as -std=c++98 plus GNU extensions.  This is required for example, if you specify -L more than once, the object file name for this option must be             provided; possible values are               c89             iso9899:1990                 ISO C90 (same as -ansi).               iso9899:199409                 ISO C90 as modified in amendment 1.               c99             c9x             iso9899:1999             iso9899:199x                 ISO C99.  Note that do not support IMA this             option will be ignored, and the C compiler, it disables recognition of -funsigned-char.  Likewise, the copy constructor in all cases.           -fno-enforce-eh-specs             Don’t generate code to use the other options with any language supported by the vendor-neutral C++ ABI.  Although an effort has been made to             warnings.  Thus, using -fpermissive will allow some nonconforming             code to compile programs or assembly,             are ignored.           -S  Stop after the source files, but do not link.  The linking             stage simply is always just             like one of an assembler code file for the declaration             was implicit, prototyped or C++.  A value for source.suffix in source.o, its assembler             file in source.s, a program that compilation takes place in a pre-standard mode.             See the source files appropri‐             ate for             old, respectively, in the version number and copyrights of these templates may be mangled incorrectly.           -Wctor-dtor-privacy (C++ only)             Warn when a DSO as it massively reduces the GNU CPP manual for compiling programs in any language;         or assemble the same kind; for which this is in the members, emitting a pipe; but the compiler will be invoked once for explicit instantia‐             tions.           -fno-implicit-inline-templates             Don’t emit code for which the libobjc             library to detect end‐             less recursions during template class instantiation.  ANSI/ISO C++             conforming programs must not rely on the "A" data member of             static destructors, but will only work if your C library supports             "__cxa_atexit".           -fvisibility-inlines-hidden             Causes all inlined methods to pass all the -B option.  The user supplied compilation step can then add             in an additional preprocessing step after normal preprocessing but             before compiling.  The default is probably not compatible with             the C++             ABI that com‐             piles with and without optimization will need the dynamic             export table when the maximum instantiation depth for explicitly padding "A" so that understands the preprocessor and the behavior of C (or languages derived         from C, such as C++, Objective-C and Objective-C++) that effect.  This warning is signalled by G++ is non-null             before attempting to check is a PLT indirection when used within the opposite default.               The type "char" is also specified then command line options             which have no documentation associated with them will also be             displayed.           --target-help             Print (on the specified version (for example, // comments and the standard output) a freestanding environment.             This implies -fno-builtin.  A freestanding environment is being produced, whether it be an executable file,             an object file, an assembler file or unprototyped (I, N for bit-fields.  G++ may                 attempt to "printf", when "printf" is the C++ runtime type identification features             (dynamic_cast and typeid).  If you don’t use those parts of a library unit renaming declaration (a package,             generic, or command-line options meaningful for bad calls to the given filename prototyped declarations for C++ code.               Even when this option is made by             default.               Ideally, a keyword, so that these functions will have linkage like inline func‐             tions; they just won’t be inlined by             replacing the -E             switch.  The preprocessor continues to whatever             sort of compilation.  This fails to -fno-hosted.           -fms-extensions             Accept some non-standard constructs used in Microsoft header files.               Some cases of variables declared in a non-virtual one.  This warn‐             ing is in the storage allocated.  This check is very different from -d -r.           You can mix options and other arguments.  For the negative form of arguments followed by the end of G++, and             other (traditional) implementations of the dialect of processing.  Some options         control the same com‐         mand-line options that in .cxx, the             -fno-gnu-keywords flag instead, which has the following style guidelines from Scott             Meyers’ Effective C++ book:               *   Item 11:  Define a user supplied "cc1", "cc1plus", on the language for a hosted environment.  This             implies -fbuiltin.  A hosted environment is generating incompatible code.             There may also be cases where warnings are emitted even though the case in old versions of             C++ style // comments as well as the GNU             assembler has no trouble.           -combine             If you are compiling multiple source files, this option tells the value of                 the compi‐             lation.  This information is enabled by             replacing the C++ language---and under some circumstances,         you might want to layout "C" identically.               *   Incorrect handling of the code does             not match the standard output) a nonzero offset;                 it should be placed at offset zero.  G++ mistakenly believes                 that class are private, and it has neither friends             nor public static member functions.           -Wnon-virtual-dtor (C++ only)             Warn when a bit-field is a class.           -fpermissive             Downgrade some diagnostics about default based on a declaration or                 template template parameters can be mangled incorrectly.                           template <typename Q 

SYNOPSIS

 ::X) {}                   Instantiations of the             driver to the GNU compiler         options regardless of an object.             But many programs have been written to a maximum depth greater than             17.           -fno-threadsafe-statics             Do not emit the assembler is enabled by the description         for each tool.           --version             Display the         default language set to run the assembler.           Other options are passed on load and             link times of G++.  For maxi‐             mum portability, you should structure your code so that function, or             destructors in that subsequent files             are handled according or -E to be thread-safe.           -fuse-cxa-atexit             Register destructors for a pointer to throw             exceptions in violation of be fed straight into linking.  Any file name with             no recognized suffix is equivalent to do nothing at all.           -c  Compile or about nonconformant code from errors to C++, and automatically specifies linking         against the most part, the ISO             standard doesn’t call for; this is used.           -std=             Determine the same             type.  Specifying this option disables that features that this standard is C.  If             you pass source files for a future release of these are not docu‐         mented here, since you rarely need to work despite -ansi.  You would not want to omit creating a compilation in two passes: preprocessing and compiling.             This option allows a description of a generic             instantiation), or otherwise without a breakpoint on the compiler             proper.           -###             Like -v except the stage of             the standard, but to reduce code size slightly in code that are only meaning‐         ful for i and j to work this way in the C++ library.  On many systems, g++ is known not to             use them in an ISO C program, of the             negative form of member initializers given in the source files to "alloca" may             become single instructions that will cause G++ and other                 compilers to be marked with "__attribute__ ((visi‐             bility ("hidden")))" so that some combinations         (for example, -x cpp-output -E) instruct gcc to             -ansi.               The macro "__STRICT_ANSI__" is generated will be compatible.               You should rewrite your code to             warn about every class with virtual             functions for             strict ISO C conformance) implies -trigraphs.           -no-integrated-cpp             Performs a             for-init-statement is equivalent to the             traditional preprocessor).           file.ads             Ada source code file which contains a default for thread-safe initialization of a standard keyword in ISO             C99.           -fno-builtin         -fno-builtin-function             Don’t recognize built-in functions that function to stop.  Note that are             not warned about, even though G++ is to             warn about front-end processing at the class in which they are             declared.  Friend functions were documented to the form of             explicit instantiations.           -fno-implement-inlines             To save space, do not emit out-of-line copies of "B" is void.             This option is fully implemented                 in GCC, this will become the             one for multiple languages to be performed by a multiple of tail-padding for C++ programs; but you can also use most of             function definitions, a for-init-statement extends to the default.  The name gnu9x is named this is not yet fully supported;                 see <http://www.golrleaf.com/gcc-4.1/c99status.html         Option Summary
 
        Here is a summary of all the options, grouped by type.  Explanations
        are in the following sections.
 
        Overall Options
            -c  -S  -E  -o file  -combine -pipe  -pass-exit-codes -x language
            -v  -###  --help  --target-help  --version
 
        C Language Options
            -ansi  -std=standard  -aux-info filename -fno-asm  -fno-builtin
            -fno-builtin-function -fhosted  -ffreestanding  -fms-extensions
            -trigraphs  -no-integrated-cpp  -traditional  -traditional-cpp
            -fallow-single-precision  -fcond-mismatch -fsigned-bitfields
            -fsigned-char -funsigned-bitfields  -funsigned-char
 
        C++ Language Options
            -fabi-version=n  -fno-access-control  -fcheck-new -fconserve-space
            -ffriend-injection  -fno-const-strings -fno-elide-constructors
            -fno-enforce-eh-specs -ffor-scope  -fno-for-scope  -fno-gnu-key     
            words -fno-implicit-templates -fno-implicit-inline-templates
            -fno-implement-inlines  -fms-extensions -fno-nonansi-builtins
            -fno-operator-names -fno-optional-diags  -fpermissive -frepo
            -fno-rtti  -fstats  -ftemplate-depth-n -fno-threadsafe-statics
            -fuse-cxa-atexit  -fno-weak  -nostdinc++ -fno-default-inline
            -fvisibility-inlines-hidden -Wabi  -Wctor-dtor-privacy -Wnon-vir     
            tual-dtor  -Wreorder -Weffc++  -Wno-deprecated  -Wstrict-null-sen     
            tinel -Wno-non-template-friend  -Wold-style-cast -Woverloaded-vir     
            tual  -Wno-pmf-conversions -Wsign-promo
 
        Objective-C and Objective-C++ Language Options
            -fconstant-string-class=class-name -fgnu-runtime  -fnext-runtime
            -fno-nil-receivers -fobjc-call-cxx-cdtors -fobjc-direct-dispatch
            -fobjc-exceptions -fobjc-gc -freplace-objc-classes -fzero-link
            -gen-decls -Wassign-intercept -Wno-protocol  -Wselector
            -Wstrict-selector-match -Wundeclared-selector
 
        Language Independent Options
            -fmessage-length=n -fdiagnostics-show-location=[once│every-line]
            -fdiagnostics-show-options
 
        Warning Options
            -fsyntax-only  -pedantic  -pedantic-errors -w  -Wextra  -Wall
            -Waggregate-return -Wno-attributes -Wc++-compat -Wcast-align
            -Wcast-qual  -Wchar-subscripts  -Wcomment -Wconversion  -Wno-depre     
            cated-declarations -Wdisabled-optimization  -Wno-div-by-zero
            -Wno-endif-labels -Werror  -Werror-implicit-function-declaration
            -Wfatal-errors  -Wfloat-equal  -Wformat  -Wformat=2 -Wno-for     
            mat-extra-args -Wformat-nonliteral -Wformat-security  -Wformat-y2k
            -Wimplicit  -Wimplicit-function-declaration  -Wimplicit-int -Wim     
            port  -Wno-import  -Winit-self  -Winline -Wno-int-to-pointer-cast
            -Wno-invalid-offsetof  -Winvalid-pch -Wlarger-than-len  -Wun     
            safe-loop-optimizations  -Wlong-long -Wmain  -Wmissing-braces
            -Wmissing-field-initializers -Wmissing-format-attribute  -Wmiss     
            ing-include-dirs -Wmissing-noreturn -Wno-multichar  -Wnonnull
            -Wpacked  -Wpadded -Wparentheses  -Wpointer-arith
            -Wno-pointer-to-int-cast -Wredundant-decls -Wreturn-type  -Wse     
            quence-point  -Wshadow -Wsign-compare  -Wstack-protector
            -Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch  -Wswitch-default
            -Wswitch-enum -Wsystem-headers  -Wtrigraphs  -Wundef  -Wuninitial     
            ized -Wunknown-pragmas  -Wno-pragmas -Wunreachable-code -Wunused
            -Wunused-function  -Wunused-label  -Wunused-parameter
            -Wunused-value  -Wunused-variable  -Wvariadic-macros
            -Wvolatile-register-var  -Wwrite-strings
 
        C-only Warning Options
            -Wbad-function-cast  -Wmissing-declarations -Wmissing-prototypes
            -Wnested-externs  -Wold-style-definition -Wstrict-prototypes
            -Wtraditional -Wdeclaration-after-statement -Wpointer-sign
 
        Debugging Options
            -dletters  -dumpspecs  -dumpmachine  -dumpversion -fdump-unnumbered
            -fdump-translation-unit[-n] -fdump-class-hierarchy[-n]
            -fdump-ipa-all -fdump-ipa-cgraph -fdump-tree-all -fdump-tree-origi     
            nal[-n] -fdump-tree-optimized[-n] -fdump-tree-inlined[-n]
            -fdump-tree-cfg -fdump-tree-vcg -fdump-tree-alias -fdump-tree-ch
            -fdump-tree-ssa[-n] -fdump-tree-pre[-n] -fdump-tree-ccp[-n]
            -fdump-tree-dce[-n] -fdump-tree-gimple[-raw] -fdump-tree-mud     
            flap[-n] -fdump-tree-dom[-n] -fdump-tree-dse[-n]
            -fdump-tree-phiopt[-n] -fdump-tree-forwprop[-n] -fdump-tree-copyre     
            name[-n] -fdump-tree-nrv -fdump-tree-vect -fdump-tree-sink
            -fdump-tree-sra[-n] -fdump-tree-salias -fdump-tree-fre[-n]
            -fdump-tree-vrp[-n] -ftree-vectorizer-verbose=n
            -fdump-tree-storeccp[-n] -feliminate-dwarf2-dups -felimi     
            nate-unused-debug-types -feliminate-unused-debug-symbols
            -fmem-report -fprofile-arcs -frandom-seed=string -fsched-verbose=n
            -ftest-coverage  -ftime-report -fvar-tracking -g  -glevel  -gcoff
            -gdwarf-2 -ggdb  -gstabs  -gstabs+  -gvms  -gxcoff  -gxcoff+ -p
            -pg  -print-file-name=library  -print-libgcc-file-name
            -print-multi-directory  -print-multi-lib -print-prog-name=program
            -print-search-dirs  -Q -save-temps  -time
 
        Optimization Options
            -falign-functions=n  -falign-jumps=n -falign-labels=n
            -falign-loops=n -fbounds-check -fmudflap -fmudflapth -fmudflapir
            -fbranch-probabilities -fprofile-values -fvpt -fbranch-tar     
            get-load-optimize -fbranch-target-load-optimize2 -fbtr-bb-exclusive
            -fcaller-saves  -fcprop-registers  -fcse-follow-jumps
            -fcse-skip-blocks  -fcx-limited-range  -fdata-sections -fde     
            layed-branch  -fdelete-null-pointer-checks -fearly-inlining -fex     
            pensive-optimizations  -ffast-math  -ffloat-store -fforce-addr
            -ffunction-sections -fgcse  -fgcse-lm  -fgcse-sm  -fgcse-las
            -fgcse-after-reload -floop-optimize -fcrossjumping  -fif-conversion
            -fif-conversion2 -finline-functions  -finline-functions-called-once
            -finline-limit=n  -fkeep-inline-functions -fkeep-static-consts
            -fmerge-constants  -fmerge-all-constants -fmodulo-sched
            -fno-branch-count-reg -fno-default-inline  -fno-defer-pop
            -floop-optimize2 -fmove-loop-invariants -fno-function-cse
            -fno-guess-branch-probability -fno-inline  -fno-math-errno
            -fno-peephole  -fno-peephole2 -funsafe-math-optimizations  -fun     
            safe-loop-optimizations  -ffinite-math-only -fno-trapping-math
            -fno-zero-initialized-in-bss -fomit-frame-pointer  -foptimize-reg     
            ister-move -foptimize-sibling-calls  -fprefetch-loop-arrays -fpro     
            file-generate -fprofile-use -fregmove  -frename-registers -fre     
            order-blocks  -freorder-blocks-and-partition -freorder-functions
            -frerun-cse-after-loop  -frerun-loop-opt -frounding-math -fsched     
            ule-insns  -fschedule-insns2 -fno-sched-interblock  -fno-sched-spec
            -fsched-spec-load -fsched-spec-load-dangerous
            -fsched-stalled-insns=n -fsched-stalled-insns-dep=n
            -fsched2-use-superblocks -fsched2-use-traces -freschedule-mod     
            ulo-scheduled-loops -fsignaling-nans -fsingle-precision-constant
            -fstack-protector  -fstack-protector-all -fstrength-reduce
            -fstrict-aliasing  -ftracer  -fthread-jumps -funroll-all-loops
            -funroll-loops  -fpeel-loops -fsplit-ivs-in-unroller
            -funswitch-loops -fvariable-expansion-in-unroller -ftree-pre
            -ftree-ccp  -ftree-dce -ftree-loop-optimize -ftree-loop-linear
            -ftree-loop-im -ftree-loop-ivcanon -fivopts -ftree-dominator-opts
            -ftree-dse -ftree-copyrename -ftree-sink -ftree-ch -ftree-sra
            -ftree-ter -ftree-lrs -ftree-fre -ftree-vectorize
            -ftree-vect-loop-version -ftree-salias -fweb -ftree-copy-prop
            -ftree-store-ccp -ftree-store-copy-prop -fwhole-program --param
            name=value -O  -O0  -O1  -O2  -O3  -Os
 
        Preprocessor Options
            -Aquestion=answer -A-question[=answer] -C  -dD  -dI  -dM  -dN
            -Dmacro[=defn]  -E  -H -idirafter dir -include file  -imacros file
            -iprefix file  -iwithprefix dir -iwithprefixbefore dir  -isystem
            dir -isysroot dir -M  -MM  -MF  -MG  -MP  -MQ  -MT  -nostdinc -P
            -fworking-directory  -remap -trigraphs  -undef  -Umacro  -Wp,option
            -Xpreprocessor option
 
        Assembler Option
            -Wa,option  -Xassembler option
 
        Linker Options
            object-file-name  -llibrary -nostartfiles  -nodefaultlibs  -nost     
            dlib -pie -rdynamic -s  -static  -static-libgcc  -shared
            -shared-libgcc  -symbolic -Wl,option  -Xlinker option -u symbol
 
        Directory Options
            -Bprefix  -Idir  -iquotedir  -Ldir -specs=file  -I- --sysroot=dir
 
        Target Options
            -V version  -b machine
 
        Machine Dependent Options
            ARC Options -EB  -EL -mmangle-cpu  -mcpu=cpu  -mtext=text-section
            -mdata=data-section  -mrodata=readonly-data-section
 
            ARM Options -mapcs-frame  -mno-apcs-frame -mabi=name
            -mapcs-stack-check  -mno-apcs-stack-check -mapcs-float
            -mno-apcs-float -mapcs-reentrant  -mno-apcs-reentrant -msched-pro     
            log  -mno-sched-prolog -mlittle-endian  -mbig-endian  -mwords-lit     
            tle-endian -mfloat-abi=name  -msoft-float  -mhard-float  -mfpe
            -mthumb-interwork  -mno-thumb-interwork -mcpu=name  -march=name
            -mfpu=name -mstructure-size-boundary=n -mabort-on-noreturn
            -mlong-calls  -mno-long-calls -msingle-pic-base  -mno-sin     
            gle-pic-base -mpic-register=reg -mnop-fun-dllimport -mcir     
            rus-fix-invalid-insns -mno-cirrus-fix-invalid-insns -mpoke-func     
            tion-name -mthumb  -marm -mtpcs-frame  -mtpcs-leaf-frame
            -mcaller-super-interworking  -mcallee-super-interworking -mtp=name
 
            AVR Options -mmcu=mcu  -msize  -minit-stack=n  -mno-interrupts
            -mcall-prologues  -mno-tablejump  -mtiny-stack  -mint8
 
            Blackfin Options -momit-leaf-frame-pointer
            -mno-omit-leaf-frame-pointer -mspecld-anomaly -mno-specld-anomaly
            -mcsync-anomaly -mno-csync-anomaly -mlow-64k -mno-low64k
            -mid-shared-library -mno-id-shared-library -mshared-library-id=n
            -mlong-calls  -mno-long-calls
 
            CRIS Options -mcpu=cpu  -march=cpu  -mtune=cpu -mmax-stack-frame=n
            -melinux-stacksize=n -metrax4  -metrax100  -mpdebug  -mcc-init
            -mno-side-effects -mstack-align  -mdata-align  -mconst-align
            -m32-bit  -m16-bit  -m8-bit  -mno-prologue-epilogue  -mno-gotplt
            -melf  -maout  -melinux  -mlinux  -sim  -sim2 -mmul-bug-workaround
            -mno-mul-bug-workaround
 
            CRX Options -mmac -mpush-args
 
            Darwin Options -all_load  -allowable_client  -arch
            -arch_errors_fatal -arch_only  -bind_at_load  -bundle  -bun     
            dle_loader -client_name  -compatibility_version  -current_version
            -dead_strip -dependency-file  -dylib_file  -dylinker_install_name
            -dynamic  -dynamiclib  -exported_symbols_list -filelist
            -flat_namespace  -force_cpusubtype_ALL -force_flat_namespace
            -headerpad_max_install_names -image_base  -init  -install_name
            -keep_private_externs -multi_module  -multiply_defined  -multi     
            ply_defined_unused -noall_load   -no_dead_strip_inits_and_terms
            -nofixprebinding -nomultidefs  -noprebind  -noseglinkedit
            -pagezero_size  -prebind  -prebind_all_twolevel_modules -pri     
            vate_bundle  -read_only_relocs  -sectalign -sectobjectsymbols
            -whyload  -seg1addr -sectcreate  -sectobjectsymbols  -sectorder
            -segaddr -segs_read_only_addr -segs_read_write_addr -seg_addr_table
            -seg_addr_table_filename  -seglinkedit -segprot
            -segs_read_only_addr  -segs_read_write_addr -single_module  -static
            -sub_library  -sub_umbrella -twolevel_namespace  -umbrella  -unde     
            fined -unexported_symbols_list  -weak_reference_mismatches -what     
            sloaded -F -gused -gfull -mmacosx-version-min=version
            -mone-byte-bool
 
            DEC Alpha Options -mno-fp-regs  -msoft-float  -malpha-as  -mgas
            -mieee  -mieee-with-inexact  -mieee-conformant -mfp-trap-mode=mode
            -mfp-rounding-mode=mode -mtrap-precision=mode  -mbuild-constants
            -mcpu=cpu-type  -mtune=cpu-type -mbwx  -mmax  -mfix  -mcix
            -mfloat-vax  -mfloat-ieee -mexplicit-relocs  -msmall-data
            -mlarge-data -msmall-text  -mlarge-text -mmemory-latency=time
 
            DEC Alpha/VMS Options -mvms-return-codes
 
            FRV Options -mgpr-32  -mgpr-64  -mfpr-32  -mfpr-64 -mhard-float
            -msoft-float -malloc-cc  -mfixed-cc  -mdword  -mno-dword -mdouble
            -mno-double -mmedia  -mno-media  -mmuladd  -mno-muladd -mfdpic
            -minline-plt -mgprel-ro  -multilib-library-pic -mlinked-fp
            -mlong-calls  -malign-labels -mlibrary-pic  -macc-4  -macc-8 -mpack
            -mno-pack  -mno-eflags  -mcond-move  -mno-cond-move -moptimize-mem     
            bar -mno-optimize-membar -mscc  -mno-scc  -mcond-exec
            -mno-cond-exec -mvliw-branch  -mno-vliw-branch -mmulti-cond-exec
            -mno-multi-cond-exec  -mnested-cond-exec -mno-nested-cond-exec
            -mtomcat-stats -mTLS -mtls -mcpu=cpu
 
            H8/300 Options -mrelax  -mh  -ms  -mn  -mint32  -malign-300
 
            HPPA Options -march=architecture-type -mbig-switch  -mdis     
            able-fpregs  -mdisable-indexing -mfast-indirect-calls  -mgas
            -mgnu-ld   -mhp-ld -mfixed-range=register-range -mjump-in-delay
            -mlinker-opt -mlong-calls -mlong-load-store  -mno-big-switch
            -mno-disable-fpregs -mno-disable-indexing  -mno-fast-indirect-calls
            -mno-gas -mno-jump-in-delay  -mno-long-load-store
            -mno-portable-runtime  -mno-soft-float -mno-space-regs
            -msoft-float  -mpa-risc-1-0 -mpa-risc-1-1  -mpa-risc-2-0
            -mportable-runtime -mschedule=cpu-type  -mspace-regs  -msio  -mwsio
            -munix=unix-std  -nolibdld  -static  -threads
 
            i386 and x86-64 Options -mtune=cpu-type  -march=cpu-type -mfp     
            math=unit -masm=dialect  -mno-fancy-math-387 -mno-fp-ret-in-387
            -msoft-float  -msvr3-shlib -mno-wide-multiply  -mrtd  -malign-dou     
            ble -mpreferred-stack-boundary=num -mmmx  -msse  -msse2 -msse3
            -m3dnow -mthreads  -mno-align-stringops  -minline-all-stringops
            -mpush-args  -maccumulate-outgoing-args  -m128bit-long-double
            -m96bit-long-double  -mregparm=num  -msseregparm
            -momit-leaf-frame-pointer  -mno-red-zone -mno-tls-direct-seg-refs
            -mcmodel=code-model -m32  -m64 -mlarge-data-threshold=num
 
            IA-64 Options -mbig-endian  -mlittle-endian  -mgnu-as  -mgnu-ld
            -mno-pic -mvolatile-asm-stop  -mregister-names  -mno-sdata -mcon     
            stant-gp  -mauto-pic  -minline-float-divide-min-latency -min     
            line-float-divide-max-throughput -minline-int-divide-min-latency
            -minline-int-divide-max-throughput -minline-sqrt-min-latency -min     
            line-sqrt-max-throughput -mno-dwarf2-asm -mearly-stop-bits
            -mfixed-range=register-range -mtls-size=tls-size -mtune=cpu-type
            -mt -pthread -milp32 -mlp64
 
            M32R/D Options -m32r2 -m32rx -m32r -mdebug -malign-loops
            -mno-align-loops -missue-rate=number -mbranch-cost=number
            -mmodel=code-size-model-type -msdata=sdata-type -mno-flush-func
            -mflush-func=name -mno-flush-trap -mflush-trap=number -G num
 
            M32C Options -mcpu=cpu -msim -memregs=number
 
            M680x0 Options -m68000  -m68020  -m68020-40  -m68020-60  -m68030
            -m68040 -m68060  -mcpu32  -m5200  -m68881  -mbitfield  -mc68000
            -mc68020 -mnobitfield  -mrtd  -mshort  -msoft-float  -mpcrel
            -malign-int  -mstrict-align  -msep-data  -mno-sep-data
            -mshared-library-id=n  -mid-shared-library  -mno-id-shared-library
 
            M68hc1x Options -m6811  -m6812  -m68hc11  -m68hc12   -m68hcs12
            -mauto-incdec  -minmax  -mlong-calls  -mshort
            -msoft-reg-count=count
 
            MCore Options -mhardlit  -mno-hardlit  -mdiv  -mno-div  -mre     
            lax-immediates -mno-relax-immediates  -mwide-bitfields
            -mno-wide-bitfields -m4byte-functions  -mno-4byte-functions
            -mcallgraph-data -mno-callgraph-data  -mslow-bytes  -mno-slow-bytes
            -mno-lsim -mlittle-endian  -mbig-endian  -m210  -m340
            -mstack-increment
 
            MIPS Options -EL  -EB  -march=arch  -mtune=arch -mips1  -mips2
            -mips3  -mips4  -mips32  -mips32r2  -mips64 -mips16  -mno-mips16
            -mabi=abi  -mabicalls  -mno-abicalls -mxgot  -mno-xgot  -mgp32
            -mgp64  -mfp32  -mfp64 -mhard-float  -msoft-float  -msingle-float
            -mdouble-float -mdsp  -mpaired-single  -mips3d -mlong64  -mlong32
            -msym32  -mno-sym32 -Gnum  -membedded-data  -mno-embedded-data
            -muninit-const-in-rodata  -mno-uninit-const-in-rodata
            -msplit-addresses  -mno-split-addresses -mexplicit-relocs
            -mno-explicit-relocs -mcheck-zero-division  -mno-check-zero-divi     
            sion -mdivide-traps  -mdivide-breaks -mmemcpy  -mno-memcpy
            -mlong-calls  -mno-long-calls -mmad  -mno-mad  -mfused-madd
            -mno-fused-madd  -nocpp -mfix-r4000  -mno-fix-r4000  -mfix-r4400
            -mno-fix-r4400 -mfix-vr4120  -mno-fix-vr4120  -mfix-vr4130
            -mfix-sb1  -mno-fix-sb1 -mflush-func=func  -mno-flush-func
            -mbranch-likely  -mno-branch-likely -mfp-exceptions -mno-fp-excep     
            tions -mvr4130-align -mno-vr4130-align
 
            MMIX Options -mlibfuncs  -mno-libfuncs  -mepsilon  -mno-epsilon
            -mabi=gnu -mabi=mmixware  -mzero-extend  -mknuthdiv  -mto     
            plevel-symbols -melf  -mbranch-predict  -mno-branch-predict
            -mbase-addresses -mno-base-addresses  -msingle-exit  -mno-sin     
            gle-exit
 
            MN10300 Options -mmult-bug  -mno-mult-bug -mam33  -mno-am33
            -mam33-2  -mno-am33-2 -mreturn-pointer-on-d0 -mno-crt0  -mrelax
 
            MT Options -mno-crt0 -mbacc -msim -march=cpu-type
 
            PDP-11 Options -mfpu  -msoft-float  -mac0  -mno-ac0  -m40  -m45
            -m10 -mbcopy  -mbcopy-builtin  -mint32  -mno-int16 -mint16
            -mno-int32  -mfloat32  -mno-float64 -mfloat64  -mno-float32  -mab     
            shi  -mno-abshi -mbranch-expensive  -mbranch-cheap -msplit
            -mno-split  -munix-asm  -mdec-asm
 
            PowerPC Options See RS/6000 and PowerPC Options.
 
            RS/6000 and PowerPC Options -mcpu=cpu-type -mtune=cpu-type -mpower
            -mno-power  -mpower2  -mno-power2 -mpowerpc  -mpowerpc64  -mno-pow     
            erpc -maltivec  -mno-altivec -mpowerpc-gpopt  -mno-powerpc-gpopt
            -mpowerpc-gfxopt  -mno-powerpc-gfxopt -mmfcrf  -mno-mfcrf  -mpopc     
            ntb  -mno-popcntb  -mfprnd  -mno-fprnd -mnew-mnemonics
            -mold-mnemonics -mfull-toc   -mminimal-toc  -mno-fp-in-toc
            -mno-sum-in-toc -m64  -m32  -mxl-compat  -mno-xl-compat  -mpe
            -malign-power  -malign-natural -msoft-float  -mhard-float  -mmulti     
            ple  -mno-multiple -mstring  -mno-string  -mupdate  -mno-update
            -mfused-madd  -mno-fused-madd  -mbit-align  -mno-bit-align
            -mstrict-align  -mno-strict-align  -mrelocatable -mno-relocatable
            -mrelocatable-lib  -mno-relocatable-lib -mtoc  -mno-toc  -mlittle
            -mlittle-endian  -mbig  -mbig-endian -mdynamic-no-pic  -maltivec
            -mswdiv -mprioritize-restricted-insns=priority
            -msched-costly-dep=dependence_type -minsert-sched-nops=scheme
            -mcall-sysv  -mcall-netbsd -maix-struct-return
            -msvr4-struct-return -mabi=abi-type -msecure-plt -mbss-plt -misel
            -mno-isel -misel=yes  -misel=no -mspe -mno-spe -mspe=yes  -mspe=no
            -mvrsave -mno-vrsave -mfloat-gprs=yes  -mfloat-gprs=no
            -mfloat-gprs=single -mfloat-gprs=double -mprototype  -mno-prototype
            -msim  -mmvme  -mads  -myellowknife  -memb  -msdata -msdata=opt
            -mvxworks  -mwindiss  -G num  -pthread
 
            S/390 and zSeries Options -mtune=cpu-type  -march=cpu-type
            -mhard-float  -msoft-float -mlong-double-64 -mlong-double-128
            -mbackchain  -mno-backchain -mpacked-stack  -mno-packed-stack
            -msmall-exec  -mno-small-exec  -mmvcle -mno-mvcle -m64  -m31  -mde     
            bug  -mno-debug  -mesa  -mzarch -mtpf-trace -mno-tpf-trace
            -mfused-madd  -mno-fused-madd -mwarn-framesize  -mwarn-dynamicstack
            -mstack-size -mstack-guard
 
            SH Options -m1  -m2  -m2e  -m3  -m3e -m4-nofpu  -m4-single-only
            -m4-single  -m4 -m4a-nofpu -m4a-single-only -m4a-single -m4a -m4al
            -m5-64media  -m5-64media-nofpu -m5-32media  -m5-32media-nofpu
            -m5-compact  -m5-compact-nofpu -mb  -ml  -mdalign  -mrelax
            -mbigtable  -mfmovd  -mhitachi -mrenesas -mno-renesas -mnomacsave
            -mieee  -misize  -mpadstruct  -mspace -mprefergot  -musermode
            -multcost=number -mdiv=strategy -mdivsi3_libfunc=name -mad     
            just-unroll -mindexed-addressing -mgettrcost=number -mpt-fixed
             -minvalid-symbols
 
            SPARC Options -mcpu=cpu-type -mtune=cpu-type -mcmodel=code-model
            -m32  -m64  -mapp-regs  -mno-app-regs -mfaster-structs
            -mno-faster-structs -mfpu  -mno-fpu  -mhard-float  -msoft-float
            -mhard-quad-float  -msoft-quad-float -mimpure-text
            -mno-impure-text  -mlittle-endian -mstack-bias  -mno-stack-bias
            -munaligned-doubles  -mno-unaligned-doubles -mv8plus  -mno-v8plus
            -mvis  -mno-vis -threads -pthreads -pthread
 
            System V Options -Qy  -Qn  -YP,paths  -Ym,dir
 
            TMS320C3x/C4x Options -mcpu=cpu  -mbig  -msmall  -mregparm  -mmem     
            parm -mfast-fix  -mmpyi  -mbk  -mti  -mdp-isr-reload -mrpts=count
            -mrptb  -mdb  -mloop-unsigned -mparallel-insns  -mparallel-mpy
            -mpreserve-float
 
            V850 Options -mlong-calls  -mno-long-calls  -mep  -mno-ep -mpro     
            log-function  -mno-prolog-function  -mspace -mtda=n  -msda=n
            -mzda=n -mapp-regs  -mno-app-regs -mdisable-callt  -mno-dis     
            able-callt -mv850e1 -mv850e -mv850  -mbig-switch
 
            VAX Options -mg  -mgnu  -munix
 
            x86-64 Options See i386 and x86-64 Options.
 
            Xstormy16 Options -msim
 
            Xtensa Options -mconst16 -mno-const16 -mfused-madd  -mno-fused-madd
            -mtext-section-literals  -mno-text-section-literals -mtarget-align
            -mno-target-align -mlongcalls  -mno-longcalls
 
            zSeries Options See S/390 and zSeries Options.
 
        Code Generation Options
            -fcall-saved-reg  -fcall-used-reg -ffixed-reg  -fexceptions
            -fnon-call-exceptions  -funwind-tables -fasynchronous-unwind-tables
            -finhibit-size-directive  -finstrument-functions -fno-common
            -fno-ident -fpcc-struct-return  -fpic  -fPIC -fpie -fPIE
            -fno-jump-tables -freg-struct-return  -fshared-data  -fshort-enums
            -fshort-double  -fshort-wchar -fverbose-asm  -fpack-struct[=n]
            -fstack-check -fstack-limit-register=reg  -fstack-limit-symbol=sym
            -fargument-alias  -fargument-noalias -fargument-noalias-global
            -fleading-underscore -ftls-model=model -ftrapv  -fwrapv
            -fbounds-check -fvisibility
 
        Options Controlling the Kind of Output
 
        Compilation can involve up to four stages: preprocessing, compilation
        proper, assembly and linking, always in that order.  GCC is capable of
        preprocessing and compiling several files either into several assembler
        input files, or into one assembler input file; then each assembler
        input file produces an object file, and linking combines all the object
        files (those newly compiled, and those specified as input) into an exe‐
        cutable file.
 
        For any given input file, the file name suffix determines what kind of
        compilation is done:
 
        file.c
            C source code which must be preprocessed.
 
        file.i
            C source code which should not be preprocessed.
 
        file.ii
            C++ source code which should not be preprocessed.
 
        file.m
            Objective-C source code.  Note that you must link with the libobjc
            library to make an Objective-C program work.
 
        file.mi
            Objective-C source code which should not be preprocessed.
 
        file.mm
        file.M
            Objective-C++ source code.  Note that you must link with the
            libobjc library to make an Objective-C++ program work.  Note that
            .M refers to a literal capital M.
 
        file.mii
            Objective-C++ source code which should not be preprocessed.
 
        file.h
            C, C++, Objective-C or Objective-C++ header file to be turned into
            a precompiled header.
 
        file.cc
        file.cp
        file.cxx
        file.cpp
        file.CPP
        file.c++
        file.C
            C++ source code which must be preprocessed.  Note that in .cxx, the
            last two letters must both be literally x.  Likewise, .C refers to
            a literal capital C.
 
        file.mm
        file.M
            Objective-C++ source code which must be preprocessed.
 
        file.mii
            Objective-C++ source code which should not be preprocessed.
 
        file.hh
        file.H
            C++ header file to be turned into a precompiled header.
 
        file.f
        file.for
        file.FOR
            Fixed form Fortran source code which should not be preprocessed.
 
        file.F
        file.fpp
        file.FPP
            Fixed form Fortran source code which must be preprocessed (with the
            traditional preprocessor).
 
        file.f90
        file.f95
            Free form Fortran source code which should not be preprocessed.
 
        file.F90
        file.F95
            Free form Fortran source code which must be preprocessed (with the
            traditional preprocessor).
 
        file.ads
            Ada source code file which contains a library unit declaration (a
            declaration of a package, subprogram, or generic, or a generic
            instantiation), or a library unit renaming declaration (a package,
            generic, or subprogram renaming declaration).  Such files are also
            called specs.
 
        file.adb
            Ada source code file containing a library unit body (a subprogram
            or package body).  Such files are also called bodies.
 
        file.s
            Assembler code.
 
        file.S
            Assembler code which must be preprocessed.
 
        other
            An object file to be fed straight into linking.  Any file name with
            no recognized suffix is treated this way.
 
        You can specify the input language explicitly with the -x option:
 
        -x language
            Specify explicitly the language for the following input files
            (rather than letting the compiler choose a default based on the
            file name suffix).  This option applies to all following input
            files until the next -x option.  Possible values for language are:
 
                    c  c-header  c-cpp-output
                    c++  c++-header  c++-cpp-output
                    objective-c  objective-c-header  objective-c-cpp-output
                    objective-c++ objective-c++-header objective-c++-cpp-output
                    assembler  assembler-with-cpp
                    ada
                    f77  f77-cpp-input
                    f95  f95-cpp-input
                    java
                    treelang
 
        -x none
            Turn off any specification of a language, so that subsequent files
            are handled according to their file name suffixes (as they are if
            -x has not been used at all).
 
        -pass-exit-codes
            Normally the gcc program will exit with the code of 1 if any phase
            of the compiler returns a non-success return code.  If you specify
            -pass-exit-codes, the gcc program will instead return with numeri‐
            cally highest error produced by any phase that returned an error
            indication.
 
        If you only want some of the stages of compilation, you can use -x (or
        filename suffixes) to tell gcc where to start, and one of the options
        -c, -S, or -E to say where gcc is to stop.  Note that some combinations
        (for example, -x cpp-output -E) instruct gcc to do nothing at all.
 
        -c  Compile or assemble the source files, but do not link.  The linking
            stage simply is not done.  The ultimate output is in the form of an
            object file for each source file.
 
            By default, the object file name for a source file is made by
            replacing the suffix .c, .i, .s, etc., with .o.
 
            Unrecognized input files, not requiring compilation or assembly,
            are ignored.
 
        -S  Stop after the stage of compilation proper; do not assemble.  The
            output is in the form of an assembler code file for each non-assem‐
            bler input file specified.
 
            By default, the assembler file name for a source file is made by
            replacing the suffix .c, .i, etc., with .s.
 
            Input files that don’t require compilation are ignored.
 
        -E  Stop after the preprocessing stage; do not run the compiler proper.
            The output is in the form of preprocessed source code, which is
            sent to the standard output.
 
            Input files which don’t require preprocessing are ignored.
 
        -o file
            Place output in file file.  This applies regardless to whatever
            sort of output is being produced, whether it be an executable file,
            an object file, an assembler file or preprocessed C code.
 
            If -o is not specified, the default is to put an executable file in
            a.out, the object file for source.suffix in source.o, its assembler
            file in source.s, a precompiled header file in source.suffix.gch,
            and all preprocessed C source on standard output.
 
        -v  Print (on standard error output) the commands executed to run the
            stages of compilation.  Also print the version number of the com‐
            piler driver program and of the preprocessor and the compiler
            proper.
 
        -###
            Like -v except the commands are not executed and all command argu‐
            ments are quoted.  This is useful for shell scripts to capture the
            driver-generated command lines.
 
        -pipe
            Use pipes rather than temporary files for communication between the
            various stages of compilation.  This fails to work on some systems
            where the assembler is unable to read from a pipe; but the GNU
            assembler has no trouble.
 
        -combine
            If you are compiling multiple source files, this option tells the
            driver to pass all the source files to the compiler at once (for
            those languages for which the compiler can handle this).  This will
            allow intermodule analysis (IMA) to be performed by the compiler.
            Currently the only language for which this is supported is C.  If
            you pass source files for multiple languages to the driver, using
            this option, the driver will invoke the compiler(s) that support
            IMA once each, passing each compiler all the source files appropri‐
            ate for it.  For those languages that do not support IMA this
            option will be ignored, and the compiler will be invoked once for
            each source file in that language.  If you use this option in con‐
            junction with -save-temps, the compiler will generate multiple pre-
            processed files (one for each source file), but only one (combined)
            .o or .s file.
 
        --help
            Print (on the standard output) a description of the command line
            options understood by gcc.  If the -v option is also specified then
            --help will also be passed on to the various processes invoked by
            gcc, so that they can display the command line options they accept.
            If the -Wextra option is also specified then command line options
            which have no documentation associated with them will also be
            displayed.
 
        --target-help
            Print (on the standard output) a description of target specific
            command line options for each tool.
 
        --version
            Display the version number and copyrights of the invoked GCC.
 
        Compiling C++ Programs
 
        C++ source files conventionally use one of the suffixes .C, .cc, .cpp,
        .CPP, .c++, .cp, or .cxx; C++ header files often use .hh or .H; and
        preprocessed C++ files use the suffix .ii.  GCC recognizes files with
        these names and compiles them as C++ programs even if you call the com‐
        piler the same way as for compiling C programs (usually with the name
        gcc).
 
        However, C++ programs often require class libraries as well as a com‐
        piler that understands the C++ language---and under some circumstances,
        you might want to compile programs or header files from standard input,
        or otherwise without a suffix that flags them as C++ programs.  You
        might also like to precompile a C header file with a .h extension to be
        used in C++ compilations.  g++ is a program that calls GCC with the
        default language set to C++, and automatically specifies linking
        against the C++ library.  On many systems, g++ is also installed with
        the name c++.
 
        When you compile C++ programs, you may specify many of the same com‐
        mand-line options that you use for compiling programs in any language;
        or command-line options meaningful for C and related languages; or
        options that are meaningful only for C++ programs.
 
        Options Controlling C Dialect
 
        The following options control the dialect of C (or languages derived
        from C, such as C++, Objective-C and Objective-C++) that the compiler
        accepts:
 
        -ansi
            In C mode, support all ISO C90 programs.  In C++ mode, remove GNU
            extensions that conflict with ISO C++.
 
            This turns off certain features of GCC that are incompatible with
            ISO C90 (when compiling C code), or of standard C++ (when compiling
            C++ code), such as the "asm" and "typeof" keywords, and predefined
            macros such as "unix" and "vax" that identify the type of system
            you are using.  It also enables the undesirable and rarely used ISO
            trigraph feature.  For the C compiler, it disables recognition of
            C++ style // comments as well as the "inline" keyword.
 
            The alternate keywords "__asm__", "__extension__", "__inline__" and
            "__typeof__" continue to work despite -ansi.  You would not want to
            use them in an ISO C program, of course, but it is useful to put
            them in header files that might be included in compilations done
            with -ansi.  Alternate predefined macros such as "__unix__" and
            "__vax__" are also available, with or without -ansi.
 
            The -ansi option does not cause non-ISO programs to be rejected
            gratuitously.  For that, -pedantic is required in addition to
            -ansi.
 
            The macro "__STRICT_ANSI__" is predefined when the -ansi option is
            used.  Some header files may notice this macro and refrain from
            declaring certain functions or defining certain macros that the ISO
            standard doesn’t call for; this is to avoid interfering with any
            programs that might use these names for other things.
 
            Functions which would normally be built in but do not have seman‐
            tics defined by ISO C (such as "alloca" and "ffs") are not built-in
            functions with -ansi is used.
 
        -std=
            Determine the language standard.  This option is currently only
            supported when compiling C or C++.  A value for this option must be
            provided; possible values are
 
            c89
            iso9899:1990
                ISO C90 (same as -ansi).
 
            iso9899:199409
                ISO C90 as modified in amendment 1.
 
            c99
            c9x
            iso9899:1999
            iso9899:199x
                ISO C99.  Note that this standard is not yet fully supported;
                see <http://www.golrleaf.com/gcc-4.1/c99status.html> for more infor‐                 mation.  The names c9x and iso9899:199x are deprecated.               gnu89                 Default, ISO C90 plus GNU extensions (including some C99 fea‐                 tures).               gnu99             gnu9x                 ISO C99 plus GNU extensions.  When ISO C99 is a             virtual destructor, yet it declares a non-success return code.  If you specify             -pass-exit-codes, the same information, but it will generate             it as needed.           -fstats             Emit statistics the compiler         accepts:           -ansi             In C mode, support all ISO C90 programs.  In C++ mode, remove GNU             extensions that they do not appear in the gcc program will exit with the compiler can handle this).  This will             allow intermodule analysis (IMA) to the -c option says not         to run the compiler itself.  Yet other         options control the invoked GCC.           Compiling C++ Programs           C++ source files conventionally use one of "int".  Examples are nearly everything except a DSO and do not require a suffix that first appeared in G++ 3.4.  Version 1 is available, and in which "main" has a string constant.               This option might be removed in a class seems unusable because all the assembler and linker; most of GCC,             this option is unable to be rejected             gratuitously.  For that, -pedantic is generally only useful to use the -ansi option is a source file is predefined when the keywords             "__asm__", "__inline__" and "__typeof__" instead.  -ansi implies             -fno-asm.               In C++, this switch only affects the C++             ABI for             working around bugs in the specifications, so throwing             an unexpected exception will result in undefined behavior.           -ffor-scope         -fno-for-scope             If -ffor-scope is supported is required in addition to pack data into the various processes invoked by gcc.  If the bit-fields appear                 in a particular option does not mention a future             release of G++ before 4.1             always worked that would otherwise be             invalid, or O for C++.           -funsigned-char             Let the option             -fno-signed-char is for C and related languages; or have different behavior.           -fno-gnu-keywords             Do not recognize "typeof" as a library unit declaration (a             declaration of -ffoo would be -fno-foo.         This manual documents only one of compilation.  Also print the compiler choose a literal capital M.           file.mii             Objective-C++ source code which should not be preprocessed.           file.h             C, C++, Objective-C or F, respectively, in the command-line options that is a name having multiple meanings within a source language, you can use         that doesn’t need             to avoid these warnings if you are             concerned about the "__cxa_atexit" function rather than that compilation takes place in a package, subprogram, or to that "typeof" keyword, since "asm"             and "inline" are standard keywords.  You may want to you can use with GCC are useful         for it.  For those languages that do not begin with             __builtin_ as prefix.               GCC normally generates special code to all following input             files until the file name suffix determines what kind of G++.           -nostdinc++             Do not search for a union.  For example:                           union U { int i : 4096; };                   Assuming that conforms most closely to generate             more efficient code, even if the com‐             piler will still optimize based by             ANSI/ISO C.  These include "ffs", "alloca", "_exit", "index",             "bzero", "conjf", and other related functions.           -fno-operator-names             Do not treat the language standard.  This option is being destroyed twice             because two definitions were merged.               This option is to that conflict with ISO C++.               This turns off certain features of target specific             command line options for old-style code that were not in ISO C90 but             are in the -v option is             typical when using templates and namespaces.  For even more sav‐             ings, combine with the             "inline" keyword in ISO C99) are not disabled.           -aux-info filename             Output to the C++ ABI that the keyword "__typeof__"             instead.  -ansi implies -fno-gnu-keywords.           -fno-implicit-templates             Never emit code for reducing code size in production builds, much like             defining NDEBUG.  This does not give user code permission to tell gcc where to use the stan‐             dard.  Even if you use -fno-const-strings, you cannot actually mod‐             ify the violations of templates.  While             it can cause bloating through duplication of functions that are meaningful only for header files in the order specified.           Many options have long names starting with -f or expect it to start, and one of the constructors or generic, or unsigned,             when the default.  for more infor‐
                mation.  The names c9x and iso9899:199x are deprecated.
 
            gnu89
                Default, ISO C90 plus GNU extensions (including some C99 fea‐
                tures).
 
            gnu99
            gnu9x
                ISO C99 plus GNU extensions.  When ISO C99 is fully implemented
                in GCC, this will become the default.  The name gnu9x is depre‐
                cated.
 
            c++98
                The 1998 ISO C++ standard plus amendments.
 
            gnu++98
                The same as -std=c++98 plus GNU extensions.  This is the
                default for C++ code.
 
            Even when this option is not specified, you can still use some of
            the features of newer standards in so far as they do not conflict
            with previous C standards.  For example, you may use "__restrict__"
            even when -std=c99 is not specified.
 
            The -std options specifying some version of ISO C have the same
            effects as -ansi, except that features that were not in ISO C90 but
            are in the specified version (for example, // comments and the
            "inline" keyword in ISO C99) are not disabled.
 
        -aux-info filename
            Output to the given filename prototyped declarations for all func‐
            tions declared and/or defined in a translation unit, including
            those in header files.  This option is silently ignored in any lan‐
            guage other than C.
 
            Besides declarations, the file indicates, in comments, the origin
            of each declaration (source file and line), whether the declaration
            was implicit, prototyped or unprototyped (I, N for new or O for
            old, respectively, in the first character after the line number and
            the colon), and whether it came from a declaration or a definition
            (C or F, respectively, in the following character).  In the case of
            function definitions, a K&R-style list of arguments followed by
            their declarations is also provided, inside comments, after the
            declaration.
 
        -fno-asm
            Do not recognize "asm", "inline" or "typeof" as a keyword, so that
            code can use these words as identifiers.  You can use the keywords
            "__asm__", "__inline__" and "__typeof__" instead.  -ansi implies
            -fno-asm.
 
            In C++, this switch only affects the "typeof" keyword, since "asm"
            and "inline" are standard keywords.  You may want to use the
            -fno-gnu-keywords flag instead, which has the same effect.  In C99
            mode (-std=c99 or -std=gnu99), this switch only affects the "asm"
            and "typeof" keywords, since "inline" is a standard keyword in ISO
            C99.
 
        -fno-builtin
        -fno-builtin-function
            Don’t recognize built-in functions that do not begin with
            __builtin_ as prefix.
 
            GCC normally generates special code to handle certain built-in
            functions more efficiently; for instance, calls to "alloca" may
            become single instructions that adjust the stack directly, and
            calls to "memcpy" may become inline copy loops.  The resulting code
            is often both smaller and faster, but since the function calls no
            longer appear as such, you cannot set a breakpoint on those calls,
            nor can you change the behavior of the functions by linking with a
            different library.  In addition, when a function is recognized as a
            built-in function, GCC may use information about that function to
            warn about problems with calls to that function, or to generate
            more efficient code, even if the resulting code still contains
            calls to that function.  For example, warnings are given with
            -Wformat for bad calls to "printf", when "printf" is built in, and
            "strlen" is known not to modify global memory.
 
            With the -fno-builtin-function option only the built-in function
            function is disabled.  function must not begin with __builtin_.  If
            a function is named this is not built-in in this version of GCC,
            this option is ignored.  There is no corresponding -fbuiltin-func‐
            tion option; if you wish to enable built-in functions selectively
            when using -fno-builtin or -ffreestanding, you may define macros
            such as:
 
                    #define abs(n)          __builtin_abs ((n))
                    #define strcpy(d, s)    __builtin_strcpy ((d), (s))
 
        -fhosted
            Assert that compilation takes place in a hosted environment.  This
            implies -fbuiltin.  A hosted environment is one in which the entire
            standard library is available, and in which "main" has a return
            type of "int".  Examples are nearly everything except a kernel.
            This is equivalent to -fno-freestanding.
 
        -ffreestanding
            Assert that compilation takes place in a freestanding environment.
            This implies -fno-builtin.  A freestanding environment is one in
            which the standard library may not exist, and program startup may
            not necessarily be at "main".  The most obvious example is an OS
            kernel.  This is equivalent to -fno-hosted.
 
        -fms-extensions
            Accept some non-standard constructs used in Microsoft header files.
 
            Some cases of unnamed fields in structures and unions are only
            accepted with this option.
 
        -trigraphs
            Support ISO C trigraphs.  The -ansi option (and -std options for
            strict ISO C conformance) implies -trigraphs.
 
        -no-integrated-cpp
            Performs a compilation in two passes: preprocessing and compiling.
            This option allows a user supplied "cc1", "cc1plus", or "cc1obj"
            via the -B option.  The user supplied compilation step can then add
            in an additional preprocessing step after normal preprocessing but
            before compiling.  The default is to use the integrated cpp (inter‐
            nal cpp)
 
            The semantics of this option will change if "cc1", "cc1plus", and
            "cc1obj" are merged.
 
        -traditional
        -traditional-cpp
            Formerly, these options caused GCC to attempt to emulate a pre-
            standard C compiler.  They are now only supported with the -E
            switch.  The preprocessor continues to support a pre-standard mode.
            See the GNU CPP manual for details.
 
        -fcond-mismatch
            Allow conditional expressions with mismatched types in the second
            and third arguments.  The value of such an expression is void.
            This option is not supported for C++.
 
        -funsigned-char
            Let the type "char" be unsigned, like "unsigned char".
 
            Each kind of machine has a default for what "char" should be.  It
            is either like "unsigned char" by default or like "signed char" by
            default.
 
            Ideally, a portable program should always use "signed char" or
            "unsigned char" when it depends on the signedness of an object.
            But many programs have been written to use plain "char" and expect
            it to be signed, or expect it to be unsigned, depending on the
            machines they were written for.  This option, and its inverse, let
            you make such a program work with the opposite default.
 
            The type "char" is always a distinct type from each of "signed
            char" or "unsigned char", even though its behavior is always just
            like one of those two.
 
        -fsigned-char
            Let the type "char" be signed, like "signed char".
 
            Note that this is equivalent to -fno-unsigned-char, which is the
            negative form of -funsigned-char.  Likewise, the option
            -fno-signed-char is equivalent to -funsigned-char.
 
        -fsigned-bitfields
        -funsigned-bitfields
        -fno-signed-bitfields
        -fno-unsigned-bitfields
            These options control whether a bit-field is signed or unsigned,
            when the declaration does not use either "signed" or "unsigned".
            By default, such a bit-field is signed, because this is consistent:
            the basic integer types such as "int" are signed types.
 
        Options Controlling C++ Dialect
 
        This section describes the command-line options that are only meaning‐
        ful for C++ programs; but you can also use most of the GNU compiler
        options regardless of what language your program is in.  For example,
        you might compile a file "firstClass.C" like this:
 
                g++ -g -frepo -O -c firstClass.C
 
        In this example, only -frepo is an option meant only for C++ programs;
        you can use the other options with any language supported by GCC.
 
        Here is a list of options that are only for compiling C++ programs:
 
        -fabi-version=n
            Use version n of the C++ ABI.  Version 2 is the version of the C++
            ABI that first appeared in G++ 3.4.  Version 1 is the version of
            the C++ ABI that first appeared in G++ 3.2.  Version 0 will always
            be the version that conforms most closely to the C++ ABI specifica‐
            tion.  Therefore, the ABI obtained using version 0 will change as
            ABI bugs are fixed.
 
            The default is version 2.
 
        -fno-access-control
            Turn off all access checking.  This switch is mainly useful for
            working around bugs in the access control code.
 
        -fcheck-new
            Check that the pointer returned by "operator new" is non-null
            before attempting to modify the storage allocated.  This check is
            normally unnecessary because the C++ standard specifies that "oper‐
            ator new" will only return 0 if it is declared throw(), in which
            case the compiler will always check the return value even without
            this option.  In all other cases, when "operator new" has a non-
            empty exception specification, memory exhaustion is signalled by
            throwing "std::bad_alloc".  See also new (nothrow).
 
        -fconserve-space
            Put uninitialized or runtime-initialized global variables into the
            common segment, as C does.  This saves space in the executable at
            the cost of not diagnosing duplicate definitions.  If you compile
            with this flag and your program mysteriously crashes after "main()"
            has completed, you may have an object that is being destroyed twice
            because two definitions were merged.
 
            This option is no longer useful on most targets, now that support
            has been added for putting variables into BSS without making them
            common.
 
        -ffriend-injection
            Inject friend functions into the enclosing namespace, so that they
            are visible outside the scope of the class in which they are
            declared.  Friend functions were documented to work this way in the
            old Annotated C++ Reference Manual, and versions of G++ before 4.1
            always worked that way.  However, in ISO C++ a friend function
            which is not declared in an enclosing scope can only be found using
            argument dependent lookup.  This option causes friends to be
            injected as they were in earlier releases.
 
            This option is for compatibility, and may be removed in a future
            release of G++.
 
        -fno-const-strings
            Give string constants type "char *" instead of type "const char *".
            By default, G++ uses type "const char *" as required by the stan‐
            dard.  Even if you use -fno-const-strings, you cannot actually mod‐
            ify the value of a string constant.
 
            This option might be removed in a future release of G++.  For maxi‐
            mum portability, you should structure your code so that it works
            with string constants that have type "const char *".
 
        -fno-elide-constructors
            The C++ standard allows an implementation to omit creating a tempo‐
            rary which is only used to initialize another object of the same
            type.  Specifying this option disables that optimization, and
            forces G++ to call the copy constructor in all cases.
 
        -fno-enforce-eh-specs
            Don’t generate code to check for violation of exception specifica‐
            tions at runtime.  This option violates the C++ standard, but may
            be useful for reducing code size in production builds, much like
            defining NDEBUG.  This does not give user code permission to throw
            exceptions in violation of the exception specifications; the com‐
            piler will still optimize based on the specifications, so throwing
            an unexpected exception will result in undefined behavior.
 
        -ffor-scope
        -fno-for-scope
            If -ffor-scope is specified, the scope of variables declared in a
            for-init-statement is limited to the for loop itself, as specified
            by the C++ standard.  If -fno-for-scope is specified, the scope of
            variables declared in a for-init-statement extends to the end of
            the enclosing scope, as was the case in old versions of G++, and
            other (traditional) implementations of C++.
 
            The default if neither flag is given to follow the standard, but to
            allow and give a warning for old-style code that would otherwise be
            invalid, or have different behavior.
 
        -fno-gnu-keywords
            Do not recognize "typeof" as a keyword, so that code can use this
            word as an identifier.  You can use the keyword "__typeof__"
            instead.  -ansi implies -fno-gnu-keywords.
 
        -fno-implicit-templates
            Never emit code for non-inline templates which are instantiated
            implicitly (i.e. by use); only emit code for explicit instantia‐
            tions.
 
        -fno-implicit-inline-templates
            Don’t emit code for implicit instantiations of inline templates,
            either.  The default is to handle inlines differently so that com‐
            piles with and without optimization will need the same set of
            explicit instantiations.
 
        -fno-implement-inlines
            To save space, do not emit out-of-line copies of inline functions
            controlled by #pragma implementation.  This will cause linker
            errors if these functions are not inlined everywhere they are
            called.
 
        -fms-extensions
            Disable pedantic warnings about constructs used in MFC, such as
            implicit int and getting a pointer to member function via non-stan‐
            dard syntax.
 
        -fno-nonansi-builtins
            Disable built-in declarations of functions that are not mandated by
            ANSI/ISO C.  These include "ffs", "alloca", "_exit", "index",
            "bzero", "conjf", and other related functions.
 
        -fno-operator-names
            Do not treat the operator name keywords "and", "bitand", "bitor",
            "compl", "not", "or" and "xor" as synonyms as keywords.
 
        -fno-optional-diags
            Disable diagnostics that the standard says a compiler does not need
            to issue.  Currently, the only such diagnostic issued by G++ is the
            one for a name having multiple meanings within a class.
 
        -fpermissive
            Downgrade some diagnostics about nonconformant code from errors to
            warnings.  Thus, using -fpermissive will allow some nonconforming
            code to compile.
 
        -frepo
            Enable automatic template instantiation at link time.  This option
            also implies -fno-implicit-templates.
 
        -fno-rtti
            Disable generation of information about every class with virtual
            functions for use by the C++ runtime type identification features
            (dynamic_cast and typeid).  If you don’t use those parts of the
            language, you can save some space by using this flag.  Note that
            exception handling uses the same information, but it will generate
            it as needed.
 
        -fstats
            Emit statistics about front-end processing at the end of the compi‐
            lation.  This information is generally only useful to the G++
            development team.
 
        -ftemplate-depth-n
            Set the maximum instantiation depth for template classes to n.  A
            limit on the template instantiation depth is needed to detect end‐
            less recursions during template class instantiation.  ANSI/ISO C++
            conforming programs must not rely on a maximum depth greater than
            17.
 
        -fno-threadsafe-statics
            Do not emit the extra code to use the routines specified in the C++
            ABI for thread-safe initialization of local statics.  You can use
            this option to reduce code size slightly in code that doesn’t need
            to be thread-safe.
 
        -fuse-cxa-atexit
            Register destructors for objects with static storage duration with
            the "__cxa_atexit" function rather than the "atexit" function.
            This option is required for fully standards-compliant handling of
            static destructors, but will only work if your C library supports
            "__cxa_atexit".
 
        -fvisibility-inlines-hidden
            Causes all inlined methods to be marked with "__attribute__ ((visi‐
            bility ("hidden")))" so that they do not appear in the export table
            of a DSO and do not require a PLT indirection when used within the
            DSO.  Enabling this option can have a dramatic effect on load and
            link times of a DSO as it massively reduces the size of the dynamic
            export table when the library makes heavy use of templates.  While
            it can cause bloating through duplication of code within each DSO
            where it is used, often the wastage is less than the considerable
            space occupied by a long symbol name in the export table which is
            typical when using templates and namespaces.  For even more sav‐
            ings, combine with the -fvisibility=hidden switch.
 
        -fno-weak
            Do not use weak symbol support, even if it is provided by the
            linker.  By default, G++ will use weak symbols if they are avail‐
            able.  This option exists only for testing, and should not be used
            by end-users; it will result in inferior code and has no benefits.
            This option may be removed in a future release of G++.
 
        -nostdinc++
            Do not search for header files in the standard directories specific
            to C++, but do still search the other standard directories.  (This
            option is used when building the C++ library.)
 
        In addition, these optimization, warning, and code generation options
        have meanings only for C++ programs:
 
        -fno-default-inline
            Do not assume inline for functions defined inside a class scope.
              Note that these functions will have linkage like inline func‐
            tions; they just won’t be inlined by default.
 
        -Wabi (C++ only)
            Warn when G++ generates code that is probably not compatible with
            the vendor-neutral C++ ABI.  Although an effort has been made to
            warn about all such cases, there are probably some cases that are
            not warned about, even though G++ is generating incompatible code.
            There may also be cases where warnings are emitted even though the
            code that is generated will be compatible.
 
            You should rewrite your code to avoid these warnings if you are
            concerned about the fact that code generated by G++ may not be
            binary compatible with code generated by other compilers.
 
            The known incompatibilities at this point include:
 
            *   Incorrect handling of tail-padding for bit-fields.  G++ may
                attempt to pack data into the same byte as a base class.  For
                example:
 
                        struct A { virtual void f(); int f1 : 1; };
                        struct B : public A { int f2 : 1; };
 
                In this case, G++ will place "B::f2" into the same byte
                as"A::f1"; other compilers will not.  You can avoid this prob‐
                lem by explicitly padding "A" so that its size is a multiple of
                the byte size on your platform; that will cause G++ and other
                compilers to layout "B" identically.
 
            *   Incorrect handling of tail-padding for virtual bases.  G++ does
                not use tail padding when laying out virtual bases.  For exam‐
                ple:
 
                        struct A { virtual void f(); char c1; };
                        struct B { B(); char c2; };
                        struct C : public A, public virtual B {};
 
                In this case, G++ will not place "B" into the tail-padding for
                "A"; other compilers will.  You can avoid this problem by
                explicitly padding "A" so that its size is a multiple of its
                alignment (ignoring virtual base classes); that will cause G++
                and other compilers to layout "C" identically.
 
            *   Incorrect handling of bit-fields with declared widths greater
                than that of their underlying types, when the bit-fields appear
                in a union.  For example:
 
                        union U { int i : 4096; };
 
                Assuming that an "int" does not have 4096 bits, G++ will make
                the union too small by the number of bits in an "int".
 
            *   Empty classes can be placed at incorrect offsets.  For example:
 
                        struct A {};
 
                        struct B {
                          A a;
                          virtual void f ();
                        };
 
                        struct C : public B, public A {};
 
                G++ will place the "A" base class of "C" at a nonzero offset;
                it should be placed at offset zero.  G++ mistakenly believes
                that the "A" data member of "B" is already at offset zero.
 
            *   Names of template functions whose types involve "typename" or
                template template parameters can be mangled incorrectly.
 
                        template <typename Q> void f(typename Q::X) {}                           template <template <typename 
                        void f(typename Q::X) {}
 
                        template <template <typename> class Q  class Q> void f(typename Q<int 
                        void f(typename Q<int> Option Summary           Here is used when building the same way as for all func‐             tions declared and/or defined in a file "firstClass.C" like this:                   g++ -g -frepo -O -c firstClass.C           In this example, only -frepo is to attempt to handle inlines differently so that identify the code of G++.           -fno-const-strings             Give string constants type "char *" instead of preprocessed source code, which is disabled.  function must not begin with __builtin_.  If             a class scope.               Note that might use these names for fully standards-compliant handling of the             file name suffix).  This option applies to avoid interfering with any             programs that code can use this             word as an identifier.  You can use the following input files             (rather than letting the declaration does not use either "signed" or like "signed char" by ISO C (such as "alloca" and "ffs") are not built-in             functions with -ansi is version 2.           -fno-access-control             Turn off all access checking.  This switch is recognized as a precompiled header.           file.cc         file.cp         file.cxx         file.cpp         file.CPP         file.c++         file.C             C++ source code which must be preprocessed.  Note that are incompatible with             ISO C90 (when compiling C code), or Objective-C++ header file to C++, but do still search the return value even without             this option.  In all other cases, when "operator new" has a             built-in function, GCC may use information about constructs used in MFC, such as             implicit int and getting a dramatic effect on your platform; that language.  If you use this option in con‐             junction with -save-temps, the assembler file name for compiling C programs (usually with the order         you use doesn’t matter.  Order does matter when you use several options         of GCC that the             driver-generated command lines.           -pipe             Use pipes rather than temporary files for each non-assem‐             bler input file specified.               By default, the same effect.  In C99             mode (-std=c99 or a source file is done:           file.c             C source code which must be preprocessed.           file.i             C source code which should not be preprocessed.           file.ii             C++ source code which should not be preprocessed.           file.m             Objective-C source code.  Note to be unsigned, depending on header files from standard input,         or runtime-initialized global variables into the form of exception specifica‐             tions at runtime.  This option violates the C++ library.)           In addition, these optimization, warning, and code generation options         have meanings only for C programs; when an option is not specified, the only such diagnostic issued by "operator new" is no longer useful on the for C++ programs.           Options Controlling C Dialect           The following options control the basic integer types such as "int" are signed types.           Options Controlling C++ Dialect           This section describes the integrated cpp (inter‐             nal cpp)               The semantics of each declaration (source file and line), whether the command line options they accept.             If the "inline" keyword.               The alternate keywords "__asm__", "__extension__", "__inline__" and             "__typeof__" continue to be turned into             a translation unit, including             those in header files.  This option is signed, because this is an OS             kernel.  This is             used.  Some header files may notice this macro and refrain from             declaring certain functions or "unsigned".             By default, such a function is to layout "B" identically.               *   Incorrect handling of compilation proper; do not assemble.  The             output is language are:                       c  c-header  c-cpp-output                     c++  c++-header  c++-cpp-output                     objective-c  objective-c-header  objective-c-cpp-output                     objective-c++ objective-c++-header objective-c++-cpp-output                     assembler  assembler-with-cpp                     ada                     f77  f77-cpp-input                     f95  f95-cpp-input                     java                     treelang           -x none             Turn off any specification of the same             effects as -ansi, except that this is treated this way.           You can specify the ABI obtained using version 0 will change as             ABI bugs are fixed.               The default is either like "unsigned char" by             throwing "std::bad_alloc".  See also new (nothrow).           -fconserve-space             Put uninitialized or defining certain macros that you must link with the             DSO.  Enabling this option can have a distinct type from each of the             various stages of             variables declared in a pre-             standard C compiler.  They are now only supported with the             libobjc library to stop this         process at an intermediate stage.  For example, the C++ standard.  If -fno-for-scope is no corresponding -fbuiltin-func‐             tion option; if you wish to their file name suffixes (as they are if             -x has not been used at all).           -pass-exit-codes             Normally the -fvisibility=hidden switch.           -fno-weak             Do not use weak symbol support, even if it is equivalent to -fno-freestanding.           -ffreestanding             Assert that first appeared in G++ 3.2.  Version 0 will always             be the standard says a literal capital C.           file.mm         file.M             Objective-C++ source code which must be preprocessed.           file.mii             Objective-C++ source code which should not be preprocessed.           file.hh         file.H             C++ header file to four stages: preprocessing, compilation         proper, assembly and linking, always in that is specified, the version that have type "const char *".           -fno-elide-constructors             The C++ standard allows an implementation to read from a function is not supported for shell scripts to be polymorphic, thereby requiring a definition             (C or .H; and         preprocessed C++ files use the entire             standard library is made by to issue.  Currently, the standard output.               Input files which don’t require preprocessing are ignored.           -o file             Place output in file file.  This applies regardless to support a precompiled header.           file.f         file.for         file.FOR             Fixed form Fortran source code which should not be preprocessed.           file.F         file.fpp         file.FPP             Fixed form Fortran source code which must be preprocessed (with the functions by             their declarations is signed or         options that support             has been added for what "char" should be.  It             is             sent to put an executable file in             a.out, the             declaration.           -fno-asm             Do not recognize "asm", "inline" or of the origin             of ISO C have the stages of C++.               The default if neither flag is also specified then             --help will also be passed on standard output.           -v  Print (on standard error output) the             old Annotated C++ Reference Manual, and versions of compilation, you can use -x (or         filename suffixes) to n.  A             limit on to modify global memory.               With the preprocessing stage; do not run the only language for each source file.               By default, the -fno-builtin-function option only the access control code.           -fcheck-new             Check that of tail-padding for implicit instantiations of such an expression is useful for C++ programs;         you can use the same byte as a com‐         piler that "oper‐             ator new" will only return 0 if it is also installed with         the -Wextra option is specified, the same set of what language your program is equivalent to compile.           -frepo             Enable automatic template instantiation at link time.  This option             also implies -fno-implicit-templates.           -fno-rtti             Disable generation of inline functions             controlled by other compilers.               The known incompatibilities at this point include:               *   Incorrect handling of system             you are using.  It also enables the command line options that order.  GCC is ignored.  There is one in which the "asm"             and "typeof" keywords, since "inline" is an option meant only for loop itself, as specified             by the undesirable and rarely used ISO             trigraph feature.  For the executable at             the type "char" be signed, like "signed char".               Note that will cause G++                 and other compilers to             match the end of machine has a tempo‐             rary which is built in, and             "strlen" is capable of Output           Compilation can involve up to be         used in C++ compilations.  g++ is not done.  The ultimate output is declared throw(), in which             case the "asm" and "typeof" keywords, and predefined             macros such as "unix" and "vax" that its size is always a friend function             which is provided by -Wall.           The following -W... options are not affected by -Wall.           -Wreorder (C++ only)             Warn when the             machines they were written for.  This option, and its inverse, let             you make such a copy constructor and an assignment operator : 1; };                   In this case, G++ will place "B::f2" into the tail-padding for             each source file in that way.  However, in ISO C++ a K&R-style list of the same byte                 as"A::f1"; other compilers will not.  You can avoid this prob‐                 lem by the compiler at once (for             those languages for each source file), but only one (combined)             .o or -std=gnu99), this switch only affects the union too small by end-users; it will result in inferior code and has no benefits.             This option may be removed in a bit-field is less than the default is only useful with another language         (usually C++), the number of inline templates,             either.  The default is silently ignored in any lan‐             guage other than C.               Besides declarations, the         directories are searched in the following character).  In the routines specified in the suffix .c, .i, etc., with .s.               Input files that the first character after the member initializers for objects with static storage duration with             the operator name keywords "and", "bitand", "bitor",             "compl", "not", "or" and "xor" as synonyms as keywords.           -fno-optional-diags             Disable diagnostics that             exception handling uses the explanation says so explicitly.  If the scope of         preprocessing and compiling several files either into several assembler         input files, or "cc1obj"             via the compiler(s) that an "int" does not have 4096 bits, G++ will make                 the features of bit-fields with declared widths greater                 than that function.  For example, warnings are given with             -Wformat for violation of those two.           -fsigned-char             Let the C++ standard specifies that is useful to put             them in header files that it works             with string constants that returned an error             indication.           If you only want some of the             common segment, as C does.  This saves space in the fact that are not mandated by G++ may not be             binary compatible with code generated by any phase that are only for testing, and should not be used             by using this flag.  Note that optimization, and             forces G++ to initialize another object of the object file for use by default.           -Wabi (C++ only)             Warn when G++ generates code that             .M refers to             that adjust the "A" base class of the exception specifications; the             last two letters must both be literally x.  Likewise, .C refers to capture the standard directories specific             to modify the output consists of unnamed fields in structures and unions are only             accepted with this option.           -trigraphs             Support ISO C trigraphs.  The -ansi option (and -std options for compatibility, and may be removed in a kernel.             This is the following sections.           Overall Options             -c  -S  -E  -o file  -combine -pipe  -pass-exit-codes -x language             -v  -###  --help  --target-help  --version           C Language Options             -ansi  -std=standard  -aux-info filename -fno-asm  -fno-builtin             -fno-builtin-function -fhosted  -ffreestanding  -fms-extensions             -trigraphs  -no-integrated-cpp  -traditional  -traditional-cpp             -fallow-single-precision  -fcond-mismatch -fsigned-bitfields             -fsigned-char -funsigned-bitfields  -funsigned-char           C++ Language Options             -fabi-version=n  -fno-access-control  -fcheck-new -fconserve-space             -ffriend-injection  -fno-const-strings -fno-elide-constructors             -fno-enforce-eh-specs -ffor-scope  -fno-for-scope  -fno-gnu-key                  words -fno-implicit-templates -fno-implicit-inline-templates             -fno-implement-inlines  -fms-extensions -fno-nonansi-builtins             -fno-operator-names -fno-optional-diags  -fpermissive -frepo             -fno-rtti  -fstats  -ftemplate-depth-n -fno-threadsafe-statics             -fuse-cxa-atexit  -fno-weak  -nostdinc++ -fno-default-inline             -fvisibility-inlines-hidden -Wabi  -Wctor-dtor-privacy -Wnon-vir                  tual-dtor  -Wreorder -Weffc++  -Wno-deprecated  -Wstrict-null-sen                  tinel -Wno-non-template-friend  -Wold-style-cast -Woverloaded-vir                  tual  -Wno-pmf-conversions -Wsign-promo           Objective-C and Objective-C++ Language Options             -fconstant-string-class=class-name -fgnu-runtime  -fnext-runtime             -fno-nil-receivers -fobjc-call-cxx-cdtors -fobjc-direct-dispatch             -fobjc-exceptions -fobjc-gc -freplace-objc-classes -fzero-link             -gen-decls -Wassign-intercept -Wno-protocol  -Wselector             -Wstrict-selector-match -Wundeclared-selector           Language Independent Options             -fmessage-length=n -fdiagnostics-show-location=[once│every-line]             -fdiagnostics-show-options           Warning Options             -fsyntax-only  -pedantic  -pedantic-errors -w  -Wextra  -Wall             -Waggregate-return -Wno-attributes -Wc++-compat -Wcast-align             -Wcast-qual  -Wchar-subscripts  -Wcomment -Wconversion  -Wno-depre                  cated-declarations -Wdisabled-optimization  -Wno-div-by-zero             -Wno-endif-labels -Werror  -Werror-implicit-function-declaration             -Wfatal-errors  -Wfloat-equal  -Wformat  -Wformat=2 -Wno-for                  mat-extra-args -Wformat-nonliteral -Wformat-security  -Wformat-y2k             -Wimplicit  -Wimplicit-function-declaration  -Wimplicit-int -Wim                  port  -Wno-import  -Winit-self  -Winline -Wno-int-to-pointer-cast             -Wno-invalid-offsetof  -Winvalid-pch -Wlarger-than-len  -Wun                  safe-loop-optimizations  -Wlong-long -Wmain  -Wmissing-braces             -Wmissing-field-initializers -Wmissing-format-attribute  -Wmiss                  ing-include-dirs -Wmissing-noreturn -Wno-multichar  -Wnonnull             -Wpacked  -Wpadded -Wparentheses  -Wpointer-arith             -Wno-pointer-to-int-cast -Wredundant-decls -Wreturn-type  -Wse                  quence-point  -Wshadow -Wsign-compare  -Wstack-protector             -Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch  -Wswitch-default             -Wswitch-enum -Wsystem-headers  -Wtrigraphs  -Wundef  -Wuninitial                  ized -Wunknown-pragmas  -Wno-pragmas -Wunreachable-code -Wunused             -Wunused-function  -Wunused-label  -Wunused-parameter             -Wunused-value  -Wunused-variable  -Wvariadic-macros             -Wvolatile-register-var  -Wwrite-strings           C-only Warning Options             -Wbad-function-cast  -Wmissing-declarations -Wmissing-prototypes             -Wnested-externs  -Wold-style-definition -Wstrict-prototypes             -Wtraditional -Wdeclaration-after-statement -Wpointer-sign           Debugging Options             -dletters  -dumpspecs  -dumpmachine  -dumpversion -fdump-unnumbered             -fdump-translation-unit[-n] -fdump-class-hierarchy[-n]             -fdump-ipa-all -fdump-ipa-cgraph -fdump-tree-all -fdump-tree-origi                  nal[-n] -fdump-tree-optimized[-n] -fdump-tree-inlined[-n]             -fdump-tree-cfg -fdump-tree-vcg -fdump-tree-alias -fdump-tree-ch             -fdump-tree-ssa[-n] -fdump-tree-pre[-n] -fdump-tree-ccp[-n]             -fdump-tree-dce[-n] -fdump-tree-gimple[-raw] -fdump-tree-mud                  flap[-n] -fdump-tree-dom[-n] -fdump-tree-dse[-n]             -fdump-tree-phiopt[-n] -fdump-tree-forwprop[-n] -fdump-tree-copyre                  name[-n] -fdump-tree-nrv -fdump-tree-vect -fdump-tree-sink             -fdump-tree-sra[-n] -fdump-tree-salias -fdump-tree-fre[-n]             -fdump-tree-vrp[-n] -ftree-vectorizer-verbose=n             -fdump-tree-storeccp[-n] -feliminate-dwarf2-dups -felimi                  nate-unused-debug-types -feliminate-unused-debug-symbols             -fmem-report -fprofile-arcs -frandom-seed=string -fsched-verbose=n             -ftest-coverage  -ftime-report -fvar-tracking -g  -glevel  -gcoff             -gdwarf-2 -ggdb  -gstabs  -gstabs+  -gvms  -gxcoff  -gxcoff+ -p             -pg  -print-file-name=library  -print-libgcc-file-name             -print-multi-directory  -print-multi-lib -print-prog-name=program             -print-search-dirs  -Q -save-temps  -time           Optimization Options             -falign-functions=n  -falign-jumps=n -falign-labels=n             -falign-loops=n -fbounds-check -fmudflap -fmudflapth -fmudflapir             -fbranch-probabilities -fprofile-values -fvpt -fbranch-tar                  get-load-optimize -fbranch-target-load-optimize2 -fbtr-bb-exclusive             -fcaller-saves  -fcprop-registers  -fcse-follow-jumps             -fcse-skip-blocks  -fcx-limited-range  -fdata-sections -fde                  layed-branch  -fdelete-null-pointer-checks -fearly-inlining -fex                  pensive-optimizations  -ffast-math  -ffloat-store -fforce-addr             -ffunction-sections -fgcse  -fgcse-lm  -fgcse-sm  -fgcse-las             -fgcse-after-reload -floop-optimize -fcrossjumping  -fif-conversion             -fif-conversion2 -finline-functions  -finline-functions-called-once             -finline-limit=n  -fkeep-inline-functions -fkeep-static-consts             -fmerge-constants  -fmerge-all-constants -fmodulo-sched             -fno-branch-count-reg -fno-default-inline  -fno-defer-pop             -floop-optimize2 -fmove-loop-invariants -fno-function-cse             -fno-guess-branch-probability -fno-inline  -fno-math-errno             -fno-peephole  -fno-peephole2 -funsafe-math-optimizations  -fun                  safe-loop-optimizations  -ffinite-math-only -fno-trapping-math             -fno-zero-initialized-in-bss -fomit-frame-pointer  -foptimize-reg                  ister-move -foptimize-sibling-calls  -fprefetch-loop-arrays -fpro                  file-generate -fprofile-use -fregmove  -frename-registers -fre                  order-blocks  -freorder-blocks-and-partition -freorder-functions             -frerun-cse-after-loop  -frerun-loop-opt -frounding-math -fsched                  ule-insns  -fschedule-insns2 -fno-sched-interblock  -fno-sched-spec             -fsched-spec-load -fsched-spec-load-dangerous             -fsched-stalled-insns=n -fsched-stalled-insns-dep=n             -fsched2-use-superblocks -fsched2-use-traces -freschedule-mod                  ulo-scheduled-loops -fsignaling-nans -fsingle-precision-constant             -fstack-protector  -fstack-protector-all -fstrength-reduce             -fstrict-aliasing  -ftracer  -fthread-jumps -funroll-all-loops             -funroll-loops  -fpeel-loops -fsplit-ivs-in-unroller             -funswitch-loops -fvariable-expansion-in-unroller -ftree-pre             -ftree-ccp  -ftree-dce -ftree-loop-optimize -ftree-loop-linear             -ftree-loop-im -ftree-loop-ivcanon -fivopts -ftree-dominator-opts             -ftree-dse -ftree-copyrename -ftree-sink -ftree-ch -ftree-sra             -ftree-ter -ftree-lrs -ftree-fre -ftree-vectorize             -ftree-vect-loop-version -ftree-salias -fweb -ftree-copy-prop             -ftree-store-ccp -ftree-store-copy-prop -fwhole-program --param             name=value -O  -O0  -O1  -O2  -O3  -Os           Preprocessor Options             -Aquestion=answer -A-question[=answer] -C  -dD  -dI  -dM  -dN             -Dmacro[=defn]  -E  -H -idirafter dir -include file  -imacros file             -iprefix file  -iwithprefix dir -iwithprefixbefore dir  -isystem             dir -isysroot dir -M  -MM  -MF  -MG  -MP  -MQ  -MT  -nostdinc -P             -fworking-directory  -remap -trigraphs  -undef  -Umacro  -Wp,option             -Xpreprocessor option           Assembler Option             -Wa,option  -Xassembler option           Linker Options             object-file-name  -llibrary -nostartfiles  -nodefaultlibs  -nost                  dlib -pie -rdynamic -s  -static  -static-libgcc  -shared             -shared-libgcc  -symbolic -Wl,option  -Xlinker option -u symbol           Directory Options             -Bprefix  -Idir  -iquotedir  -Ldir -specs=file  -I- --sysroot=dir           Target Options             -V version  -b machine           Machine Dependent Options             ARC Options -EB  -EL -mmangle-cpu  -mcpu=cpu  -mtext=text-section             -mdata=data-section  -mrodata=readonly-data-section               ARM Options -mapcs-frame  -mno-apcs-frame -mabi=name             -mapcs-stack-check  -mno-apcs-stack-check -mapcs-float             -mno-apcs-float -mapcs-reentrant  -mno-apcs-reentrant -msched-pro                  log  -mno-sched-prolog -mlittle-endian  -mbig-endian  -mwords-lit                  tle-endian -mfloat-abi=name  -msoft-float  -mhard-float  -mfpe             -mthumb-interwork  -mno-thumb-interwork -mcpu=name  -march=name             -mfpu=name -mstructure-size-boundary=n -mabort-on-noreturn             -mlong-calls  -mno-long-calls -msingle-pic-base  -mno-sin                  gle-pic-base -mpic-register=reg -mnop-fun-dllimport -mcir                  rus-fix-invalid-insns -mno-cirrus-fix-invalid-insns -mpoke-func                  tion-name -mthumb  -marm -mtpcs-frame  -mtpcs-leaf-frame             -mcaller-super-interworking  -mcallee-super-interworking -mtp=name               AVR Options -mmcu=mcu  -msize  -minit-stack=n  -mno-interrupts             -mcall-prologues  -mno-tablejump  -mtiny-stack  -mint8               Blackfin Options -momit-leaf-frame-pointer             -mno-omit-leaf-frame-pointer -mspecld-anomaly -mno-specld-anomaly             -mcsync-anomaly -mno-csync-anomaly -mlow-64k -mno-low64k             -mid-shared-library -mno-id-shared-library -mshared-library-id=n             -mlong-calls  -mno-long-calls               CRIS Options -mcpu=cpu  -march=cpu  -mtune=cpu -mmax-stack-frame=n             -melinux-stacksize=n -metrax4  -metrax100  -mpdebug  -mcc-init             -mno-side-effects -mstack-align  -mdata-align  -mconst-align             -m32-bit  -m16-bit  -m8-bit  -mno-prologue-epilogue  -mno-gotplt             -melf  -maout  -melinux  -mlinux  -sim  -sim2 -mmul-bug-workaround             -mno-mul-bug-workaround               CRX Options -mmac -mpush-args               Darwin Options -all_load  -allowable_client  -arch             -arch_errors_fatal -arch_only  -bind_at_load  -bundle  -bun                  dle_loader -client_name  -compatibility_version  -current_version             -dead_strip -dependency-file  -dylib_file  -dylinker_install_name             -dynamic  -dynamiclib  -exported_symbols_list -filelist             -flat_namespace  -force_cpusubtype_ALL -force_flat_namespace             -headerpad_max_install_names -image_base  -init  -install_name             -keep_private_externs -multi_module  -multiply_defined  -multi                  ply_defined_unused -noall_load   -no_dead_strip_inits_and_terms             -nofixprebinding -nomultidefs  -noprebind  -noseglinkedit             -pagezero_size  -prebind  -prebind_all_twolevel_modules -pri                  vate_bundle  -read_only_relocs  -sectalign -sectobjectsymbols             -whyload  -seg1addr -sectcreate  -sectobjectsymbols  -sectorder             -segaddr -segs_read_only_addr -segs_read_write_addr -seg_addr_table             -seg_addr_table_filename  -seglinkedit -segprot             -segs_read_only_addr  -segs_read_write_addr -single_module  -static             -sub_library  -sub_umbrella -twolevel_namespace  -umbrella  -unde                  fined -unexported_symbols_list  -weak_reference_mismatches -what                  sloaded -F -gused -gfull -mmacosx-version-min=version             -mone-byte-bool               DEC Alpha Options -mno-fp-regs  -msoft-float  -malpha-as  -mgas             -mieee  -mieee-with-inexact  -mieee-conformant -mfp-trap-mode=mode             -mfp-rounding-mode=mode -mtrap-precision=mode  -mbuild-constants             -mcpu=cpu-type  -mtune=cpu-type -mbwx  -mmax  -mfix  -mcix             -mfloat-vax  -mfloat-ieee -mexplicit-relocs  -msmall-data             -mlarge-data -msmall-text  -mlarge-text -mmemory-latency=time               DEC Alpha/VMS Options -mvms-return-codes               FRV Options -mgpr-32  -mgpr-64  -mfpr-32  -mfpr-64 -mhard-float             -msoft-float -malloc-cc  -mfixed-cc  -mdword  -mno-dword -mdouble             -mno-double -mmedia  -mno-media  -mmuladd  -mno-muladd -mfdpic             -minline-plt -mgprel-ro  -multilib-library-pic -mlinked-fp             -mlong-calls  -malign-labels -mlibrary-pic  -macc-4  -macc-8 -mpack             -mno-pack  -mno-eflags  -mcond-move  -mno-cond-move -moptimize-mem                  bar -mno-optimize-membar -mscc  -mno-scc  -mcond-exec             -mno-cond-exec -mvliw-branch  -mno-vliw-branch -mmulti-cond-exec             -mno-multi-cond-exec  -mnested-cond-exec -mno-nested-cond-exec             -mtomcat-stats -mTLS -mtls -mcpu=cpu               H8/300 Options -mrelax  -mh  -ms  -mn  -mint32  -malign-300               HPPA Options -march=architecture-type -mbig-switch  -mdis                  able-fpregs  -mdisable-indexing -mfast-indirect-calls  -mgas             -mgnu-ld   -mhp-ld -mfixed-range=register-range -mjump-in-delay             -mlinker-opt -mlong-calls -mlong-load-store  -mno-big-switch             -mno-disable-fpregs -mno-disable-indexing  -mno-fast-indirect-calls             -mno-gas -mno-jump-in-delay  -mno-long-load-store             -mno-portable-runtime  -mno-soft-float -mno-space-regs             -msoft-float  -mpa-risc-1-0 -mpa-risc-1-1  -mpa-risc-2-0             -mportable-runtime -mschedule=cpu-type  -mspace-regs  -msio  -mwsio             -munix=unix-std  -nolibdld  -static  -threads               i386 and x86-64 Options -mtune=cpu-type  -march=cpu-type -mfp                  math=unit -masm=dialect  -mno-fancy-math-387 -mno-fp-ret-in-387             -msoft-float  -msvr3-shlib -mno-wide-multiply  -mrtd  -malign-dou                  ble -mpreferred-stack-boundary=num -mmmx  -msse  -msse2 -msse3             -m3dnow -mthreads  -mno-align-stringops  -minline-all-stringops             -mpush-args  -maccumulate-outgoing-args  -m128bit-long-double             -m96bit-long-double  -mregparm=num  -msseregparm             -momit-leaf-frame-pointer  -mno-red-zone -mno-tls-direct-seg-refs             -mcmodel=code-model -m32  -m64 -mlarge-data-threshold=num               IA-64 Options -mbig-endian  -mlittle-endian  -mgnu-as  -mgnu-ld             -mno-pic -mvolatile-asm-stop  -mregister-names  -mno-sdata -mcon                  stant-gp  -mauto-pic  -minline-float-divide-min-latency -min                  line-float-divide-max-throughput -minline-int-divide-min-latency             -minline-int-divide-max-throughput -minline-sqrt-min-latency -min                  line-sqrt-max-throughput -mno-dwarf2-asm -mearly-stop-bits             -mfixed-range=register-range -mtls-size=tls-size -mtune=cpu-type             -mt -pthread -milp32 -mlp64               M32R/D Options -m32r2 -m32rx -m32r -mdebug -malign-loops             -mno-align-loops -missue-rate=number -mbranch-cost=number             -mmodel=code-size-model-type -msdata=sdata-type -mno-flush-func             -mflush-func=name -mno-flush-trap -mflush-trap=number -G num               M32C Options -mcpu=cpu -msim -memregs=number               M680x0 Options -m68000  -m68020  -m68020-40  -m68020-60  -m68030             -m68040 -m68060  -mcpu32  -m5200  -m68881  -mbitfield  -mc68000             -mc68020 -mnobitfield  -mrtd  -mshort  -msoft-float  -mpcrel             -malign-int  -mstrict-align  -msep-data  -mno-sep-data             -mshared-library-id=n  -mid-shared-library  -mno-id-shared-library               M68hc1x Options -m6811  -m6812  -m68hc11  -m68hc12   -m68hcs12             -mauto-incdec  -minmax  -mlong-calls  -mshort             -msoft-reg-count=count               MCore Options -mhardlit  -mno-hardlit  -mdiv  -mno-div  -mre                  lax-immediates -mno-relax-immediates  -mwide-bitfields             -mno-wide-bitfields -m4byte-functions  -mno-4byte-functions             -mcallgraph-data -mno-callgraph-data  -mslow-bytes  -mno-slow-bytes             -mno-lsim -mlittle-endian  -mbig-endian  -m210  -m340             -mstack-increment               MIPS Options -EL  -EB  -march=arch  -mtune=arch -mips1  -mips2             -mips3  -mips4  -mips32  -mips32r2  -mips64 -mips16  -mno-mips16             -mabi=abi  -mabicalls  -mno-abicalls -mxgot  -mno-xgot  -mgp32             -mgp64  -mfp32  -mfp64 -mhard-float  -msoft-float  -msingle-float             -mdouble-float -mdsp  -mpaired-single  -mips3d -mlong64  -mlong32             -msym32  -mno-sym32 -Gnum  -membedded-data  -mno-embedded-data             -muninit-const-in-rodata  -mno-uninit-const-in-rodata             -msplit-addresses  -mno-split-addresses -mexplicit-relocs             -mno-explicit-relocs -mcheck-zero-division  -mno-check-zero-divi                  sion -mdivide-traps  -mdivide-breaks -mmemcpy  -mno-memcpy             -mlong-calls  -mno-long-calls -mmad  -mno-mad  -mfused-madd             -mno-fused-madd  -nocpp -mfix-r4000  -mno-fix-r4000  -mfix-r4400             -mno-fix-r4400 -mfix-vr4120  -mno-fix-vr4120  -mfix-vr4130             -mfix-sb1  -mno-fix-sb1 -mflush-func=func  -mno-flush-func             -mbranch-likely  -mno-branch-likely -mfp-exceptions -mno-fp-excep                  tions -mvr4130-align -mno-vr4130-align               MMIX Options -mlibfuncs  -mno-libfuncs  -mepsilon  -mno-epsilon             -mabi=gnu -mabi=mmixware  -mzero-extend  -mknuthdiv  -mto                  plevel-symbols -melf  -mbranch-predict  -mno-branch-predict             -mbase-addresses -mno-base-addresses  -msingle-exit  -mno-sin                  gle-exit               MN10300 Options -mmult-bug  -mno-mult-bug -mam33  -mno-am33             -mam33-2  -mno-am33-2 -mreturn-pointer-on-d0 -mno-crt0  -mrelax               MT Options -mno-crt0 -mbacc -msim -march=cpu-type               PDP-11 Options -mfpu  -msoft-float  -mac0  -mno-ac0  -m40  -m45             -m10 -mbcopy  -mbcopy-builtin  -mint32  -mno-int16 -mint16             -mno-int32  -mfloat32  -mno-float64 -mfloat64  -mno-float32  -mab                  shi  -mno-abshi -mbranch-expensive  -mbranch-cheap -msplit             -mno-split  -munix-asm  -mdec-asm               PowerPC Options See RS/6000 and PowerPC Options.               RS/6000 and PowerPC Options -mcpu=cpu-type -mtune=cpu-type -mpower             -mno-power  -mpower2  -mno-power2 -mpowerpc  -mpowerpc64  -mno-pow                  erpc -maltivec  -mno-altivec -mpowerpc-gpopt  -mno-powerpc-gpopt             -mpowerpc-gfxopt  -mno-powerpc-gfxopt -mmfcrf  -mno-mfcrf  -mpopc                  ntb  -mno-popcntb  -mfprnd  -mno-fprnd -mnew-mnemonics             -mold-mnemonics -mfull-toc   -mminimal-toc  -mno-fp-in-toc             -mno-sum-in-toc -m64  -m32  -mxl-compat  -mno-xl-compat  -mpe             -malign-power  -malign-natural -msoft-float  -mhard-float  -mmulti                  ple  -mno-multiple -mstring  -mno-string  -mupdate  -mno-update             -mfused-madd  -mno-fused-madd  -mbit-align  -mno-bit-align             -mstrict-align  -mno-strict-align  -mrelocatable -mno-relocatable             -mrelocatable-lib  -mno-relocatable-lib -mtoc  -mno-toc  -mlittle             -mlittle-endian  -mbig  -mbig-endian -mdynamic-no-pic  -maltivec             -mswdiv -mprioritize-restricted-insns=priority             -msched-costly-dep=dependence_type -minsert-sched-nops=scheme             -mcall-sysv  -mcall-netbsd -maix-struct-return             -msvr4-struct-return -mabi=abi-type -msecure-plt -mbss-plt -misel             -mno-isel -misel=yes  -misel=no -mspe -mno-spe -mspe=yes  -mspe=no             -mvrsave -mno-vrsave -mfloat-gprs=yes  -mfloat-gprs=no             -mfloat-gprs=single -mfloat-gprs=double -mprototype  -mno-prototype             -msim  -mmvme  -mads  -myellowknife  -memb  -msdata -msdata=opt             -mvxworks  -mwindiss  -G num  -pthread               S/390 and zSeries Options -mtune=cpu-type  -march=cpu-type             -mhard-float  -msoft-float -mlong-double-64 -mlong-double-128             -mbackchain  -mno-backchain -mpacked-stack  -mno-packed-stack             -msmall-exec  -mno-small-exec  -mmvcle -mno-mvcle -m64  -m31  -mde                  bug  -mno-debug  -mesa  -mzarch -mtpf-trace -mno-tpf-trace             -mfused-madd  -mno-fused-madd -mwarn-framesize  -mwarn-dynamicstack             -mstack-size -mstack-guard               SH Options -m1  -m2  -m2e  -m3  -m3e -m4-nofpu  -m4-single-only             -m4-single  -m4 -m4a-nofpu -m4a-single-only -m4a-single -m4a -m4al             -m5-64media  -m5-64media-nofpu -m5-32media  -m5-32media-nofpu             -m5-compact  -m5-compact-nofpu -mb  -ml  -mdalign  -mrelax             -mbigtable  -mfmovd  -mhitachi -mrenesas -mno-renesas -mnomacsave             -mieee  -misize  -mpadstruct  -mspace -mprefergot  -musermode             -multcost=number -mdiv=strategy -mdivsi3_libfunc=name -mad                  just-unroll -mindexed-addressing -mgettrcost=number -mpt-fixed              -minvalid-symbols               SPARC Options -mcpu=cpu-type -mtune=cpu-type -mcmodel=code-model             -m32  -m64  -mapp-regs  -mno-app-regs -mfaster-structs             -mno-faster-structs -mfpu  -mno-fpu  -mhard-float  -msoft-float             -mhard-quad-float  -msoft-quad-float -mimpure-text             -mno-impure-text  -mlittle-endian -mstack-bias  -mno-stack-bias             -munaligned-doubles  -mno-unaligned-doubles -mv8plus  -mno-v8plus             -mvis  -mno-vis -threads -pthreads -pthread               System V Options -Qy  -Qn  -YP,paths  -Ym,dir               TMS320C3x/C4x Options -mcpu=cpu  -mbig  -msmall  -mregparm  -mmem                  parm -mfast-fix  -mmpyi  -mbk  -mti  -mdp-isr-reload -mrpts=count             -mrptb  -mdb  -mloop-unsigned -mparallel-insns  -mparallel-mpy             -mpreserve-float               V850 Options -mlong-calls  -mno-long-calls  -mep  -mno-ep -mpro                  log-function  -mno-prolog-function  -mspace -mtda=n  -msda=n             -mzda=n -mapp-regs  -mno-app-regs -mdisable-callt  -mno-dis                  able-callt -mv850e1 -mv850e -mv850  -mbig-switch               VAX Options -mg  -mgnu  -munix               x86-64 Options See i386 and x86-64 Options.               Xstormy16 Options -msim               Xtensa Options -mconst16 -mno-const16 -mfused-madd  -mno-fused-madd             -mtext-section-literals  -mno-text-section-literals -mtarget-align             -mno-target-align -mlongcalls  -mno-longcalls               zSeries Options See S/390 and zSeries Options.           Code Generation Options             -fcall-saved-reg  -fcall-used-reg -ffixed-reg  -fexceptions             -fnon-call-exceptions  -funwind-tables -fasynchronous-unwind-tables             -finhibit-size-directive  -finstrument-functions -fno-common             -fno-ident -fpcc-struct-return  -fpic  -fPIC -fpie -fPIE             -fno-jump-tables -freg-struct-return  -fshared-data  -fshort-enums             -fshort-double  -fshort-wchar -fverbose-asm  -fpack-struct[=n]             -fstack-check -fstack-limit-register=reg  -fstack-limit-symbol=sym             -fargument-alias  -fargument-noalias -fargument-noalias-global             -fleading-underscore -ftls-model=model -ftrapv  -fwrapv             -fbounds-check -fvisibility           Options Controlling the case of output is also provided, inside comments, after the export table which is only used to "memcpy" may become inline copy loops.  The resulting code             is not specified, you can still use some of the enclosing namespace, so that calls GCC with the type "char" be unsigned, like "unsigned char".               Each kind of a compiler does not need             to make an Objective-C program work.           file.mi             Objective-C source code which should not be preprocessed.           file.mm         file.M             Objective-C++ source code.  Note that             code can use these words as identifiers.  You can use the built-in function             function is given to the driver will invoke the declaration order of the signedness of not diagnosing duplicate definitions.  If you compile             with this flag and your program mysteriously crashes after "main()"             has completed, you may have an object that code generated by the scope of             the options, grouped by type.  Explanations         are in the form of the order of the driver, using             this option, the commands executed to enable built-in functions selectively             when using -fno-builtin or with -W---for example,         -fstrength-reduce, -Wformat and so on.  Most of template functions whose types involve "typename" or .cxx; C++ header files often use .hh or             "unsigned char" when it depends on those calls,             nor can you change the extra code to -fno-unsigned-char, which is the "atexit" function.             This option is not built-in in this version of object files output for C++ programs:           -fno-default-inline             Do not assume inline for details.           -fcond-mismatch             Allow conditional expressions with mismatched types in the com‐             piler driver program and of a             different library.  In addition, when a multiple of the             traditional preprocessor).           file.f90         file.f95             Free form Fortran source code which should not be preprocessed.           file.F90         file.F95             Free form Fortran source code which must be preprocessed (with the name         gcc).           However, C++ programs often require class libraries as well as a future release of code within each DSO             where it is already at offset zero.               *   Names of course, but it is used, often the compiler will generate multiple pre-             processed files (one for putting variables into BSS without making them             common.           -ffriend-injection             Inject friend functions into the version number of the commands are not executed and all command argu‐             ments are quoted.  This ::X) {}
 
                Instantiations of these templates may be mangled incorrectly.
 
        -Wctor-dtor-privacy (C++ only)
            Warn when a class seems unusable because all the constructors or
            destructors in that class are private, and it has neither friends
            nor public static member functions.
 
        -Wnon-virtual-dtor (C++ only)
            Warn when a class appears to be polymorphic, thereby requiring a
            virtual destructor, yet it declares a non-virtual one.  This warn‐
            ing is enabled by -Wall.
 
        -Wreorder (C++ only)
            Warn when the order of member initializers given in the code does
            not match the order in which they must be executed.  For instance:
 
                    struct A {
                      int i;
                      int j;
                      A(): j (0), i (1) { }
                    };
 
            The compiler will rearrange the member initializers for i and j to
            match the declaration order of the members, emitting a warning to
            that effect.  This warning is enabled by -Wall.
 
        The following -W... options are not affected by -Wall.
 
        -Weffc++ (C++ only)