-ffixed- Mark as being unavailable to the compiler -fcall-used- Mark as being corrupted by function calls -fcall-saved- Mark as being preserved across functions -finline-limit= Limits the size of inlined functions to -fmessage-length= Limits diagnostics messages lengths to characters per line. 0 suppresses line-wrapping -fdiagnostics-show-location=[once | every-line] Indicates how often source location information should be emitted, as prefix, at the beginning of diagnostics when line-wrapping -ftrapv Trap for signed overflow in addition / subtraction / multiplication -fmem-report Report on permanent memory allocation at end of run -ftime-report Report time taken by each compiler pass at end of run -fsingle-precision-constant Convert floating point constant to single precision constant -fbounds-check Generate code to check bounds before dereferencing pointers and arrays -fbounded-pointers Compile pointers as triples: value, base & end -funsafe-math-optimizations Allow math optimizations that may violate IEEE or ANSI standards -ftrapping-math Floating-point operations can trap -fmath-errno Set errno after built-in math functions -fguess-branch-probability Enables guessing of branch probabilities -fpeephole2 Enables an rtl peephole pass run before sched2 -fident Process #ident directives -fleading-underscore External symbols have a leading underscore -fssa-dce Enable aggressive SSA dead code elimination -fssa-ccp Enable SSA conditional constant propagation -fssa Enable SSA optimizations -finstrument-functions Instrument function entry/exit with profiling calls -fdump-unnumbered Suppress output of instruction numbers and line number notes in debugging dumps -fmerge-all-constants Attempt to merge identical constants and constant variables -fmerge-constants Attempt to merge identical constants accross compilation units -falign-functions Align the start of functions -falign-labels Align all labels -falign-jumps Align labels which are only reached by jumping -falign-loops Align the start of loops -fstrict-aliasing Assume strict aliasing rules apply -fargument-noalias-global Assume arguments do not alias each other or globals -fargument-noalias Assume arguments may alias globals but not each other -fargument-alias Specify that arguments may alias each other & globals -fstack-check Insert stack checking code into the program -fpack-struct Pack structure members together without holes -foptimize-register-move Do the full regmove optimization pass -fregmove Enables a register move optimization -fgnu-linker Output GNU ld formatted global initializers -fverbose-asm Add extra commentry to assembler output -fdata-sections place data items into their own section -ffunction-sections place each function into its own section -finhibit-size-directive Do not generate .size directives -fcommon Do not put uninitialized globals in the common section -fcprop-registers Do the register copy-propagation optimization pass -frename-registers Do the register renaming optimization pass -freorder-blocks Reorder basic blocks to improve code placement -fbranch-probabilities Use profiling information for branch probabilities -ftest-coverage Create data files needed by gcov -fprofile-arcs Insert arc based program profiling code -fnon-call-exceptions Support synchronous non-call exceptions -fasynchronous-unwind-tables Generate unwind tables exact at each instruction boundary -funwind-tables Just generate unwind tables for exception handling -fexceptions Enable exception handling -fpic Generate position independent code, if possible -fbranch-count-reg Replace add,compare,branch with branch on count reg -fsched-spec-load-dangerous Allow speculative motion of more loads -fsched-spec-load Allow speculative motion of some loads -fsched-spec Allow speculative motion of non-loads -fsched-interblock Enable scheduling across basic blocks -fschedule-insns2 Reschedule instructions after register allocation -fschedule-insns Reschedule instructions before register allocation -fpretend-float Pretend that host and target use the same FP format -fdelete-null-pointer-checks Delete useless null pointer checks -frerun-loop-opt Run the loop optimizer twice -frerun-cse-after-loop Run CSE pass after loop optimizations -fgcse-sm Perform store motion after global subexpression elimination -fgcse-lm Perform enhanced load motion during global subexpression elimination -fgcse Perform the global common subexpression elimination -fdelayed-branch Attempt to fill delay slots of branch instructions -freg-struct-return Return 'short' aggregates in registers -fpcc-struct-return Return 'short' aggregates in memory, not registers -fcaller-saves Enable saving registers around function calls -fshared-data Mark data as shared rather than private -fsyntax-only Check for syntax errors, then stop -fkeep-static-consts Emit static const variables even if they are not used -finline Pay attention to the 'inline' keyword -fkeep-inline-functions Generate code for funcs even if they are fully inlined -finline-functions Integrate simple functions into their callers -ffunction-cse Allow function addresses to be held in registers -fforce-addr Copy memory address constants into regs before using -fforce-mem Copy memory operands into registers before using -fpeephole Enable machine specific peephole optimizations -fwritable-strings Store strings in writable data section -freduce-all-givs Strength reduce all loop general induction variables -fmove-all-movables Force all loop invariant computations out of loops -fprefetch-loop-arrays Generate prefetch instructions, if available, for arrays in loops -funroll-all-loops Perform loop unrolling for all loops -funroll-loops Perform loop unrolling when iteration count is known -fstrength-reduce Perform strength reduction optimizations -fthread-jumps Perform jump threading optimizations -fexpensive-optimizations Perform a number of minor, expensive optimizations -fcse-skip-blocks When running CSE, follow conditional jumps -fcse-follow-jumps When running CSE, follow jumps to their targets -foptimize-sibling-calls Optimize sibling and tail recursive calls -fomit-frame-pointer When possible do not generate stack frames -fdefer-pop Defer popping functions args from stack until later -fvolatile-static Consider all mem refs to static data to be volatile -fvolatile-global Consider all mem refs to global data to be volatile -fvolatile Consider all mem refs through pointers as volatile -ffloat-store Do not store floats in registers -feliminate-dwarf2-dups Perform DWARF2 duplicate elimination -O[number] Set optimization level to [number] -Os Optimize for space rather than speed --param max-gcse-passes= The maximum number of passes to make when doing GCSE --param max-gcse-memory= The maximum amount of memory to be allocated by GCSE --param max-pending-list-length= The maximum length of scheduling's pending operations list --param max-delay-slot-live-search= The maximum number of instructions to consider to find accurate live register information --param max-delay-slot-insn-search= The maximum number of instructions to consider to fill a delay slot --param max-inline-insns= The maximum number of instructions in a function that is eligible for inlining -pedantic Issue warnings needed by strict compliance to ISO C -pedantic-errors Like -pedantic except that errors are produced -w Suppress warnings -W Enable extra warnings -Wmissing-noreturn Warn about functions which might be candidates for attribute noreturn -Wdeprecated-declarations Warn about uses of __attribute__((deprecated)) declarations -Wdisabled-optimization Warn when an optimization pass is disabled -Wpadded Warn when padding is required to align struct members -Wpacked Warn when the packed attribute has no effect on struct layout -Winline Warn when an inlined function cannot be inlined -Wuninitialized Warn about uninitialized automatic variables -Wunreachable-code Warn about code that will never be executed -Wcast-align Warn about pointer casts which increase alignment -Waggregate-return Warn about returning structures, unions or arrays -Wswitch Warn about enumerated switches missing a specific case -Wshadow Warn when one local variable shadows another -Werror Treat all warnings as errors -Wsystem-headers Do not suppress warnings from system headers -Wunused-value Warn when an expression value is unused -Wunused-variable Warn when a variable is unused -Wunused-parameter Warn when a function parameter is unused -Wunused-label Warn when a label is unused -Wunused-function Warn when a function is unused -Wunused Enable unused warnings -Wlarger-than- Warn if an object is larger than bytes -p Enable function profiling -o Place output into -G Put global and static data smaller than bytes into a special section (on some targets) -gdwarf-2 Generate DWARF-2 debug info -gdwarf+ Generate extended DWARF-1 format debug info -gdwarf Generate DWARF-1 format debug info -gstabs+ Generate extended STABS format debug info -gstabs Generate STABS format debug info -ggdb Generate debugging info in default extended format -g Generate debugging info in default format -aux-info Emit declaration info into -quiet Do not display functions compiled or elapsed time -version Display the compiler's version -d[letters] Enable dumps from specific passes of the compiler -dumpbase Base name to be used for dumps from specific passes -fsched-verbose= Set the verbosity level of the scheduler --help Display this information Language specific options: -ansi Compile just for ISO C89 -fallow-single-precisio Do not promote floats to double if using -traditional -std= Determine language standard -funsigned-bitfields Make bit-fields by unsigned by default -fsigned-char Make 'char' be signed by default -funsigned-char Make 'char' be unsigned by default -traditional Attempt to support traditional K&R style C -fno-asm Do not recognize the 'asm' keyword -fno-builtin Do not recognize any built in functions -fhosted Assume normal C execution environment -ffreestanding Assume that standard libraries & main might not exist -fcond-mismatch Allow different types as args of ? operator -fdollars-in-identifier Allow the use of $ inside identifiers -fshort-double Use the same size for double as for float -fshort-enums Use the smallest fitting integer to hold enums -fshort-wchar Override the underlying type for wchar_t to `unsigned short' -Wall Enable most warning messages -Wbad-function-cast Warn about casting functions to incompatible types -Wmissing-format-attrib Warn about functions which might be candidates for format attributes -Wcast-qual Warn about casts which discard qualifiers -Wchar-subscripts Warn about subscripts whose type is 'char' -Wcomment Warn if nested comments are detected -Wcomments Warn if nested comments are detected -Wconversion Warn about possibly confusing type conversions -Wformat Warn about printf/scanf/strftime/strfmon format anomalies -Wno-format-y2k Don't warn about strftime formats yielding 2 digit years -Wno-format-extra-args Don't warn about too many arguments to format functions -Wformat-nonliteral Warn about non-string-literal format strings -Wformat-security Warn about possible security problems with format functions -Wimplicit-function-dec Warn about implicit function declarations -Wimplicit-int Warn when a declaration does not specify a type -Wimport Warn about the use of the #import directive -Wno-long-long Do not warn about using 'long long' when -pedantic -Wmain Warn about suspicious declarations of main -Wmissing-braces Warn about possibly missing braces around initializers -Wmissing-declarations Warn about global funcs without previous declarations -Wmissing-prototypes Warn about global funcs without prototypes -Wmultichar Warn about use of multicharacter literals -Wnested-externs Warn about externs not at file scope level -Wparentheses Warn about possible missing parentheses -Wsequence-point Warn about possible violations of sequence point rules -Wpointer-arith Warn about function pointer arithmetic -Wredundant-decls Warn about multiple declarations of the same object -Wsign-compare Warn about signed/unsigned comparisons -Wfloat-equal Warn about testing equality of floating point numbers -Wunknown-pragmas Warn about unrecognized pragmas -Wstrict-prototypes Warn about non-prototyped function decls -Wtraditional Warn about constructs whose meaning change in ISO C -Wtrigraphs Warn when trigraphs are encountered -Wwrite-strings Mark strings as 'const char *' Options for Pascal: -fclassic-pascal-level- Reject conformant arrays and anything besides ISO 7185 Pascal -fclassic-pascal Reject anything besides ISO 7185 Pascal -fstandard-pascal-level Synonym for `--classic-pascal-level-0' -fstandard-pascal Synonym for `--classic-pascal' -fextended-pascal Reject anything besides ISO 10206 Extended Pascal -fobject-pascal Reject anything besides (the implemented parts of) ANSI draft Object Pascal -fucsd-pascal Try to emulate UCSD Pascal -fborland-pascal Try to emulate Borland Pascal, version 7.0 -fdelphi Try to emulate Borland Pascal, version 7.0, with some Delphi extensions -fpascal-sc Be strict about the implemented Pascal-SC extensions -fgnu-pascal Undo the effect of a previous `--foo-pascal', `--delphi' or `--pascal-sc' switch -fdebug-tree (For GPC developers.) Show the internal representation of a given tree node (name or address) -fdebug-gpi (For GPC developers.) Show what is written to and read from GPI files (huge output!) -fdebug-automake (For GPC developers.) Give additional information about the actions of automake -fdebug-source Output the source while it is processed -fno-debug-info Inhibit `-g' options (temporary work-around, this option may disappear in the future) -fprogress-messages Output source file names and line numbers while compiling -fprogress-bar Output number of processed lines while compiling -fautolink Automatically link object files provided by units/modules or `{$L ...}' (default) -fno-autolink Do not automatically link object files provided by units/modules/`{$L ...}' -fautomake Automatically compile changed units/modules/ ` {$L ...}' files and link the object files provided -fno-automake Same as `--no-autolink' -fautobuild Automatically compile all units/modules/`{$L ...}' files and link the object files provided -fno-autobuild Same as `--no-autolink' -fautomake-gpc Set the Pascal compiler invoked by automake -fautomake-gcc Set the C compiler invoked by automake -fautomake-g++ Set the C++ compiler invoked by automake -famtmpfile (Internal switch used for AutoMake) -fignore-garbage-after- Ignore anything after the terminating `.' (default in `--borland-pascal') -fno-ignore-garbage-aft Complain about anything after the terminating `.' (default) -fextended-syntax Enable certain `dangerous' features such as ignoring function results, pointer arithmetic or using `CString's as strings (same as `{$X+}') -fno-extended-syntax Disable the dangerous features enabled by `--extended-syntax' (default; same as `{$X-}') -fshort-circuit Guarantee short-circuit Boolean evaluation (default; same as `{$B-}') -fno-short-circuit Do not guarantee short-circuit Boolean evaluation (same as `{$B+}') -fmixed-comments Allow comments like `{ ... *)' as required in ISO Pascal (default in ISO 7185/10206 Pascal mode) -fno-mixed-comments Ignore `{' and `}' within `(* ... *)' comments and vice versa (default) -fnested-comments Allow nested comments like `{ { } }' and `(* (* *) *)' -fno-nested-comments Do not allow nested comments (default) -fdelphi-comments Allow Delphi style `//' comments (default) -fno-delphi-comments Do not allow Delphi style `//' comments -fmacros Expand macros (default) -fno-macros Do not expand macros (default with `--ucsd-pascal', `--borland-pascal' or `--delphi') -fignore-function-resul Do not complain when a function is called like a procedure -fno-ignore-function-re Complain when a function is called like a procedure (default) -ftruncate-strings Truncate strings being assigned to other strings of too short capacity. -fno-truncate-strings Treat string assignments to other strings of too short capacity as errors. -fexact-compare-strings Do not blank-pad strings for comparisons -fno-exact-compare-stri Blank-pad strings for comparisons -fdouble-quoted-strings Allow strings enclosed in "". -fno-double-quoted-stri Do not allow strings enclosed in "". -fio-checking Do automatic run-time checks after I/O operations (same as `{$I+}') -fno-io-checking Do not check I/O operations automatically (same as `{$I-}') -fread-base-specifier In read statements, allow input base specifier `n#' (default) -fno-read-base-specifie In read statements, do not allow input base specifier `n#' (default in ISO 7185 Pascal) -fread-hex In read statements, allow hexadecimal input with `$' (default) -fno-read-hex In read statements, do not allow hexadecimal input with `$' (default in ISO 7185 Pascal) -fread-white-space In read statements, require whitespace after numbers -fno-read-white-space In read statements, do not require whitespace after numbers (default) -fwrite-clip-strings In write statements, truncate strings exceeding their field width (`Write (SomeLongString : 3)') -fno-write-clip-strings Do not truncate strings exceeding their field width -fwrite-real-blank Output a blank in front of positive reals in exponential form (default) -fno-write-real-blank Do not output a blank in front of positive reals in exponential form -fwrite-capital-exponen Write real exponents with a capital `E' -fno-write-capital-expo Write real exponents with a lowercase `e' -ftransparent-file-name Derive external file names from variable names -fno-transparent-file-n Do not derive external file names from variable names (default) -ffield-widths Comma-separated list of default field widths for Integer, Real, Boolean, LongInt, LongReal -fno-field-widths Reset the default field widths -fpedantic Reject everything not allowed in some dialect, e.g. redefinition of its keywords -fno-pedantic Don't give pedantic warnings -fstack-checking Enable stack checking (same as `{$S+}') -fno-stack-checking Disable stack checking (same as `{$S-}') -ftyped-address Make the result of the address operator typed (same as `{$T+}', default) -fno-typed-address Make the result of the address operator an untyped pointer (same as `{$T-}') -fenable-keyword Enable a keyword, independently of dialect defaults -fdisable-keyword Disable a keyword, independently of dialect defaults -fassert Enable assertion checking (default) -fno-assert Disable assertion checking -fsetlimit Define the range for `set of Integer' etc. -fgpc-main External name for the program's entry point (default: `main') -finterface-only Compile only the interface part of a unit/module and exit -fimplementation-only Do not produce a GPI file; only compile the implementation part -fexecutable-file-name Name for the output file, if specified; otherwise derive from main source file name -funit-path Directories where to look for unit/module sources -fno-unit-path Forget about directories where to look for unit/module sources -fobject-path Directories where to look for additional object (and source) files -fno-object-path Forget about directories where to look for additional object (and source) files -fexecutable-path Path where to create the executable file -fno-executable-path Create the executable file in the directory where the main source is (default) -funit-destination-path Path where to create object and GPI files of Pascal units -fno-unit-destination-p Create object and GPI files of Pascal units in the current directory (default) -fobject-destination-pa Path where to create additional object files (e.g. of C files, not Pascal units) -fno-object-destination Create additional object files (e.g. of C files, not Pascal units) in the current directory (default) -fno-default-paths Do not add a default path to the unit and object path -fgpi-destination-path (Internal switch used for AutoMake) -fuses Add an implicit `uses' clause -finit-modules Initialize the named modules in addition to those imported regularly; kind of a kludge -fcidefine Define a case-insensitive macro -fcsdefine Define a case-sensitive macro -fbig-endian Tell GPC that the system is big-endian (for those targets where it can vary) -flittle-endian Tell GPC that the system is little-endian (for those targets where it can vary) -fprint-needed-options Print the needed options -Wwarnings Enable warnings (same as `{$W+}') -Wno-warnings Disable all warnings (same as `{$W-}') -Widentifier-case Warn about an identifier written with varying case -Widentifier-case-local Warn about an identifier written with varying case within one program/module/unit -Wno-identifier-case Do not warn about an identifier written with varying case (default) -Wno-identifier-case-lo Same as `-Wno-identifier-case' -Wfield-name-problem Warn about ignored field names in initializers (default) -Wno-field-name-problem Do not warn about ignored field names in initializers -Wobject-directives Warn about unimplemented `private', `protected' and `public' directives (default) -Wno-object-directives Do not warn about unimplemented `private', `protected' and `public' directives -Wimplicit-abstract Warn when an object type not declared `abstract' contains an abstract method (default) -Wno-implicit-abstract Do not warn when an object type not `declared' abstract contains an abstract method -Winherited-abstract Warn when an abstract object type inherits from a non-abstract one (default) -Wno-inherited-abstract Do not warn when an abstract object type inherits from a non-abstract one -Wimplicit-io Warn when `Input' or `Output' are used implicitly -Wno-implicit-io Do not warn when `Input' or `Output' are used implicitly (default) -Wlocal-external Warn about local `external' declarations -Wno-local-external Do not warn about local `external' declarations -Wtyped-const Warn about misuse of typed constants as initialized variables (default) -Wno-typed-const Do not warn about misuse of typed constants as initialized variables -Wnear-far Warn about use of useless `near' or `far' directives (default) -Wno-near-far Do not warn about use of useless `near' or `far' directives -Wunderscore Warn about double/leading/trailing underscores in identifiers -Wno-underscore Do not warn about double/leading/trailing underscores in identifiers -Wmixed-comments Warn about mixed comments like `{ ... *)' -Wno-mixed-comments Do not warn about mixed comments -Wnested-comments Warn about nested comments like `{ { } }' -Wno-nested-comments Do not warn about nested comments -Wsemicolon Warn about a semicolon after @samp{then}, @samp{else} or @samp{do} (default) -Wno-semicolon Do not warn about a semicolon after @samp{then}, @samp{else} or @samp{do} Target specific options: -mno-red-zone Do not use red-zone in the x86-64 code -mred-zone Use red-zone in the x86-64 code -m32 Generate 32bit i386 code -m64 Generate 64bit x86-64 code -m96bit-long-double sizeof(long double) is 12 -m128bit-long-double sizeof(long double) is 16 -mno-sse2 Do not support MMX, SSE and SSE2 built-in functions and code generation -msse2 Support MMX, SSE and SSE2 built-in functions and code generation -mno-sse Do not support MMX and SSE built-in functions and code generation -msse Support MMX and SSE built-in functions and code generation -mno-3dnow Do not support 3DNow! built-in functions -m3dnow Support 3DNow! built-in functions -mno-mmx Do not support MMX built-in functions -mmmx Support MMX built-in functions -mno-accumulate-outgoing- Do not use push instructions to save outgoing arguments -maccumulate-outgoing-arg Use push instructions to save outgoing arguments -mno-push-args Do not use push instructions to save outgoing arguments -mpush-args Use push instructions to save outgoing arguments -mno-inline-all-stringops Do not inline all known string operations -minline-all-stringops Inline all known string operations -mno-align-stringops Do not align destination of the string operations -malign-stringops Align destination of the string operations -mstack-arg-probe Enable stack probing -momit-leaf-frame-pointer Omit the frame pointer in leaf functions -mfancy-math-387 Generate sin, cos, sqrt for FPU -mno-fancy-math-387 Do not generate sin, cos, sqrt for FPU -mno-fp-ret-in-387 Do not return values of functions in FPU registers -mfp-ret-in-387 Return values of functions in FPU registers -mno-ieee-fp Do not use IEEE math for fp comparisons -mieee-fp Use IEEE math for fp comparisons -mno-svr3-shlib Uninitialized locals in .data -msvr3-shlib Uninitialized locals in .bss -mno-align-double Align doubles on word boundary -malign-double Align some doubles on dword boundary -mno-rtd Use normal calling convention -mrtd Alternate calling convention -mno-soft-float Use hardware fp -msoft-float Do not use hardware fp -mhard-float Use hardware fp -mno-80387 Do not use hardware fp -m80387 Use hardware fp -masm= Use given assembler dialect -mcmodel= Use given x86-64 code model -mbranch-cost= Branches are this expensive (1-5, arbitrary units) -mpreferred-stack-boundar Attempt to keep stack aligned to this power of 2 -malign-functions= Function starts are aligned to this power of 2 -malign-jumps= Jump targets are aligned to this power of 2 -malign-loops= Loop code aligned to this power of 2 -mregparm= Number of registers used to pass integer arguments -march= Generate code for given CPU -mfpmath= Generate floating point mathematics using given instruction set -mcpu= Schedule code for given CPU There are undocumented target specific options as well. Usage: gpc [options] file... Options: -pass-exit-codes Exit with highest error code from a phase --help Display this information --target-help Display target specific command line options -dumpspecs Display all of the built in spec strings -dumpversion Display the version of the compiler -dumpmachine Display the compiler's target processor -print-search-dirs Display the directories in the compiler's search path -print-libgcc-file-name Display the name of the compiler's companion library -print-file-name= Display the full path to library -print-prog-name= Display the full path to compiler component -print-multi-directory Display the root directory for versions of libgcc -print-multi-lib Display the mapping between command line options and multiple library search directories -print-multi-os-directory Display the relative path to OS libraries -Wa, Pass comma-separated on to the assembler -Wp, Pass comma-separated on to the preprocessor -Wl, Pass comma-separated on to the linker -Xlinker Pass on to the linker -save-temps Do not delete intermediate files -pipe Use pipes rather than intermediate files -time Time the execution of each subprocess -specs= Override built-in specs with the contents of -std= Assume that the input sources are for -B Add to the compiler's search paths -b Run gcc for target , if installed -V Run gcc version number , if installed -v Display the programs invoked by the compiler -### Like -v but options quoted and commands not executed -E Preprocess only; do not compile, assemble or link -S Compile only; do not assemble or link -c Compile and assemble, but do not link -o Place the output into -x Specify the language of the following input files Permissible languages include: Pascal c c++ none 'none' means revert to the default behavior of guessing the language based on the file's extension Options starting with -g, -f, -m, -O, -W, or --param are automatically passed on to the various sub-processes invoked by gpc. In order to pass other options on to these processes the -W options must be used. For bug reporting instructions, please see: