Путеводитель по Руководству Linux

  User  |  Syst  |  Libr  |  Device  |  Files  |  Other  |  Admin  |  Head  |



   gcc    ( 1 )

компилятор C и C ++ проекта GNU (GNU project C and C++ compiler)

  Name  |  Synopsis  |  Description  |  Options  |    Options detail    |  Environment  |  Bugs  |  Note  |  See also  |

Параметры подробно (Options detail)


  Controlling the Kind of Output  |  Compiling C++ Programs  |  Controlling C Dialect  |  Controlling C++ Dialect  |  Controlling Objective-C and Objective-C++ Dialects  |  Control Diagnostic Messages Formatting  |  Request or Suppress Warnings 1  |  Request or Suppress Warnings 2  |  Request or Suppress Warnings 3  |  Debugging Your Program  |  Control Optimization 1  |  Control Optimization 2  |  Control Optimization 3  |  Control Optimization 4  |  Program Instrumentation  |  Controlling the Preprocessor  |  Linking  |  Directory Search  |  Code Generation Conventions  |  GCC Developer  |  Machine-Dependent  |  AArch64  |  Adapteva Epiphany  |  AMD GCN  |  ARC  |  ARM  |  AVR  |  Blackfin  |  C6X  |  CRIS  |  CR16  |  C-SKY  |  Darwin  |  DEC Alpha  |  FR30  |  FT32  |  FRV  |  GNU/Linux  |  H8/300  |  HPPA  |  IA-64  |  LM32  |  M32C  |  M32R/D  |  M680x0  |  MCore  |  MeP  |  MicroBlaze  |  MIPS  |  MMIX  |  MN10300  |  Moxie  |  MSP430  |  NDS32  |  Nios II  |  Nvidia PTX  |  OpenRISC  |  PDP-11  |  picoChip  |  RISC-V  |  RL78  |  IBM RS/6000 and PowerPC  |    RX    |  S/390 and zSeries  |  Score  |  SH  |  Solaris 2  |  SPARC  |  SPU  |  System V  |  TILE-Gx  |  TILEPro  |  V850  |  VAX  |  Visium  |  VMS  |  VxWorks  |  x86 1  |  x86 2  |  x86 Windows  |  Xstormy16  |  Xtensa  |

RX

These command-line options are defined for RX targets:

       -m64bit-doubles
       -m32bit-doubles
           Make the "double" data type be 64 bits (-m64bit-doubles) or
           32 bits (-m32bit-doubles) in size.  The default is
           -m32bit-doubles.  Note RX floating-point hardware only works
           on 32-bit values, which is why the default is
           -m32bit-doubles.

       -fpu
       -nofpu
           Enables (-fpu) or disables (-nofpu) the use of RX floating-
           point hardware.  The default is enabled for the RX600 series
           and disabled for the RX200 series.

           Floating-point instructions are only generated for 32-bit
           floating-point values, however, so the FPU hardware is not
           used for doubles if the -m64bit-doubles option is used.

           Note If the -fpu option is enabled then
           -funsafe-math-optimizations is also enabled automatically.
           This is because the RX FPU instructions are themselves
           unsafe.

       -mcpu=name
           Selects the type of RX CPU to be targeted.  Currently three
           types are supported, the generic RX600 and RX200 series
           hardware and the specific RX610 CPU.  The default is RX600.

           The only difference between RX600 and RX610 is that the RX610
           does not support the "MVTIPL" instruction.

           The RX200 series does not have a hardware floating-point unit
           and so -nofpu is enabled by default when this type is
           selected.

       -mbig-endian-data
       -mlittle-endian-data
           Store data (but not code) in the big-endian format.  The
           default is -mlittle-endian-data, i.e. to store data in the
           little-endian format.

       -msmall-data-limit=N
           Specifies the maximum size in bytes of global and static
           variables which can be placed into the small data area.
           Using the small data area can lead to smaller and faster
           code, but the size of area is limited and it is up to the
           programmer to ensure that the area does not overflow.  Also
           when the small data area is used one of the RX's registers
           (usually "r13") is reserved for use pointing to this area, so
           it is no longer available for use by the compiler.  This
           could result in slower and/or larger code if variables are
           pushed onto the stack instead of being held in this register.

           Note, common variables (variables that have not been
           initialized) and constants are not placed into the small data
           area as they are assigned to other sections in the output
           executable.

           The default value is zero, which disables this feature.
           Note, this feature is not enabled by default with higher
           optimization levels (-O2 etc) because of the potentially
           detrimental effects of reserving a register.  It is up to the
           programmer to experiment and discover whether this feature is
           of benefit to their program.  See the description of the
           -mpid option for a description of how the actual register to
           hold the small data area pointer is chosen.

       -msim
       -mno-sim
           Use the simulator runtime.  The default is to use the
           libgloss board-specific runtime.

       -mas100-syntax
       -mno-as100-syntax
           When generating assembler output use a syntax that is
           compatible with Renesas's AS100 assembler.  This syntax can
           also be handled by the GAS assembler, but it has some
           restrictions so it is not generated by default.

       -mmax-constant-size=N
           Specifies the maximum size, in bytes, of a constant that can
           be used as an operand in a RX instruction.  Although the RX
           instruction set does allow constants of up to 4 bytes in
           length to be used in instructions, a longer value equates to
           a longer instruction.  Thus in some circumstances it can be
           beneficial to restrict the size of constants that are used in
           instructions.  Constants that are too big are instead placed
           into a constant pool and referenced via register indirection.

           The value N can be between 0 and 4.  A value of 0 (the
           default) or 4 means that constants of any size are allowed.

       -mrelax
           Enable linker relaxation.  Linker relaxation is a process
           whereby the linker attempts to reduce the size of a program
           by finding shorter versions of various instructions.
           Disabled by default.

       -mint-register=N
           Specify the number of registers to reserve for fast interrupt
           handler functions.  The value N can be between 0 and 4.  A
           value of 1 means that register "r13" is reserved for the
           exclusive use of fast interrupt handlers.  A value of 2
           reserves "r13" and "r12".  A value of 3 reserves "r13", "r12"
           and "r11", and a value of 4 reserves "r13" through "r10".  A
           value of 0, the default, does not reserve any registers.

       -msave-acc-in-interrupts
           Specifies that interrupt handler functions should preserve
           the accumulator register.  This is only necessary if normal
           code might use the accumulator register, for example because
           it performs 64-bit multiplications.  The default is to ignore
           the accumulator as this makes the interrupt handlers faster.

       -mpid
       -mno-pid
           Enables the generation of position independent data.  When
           enabled any access to constant data is done via an offset
           from a base address held in a register.  This allows the
           location of constant data to be determined at run time
           without requiring the executable to be relocated, which is a
           benefit to embedded applications with tight memory
           constraints.  Data that can be modified is not affected by
           this option.

           Note, using this feature reserves a register, usually "r13",
           for the constant data base address.  This can result in
           slower and/or larger code, especially in complicated
           functions.

           The actual register chosen to hold the constant data base
           address depends upon whether the -msmall-data-limit and/or
           the -mint-register command-line options are enabled.
           Starting with register "r13" and proceeding downwards,
           registers are allocated first to satisfy the requirements of
           -mint-register, then -mpid and finally -msmall-data-limit.
           Thus it is possible for the small data area register to be
           "r8" if both -mint-register=4 and -mpid are specified on the
           command line.

           By default this feature is not enabled.  The default can be
           restored via the -mno-pid command-line option.

       -mno-warn-multiple-fast-interrupts
       -mwarn-multiple-fast-interrupts
           Prevents GCC from issuing a warning message if it finds more
           than one fast interrupt handler when it is compiling a file.
           The default is to issue a warning for each extra fast
           interrupt handler found, as the RX only supports one such
           interrupt.

       -mallow-string-insns
       -mno-allow-string-insns
           Enables or disables the use of the string manipulation
           instructions "SMOVF", "SCMPU", "SMOVB", "SMOVU", "SUNTIL"
           "SWHILE" and also the "RMPA" instruction.  These instructions
           may prefetch data, which is not safe to do if accessing an
           I/O register.  (See section 12.2.7 of the RX62N Group User's
           Manual for more information).

           The default is to allow these instructions, but it is not
           possible for GCC to reliably detect all circumstances where a
           string instruction might be used to access an I/O register,
           so their use cannot be disabled automatically.  Instead it is
           reliant upon the programmer to use the
           -mno-allow-string-insns option if their program accesses I/O
           space.

           When the instructions are enabled GCC defines the C
           preprocessor symbol "__RX_ALLOW_STRING_INSNS__", otherwise it
           defines the symbol "__RX_DISALLOW_STRING_INSNS__".

       -mjsr
       -mno-jsr
           Use only (or not only) "JSR" instructions to access
           functions.  This option can be used when code size exceeds
           the range of "BSR" instructions.  Note that -mno-jsr does not
           mean to not use "JSR" but instead means that any type of
           branch may be used.

       Note: The generic GCC command-line option -ffixed-reg has special
       significance to the RX port when used with the "interrupt"
       function attribute.  This attribute indicates a function intended
       to process fast interrupts.  GCC ensures that it only uses the
       registers "r10", "r11", "r12" and/or "r13" and only provided that
       the normal use of the corresponding registers have been
       restricted via the -ffixed-reg or -mint-register command-line
       options.