bug-gnupress
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-gnupress] Mods to gcc.008.txt (#3)


From: James Morrison
Subject: Re: [Bug-gnupress] Mods to gcc.008.txt (#3)
Date: Sun, 8 Jun 2003 13:33:05 -0400 (EDT)

   From: "Paul A. Crable" <address@hidden>
   X-URL: http://www.pocomail.com/
   Date: Sat, 7 Jun 2003 20:39:29 -0700
   Sender: address@hidden
   X-Spam-Status: No, hits=0.0 required=5.0 tests= version=2.20
   X-Spam-Level: 

   These are the modifications to sections 3.17.23 to 3.17.25 of 
   gcc.008.txt.

   ---------------------------------------

   Replace

   "-mlong-calls
   "-mno-long-calls
   "Treat all calls as being far away (near). If calls are assumed to be 
   far
   away, the compiler will always load the functions address up into a
   register, and call indirect through the pointer."

   with

   "-mlong-calls
   "-mno-long-calls
       "Treat all calls as being far (-mlong-calls)
       or near (-mno-long-calls). If -mlong-calls is
       set, the compiler will always load the
       function's address into a register and then
       and call indirect through the pointer.  If
       neither is specified, then ???????????????? is
       set by default."

   Replace

   "-mno-ep
   "-mep 
   "Do not optimize (do optimize) basic blocks that use the same index
   pointer 4 or more times to copy pointer into the ep register, and use
   the shorter sld and sst instructions. The `-mep' option is on by 
   default
   if you optimize."

   with

   "-mno-ep
   "-mep 
       "Optimize (-mep) or do not optimize (-mno-ep)
       basic blocks.  Optimize basic blocks that use
       the same index pointer more than three times
       by copying the pointer into the EP register
       and then using the shorter SLD and SST
       instructions.  If neither is specified, then
       ???????????????? is set by default."

   NOTE:  This statement is unclear so I have removed it:  "The `-mep' 
   option is on by default if you optimize."

 It shouldn't be, it's what makes this section make sense.  -mep is
used if -O[0-9 ] is specified otherwise, -mno-ep is used.

   Replace:

   "-mno-prolog-function
   "-mprolog-function
   "Do not use (do use) external functions to save and restore registers
   at the prolog and epilog of a function. The external functions are
   slower, but use less code space if more than one function saves the
   same number of registers. The `-mprolog-function' option is on by
   default if you optimize."

   with:

   "-mno-prolog-function
   "-mprolog-function
       "Use (-mprolog-function) or do not use (-mno-
       prolog-function) external functions to save
       and to restore registers at the prolog and
       epilog of a function.  External functions are
       slower but consume less memory if more than
       one function saves the same number of
       registers.  If neither is specified, then
       ???????????????? is set by default."

   NOTE:  This statement is unclear so I have removed it:  "The 
   `-mprolog-function' option is on by default if you optimize."

 Same as before.

   Replace

   "-mspace 

   "Try to make the code as small as possible. At present, this just 
   turns
   on the `-mep' and `-mprolog-function' options."

   with:

   "-mspace 
       "Set both the `-mep' and `-mprolog-function'
       options, which together will yield the
       smallest code."

 This doesn't make as much sense as what is stated above.  Perhaps only
changing the second sentence to say.  "Currently this turns on the following
options: -mep, -mprolog-function."  There -mspace probably doesn't yield the
smallest code all by itself, so your version doesn't make sense.

   Replace

   "-mtda=n 

   "Put static or global variables whose size is n bytes or less into 
   the tiny
   data area that register ep points to. The tiny data area can hold up 
   to
   256 bytes in total (128 bytes for byte references)."

   with

   "-mtda=n 
       "Put static or global variables whose size is
       n bytes or fewer into the tiny data area to
       which register EP points. The tiny data area
       can hold up to 256 bytes (128 bytes for byte
       references). If -mtda is unspecified, then
       ?????????????????????????"

 The default is probably irrelevant and probably changes.  So, it is not
worth documenting.

   Replace

   "-msda=n 
   "Put static or global variables whose size is n bytes or less into 
   the small
   data area that register gp points to. The small data area can hold up
   to 64 kilobytes."

   with

   "-msda=n 
       "Put static or global variables whose size is
       n bytes or fewer into the small data area to
       which register GP points.  The small data area
       can hold up to 64 kilobytes.  If -msda is
       unspecified, then ???????????????????????"

 See above.

   Replace

   "-mzda=n 
   "Put static or global variables whose size is n bytes or less into 
   the rst
   32 kilobytes of memory."

   with

   "-mzda=n 
       "Put static or global variables whose size is
       n bytes or fewer into the first 32 kilobytes
       of memory.  If -mzda is unspecified, then
       ?????????????????????????"

 Same as before.

   Replace

   "-mv850 
   "Specify that the target processor is the V850."

   with

   "-mv850 
       "Specify that the target processor is the
       V850.  If -mv850 is not specified, then
       ????????????????"

 It depends on configuration.  If defaults aren't in the manual, you
probably don't need to worry about them.

   Replace

   "-mbig-switch
   "Generate code suitable for big switch tables. Use this option only 
   if
   the assembler/linker complain about out of range branches within a
   switch table."

   with

   "-mbig-switch
       "Generate code suitable for big switch tables.
       Use this option only if the assembler or
       linker complain that branches are out of range
       within a switch table.  If -mbig-switch is
       unspecified, then ??????????????????"

 It's off, didn't you read the above paragraph.

   Replace

   "-mapp-regs 
   "This option will cause r2 and r5 to be used in the code generated by
   the compiler. This setting is the default."

   with

   "-mapp-regs 
       "Use R2 and R5.  This option is set by
       default."

  I actually like the first version since it is obvious who is going to
use r2 and r5.

   Replace

   "-mv850e 
   "Specify that the target processor is the V850E. The preprocessor 
   con­
   stant `__v850e__' will be dened if this option is used.
   If neither `-mv850' nor `-mv850e' are dened then a default target 
   proces­
   sor will be chosen and the relevant `__v850*__' preprocessor constant
   will be dened.
   "The preprocessor constants `__v850' and `__v851__' are always 
   dened,
   regardless of which processor variant is the target."

   with

   "-mv850e 
       "Specify that the target processor is the
       V850E. The preprocessor constant `__v850e__'
       will be defined if this option is used. If
       neither `-mv850' nor `-mv850e' are defined,
       then GCC will chose a default target processor
       and define the relevant `__v850*__'
       preprocessor constant.

       "The preprocessor constants `__v850' and
       `__v851__' are always defined, regardless of
       which processor variant is the target."

   Replace

   "-mdisable-callt
   "This option will suppress generation of the CALLT instruction
   for the v850e avors of the v850 architecture. The default is
   `-mno-disable-callt' which allows the CALLT instruction to be used."

   with

   "-mdisable-callt
   "-mno-disable-callt
       "Suppress (-mno-disable-callt) or allow (-

                  -mdisable-callt

       mdisable-callt) generating the CALLT

       -mnodisable-callt

       instruction for the v850e flavors of the v850
       architecture.  If neither is specified, then
       `-mno-disable-callt' is set by default,
       allowing the CALLT instruction to be used.

   Replace

   "-EL 
   "Compile code for little endian mode. This is the default.

   "-EB 
   "Compile code for big endian mode.

   with

   "-EL 
   "-EB 
       "Compile code for little (-EL) or big (-EB)
       endian mode. If neither is specified, then -EL
       is set by default."

   Replace

   "-mmangle-cpu
   "Prepend the name of the cpu to all public symbol names. In multiple­
   processor systems, there are many ARC variants with different in­
   struction and register set characteristics. This ag prevents code 
   com­
   piled for one cpu to be linked with code compiled for another. No
   facility exists for handling variants that are ìalmost identicalî. 
   This
   is an all or nothing option."

   with

   "-mmangle-cpu
       "Prepend the name of the cpu to all public
       symbol names. Many ARC variants with different
       instruction and register set characteristics
       exist in multiple processor systems. This flag
       prevents code compiled for one cpu to be
       linked with code compiled for another.
       Unfortunately, no facility exists for handling
       variants that are almost identical. This is an
       all-or-nothing option."

   Replace

   "-mcpu=cpu 
   "Compile code for ARC variant cpu. Which variants are supported
   depend on the conguration. All variants support `-mcpu=base', this
   is the default."

   with

   "-mcpu=CPU 
       "Compile code for ARC variant cpu. Which
       variants are supported depend on the
       configuration. All variants support `-
       mcpu=base', which is the default if -mcpu is
       not specified.  Acceptable values for cpu are
       ????????????????. If an unacceptable value is
       specified for cpu, then
       ????????????????????????"

   NOTE: What is "the configuration"?

 When the compiler is compiled it has a non-empty set of targets it can 
compile for.  In this set there is a default target.  In this case
if CPU is not a cpu that is in the target set then gcc will just exit with
an error.  

   Replace

   "-mtext=text-section
   "-mdata=data-section
   "-mrodata=readonly-data-section
   "Put functions, data, and readonly data in text­section, 
   data­section, and
   readonly­data­section respectively by default. This can be overridden
   with the section attribute. See Section 5.33 [Variable Attributes],
   page 201."

   with

   "-mtext=text-section
   "-mdata=data-section
   "-mrodata=readonly-data-section
       "Put functions, data, and read-only data in
       text­section, data­section, and
       readonly­data­section respectively.  This can
       be overridden with the section attribute, for
       which see section 5.33 [Variable Attributes],
       on page 201. The default values for text-
       section, data-section, and readonly-data-
       section are ???????????, ?????????????, and
       ????????????? respectively"

 The defaults are text, data, and readonly.  If someone is willing to play
with this option, they should know what these sections mean.

   Replace

   "-m32032 
   "Generate output for a 32032. This is the default when the compiler 
   is configured for 32032- and 32016-based systems."

   with

   "-m32032 
       "Generate output for a 32032. This is the
       default when the compiler is configured for
       32032- and 32016-based systems."

 What changed?

   Replace

   "-m32332
   "-m32332 
   "Generate output for a 32332. This is the default when the compiler 
   is
   congured for 32332­based systems."

   with

   "-m32332 
       "Generate output for a 32332. This is the
       default when the compiler is configured for
       32332­based systems."

 Ok, I'll remove the duplicate option.

   Replace

   "-m32381
   "Generate output containing 32381 instructions for oating point. 
   This
   also implies `-m32081'. The 32381 is only compatible with the 32332
   and 32532 cpus. This is the default for the pc532­netbsd 
   conguration."

   with

   "-m32381
       "Generate output containing 32381 instructions
       for floating point processing.  When this
       option is specified, then -m32081 is also
       specified by default.  The 32381 is only
       compatible with the 32332 and 32532 cpu's.
       This is set by default in the pc532­netbsd
       configuration."

 "floating point operations" probably makes more sense here.  Otherwise, I 
think the original is fine.

  -- Skip to the end

   Replace

   "-mmulti-add
   "Try and generate multiply­add oating point instructions polyF and
   dotF. This option is only available if the `-m32381' option is in 
   effect.
   Using these instructions requires changes to register allocation 
   which
   generally has a negative impact on performance. This option should
   only be enabled when compiling code particularly likely to make
   heavy use of multiply­add instructions."

   "-mnomulti-add
   "Do not try and generate multiply­add oating point instructions 
   polyF
   and dotF. This is the default on all platforms."

   with

   "-mmulti-add
   "-mnomulti-add
       "Generate (-mmulti-add) or do not generate (-
       mnomulti-add) output that includes the
       multiply­add foating point instructions polyF
       and dotF.  In using these instructions, GCC
       must change register allocation in a manner
       that adversely affects performance.  Use -
       mmulti-add only when compiling code
       particularly likely to make heavy use of
       multiply­add instructions.  -mmulti-add is
       recognized only if the `-m32381' option is in
       effect. If neither option is specified, then -
       mnomulti-add is set by default"

       ???????????????? The preceeding option is not
       well defined but I have done the best I could.

   Replace

   "-msoft-float
   "Generate output containing library calls for oating point. Warning:
   the requisite libraries may not be available."

   with

   "-msoft-float
       "Generate output containing calls to software
       for floating point operations.  Be sure the
       software libraries are available when the
       program is linked."

   Replace

   "-mieee-compare
   "-mno-ieee-compare
   "Control whether or not the compiler uses IEEE oating point compar­
   isons. These handle correctly the case where the result of a compar­
   ison is unordered. Warning: the requisite kernel support may not be
   available."

   with

   "-mieee-compare
   "-mno-ieee-compare
       "Use (-mieee-compare) or do not use (-mno-
       ieee-compare) IEEE floating point comparisons.
       IEEE floating point comparisons properly
       handle unordered comparisons.  Warning:
       before setting -mieee-compare insure that the
       requisite kernel support is available.  If
       neither option is specified, then
       ??????????????? is set by default".

   Replace

   "-mnobitfield
   "Do not use the bit­eld instructions. On some machines it is faster 
   to
   use shifting and masking operations. This is the default for the 
   pc532.

   "-mbitfield 
   "Do use the bit­eld instructions. This is the default for all 
   platforms
   except the pc532.

   with

   "-mbitfield 
   "-mnobitfield
       "Use (-mbitfield) or do not use (-mnobitfield)
       use the bit­field instructions.  On some
       machines shifting and masking operations may
       be faster than bit-field operations.  If
       neither option is specified, -mnobitfield is
       set by default for the pc532 processor, and -
       mbitfield for all other processors" 

   Replace

   "-mrtd 
   "Use a different function­calling convention, in which functions that
   take a xed number of arguments return pop their arguments on
   return with the ret instruction.
   "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.)
   "This option takes its name from the 680x0 rtd instruction."


   with

   "-mrtd
       "Use a non-standard calling convention, in
       which functions that take a fixed number of
       arguments return with the RET instruction. RET
       pops the arguments from the stack while
       returning, saving one instruction cycle.  This
       convention is incompatible with that used on
       Unix systems, so do not attempt to link to
       call libraries compiled with the Unix
       compiler.  If this option is set, provide
       prototypes for all functions that take a
       variable number of arguments (such as printf),
       and do not call a function with too many
       arguments.  This option takes its name from
       the 680x0 RTD instruction."


   Replace

   "-mregparam
   "Use a different function­calling convention where the rst two argu­
   ments are passed in registers.
   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.

   "-mnoregparam
   "Do not pass any arguments in registers. This is the default for all
   targets.

   with

   "-mregparam
   "-mnoregparam
       "Use (-mregparam) or do not use (-mnoregparam)
       a function calling convention in which the
       first two arguments are passed in registers.
       This convention is incompatible with that used
       on Unix systems, so do not attempt to link to
       call libraries compiled with the Unix
       compiler.  If neither option is specified,
       then -mnoregparam is set by default."

   Replace

   "-msb 
   "It is OK to use the sb as an index register which is always loaded 
   with
   zero. This is the default for the pc532­netbsd target."

   "-mnosb
   "The sb register is not available for use or has not been initialized 
   to
   zero by the run time system. This is the default for all targets 
   except
   the pc532­netbsd. It is also implied whenever `-mhimem' or `-fpic' is
   set."

   with

   "-msb 
   "-mnosb
       "Use (-msb) or do not use (-mnosb) the SB as
       an index register which is always loaded with
       zero. If neither is specified, then -msb is
       set by default for the pc532­netbsd target and
       -mnosb for all other processors.  -mnosb
       automatically set whenever either `-mhimem' or
       `-fpic' is set"

   Replace

   "-mhimem
   "Many ns32000 series addressing modes use displacements of up to
   512MB. If an address is above 512MB then displacements from zero
   can not be used. This option causes code to be generated which can
   be loaded above 512MB. This may be useful for operating systems or
   ROM code."

   "-mnohimem 
   "Assume code will be loaded in the rst 512MB of virtual address
   space. This is the default for all platforms."

   with

   "-mhimem
       Generate code that will only be loaded in the
       first 512 MB of virtual address space (-
       mnohimem), or that may be loaded above that
       limit (-mhimem).  Many ns32000-series
       addressing modes use displacements of up to
       512MB. If an address is above 512MB then
       displacements from zero can not be used.  -
       mhimem causes GCC to generate code which can
       be loaded above 512MB, which may be useful for
       operating systems or ROM code. If neither
       option is specified, then -mnohimem is set by
       default."

   Paul A. Crable.  Portland, Oregon, USA


Thank you very much for your contribution.  Hopefully simon, or heaven-forbid
even me, are able to merge these changes into our trees and put this stuff
back into gcc.

James A. Morrison





reply via email to

[Prev in Thread] Current Thread [Next in Thread]