X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gcc%2Fdoc%2Finvoke.texi;h=c4dcd88866875ad79a7a6f137fdb33268d3fa595;hb=a4d0554781f4aa5af93b620984c91df51dbe87ba;hp=3fde0683694377fae3b37b71e58245883baea54f;hpb=fdda361d74d0d7a3a1f3abba358139846e6a05c8;p=gcc.git diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 3fde0683694..c4dcd888668 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -230,7 +230,7 @@ Objective-C and Objective-C++ Dialects}. -Wimport -Wno-import -Winit-self -Winline @gol -Wno-int-to-pointer-cast @gol -Wno-invalid-offsetof -Winvalid-pch @gol --Wlarger-than-@var{len} -Wlong-long @gol +-Wlarger-than-@var{len} -Wunsafe-loop-optimizations -Wlong-long @gol -Wmain -Wmissing-braces -Wmissing-field-initializers @gol -Wmissing-format-attribute -Wmissing-include-dirs @gol -Wmissing-noreturn @gol @@ -281,7 +281,7 @@ Objective-C and Objective-C++ Dialects}. -ftree-vectorizer-verbose=@var{n} @gol -fdump-tree-storeccp@r{[}-@var{n}@r{]} @gol -feliminate-dwarf2-dups -feliminate-unused-debug-types @gol --feliminate-unused-debug-symbols -fmem-report -fprofile-arcs -ftree-based-profiling @gol +-feliminate-unused-debug-symbols -fmem-report -fprofile-arcs @gol -frandom-seed=@var{string} -fsched-verbose=@var{n} @gol -ftest-coverage -ftime-report -fvar-tracking @gol -g -g@var{level} -gcoff -gdwarf-2 @gol @@ -311,7 +311,7 @@ Objective-C and Objective-C++ Dialects}. -fno-default-inline -fno-defer-pop -floop-optimize2 -fmove-loop-invariants @gol -fno-function-cse -fno-guess-branch-probability @gol -fno-inline -fno-math-errno -fno-peephole -fno-peephole2 @gol --funsafe-math-optimizations -ffinite-math-only @gol +-funsafe-math-optimizations -funsafe-loop-optimizations -ffinite-math-only @gol -fno-trapping-math -fno-zero-initialized-in-bss @gol -fomit-frame-pointer -foptimize-register-move @gol -foptimize-sibling-calls -fprefetch-loop-arrays @gol @@ -325,7 +325,7 @@ Objective-C and Objective-C++ Dialects}. -fsched-stalled-insns=@var{n} -sched-stalled-insns-dep=@var{n} @gol -fsched2-use-superblocks @gol -fsched2-use-traces -freschedule-modulo-scheduled-loops @gol --fsignaling-nans -fsingle-precision-constant -fspeculative-prefetching @gol +-fsignaling-nans -fsingle-precision-constant @gol -fstrength-reduce -fstrict-aliasing -ftracer -fthread-jumps @gol -funroll-all-loops -funroll-loops -fpeel-loops @gol -fsplit-ivs-in-unroller -funswitch-loops @gol @@ -349,6 +349,7 @@ Objective-C and Objective-C++ Dialects}. -include @var{file} -imacros @var{file} @gol -iprefix @var{file} -iwithprefix @var{dir} @gol -iwithprefixbefore @var{dir} -isystem @var{dir} @gol +-isysroot @var{dir} @gol -M -MM -MF -MG -MP -MQ -MT -nostdinc @gol -P -fworking-directory -remap @gol -trigraphs -undef -U@var{macro} -Wp,@var{option} @gol @@ -361,14 +362,15 @@ Objective-C and Objective-C++ Dialects}. @item Linker Options @xref{Link Options,,Options for Linking}. @gccoptlist{@var{object-file-name} -l@var{library} @gol --nostartfiles -nodefaultlibs -nostdlib -pie @gol +-nostartfiles -nodefaultlibs -nostdlib -pie -rdynamic @gol -s -static -static-libgcc -shared -shared-libgcc -symbolic @gol -Wl,@var{option} -Xlinker @var{option} @gol -u @var{symbol}} @item Directory Options @xref{Directory Options,,Options for Directory Search}. -@gccoptlist{-B@var{prefix} -I@var{dir} -iquote@var{dir} -L@var{dir} -specs=@var{file} -I-} +@gccoptlist{-B@var{prefix} -I@var{dir} -iquote@var{dir} -L@var{dir} +-specs=@var{file} -I- --sysroot=@var{dir}} @item Target Options @c I wrote this xref this way to avoid overfull hbox. -- rms @@ -429,6 +431,9 @@ Objective-C and Objective-C++ Dialects}. -melf -maout -melinux -mlinux -sim -sim2 @gol -mmul-bug-workaround -mno-mul-bug-workaround} +@emph{CRX Options} +@gccoptlist{-mmac -mpush-args} + @emph{Darwin Options} @gccoptlist{-all_load -allowable_client -arch -arch_errors_fatal @gol -arch_only -bind_at_load -bundle -bundle_loader @gol @@ -480,6 +485,7 @@ Objective-C and Objective-C++ Dialects}. -mlinked-fp -mlong-calls -malign-labels @gol -mlibrary-pic -macc-4 -macc-8 @gol -mpack -mno-pack -mno-eflags -mcond-move -mno-cond-move @gol +-moptimize-membar -mno-optimize-membar @gol -mscc -mno-scc -mcond-exec -mno-cond-exec @gol -mvliw-branch -mno-vliw-branch @gol -mmulti-cond-exec -mno-multi-cond-exec -mnested-cond-exec @gol @@ -518,7 +524,7 @@ Objective-C and Objective-C++ Dialects}. -m96bit-long-double -mregparm=@var{num} -msseregparm @gol -momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol -mcmodel=@var{code-model} @gol --m32 -m64} +-m32 -m64 -mlarge-data-threshold=@var{num}} @emph{IA-64 Options} @gccoptlist{-mbig-endian -mlittle-endian -mgnu-as -mgnu-ld -mno-pic @gol @@ -544,6 +550,9 @@ Objective-C and Objective-C++ Dialects}. -mno-flush-trap -mflush-trap=@var{number} @gol -G @var{num}} +@emph{M32C Options} +@gccoptlist{-mcpu=@var{cpu} -msim -memregs=@var{number}} + @emph{M680x0 Options} @gccoptlist{-m68000 -m68020 -m68020-40 -m68020-60 -m68030 -m68040 @gol -m68060 -mcpu32 -m5200 -m68881 -mbitfield -mc68000 -mc68020 @gol @@ -569,7 +578,7 @@ Objective-C and Objective-C++ Dialects}. -mips16 -mno-mips16 -mabi=@var{abi} -mabicalls -mno-abicalls @gol -mxgot -mno-xgot -mgp32 -mgp64 -mfp32 -mfp64 @gol -mhard-float -msoft-float -msingle-float -mdouble-float @gol --mpaired-single -mips3d @gol +-mdsp -mpaired-single -mips3d @gol -mlong64 -mlong32 -msym32 -mno-sym32 @gol -G@var{num} -membedded-data -mno-embedded-data @gol -muninit-const-in-rodata -mno-uninit-const-in-rodata @gol @@ -851,6 +860,11 @@ preprocessor (not included with GCC)@. @itemx @var{file}.f95 Fortran 90/95 source code which should not be preprocessed. +@item @var{file}.F90 +@itemx @var{file}.F95 +Fortran 90/95 source code which must be preprocessed (with the +traditional preprocessor). + @c FIXME: Descriptions of Java file types. @c @var{file}.java @c @var{file}.class @@ -2721,9 +2735,10 @@ included in @option{-Wall}. @item -Wstrict-aliasing=2 @opindex Wstrict-aliasing=2 This option is only active when @option{-fstrict-aliasing} is active. -It warns about all code which might break the strict aliasing rules that the -compiler is using for optimization. This warning catches all cases, but -it will also give a warning for some ambiguous cases that are safe. +It warns about code which might break the strict aliasing rules that the +compiler is using for optimization. This warning catches more cases than +@option{-Wstrict-aliasing}, but it will also give a warning for some ambiguous +cases that are safe. @item -Wall @opindex Wall @@ -2985,6 +3000,13 @@ global variable or whenever a built-in function is shadowed. @opindex Wlarger-than Warn whenever an object of larger than @var{len} bytes is defined. +@item -Wunsafe-loop-optimizations +@opindex Wunsafe-loop-optimizations +Warn if the loop cannot be optimized because the compiler could not +assume anything on the bounds of the loop indices. With +@option{-funsafe-loop-optimizations} warn if the compiler made +such assumptions. + @item -Wpointer-arith @opindex Wpointer-arith Warn about anything that depends on the ``size of'' a function type or @@ -3567,17 +3589,6 @@ executed. When an arc is the only exit or only entrance to a block, the instrumentation code can be added to the block; otherwise, a new basic block must be created to hold the instrumentation code. -@item -ftree-based-profiling -@opindex ftree-based-profiling -This option is used in addition to @option{-fprofile-arcs} or -@option{-fbranch-probabilities} to control whether those optimizations -are performed on a tree-based or rtl-based internal representation. -If you use this option when compiling with @option{-fprofile-arcs}, -you must also use it when compiling later with @option{-fbranch-probabilities}. -Currently the tree-based optimization is in an early stage of -development, and this option is recommended only for those people -working on improving it. - @need 2000 @item -ftest-coverage @opindex ftest-coverage @@ -4725,6 +4736,15 @@ Perform loop optimizations using the new loop optimizer. The optimizations (loop unrolling, peeling and unswitching, loop invariant motion) are enabled by separate flags. +@item -funsafe-loop-optimizations +@opindex funsafe-loop-optimizations +If given, the loop optimizer will assume that loop indices do not +overflow, and that the loops with nontrivial exit condition are not +infinite. This enables a wider range of loop optimizations even if +the loop optimizer itself cannot prove that these assumptions are valid. +Using @option{-Wunsafe-loop-optimizations}, the compiler will warn you +if it finds this kind of loop. + @item -fcrossjumping @opindex crossjumping Perform cross-jumping transformation. This transformation unifies equivalent code and save code size. The @@ -5307,8 +5327,9 @@ The following options are enabled: @code{-fprofile-arcs}, @code{-fprofile-values Enable profile feedback directed optimizations, and optimizations generally profitable only with profile feedback available. -The following options are enabled: @code{-fbranch-probabilities}, -@code{-fvpt}, @code{-funroll-loops}, @code{-fpeel-loops}, @code{-ftracer}. +The following options are enabled: @code{-fbranch-probabilities}, @code{-fvpt}, +@code{-funroll-loops}, @code{-fpeel-loops}, @code{-ftracer}, +@code{-fno-loop-optimize}. @end table @@ -5505,23 +5526,6 @@ and actually performs the optimizations based on them. Currently the optimizations include specialization of division operation using the knowledge about the value of the denominator. -@item -fspeculative-prefetching -@opindex fspeculative-prefetching -If combined with @option{-fprofile-arcs}, it instructs the compiler to add -a code to gather information about addresses of memory references in the -program. - -With @option{-fbranch-probabilities}, it reads back the data gathered -and issues prefetch instructions according to them. In addition to the opportunities -noticed by @option{-fprefetch-loop-arrays}, it also notices more complicated -memory access patterns---for example accesses to the data stored in linked -list whose elements are usually allocated sequentially. - -In order to prevent issuing double prefetches, usage of -@option{-fspeculative-prefetching} implies @option{-fno-prefetch-loop-arrays}. - -Enabled with @option{-fprofile-generate} and @option{-fprofile-use}. - @item -frename-registers @opindex frename-registers Attempt to avoid false dependencies in scheduled code by making use @@ -5768,6 +5772,18 @@ happens only when @option{-finline-functions} (included in @option{-O3}) is enabled and @option{--param max-inline-recursive-depth-auto} is used. The default value is 450. +@item min-inline-recursive-probability +Recursive inlining is profitable only for function having deep recursion +in average and can hurt for function having little recursion depth by +increasing the prologue size or complexity of function body to other +optimizers. + +When profile feedback is available (see @option{-fprofile-generate}) the actual +recursion depth can be guessed from probability that function will recurse via +given call expression. This parameter limits inlining only to call expression +whose probability exceeds given threshold (in percents). The default value is +10. + @item inline-call-cost Specify cost of call instruction relative to simple arithmetics operations (having cost of 1). Increasing this cost disqualifies inlining of non-leaf @@ -6168,6 +6184,14 @@ For predictable results, you must also specify the same set of options that were used to generate code (@option{-fpie}, @option{-fPIE}, or model suboptions) when you specify this option. +@item -rdynamic +@opindex rdynamic +Pass the flag @option{-export-dynamic} to the ELF linker, on targets +that support it. This instructs the linker to add all symbols, not +only used ones, to the dynamic symbol table. This option is needed +for some uses of @code{dlopen} or to allow obtaining backtraces +from within a program. + @item -s @opindex s Remove all symbol table and relocation information from the executable. @@ -6353,6 +6377,22 @@ program uses when determining what switches to pass to @file{cc1}, @option{-specs=@var{file}} can be specified on the command line, and they are processed in order, from left to right. +@item --sysroot=@var{dir} +@opindex sysroot +Use @var{dir} as the logical root directory for headers and libraries. +For example, if the compiler would normally search for headers in +@file{/usr/include} and libraries in @file{/usr/lib}, it will instead +search @file{@var{dir}/usr/include} and @file{@var{dir}/usr/lib}. + +If you use both this option and the @option{-isysroot} option, then +the @option{--sysroot} option will apply to libraries, but the +@option{-isysroot} option will apply to header files. + +The GNU linker (beginning with version 2.16) has the necessary support +for this option. If your linker does not support this option, the +header file aspect of @option{--sysroot} will still work, but the +library aspect will not. + @item -I- @opindex I- This option has been deprecated. Please use @option{-iquote} instead for @@ -6949,6 +6989,7 @@ platform. * AVR Options:: * Blackfin Options:: * CRIS Options:: +* CRX Options:: * Darwin Options:: * DEC Alpha Options:: * DEC Alpha/VMS Options:: @@ -6957,6 +6998,7 @@ platform. * HPPA Options:: * i386 and x86-64 Options:: * IA-64 Options:: +* M32C Options:: * M32R/D Options:: * M680x0 Options:: * M68hc1x Options:: @@ -7619,6 +7661,24 @@ Like @option{-sim}, but pass linker options to locate initialized data at 0x40000000 and zero-initialized data at 0x80000000. @end table +@node CRX Options +@subsection CRX Options +@cindex CRX Options + +These options are defined specifically for the CRX ports. + +@table @gcctabopt + +@item -mmac +@opindex mmac +Enable the use of multiply-accumulate instructions. Disabled by default. + +@item -mpush-args +@opindex mpush-args +Push instructions will be used to pass outgoing arguments when functions +are called. Enabled by default. +@end table + @node Darwin Options @subsection Darwin Options @cindex Darwin options @@ -8488,6 +8548,18 @@ Disable nested conditional execution optimizations. This switch is mainly for debugging the compiler and will likely be removed in a future version. +@item -moptimize-membar +@opindex moptimize-membar + +This switch removes redundant @code{membar} instructions from the +compiler generated code. It is enabled by default. + +@item -mno-optimize-membar +@opindex mno-optimize-membar + +This switch disables the automatic removal of redundant @code{membar} +instructions from the generated code. + @item -mtomcat-stats @opindex mtomcat-stats @@ -9001,6 +9073,11 @@ their size as well as function calling convention for function taking @code{long double} will be modified. Hence they will not be binary compatible with arrays or structures in code compiled without that switch. +@item -mmlarge-data-threshold=@var{number} +@opindex mlarge-data-threshold=@var{number} +When @option{-mcmodel=medium} is specified, the data greater than +@var{threshold} are placed in large data section. This value must be the +same across all object linked into the binary and defaults to 65535. @item -msvr3-shlib @itemx -mno-svr3-shlib @@ -9371,6 +9448,39 @@ to 64 bits. These are HP-UX specific flags. @end table +@node M32C Options +@subsection M32C Options +@cindex M32C options + +@table @gcctabopt +@item -mcpu=@var{name} +@opindex mcpu= +Select the CPU for which code is generated. @var{name} may be one of +@samp{r8c} for the R8C/Tiny series, @samp{m16c} for the M16C (up to +/60) series, @samp{m32cm} for the M16C/80 series, or @samp{m32c} for +the M32C/80 series. + +@item -msim +@opindex msim +Specifies that the program will be run on the simulator. This causes +an alternate runtime library to be linked in which supports, for +example, file I/O. You must not use this option when generating +programs that will run on real hardware; you must provide your own +runtime library for whatever I/O functions are needed. + +@item -memregs=@var{number} +@opindex memregs= +Specifies the number of memory-based pseudo-registers GCC will use +during code generation. These pseudo-registers will be used like real +registers, so there is a tradeoff between GCC's ability to fit the +code into available registers, and the performance penalty of using +memory instead of registers. Note that all modules in a program must +be compiled with the same value for this option. Because of that, you +must not use this option with the default runtime libraries gcc +builds. + +@end table + @node M32R/D Options @subsection M32R/D Options @cindex M32R/D options @@ -9839,13 +9949,17 @@ The ISA names are: @samp{mips1}, @samp{mips2}, @samp{mips3}, @samp{mips4}, @samp{mips32}, @samp{mips32r2}, and @samp{mips64}. The processor names are: -@samp{4kc}, @samp{4kp}, @samp{5kc}, @samp{20kc}, +@samp{4kc}, @samp{4km}, @samp{4kp}, +@samp{5kc}, @samp{5kf}, +@samp{20kc}, +@samp{24k}, @samp{24kc}, @samp{24kf}, @samp{24kx}, @samp{m4k}, -@samp{r2000}, @samp{r3000}, @samp{r3900}, @samp{r4000}, @samp{r4400}, -@samp{r4600}, @samp{r4650}, @samp{r6000}, @samp{r8000}, @samp{rm7000}, -@samp{rm9000}, @samp{orion}, +@samp{r2000}, @samp{r3000}, @samp{r3900}, @samp{r4000}, @samp{r4400}, +@samp{r4600}, @samp{r4650}, @samp{r6000}, @samp{r8000}, +@samp{rm7000}, @samp{rm9000}, @samp{sb1}, +@samp{sr71000}, @samp{vr4100}, @samp{vr4111}, @samp{vr4120}, @samp{vr4130}, @samp{vr4300}, @samp{vr5000}, @samp{vr5400} and @samp{vr5500}. The special value @samp{from-abi} selects the @@ -10012,6 +10126,12 @@ operations. Assume that the floating-point coprocessor supports double-precision operations. This is the default. +@itemx -mdsp +@itemx -mno-dsp +@opindex mdsp +@opindex mno-dsp +Use (do not use) the MIPS DSP ASE. @xref{MIPS DSP Built-in Functions}. + @itemx -mpaired-single @itemx -mno-paired-single @opindex mpaired-single