BBS水木清华站∶精华区

MACHINE DEPENDENT OPTIONS 
       Each of the target machine types can have its own  special 
       options, starting with `-m', to choose among various hard- 
       ware  models  or  configurations--for  example,  68010  vs 
       68020,  floating  coprocessor or none.  A single installed 
       version of the compiler can compile for any model or  con- 
       figuration, according to the options specified. 
 
       Some configurations of the compiler also support addition- 
       al special options, usually for command-line compatibility 
       with other compilers on the same platform. 
 
       These are the `-m' options defined for the 68000 series: 
 
       -m68000 
 
       -mc68000 
              Generate  output  for a 68000.  This is the default 
              when the compiler  is  configured  for  68000-based 
              systems. 
 
       -m68020 
 
       -mc68020 
              Generate  output for a 68020 (rather than a 68000). 
              This is the default when the compiler is configured 
              for 68020-based systems. 
 
       -m68881 
              Generate  output  containing 68881 instructions for 
              floating point.   This  is  the  default  for  most 
              68020-based  systems unless -nfp was specified when 
              the compiler was configured. 
 
       -m68030 
              Generate output for a 68030.  This is  the  default 
              when  the  compiler  is  configured for 68030-based 
              systems. 
 
       -m68040 
              Generate output for a 68040.  This is  the  default 
              when  the  compiler  is  configured for 68040-based 
              systems. 
 
       -m68020-40 
              Generate output for a 68040, without using  any  of 
              the  new  instructions.  This results in code which 
              can  run  relatively  efficiently   on   either   a 
              68020/68881 or a 68030 or a 68040. 
 
       -mfpa  Generate output containing Sun FPA instructions for 
              floating point. 
 
       -msoft-float 
              Generate output containing library calls for float- 
              ing  point.   WARNING:  the requisite libraries are 
              not part of GNU CC.  Normally the facilities of the 
              machine's usual C compiler are used, but this can't 
              be done directly in  cross-compilation.   You  must 
              make  your own arrangements to provide suitable li- 
              brary functions for cross-compilation. 
 
       -mshort 
              Consider type int to be 16 bits  wide,  like  short 
              int. 
 
       -mnobitfield 
              Do  not  use the bit-field instructions.  `-m68000' 
              implies `-mnobitfield'. 
 
       -mbitfield 
              Do use the bit-field instructions.   `-m68020'  im- 
              plies `-mbitfield'.  This is the default if you use 
              the unmodified sources. 
 
       -mrtd  Use a  different  function-calling  convention,  in 
              which  functions  that take a fixed number of argu- 
              ments return with the rtd instruction,  which  pops 
              their  arguments  while  returning.  This saves one 
              instruction in the caller since there is no need to 
              pop the arguments there. 
 
              This  calling  convention  is incompatible with the 
              one normally used on Unix, so you cannot use it  if 
              you  need  to call libraries compiled with the Unix 
              compiler. 
 
              Also, you must provide function prototypes for  all 
              functions  that  take variable numbers of arguments 
              (including printf); otherwise incorrect  code  will 
              be generated for calls to those functions. 
 
              In  addition,  seriously incorrect code will result 
              if you call a function  with  too  many  arguments. 
              (Normally, extra arguments are harmlessly ignored.) 
 
              The rtd instruction is supported by the  68010  and 
              68020 processors, but not by the 68000. 
 
       These `-m' options are defined for the Vax: 
 
       -munix Do not output certain jump instructions (aobleq and 
              so on) that the Unix assembler for the  Vax  cannot 
              handle across long ranges. 
 
       -mgnu  Do  output  those jump instructions, on the assump- 
              tion that you will assemble with the GNU assembler. 
 
       -mg    Output code for g-format floating point numbers in- 
              stead of d-format. 
 
       These `-m' switches are supported on the SPARC: 
 
       -mfpu 
 
       -mhard-float 
              Generate output containing floating point  instruc- 
              tions.  This is the default. 
 
       -mno-fpu 
 
       -msoft-float 
              Generate output containing library calls for float- 
              ing point.  Warning: there is no GNU floating-point 
              library  for SPARC.  Normally the facilities of the 
              machine's usual C compiler are used, but this  can- 
              not  be  done  directly  in cross-compilation.  You 
              must make your own arrangements to provide suitable 
              library functions for cross-compilation. 
 
              -msoft-float  changes the calling convention in the 
              output file; therefore, it is only  useful  if  you 
              compile all of a program with this option. 
 
       -mno-epilogue 
 
       -mepilogue 
              With  -mepilogue (the default), the compiler always 
              emits code for function exit at  the  end  of  each 
              function.   Any  function exit in the middle of the 
              function (such as a return  statement  in  C)  will 
              generate  a jump to the exit code at the end of the 
              function. 
 
              With -mno-epilogue, the compiler tries to emit exit 
              code inline at every function exit. 
 
       -mno-v8 
 
       -mv8 
 
       -msparclite 
              These  three options select variations on the SPARC 
              architecture. 
 
              By default (unless specifically configured for  the 
              Fujitsu  SPARClite),  GCC generates code for the v7 
              variant of the SPARC architecture. 
 
              -mv8 will give you SPARC v8 code.  The only differ- 
              ence  from  v7  code is that the compiler emits the 
              integer multiply and  integer  divide  instructions 
              which exist in SPARC v8 but not in SPARC v7. 
 
              -msparclite  will  give  you  SPARClite code.  This 
              adds the integer multiply, integer divide step  and 
              scan  (ffs)  instructions  which exist in SPARClite 
              but not in SPARC v7. 
 
       -mcypress 
 
       -msupersparc 
              These two options select the  processor  for  which 
              the code is optimised. 
 
              With -mcypress (the default), the compiler optimis- 
              es code for the Cypress CY7C602 chip,  as  used  in 
              the  SparcStation/SparcServer  3xx  series. This is 
              also appropriate for the older SparcStation  1,  2, 
              IPX etc. 
 
              With  -msupersparc  the compiler optimises code for 
              the SuperSparc cpu, as used in the SparcStation 10, 
              1000 and 2000 series. This flag also enables use of 
              the full SPARC v8 instruction set. 
 
       These `-m' options are defined for the Convex: 
 
       -mc1   Generate output for a C1.  This is the default when 
              the compiler is configured for a C1. 
 
       -mc2   Generate output for a C2.  This is the default when 
              the compiler is configured for a C2. 
 
       -margcount 
              Generate code which puts an argument count  in  the 
              word  preceding  each  argument  list.   Some  non- 
              portable Convex and Vax programs  need  this  word. 
              (Debuggers  don't,  except for functions with vari- 
              able-length argument lists; this  info  is  in  the 
              symbol table.) 
 
       -mnoargcount 
              Omit  the argument count word.  This is the default 
              if you use the unmodified sources. 
 
       These `-m' options are defined for the AMD Am29000: 
 
       -mdw   Generate code that assumes the DW bit is set, i.e., 
              that byte and halfword operations are directly sup- 
              ported by the hardware.  This is the default. 
 
       -mnodw Generate code that assumes the DW bit is not set. 
 
       -mbw   Generate code that assumes the system supports byte 
              and  halfword  write  operations.   This is the de- 
              fault. 
 
       -mnbw  Generate code that assumes  the  systems  does  not 
              support  byte  and halfword write operations.  This 
              implies `-mnodw'. 
 
       -msmall 
              Use a small memory  model  that  assumes  that  all 
              function  addresses  are either within a single 256 
              KB segment or at an absolute address of  less  than 
              256K.   This allows the call instruction to be used 
              instead of a const, consth, calli sequence. 
 
       -mlarge 
              Do not assume that  the  call  instruction  can  be 
              used; this is the default. 
 
       -m29050 
              Generate code for the Am29050. 
 
       -m29000 
              Generate  code  for  the  Am29000.  This is the de- 
              fault. 
 
       -mkernel-registers 
              Generate references to registers gr64-gr95  instead 
              of  gr96-gr127.   This option can be used when com- 
              piling kernel code that wants a set of global  reg- 
              isters disjoint from that used by user-mode code. 
 
              Note  that when this option is used, register names 
              in `-f'  flags  must  use  the  normal,  user-mode, 
              names. 
 
       -muser-registers 
              Use the normal set of global registers, gr96-gr127. 
              This is the default. 
 
       -mstack-check 
              Insert a call to __msp_check after each  stack  ad- 
              justment.  This is often used for kernel code. 
 
       These  `-m' moptions are defined for Motorola 88K architec- 
       tures: 
 
       -m88000 
              Generate code that works well on  both  the  m88100 
              and the m88110. 
 
       -m88100 
              Generate  code  that works best for the m88100, but 
              that also runs on the m88110. 
 
       -m88110 
              Generate code that works best for the  m88110,  and 
              may not run on the m88100. 
 
       -midentify-revision 
              Include  an ident directive in the assembler output 
              recording the source file name, compiler  name  and 
              version, timestamp, and compilation flags used. 
 
       -mno-underscores 
              In  assembler  output,  emit  symbol  names without 
              adding an underscore character at the beginning  of 
              each  name.  The default is to use an underscore as 
              prefix on each name. 
 
       -mno-check-zero-division 
 
       -mcheck-zero-division 
              Early models of the 88K architecture  had  problems 
              with  division by zero; in particular, many of them 
              didn't trap.  Use these options to avoid  including 
              (or  to  include explicitly) additional code to de- 
              tect division by zero and signal an exception.  All 
              GCC     configurations     for    the    88K    use 
              `-mcheck-zero-division' by default. 
 
       -mocs-debug-info 
 
       -mno-ocs-debug-info 
              Include (or omit) additional debugging  information 
              (about registers used in each stack frame) as spec- 
              ified in the 88Open Object Compatibility  Standard, 
              "OCS".   This  extra  information  is not needed by 
              GDB.  The default for DG/UX,  SVr4,  and  Delta  88 
              SVr3.2  is  to  include this information; other 88k 
              configurations omit this information by default. 
 
       -mocs-frame-position 
 
       -mno-ocs-frame-position 
              Force (or do not require)  register  values  to  be 
              stored  in  a  particular place in stack frames, as 
              specified in OCS.  The DG/UX, Delta88  SVr3.2,  and 
              BCS configurations use `-mocs-frame-position'; oth- 
              er   88k   configurations    have    the    default 
              `-mno-ocs-frame-position'. 
 
       -moptimize-arg-area 
 
       -mno-optimize-arg-area 
              Control  how  to  store function arguments in stack 
              frames.  `-moptimize-arg-area' saves space, but may 
              break      some      debuggers      (not      GDB). 
              `-mno-optimize-arg-area' conforms better  to  stan- 
              dards.   By default GCC does not optimize the argu- 
              ment area. 
 
       -mshort-data-num 
              num Generate smaller data references by making them 
              relative  to r0, which allows loading a value using 
              a single instruction (rather than the  usual  two). 
              You  control  which data references are affected by 
              specifying num with this option.  For  example,  if 
              you  specify `-mshort-data-512', then the data ref- 
              erences affected are those involving  displacements 
              of  less than 512 bytes.  `-mshort-data-num' is not 
              effective for num greater than 64K. 
 
       -mserialize-volatile 
 
       -mno-serialize-volatile 
              Do, or do not, generate code to  guarantee  sequen- 
              tial consistency of volatile memory references. 
 
              GNU  CC  always  guarantees consistency by default, 
              for the preferred processor submodel.  How this  is 
              done depends on the submodel. 
 
              The m88100 processor does not reorder memory refer- 
              ences and so always provides sequential  consisten- 
              cy.  If you use `-m88100', GNU CC does not generate 
              any special instructions for sequential  consisten- 
              cy. 
 
              The  order  of memory references made by the m88110 
              processor does not always match the  order  of  the 
              instructions  requesting those references.  In par- 
              ticular, a load instruction may  execute  before  a 
              preceding  store instruction.  Such reordering vio- 
              lates sequential  consistency  of  volatile  memory 
              references,  when  there  are  multiple processors. 
              When you use `-m88000' or `-m88110', GNU CC  gener- 
              ates  special  instructions  when  appropriate,  to 
              force execution in the proper order. 
 
              The extra code generated to  guarantee  consistency 
              may affect the performance of your application.  If 
              you know that you can safely forgo this  guarantee, 
              you may use the option `-mno-serialize-volatile'. 
 
              If you use the `-m88100' option but require sequen- 
              tial consistency when running on the m88110 proces- 
              sor, you should use `-mserialize-volatile'. 
 
       -msvr4 
 
       -msvr3 Turn  on  (`-msvr4') or off (`-msvr3') compiler ex- 
              tensions related to  System  V  release  4  (SVr4). 
              This controls the following: 
 
          o   Which  variant  of  the  assembler  syntax  to emit 
              (which   you   can   select   independently   using 
              `-mversion-03.00'). 
 
          o   `-msvr4' makes the C preprocessor recognize `#prag- 
              ma weak' 
 
          o   `-msvr4' makes GCC issue additional declaration di- 
              rectives used in SVr4. 
 
       `-msvr3' is the default for all m88K configurations except 
       the SVr4 configuration. 
 
       -mtrap-large-shift 
 
       -mhandle-large-shift 
              Include code to detect bit-shifts of more  than  31 
              bits;  respectively,  trap such shifts or emit code 
              to handle them properly.  By default GCC  makes  no 
              special provision for large bit shifts. 
 
       -muse-div-instruction 
              Very  early  models  of the 88K architecture didn't 
              have a divide instruction, so GCC avoids  that  in- 
              struction  by  default.  Use this option to specify 
              that it's safe to use the divide instruction. 
 
       -mversion-03.00 
              In the DG/UX configuration, there are  two  flavors 
              of  SVr4.   This  option  modifies -msvr4 to select 
              whether the hybrid-COFF or real-ELF flavor is used. 
              All other configurations ignore this option. 
 
       -mwarn-passed-structs 
              Warn when a function passes a struct as an argument 
              or  result.   Structure-passing  conventions   have 
              changed during the evolution of the C language, and 
              are often the source of portability  problems.   By 
              default, GCC issues no such warning. 
 
       These options are defined for the IBM RS6000: 
 
       -mfp-in-toc 
 
       -mno-fp-in-toc 
              Control  whether or not floating-point constants go 
              in the Table of Contents  (TOC),  a  table  of  all 
              global variable and function addresses.  By default 
              GCC puts floating-point constants there; if the TOC 
              overflows, `-mno-fp-in-toc' will reduce the size of 
              the TOC, which may avoid the overflow. 
 
       These `-m' options are defined for the IBM RT PC: 
 
       -min-line-mul 
              Use an in-line code  sequence  for  integer  multi- 
              plies.  This is the default. 
 
       -mcall-lib-mul 
              Call lmul$$ for integer multiples. 
 
       -mfull-fp-blocks 
              Generate  full-size floating point data blocks, in- 
              cluding the minimum amount of scratch space  recom- 
              mended by IBM.  This is the default. 
 
       -mminimum-fp-blocks 
              Do  not  include  extra  scratch  space in floating 
              point data blocks.  This results in  smaller  code, 
              but  slower  execution, since scratch space must be 
              allocated dynamically. 
 
       -mfp-arg-in-fpregs 
              Use a calling sequence incompatible  with  the  IBM 
              calling  convention  in  which floating point argu- 
              ments are passed in floating point registers.  Note 
              that  varargs.h  and  stdargs.h  will not work with 
              floating point operands if this  option  is  speci- 
              fied. 
 
       -mfp-arg-in-gregs 
              Use  the  normal  calling  convention  for floating 
              point arguments.  This is the default. 
 
       -mhc-struct-return 
              Return structures of more than one word in  memory, 
              rather  than in a register.  This provides compati- 
              bility with the MetaWare HighC (hc) compiler.   Use 
              `-fpcc-struct-return'  for  compatibility  with the 
              Portable C Compiler (pcc). 
 
       -mnohc-struct-return 
              Return some structures of more  than  one  word  in 
              registers,  when  convenient.  This is the default. 
              For compatibility with the IBM-supplied  compilers, 
              use       either      `-fpcc-struct-return'      or 
              `-mhc-struct-return'. 
 
       These `-m' options are defined for the MIPS family of com- 
       puters: 
 
       -mcpu=cpu-type 
              Assume  the  defaults for the machine type cpu-type 
              when scheduling instructions.  The default cpu-type 
              is  default,  which  picks the longest cycles times 
              for any of the machines, in order that the code run 
              at  reasonable  rates  on  all  MIPS  cpu's.  Other 
              choices for cpu-type are r2000, r3000, r4000,  and 
              r6000.   While  picking  a  specific  cpu-type will 
              schedule things appropriately for  that  particular 
              chip,  the compiler will not generate any code that 
              does not meet level 1 of the MIPS ISA  (instruction 
              set  architecture)  without  the  -mips2  or -mips3 
              switches being used. 
 
       -mips2 Issue instructions from level 2  of  the  MIPS  ISA 
              (branch  likely,  square  root  instructions).  The 
              -mcpu=r4000 or -mcpu=r6000 switch must be  used  in 
              conjunction with -mips2. 
 
       -mips3 Issue instructions from level 3 of the MIPS ISA (64 
              bit instructions).  The -mcpu=r4000 switch must  be 
              used in conjunction with -mips2. 
 
       -mint64 
 
       -mlong64 
 
       -mlonglong128 
              These options don't work at present. 
 
       -mmips-as 
              Generate  code  for  the MIPS assembler, and invoke 
              mips-tfile to add normal debug  information.   This 
              is  the  default  for  all platforms except for the 
              OSF/1 reference platform, using the OSF/rose object 
              format.   If any of the -ggdb, -gstabs, or -gstabs+ 
              switches are used, the mips-tfile program will  en- 
              capsulate the stabs within MIPS ECOFF. 
 
       -mgas  Generate  code  for the GNU assembler.  This is the 
              default on the OSF/1 reference platform, using  the 
              OSF/rose object format. 
 
       -mrnames 
 
       -mno-rnames 
              The  -mrnames  switch says to output code using the 
              MIPS software names for the registers,  instead  of 
              the hardware names (ie, a0 instead of $4).  The GNU 
              assembler does not support the -mrnames switch, and 
              the  MIPS  assembler  will be instructed to run the 
              MIPS C preprocessor  over  the  source  file.   The 
              -mno-rnames switch is default. 
 
       -mgpopt 
 
       -mno-gpopt 
              The  -mgpopt  switch  says to write all of the data 
              declarations before the instructions  in  the  text 
              section,  to all the MIPS assembler to generate one 
              word memory references instead of using  two  words 
              for  short global or static data items.  This is on 
              by default if optimization is selected. 
 
       -mstats 
 
       -mno-stats 
              For each non-inline function processed, the -mstats 
              switch  causes the compiler to emit one line to the 
              standard error file to print statistics  about  the 
              program  (number  of  registers  saved, stack size, 
              etc.). 
 
       -mmemcpy 
 
       -mno-memcpy 
              The -mmemcpy switch makes all block moves call  the 
              appropriate  string  function (memcpy or bcopy) in- 
              stead of possibly generating inline code. 
 
       -mmips-tfile 
 
       -mno-mips-tfile 
              The -mno-mips-tfile switch causes the compiler  not 
              postprocess  the  object  file  with the mips-tfile 
              program, after the MIPS assembler has generated  it 
              to  add  debug  support.  If mips-tfile is not run, 
              then no local variables will be  available  to  the 
              debugger.   In  addition, stage2 and stage3 objects 
              will have the temporary file names  passed  to  the 
              assembler  embedded in the object file, which means 
              the objects will not compare the same. 
 
       -msoft-float 
              Generate output containing library calls for float- 
              ing  point.   WARNING:  the requisite libraries are 
              not part of GNU CC.  Normally the facilities of the 
              machine's usual C compiler are used, but this can't 
              be done directly in  cross-compilation.   You  must 
              make  your own arrangements to provide suitable li- 
              brary functions for cross-compilation. 
 
       -mhard-float 
              Generate output containing floating point  instruc- 
              tions.   This is the default if you use the unmodi- 
              fied sources. 
 
       -mfp64 Assume that the FR bit in the status  word  is  on, 
              and  that there are 32 64-bit floating point regis- 
              ters, instead of 32 32-bit  floating  point  regis- 
              ters.   You  must  also specify the -mcpu=r4000 and 
              -mips3 switches. 
 
       -mfp32 Assume that there are 32 32-bit floating point reg- 
              isters.  This is the default. 
 
       -mabicalls 
 
       -mno-abicalls 
              Emit  (or  do not emit) the .abicalls, .cpload, and 
              .cprestore pseudo operations that some  System  V.4 
              ports use for position independent code. 
 
       -mhalf-pic 
 
       -mno-half-pic 
              The  -mhalf-pic  switch says to put pointers to ex- 
              tern references into the data section and load them 
              up, rather than put the references in the text sec- 
              tion.  This option does not work at present.  -Gnum 
              Put  global  and static items less than or equal to 
              num bytes into the small data or bss  sections  in- 
              stead  of the normal data or bss section.  This al- 
              lows the assembler to emit one word  memory  refer- 
              ence  instructions  based on the global pointer (gp 
              or $28), instead of the normal two words used.   By 
              default,  num is 8 when the MIPS assembler is used, 
              and 0 when the GNU assembler is  used.   The  -Gnum 
              switch  is also passed to the assembler and linker. 
              All modules should be compiled with the same  -Gnum 
              value. 
 
       -nocpp Tell  the MIPS assembler to not run it's preproces- 
              sor over user assembler files (with a `.s'  suffix) 
              when assembling them. 
 
       These  `-m' options are defined for the Intel 80386 family 
       of computers: -m486 
 
       -mno-486 
              Control whether or not code is optimized for a  486 
              instead  of  an 386.  Code generated for a 486 will 
              run on a 386 and vice versa. 
 
       -msoft-float 
              Generate output containing library calls for float- 
              ing  point.   Warning:  the requisite libraries are 
              not part of GNU CC.  Normally the facilities of the 
              machine's usual C compiler are used, but this can't 
              be done directly in  cross-compilation.   You  must 
              make  your own arrangements to provide suitable li- 
              brary functions for cross-compilation. 
 
              On machines where a function returns floating point 
              results  in the 80387 register stack, some floating 
              point opcodes may be emitted even if `-msoft-float' 
              is used. 
 
       -mno-fp-ret-in-387 
              Do  not  use the FPU registers for return values of 
              functions. 
 
              The usual calling convention has  functions  return 
              values  of  types float and double in an FPU regis- 
              ter, even if there is no FPU.  The idea is that the 
              operating system should emulate an FPU. 
 
              The  option `-mno-fp-ret-in-387' causes such values 
              to be returned in ordinary CPU registers instead. 
 
       These `-m' options are defined for the HPPA family of com- 
       puters: 
 
       -mpa-risc-1-0 
              Generate code for a PA 1.0 processor. 
 
       -mpa-risc-1-1 
              Generate code for a PA 1.1 processor. 
 
       -mkernel 
              Generate code which is suitable for use in kernels. 
              Specifically, avoid add instructions in  which  one 
              of the arguments is the DP register; generate addil 
              instructions instead.  This avoids a rather serious 
              bug in the HP-UX linker. 
 
       -mshared-libs 
              Generate  code  that  can  be  linked against HP-UX 
              shared libraries.  This option is not  fully  func- 
              tion  yet, and is not on by default for any PA tar- 
              get.  Using this option can cause incorrect code to 
              be generated by the compiler. 
 
       -mno-shared-libs 
              Don't  generate  code  that  will be linked against 
              shared libraries.  This is the default for  all  PA 
              targets. 
 
       -mlong-calls 
              Generate  code  which  allows  calls  to  functions 
              greater than 256K away from  the  caller  when  the 
              caller  and callee are in the same source file.  Do 
              not turn this option on unless code refuses to link 
              with "branch out of range errors from the linker. 
 
       -mdisable-fpregs 
              Prevent floating point registers from being used in 
              any manner.  This is necessary for  compiling  ker- 
              nels which perform lazy context switching of float- 
              ing point registers.  If you use  this  option  and 
              attempt  to  perform floating point operations, the 
              compiler will abort. 
 
       -mdisable-indexing 
              Prevent the compiler from  using  indexing  address 
              modes.   This  avoids  some rather obscure problems 
              when compiling MIG generated code under MACH. 
 
       -mtrailing-colon 
              Add a colon to the end of  label  definitions  (for 
              ELF assemblers). 
 
       These  `-m' options are defined for the Intel 80960 family 
       of computers: 
 
       -mcpu-type 
              Assume the defaults for the machine  type  cpu-type 
              for  instruction  and  addressing-mode availability 
              and alignment.  The default cpu-type is  kb;  other 
              choices are ka, mc, ca, cf, sa, and sb. 
 
       -mnumerics 
 
       -msoft-float 
              The  -mnumerics option indicates that the processor 
              does  support  floating-point  instructions.    The 
              -msoft-float  option  indicates that floating-point 
              support should not be assumed. 
 
       -mleaf-procedures 
 
       -mno-leaf-procedures 
              Do (or do not) attempt to alter leaf procedures  to 
              be  callable  with  the  bal instruction as well as 
              call.  This will result in more efficient code  for 
              explicit calls when the bal instruction can be sub- 
              stituted by the assembler or linker, but less effi- 
              cient  code in other cases, such as calls via func- 
              tion pointers, or using a linker that doesn't  sup- 
              port this optimization. 
 
       -mtail-call 
 
       -mno-tail-call 
              Do  (or  do  not)  make additional attempts (beyond 
              those of the machine-independent  portions  of  the 
              compiler)  to  optimize  tail-recursive  calls into 
              branches.  You may not want to do this because  the 
              detection  of  cases where this is not valid is not 
              totally complete.  The default is -mno-tail-call. 
 
       -mcomplex-addr 
 
       -mno-complex-addr 
              Assume (or do not assume) that the use of a complex 
              addressing  mode is a win on this implementation of 
              the i960.  Complex  addressing  modes  may  not  be 
              worthwhile on the K-series, but they definitely are 
              on the C-series.  The default is  currently  -mcom- 
              plex-addr  for all processors except the CB and CC. 
 
       -mcode-align 
 
       -mno-code-align 
              Align code to 8-byte boundaries for faster fetching 
              (or  don't bother).  Currently turned on by default 
              for C-series implementations only. 
 
       -mic-compat 
 
       -mic2.0-compat 
 
       -mic3.0-compat 
              Enable compatibility with iC960 v2.0 or v3.0. 
 
       -masm-compat 
 
       -mintel-asm 
              Enable compatibility with the iC960 assembler. 
 
       -mstrict-align 
 
       -mno-strict-align 
              Do not permit (do permit) unaligned accesses. 
 
       -mold-align 
              Enable structure-alignment compatibility  with  In- 
              tel's  gcc release version 1.3 (based on gcc 1.37). 
              Currently this is buggy in that #pragma align 1  is 
              always assumed as well, and cannot be turned off. 
 
       These `-m' options are defined for the DEC Alpha implemen- 
       tations: 
 
       -mno-soft-float 
 
       -msoft-float 
              Use (do not use) the  hardware  floating-point  in- 
              structions  for  floating-point  operations.   When 
              -msoft-float is specified, functions in `libgcc1.c' 
              will  be used to perform floating-point operations. 
              Unless they are replaced by routines  that  emulate 
              the  floating-point operations, or compiled in such 
              a way as to call such  emulations  routines,  these 
              routines will issue floating-point operations.   If 
              you are compiling for an  Alpha  without  floating- 
              point  operations, you must ensure that the library 
              is built so as not to call them. 
 
              Note that Alpha implementations  without  floating- 
              point  operations  are  required  to have floating- 
              point registers. 
 
       -mfp-reg 
 
       -mno-fp-regs 
              Generate code that uses (does not use)  the  float- 
              ing-point   register   set.   -mno-fp-regs  implies 
              -msoft-float.  If the floating-point  register  set 
              is  not used, floating point operands are passed in 
              integer registers as  if  they  were  integers  and 
              floating-point  results are passed in $0 instead of 
              $f0.  This is a non-standard calling  sequence,  so 
              any  function with a floating-point argument or re- 
              turn value called by code  compiled  with  -mno-fp- 
              regs must also be compiled with that option. 
 
              A  typical  use of this option is building a kernel 
              that does not use, and hence need not save and  re- 
              store, any floating-point registers. 
 
       These additional options are available on System V Release 
       4 for compatibility with other compilers on those systems: 
 
       -G     On  SVr4  systems, gcc accepts the option `-G' (and 
              passes it to the system linker), for  compatibility 
              with  other compilers.  However, we suggest you use 
              `-symbolic' or `-shared' as appropriate, instead of 
              supplying linker options on the gcc command line. 
 
       -Qy    Identify the versions of each tool used by the com- 
              piler, in a .ident assembler directive in the  out- 
              put. 
 
       -Qn    Refrain from adding .ident directives to the output 
              file (this is the default). 
 
       -YP,dirs 
              Search the directories dirs, and no others, for li- 
              braries  specified with `-l'.  You can separate di- 
              rectory entries  in  dirs  from  one  another  with 
              colons. 
 
       -Ym,dir 
              Look in the directory dir to find the M4 preproces- 
              sor.  The assembler uses this option. 

BBS水木清华站∶精华区