diff options
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/configfiles.texi | 4 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 56 | ||||
-rw-r--r-- | gcc/doc/gcov.texi | 121 | ||||
-rw-r--r-- | gcc/doc/install-old.texi | 2 | ||||
-rw-r--r-- | gcc/doc/install.texi | 59 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 130 | ||||
-rw-r--r-- | gcc/doc/md.texi | 45 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 70 |
8 files changed, 286 insertions, 201 deletions
diff --git a/gcc/doc/configfiles.texi b/gcc/doc/configfiles.texi index c6c60bb..f24b85d 100644 --- a/gcc/doc/configfiles.texi +++ b/gcc/doc/configfiles.texi @@ -50,7 +50,7 @@ the files listed in @code{outputs} there are also generated. The following configuration headers are created from the Makefile, using @file{mkconfig.sh}, rather than directly by @file{configure}. -@file{config.h}, @file{hconfig.h} and @file{tconfig.h} all contain the +@file{config.h}, @file{bconfig.h} and @file{tconfig.h} all contain the @file{xm-@var{machine}.h} header, if any, appropriate to the host, build and target machines respectively, the configuration headers for the target, and some definitions; for the host and build machines, @@ -63,7 +63,7 @@ these include the autoconfigured headers generated by @item @file{config.h}, for use in programs that run on the host machine. @item -@file{hconfig.h}, for use in programs that run on the build machine. +@file{bconfig.h}, for use in programs that run on the build machine. @item @file{tconfig.h}, for use in programs and libraries for the target machine. diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 9a0f04c..edf6212 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -4570,6 +4570,21 @@ v4si f (v4si a, v4si b, v4si c) @findex strrchr @findex strspn @findex strstr +@findex floor +@findex floorf +@findex floorl +@findex ceil +@findex ceilf +@findex ceill +@findex round +@findex roundf +@findex roundl +@findex trunc +@findex truncf +@findex truncl +@findex nearbyint +@findex nearbyintf +@findex nearbyintl GCC provides a large number of built-in functions other than the ones mentioned above. Some of these are for internal use in the processing @@ -4605,28 +4620,29 @@ built-in functions. All these functions have corresponding versions prefixed with @code{__builtin_}, which may be used even in strict C89 mode. -The ISO C99 functions @code{conj}, @code{conjf}, @code{conjl}, -@code{creal}, @code{crealf}, @code{creall}, @code{cimag}, @code{cimagf}, -@code{cimagl}, @code{llabs} and @code{imaxabs} are handled as built-in -functions except in strict ISO C90 mode. There are also built-in -versions of the ISO C99 functions @code{cosf}, @code{cosl}, -@code{expf}, @code{expl}, @code{fabsf}, @code{fabsl}, -@code{logf}, @code{logl}, @code{sinf}, @code{sinl}, @code{sqrtf}, and -@code{sqrtl}, that are recognized in any mode since ISO C90 reserves -these names for the purpose to which ISO C99 puts them. All these -functions have corresponding versions prefixed with @code{__builtin_}. +The ISO C99 functions @code{conj}, @code{conjf}, @code{conjl}, @code{creal}, +@code{crealf}, @code{creall}, @code{cimag}, @code{cimagf}, @code{cimagl}, +@code{llabs}, @code{imaxabs}, @code{round}, @code{trunc}, @code{nearbyint}, +@code{roundf}, @code{truncf}, @code{nearbyintf}, @code{roundl}, @code{truncl} and +@code{nearbyintl} are handled as built-in functions except in strict ISO C90 mode. +There are also built-in versions of the ISO C99 functions @code{cosf}, +@code{cosl}, @code{expf}, @code{expl}, @code{fabsf}, @code{fabsl}, @code{logf}, +@code{logl}, @code{sinf}, @code{sinl}, @code{sqrtf}, @code{sqrtl}, +@code{ceilf}, @code{ceill}, @code{floorf} and @code{floorl} that are recognized +in any mode since ISO C90 reserves these names for the purpose to which ISO C99 +puts them. All these functions have corresponding versions prefixed with +@code{__builtin_}. The ISO C90 functions @code{abs}, @code{cos}, @code{exp}, @code{fabs}, -@code{fprintf}, @code{fputs}, @code{labs}, @code{log}, -@code{memcmp}, @code{memcpy}, -@code{memset}, @code{printf}, @code{sin}, @code{sqrt}, @code{strcat}, -@code{strchr}, @code{strcmp}, @code{strcpy}, @code{strcspn}, -@code{strlen}, @code{strncat}, @code{strncmp}, @code{strncpy}, -@code{strpbrk}, @code{strrchr}, @code{strspn}, and @code{strstr} are all -recognized as built-in functions unless @option{-fno-builtin} is -specified (or @option{-fno-builtin-@var{function}} is specified for an -individual function). All of these functions have corresponding -versions prefixed with @code{__builtin_}. +@code{fprintf}, @code{fputs}, @code{labs}, @code{log}, @code{floor}, +@code{ceil} @code{memcmp}, @code{memcpy}, @code{memset}, @code{printf}, +@code{sin}, @code{sqrt}, @code{strcat}, @code{strchr}, @code{strcmp}, +@code{strcpy}, @code{strcspn}, @code{strlen}, @code{strncat}, @code{strncmp}, +@code{strncpy}, @code{strpbrk}, @code{strrchr}, @code{strspn}, and +@code{strstr} are all recognized as built-in functions unless +@option{-fno-builtin} is specified (or @option{-fno-builtin-@var{function}} is +specified for an individual function). All of these functions have +corresponding versions prefixed with @code{__builtin_}. GCC provides built-in versions of the ISO C99 floating point comparison macros that avoid raising exceptions for unordered operands. They have diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi index 9c0ac11..e99d3ba 100644 --- a/gcc/doc/gcov.texi +++ b/gcc/doc/gcov.texi @@ -389,114 +389,23 @@ many times the result was 1. @node Gcov Data Files @section Brief description of @command{gcov} data files -@command{gcov} uses three files for doing profiling. The names of these -files are derived from the original @emph{source} file by substituting -the file suffix with either @file{.bb}, @file{.bbg}, or @file{.da}. All -of these files are placed in the same directory as the source file, and -contain data stored in a platform-independent method. - -The @file{.bb} and @file{.bbg} files are generated when the source file -is compiled with the GCC @option{-ftest-coverage} option. The -@file{.bb} file contains a list of source files (including headers), -functions within those files, and line numbers corresponding to each -basic block in the source file. - -The @file{.bb} file format consists of several lists of 4-byte integers -which correspond to the line numbers of each basic block in the file. -Each list is terminated by a line number of 0. A line number of -@minus{}1 is used to designate that the source file name (padded to a -4-byte boundary and followed by another @minus{}1) follows. In -addition, a line number of @minus{}2 is used to designate that the name -of a function (also padded to a 4-byte boundary and followed by a -@minus{}2) follows. - -The @file{.bbg} file is used to reconstruct the program flow graph for -the source file. It contains a list of the program flow arcs (possible -branches taken from one basic block to another) for each function which, -in combination with the @file{.bb} file, enables gcov to reconstruct the -program flow. - -In the @file{.bbg} file, the format is: -@smallexample - name of function #0 - checksum of function #0 - number of basic blocks for function #0 (4-byte number) - total number of arcs for function #0 (4-byte number) - count of arcs in basic block #0 (4-byte number) - destination basic block of arc #0 (4-byte number) - flag bits (4-byte number) - destination basic block of arc #1 (4-byte number) - flag bits (4-byte number) - @dots{} - destination basic block of arc #N (4-byte number) - flag bits (4-byte number) - count of arcs in basic block #1 (4-byte number) - destination basic block of arc #0 (4-byte number) - flag bits (4-byte number) - @dots{} -@end smallexample - -A @minus{}1 (stored as a 4-byte number) is used to separate each function's -list of basic blocks, and to verify that the file has been read -correctly. - -The function name is stored as a @minus{}1 (4 bytes), the length (4 bytes), -the name itself (padded to 4-byte boundary) followed by a @minus{}1 (4 bytes). +@command{gcov} uses two files for profiling. The names of these files +are derived from the original @emph{object} file by substituting the +file suffix with either @file{.bbg}, or @file{.da}. All of these files +are placed in the same directory as the object file, and contain data +stored in a platform-independent format. -The flags are defined as follows: -@itemize -@item bit0 -On function spanning tree - -@item bit1 -Is a fake edge - -@item bit2 -Is the fall through edge from one block to its immediate successor. - -@item bit3-bit31 -For future expansion - -@end itemize +The @file{.bbg} files is generated when the source file is compiled with +the GCC @option{-ftest-coverage} option. It contains information to +reconstruct the basic block graphs and assign source line numbers to +blocks. The @file{.da} file is generated when a program containing object files built with the GCC @option{-fprofile-arcs} option is executed. A -separate @file{.da} file is created for each source file compiled with -this option, and the name of the @file{.da} file is stored as an -absolute pathname in the resulting object file. This path name is -derived from the object file name by substituting a @file{.da} suffix. - -The @file{.da} consists of one or more blocks with the following -structure: -@smallexample - "magic" number @minus{}123 (4-byte number) - number of functions (4-byte number) - length of the "extension block" in bytes - extension block (variable length) - name of function #0 (the same format as in .bbg file) - checksum of function #0 - number of instrumented arcs (4-byte number) - count of arc #0 (8-byte number) - count of arc #1 (8-byte number) - @dots{} - count of arc #M_0 (8-byte number) - name of function #1 (the same format as in .bbg file) - checksum of function #1 - @dots{} -@end smallexample -Multiple program runs might merge data into a single block, or might -append a new block. The current structure of the extension block is as -follows: -@smallexample - number of instrumented arcs in whole program (4-byte number) - sum all of instrumented arcs in whole program (8-byte number) - maximal value of counter in whole program (8-byte number) - number of instrumented arcs in the object file (4-byte number) - sum all of instrumented arcs in the object file (8-byte number) - maximal value of counter in the object file (8-byte number) -@end smallexample - -All three of these files use the functions in @file{gcov-io.h} to store -integers; the functions in this header provide a machine-independent -mechanism for storing and retrieving data from a stream. +separate @file{.da} file is created for each object file compiled with +this option. It contains arc transition counts, and some summary +information. +The full details of the file format is specified in @file{gcov-io.h}, +and functions provided in that header file should be used to access the +coverage files. diff --git a/gcc/doc/install-old.texi b/gcc/doc/install-old.texi index a322b63..8ac31f2 100644 --- a/gcc/doc/install-old.texi +++ b/gcc/doc/install-old.texi @@ -567,7 +567,7 @@ sources. If you must recompile, here is how: @item Execute the command procedure @file{vmsconfig.com} to set up the files @file{tm.h}, @file{config.h}, @file{aux-output.c}, and @file{md.}, and -to create files @file{tconfig.h} and @file{hconfig.h}. This procedure +to create files @file{tconfig.h} and @file{bconfig.h}. This procedure also creates several linker option files used by @file{make-cc1.com} and a data file used by @file{make-l2.com}. diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index fd51869..dd80b7f 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -890,8 +890,29 @@ forward to maintain the port. Some options which only apply to building cross compilers: @table @code +@item --with-sysroot +@itemx --with-sysroot=@var{dir} +Tells GCC to consider @var{dir} as the root of a tree that contains a +(subset of) the root filesystem of the target operating system. +Target system headers, libraries and run-time object files will be +searched in there. The specified directory is not copied into the +install tree, unlike the options @option{--with-headers} and +@option{--with-libs} that this option obsoletes. The default value, +in case @option{--with-sysroot} is not given an argument, is +@option{$@{gcc_tooldir@}/sys-root}. Starting the pathname with +@option{$@{gcc_tooldir@}/}, in such a way that this variable is not +expanded by the shell, but rather by the gcc Makefile, enables the +target sysroot directory to be relocatable along with the entire +install tree, but it will require the gcc tool directory to be created +@emph{before} the build is started. This directory, as well as its +intermediate pathnames, can be easily created by running @command{make +install-gcc-tooldir} the gcc build directory. This is not done +automatically to avoid touching the install tree without explicit +permission. + @item --with-headers @itemx --with-headers=@var{dir} +Deprecated in favor of @option{--with-sysroot}. Specifies that target headers are available when building a cross compiler. The @var{dir} argument specifies a directory which has the target include files. These include files will be copied into the @file{gcc} install @@ -902,6 +923,7 @@ pre-exist, the @var{dir} argument may be omitted. @command{fixincludes} will be run on these files to make them compatible with GCC. @item --with-libs @itemx --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}'' +Deprecated in favor of @option{--with-sysroot}. Specifies a list of directories which contain the target runtime libraries. These libraries will be copied into the @file{gcc} install directory. If the directory list is omitted, this option has no @@ -1702,6 +1724,8 @@ GNU Compiler Collection on your machine. @item @uref{#vax-dec-ultrix,,vax-dec-ultrix} @item +@uref{#*-*-vxworks*,,*-*-vxworks*} +@item @uref{#xtensa-*-elf,,xtensa-*-elf} @item @uref{#xtensa-*-linux*,,xtensa-*-linux*} @@ -3208,6 +3232,41 @@ in some cases (for example, when @code{alloca} is used). @html <hr /> @end html +@heading @anchor{*-*-vxworks*}*-*-vxworks* +Support for VxWorks is in flux. At present GCC supports @emph{only} the +very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC. +We welcome patches for other architectures supported by VxWorks 5.5. +Support for VxWorks AE would also be welcome; we believe this is merely +a matter of writing an appropriate ``configlette'' (see below). We are +not interested in supporting older, a.out or COFF-based, versions of +VxWorks in GCC 3. + +VxWorks comes with an older version of GCC installed in +@file{@var{$WIND_BASE}/host}; we recommend you do not overwrite it. +Choose an installation @var{prefix} entirely outside @var{$WIND_BASE}. +Before running @command{configure}, create the directories @file{@var{prefix}} +and @file{@var{prefix}/bin}. Link or copy the appropriate assembler, +linker, etc. into @file{@var{prefix}/bin}, and set your @var{PATH} to +include that directory while running both @command{configure} and +@command{make}. + +You must give @command{configure} the +@option{--with-headers=@var{$WIND_BASE}/target/h} switch so that it can +find the VxWorks system headers. Since VxWorks is a cross compilation +target only, you must also specify @option{--target=@var{target}}. +@command{configure} will attempt to create the directory +@file{@var{prefix}/@var{target}/sys-include} and copy files into it; +make sure the user running @command{configure} has sufficient privilege +to do so. + +GCC's exception handling runtime requires a special ``configlette'' +module, @file{contrib/gthr_supp_vxw_5x.c}. Follow the instructions in +that file to add the module to your kernel build. (Future versions of +VxWorks will incorporate this module.) + +@html +<hr /> +@end html @heading @anchor{xtensa-*-elf}xtensa-*-elf This target is intended for embedded Xtensa systems using the diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index fe21460..c7ddb72 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -305,12 +305,12 @@ in the following sections. -iprefix @var{file} -iwithprefix @var{dir} @gol -iwithprefixbefore @var{dir} -isystem @var{dir} @gol -M -MM -MF -MG -MP -MQ -MT -nostdinc -P -remap @gol --trigraphs -undef -U@var{macro} -Wp,@var{option}} +-trigraphs -undef -U@var{macro} -Wp,@var{option} -Xpreprocessor @var{option}} @item Assembler Option @xref{Assembler Options,,Passing Options to the Assembler}. @gccoptlist{ --Wa,@var{option}} +-Wa,@var{option} -Xassembler @var{option}} @item Linker Options @xref{Link Options,,Options for Linking}. @@ -4310,6 +4310,7 @@ Some of these options make sense only together with @option{-E} because they cause the preprocessor output to be unsuitable for actual compilation. +@table @gcctabopt @opindex Wp You can use @option{-Wp,@var{option}} to bypass the compiler driver and pass @var{option} directly through to the preprocessor. If @@ -4321,6 +4322,16 @@ interface is undocumented and subject to change, so whenever possible you should avoid using @option{-Wp} and let the driver handle the options instead. +@item -Xpreprocessor @var{option} +@opindex preprocessor +Pass @var{option} as an option to the preprocessor. You can use this to +supply system-specific preprocessor options which GCC does not know how to +recognize. + +If you want to pass an option that takes an argument, you must use +@option{-Xpreprocessor} twice, once for the option and once for the argument. +@end table + @include cppopts.texi @node Assembler Options @@ -4334,6 +4345,16 @@ You can pass options to the assembler. @opindex Wa Pass @var{option} as an option to the assembler. If @var{option} contains commas, it is split into multiple options at the commas. + +@item -Xassembler @var{option} +@opindex Xassembler +Pass @var{option} as an option to the assembler. You can use this to +supply system-specific assembler options which GCC does not know how to +recognize. + +If you want to pass an option that takes an argument, you must use +@option{-Xassembler} twice, once for the option and once for the argument. + @end table @node Link Options @@ -4846,13 +4867,22 @@ for each @samp{%g.s} and another for each @samp{%U.s}. Previously, @samp{%U} wa simply substituted with a file name chosen for the previous @samp{%u}, without regard to any appended suffix. -@item %j@var{SUFFIX} +@item %j@var{suffix} Substitutes the name of the @code{HOST_BIT_BUCKET}, if any, and if it is writable, and if save-temps is off; otherwise, substitute the name of a temporary file, just like @samp{%u}. This temporary file is not meant for communication between processes, but rather as a junk disposal mechanism. +@item %|@var{suffix} +@itemx %m@var{suffix} +Like @samp{%g}, except if @option{-pipe} is in effect. In that case +@samp{%|} substitutes a single dash and @samp{%m} substitutes nothing at +all. These are the two most common ways to instruct a program that it +should read from standard input or write to standard output. If you +need something more elaborate you can use an @samp{%@{pipe:@code{X}@}} +construct: see for example @file{f/lang-specs.h}. + @item %.@var{SUFFIX} Substitutes @var{.SUFFIX} for the suffixes of a matched switch's args when it is subsequently output with @samp{%*}. @var{SUFFIX} is @@ -4903,9 +4933,6 @@ the full name found. Print @var{str} as an error message. @var{str} is terminated by a newline. Use this when inconsistent options are detected. -@item %| -Output @samp{-} if the input for the current command is coming from a pipe. - @item %(@var{name}) Substitute the contents of spec string @var{name} at this point. @@ -5002,6 +5029,12 @@ Substitute the variable part of a matched option. See below. Note that each comma in the substituted string is replaced by a single space. +@item %<@code{S} +Remove all occurrences of @code{-S} from the command line. Note---this +command is position dependent. @samp{%} commands in the spec string +before this one will see @code{-S}, @samp{%} commands in the spec string +after this one will not. + @item %:@var{function}(@var{args}) Call the named function @var{function}, passing it @var{args}. @var{args} is first processed as a nested spec string, then split @@ -5056,51 +5089,40 @@ GCC considers @option{-o foo} as being one switch whose names starts with @samp{o}. %@{o*@} would substitute this text, including the space. Thus two arguments would be generated. -@item %@{^@code{S}*@} -Like %@{@code{S}*@}, but don't put a blank between a switch and its -argument. Thus %@{^o*@} would only generate one argument, not two. - @item %@{@code{S}*&@code{T}*@} Like %@{@code{S}*@}, but preserve order of @code{S} and @code{T} options (the order of @code{S} and @code{T} in the spec is not significant). There can be any number of ampersand-separated variables; for each the wild card is optional. Useful for CPP as @samp{%@{D*&U*&A*@}}. -@item %@{<@code{S}@} -Remove all occurrences of @code{-S} from the command line. Note---this -command is position dependent. @samp{%} commands in the spec string -before this option will see @code{-S}, @samp{%} commands in the spec -string after this option will not. - -@item %@{@code{S}*:@code{X}@} -Substitutes @code{X} if one or more switches whose names start with -@code{-S} are specified to GCC@. Note that the tail part of the -@code{-S} option (i.e.@: the part matched by the @samp{*}) will be substituted -for each occurrence of @samp{%*} within @code{X}. - @item %@{@code{S}:@code{X}@} -Substitutes @code{X}, but only if the @samp{-S} switch was given to GCC@. +Substitutes @code{X}, if the @samp{-S} switch was given to GCC@. @item %@{!@code{S}:@code{X}@} -Substitutes @code{X}, but only if the @samp{-S} switch was @emph{not} given to GCC@. - -@item %@{|@code{S}:@code{X}@} -Like %@{@code{S}:@code{X}@}, but if no @code{S} switch, substitute @samp{-}. +Substitutes @code{X}, if the @samp{-S} switch was @emph{not} given to GCC@. -@item %@{|!@code{S}:@code{X}@} -Like %@{!@code{S}:@code{X}@}, but if there is an @code{S} switch, substitute @samp{-}. +@item %@{@code{S}*:@code{X}@} +Substitutes @code{X} if one or more switches whose names start with +@code{-S} are specified to GCC@. Normally @code{X} is substituted only +once, no matter how many such switches appeared. However, if @code{%*} +appears somewhere in @code{X}, then @code{X} will be substituted once +for each matching switch, with the @code{%*} replaced by the part of +that switch that matched the @code{*}. @item %@{.@code{S}:@code{X}@} -Substitutes @code{X}, but only if processing a file with suffix @code{S}. +Substitutes @code{X}, if processing a file with suffix @code{S}. @item %@{!.@code{S}:@code{X}@} -Substitutes @code{X}, but only if @emph{not} processing a file with suffix @code{S}. +Substitutes @code{X}, if @emph{not} processing a file with suffix @code{S}. @item %@{@code{S}|@code{P}:@code{X}@} -Substitutes @code{X} if either @code{-S} or @code{-P} was given to GCC@. This may be -combined with @samp{!} and @samp{.} sequences as well, although they -have a stronger binding than the @samp{|}. For example a spec string -like this: +Substitutes @code{X} if either @code{-S} or @code{-P} was given to GCC@. +This may be combined with @samp{!}, @samp{.}, and @code{*} sequences as well, +although they have a stronger binding than the @samp{|}. If @code{%*} +appears in @code{X}, all of the alternatives must be starred, and only +the first matching alternative is substituted. + +For example, a spec string like this: @smallexample %@{.c:-foo@} %@{!.c:-bar@} %@{.c|d:-baz@} %@{!.c|d:-boggle@} @@ -5116,23 +5138,33 @@ jim.d -bar -boggle -d jim.d -bar -baz -boggle @end smallexample +@item %@{S:X; T:Y; :D@} + +If @code{S} was given to GCC, substitues @code{X}; else if @code{T} was +given to GCC, substitues @code{Y}; else substitutes @code{D}. There can +be as many clauses as you need. This may be combined with @code{.}, +@code{!}, @code{|}, and @code{*} as needed. + + @end table -The conditional text @code{X} in a %@{@code{S}:@code{X}@} or -%@{!@code{S}:@code{X}@} construct may contain other nested @samp{%} constructs -or spaces, or even newlines. They are processed as usual, as described -above. +The conditional text @code{X} in a %@{@code{S}:@code{X}@} or similar +construct may contain other nested @samp{%} constructs or spaces, or +even newlines. They are processed as usual, as described above. +Trailing white space in @code{X} is ignored. White space may also +appear anywhere on the left side of the colon in these constructs, +except between @code{.} or @code{*} and the corresponding word. -The @option{-O}, @option{-f}, @option{-m}, and @option{-W} -switches are handled specifically in these -constructs. If another value of @option{-O} or the negated form of a @option{-f}, @option{-m}, or -@option{-W} switch is found later in the command line, the earlier switch -value is ignored, except with @{@code{S}*@} where @code{S} is just one -letter, which passes all matching options. +The @option{-O}, @option{-f}, @option{-m}, and @option{-W} switches are +handled specifically in these constructs. If another value of +@option{-O} or the negated form of a @option{-f}, @option{-m}, or +@option{-W} switch is found later in the command line, the earlier +switch value is ignored, except with @{@code{S}*@} where @code{S} is +just one letter, which passes all matching options. -The character @samp{|} at the beginning of the predicate text is used to indicate -that a command should be piped to the following command, but only if @option{-pipe} -is specified. +The character @samp{|} at the beginning of the predicate text is used to +indicate that a command should be piped to the following command, but +only if @option{-pipe} is specified. It is built into GCC which switches take arguments and which do not. (You might think it would be useful to generalize this to allow each @@ -7856,7 +7888,7 @@ for the ABI and the set of available instructions. The choices for @samp{pentium}, @samp{pentium-mmx}, @samp{pentiumpro}, @samp{pentium2}, @samp{pentium3}, @samp{pentium4}, @samp{k6}, @samp{k6-2}, @samp{k6-3}, @samp{athlon}, @samp{athlon-tbird}, @samp{athlon-4}, @samp{athlon-xp}, -@samp{athlon-mp}, @samp{winchip-c6}, @samp{winchip2} and @samp{c3}. +@samp{athlon-mp}, @samp{winchip-c6}, @samp{winchip2}, @samp{k8} and @samp{c3}. While picking a specific @var{cpu-type} will schedule things appropriately for that particular chip, the compiler will not generate any code that diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 3ed88d0..cafe001 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -2662,6 +2662,51 @@ corresponds to the C data type @code{double} and the @code{logf} built-in function uses the mode which corresponds to the C data type @code{float}. +@cindex @code{floor@var{m}2} instruction pattern +@item @samp{floor@var{m}2} +Store the largest integral value not greater than argument. + +The @code{floor} built-in function of C always uses the mode which +corresponds to the C data type @code{double} and the @code{floorf} +built-in function uses the mode which corresponds to the C data +type @code{float}. + +@cindex @code{trunc@var{m}2} instruction pattern +@item @samp{trunc@var{m}2} +Store the argument rounded to integer towards zero. + +The @code{trunc} built-in function of C always uses the mode which +corresponds to the C data type @code{double} and the @code{truncf} +built-in function uses the mode which corresponds to the C data +type @code{float}. + +@cindex @code{round@var{m}2} instruction pattern +@item @samp{round@var{m}2} +Store the argument rounded to integer away from zero. + +The @code{round} built-in function of C always uses the mode which +corresponds to the C data type @code{double} and the @code{roundf} +built-in function uses the mode which corresponds to the C data +type @code{float}. + +@cindex @code{ceil@var{m}2} instruction pattern +@item @samp{ceil@var{m}2} +Store the argument rounded to integer away from zero. + +The @code{ceil} built-in function of C always uses the mode which +corresponds to the C data type @code{double} and the @code{ceilf} +built-in function uses the mode which corresponds to the C data +type @code{float}. + +@cindex @code{nearbyint@var{m}2} instruction pattern +@item @samp{nearbyint@var{m}2} +Store the argument rounded according to the default rounding mode + +The @code{nearbyint} built-in function of C always uses the mode which +corresponds to the C data type @code{double} and the @code{nearbyintf} +built-in function uses the mode which corresponds to the C data +type @code{float}. + @cindex @code{ffs@var{m}2} instruction pattern @item @samp{ffs@var{m}2} Store into operand 0 one plus the index of the least significant 1-bit diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 4b88511..12812bd 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -233,6 +233,19 @@ an example of this. Do not define this macro if it does not need to do anything. +@findex AS_NEEDS_DASH_FOR_PIPED_INPUT +@item AS_NEEDS_DASH_FOR_PIPED_INPUT +Define this macro, with no value, if the driver should give the assembler +an argument consisting of a single dash, @option{-}, to instruct it to +read from its standard input (which will be a pipe connected to the +output of the compiler proper). This argument is given after any +@option{-o} option specifying the name of the output file. + +If you do not define this macro, the assembler is assumed to read its +standard input if given no non-option arguments. If your assembler +cannot read standard input at all, use a @samp{%@{pipe:%e@}} construct; +see @file{mips.h} for instance. + @findex LINK_SPEC @item LINK_SPEC A C string constant that tells the GCC driver program options to @@ -4239,18 +4252,18 @@ the function prologue. Normally, the profiling code comes after. @subsection Permitting tail calls @cindex tail calls -@table @code -@findex FUNCTION_OK_FOR_SIBCALL -@item FUNCTION_OK_FOR_SIBCALL (@var{decl}) -A C expression that evaluates to true if it is ok to perform a sibling -call to @var{decl} from the current function. +@deftypefn {Target Hook} bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree @var{decl}, tree @var{exp}) +True if it is ok to do sibling call optimization for the specified +call expression @var{exp}. @var{decl} will be the called function, +or @code{NULL} if this is an indirect call. It is not uncommon for limitations of calling conventions to prevent tail calls to functions outside the current unit of translation, or -during PIC compilation. Use this macro to enforce these restrictions, +during PIC compilation. The hook is used to enforce these restrictions, as the @code{sibcall} md pattern can not fail, or fall over to a -``normal'' call. -@end table +``normal'' call. The criteria for successful sibling call optimization +may vary greatly between different architectures. +@end deftypefn @node Varargs @section Implementing the Varargs Macros @@ -5413,6 +5426,15 @@ to clear a chunk of memory, or whether some other block clear mechanism will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less than @code{CLEAR_RATIO}. +@findex STORE_BY_PIECES_P +@item STORE_BY_PIECES_P (@var{size}, @var{alignment}) +A C expression used to determine whether @code{store_by_pieces} will be +used to set a chunk of memory to a constant value, or whether some other +mechanism will be used. Used by @code{__builtin_memset} when storing +values other than constant zero and by @code{__builtin_strcpy} when +when called with a constant source string. +Defaults to @code{MOVE_BY_PIECES_P}. + @findex USE_LOAD_POST_INCREMENT @item USE_LOAD_POST_INCREMENT (@var{mode}) A C expression used to determine whether a load postincrement is a good @@ -6267,7 +6289,7 @@ responsible for outputting the label definition at the proper place. Here is how to do this: @example -ASM_OUTPUT_INTERNAL_LABEL (@var{file}, "LC", @var{labelno}); +@code{(*targetm.asm_out.internal_label)} (@var{file}, "LC", @var{labelno}); @end example When you output a pool entry specially, you should end with a @@ -6725,11 +6747,11 @@ This macro is not used by @code{output_asm_label}, or the @code{%l} specifier that calls it; the intention is that this macro should be set when it is necessary to output a label differently when its address is being taken. +@end table -@findex ASM_OUTPUT_INTERNAL_LABEL -@item ASM_OUTPUT_INTERNAL_LABEL (@var{stream}, @var{prefix}, @var{num}) -A C statement to output to the stdio stream @var{stream} a label whose -name is made from the string @var{prefix} and the number @var{num}. +@deftypefn {Target Hook} void TARGET_ASM_INTERNAL_LABEL (FILE *@var{stream}, const char *@var{prefix}, unsigned long @var{labelno}) +A function to output to the stdio stream @var{stream} a label whose +name is made from the string @var{prefix} and the number @var{labelno}. It is absolutely essential that these labels be distinct from the labels used for user-level functions and variables. Otherwise, certain programs @@ -6741,12 +6763,11 @@ should be excluded; on many systems, the letter @samp{L} at the beginning of a label has this effect. You should find out what convention your system uses, and follow it. -The usual definition of this macro is as follows: +The default version of this function utilizes ASM_GENERATE_INTERNAL_LABEL. -@example -fprintf (@var{stream}, "L%s%d:\n", @var{prefix}, @var{num}) -@end example +@end deftypefn +@table @code @findex ASM_OUTPUT_DEBUG_LABEL @item ASM_OUTPUT_DEBUG_LABEL (@var{stream}, @var{prefix}, @var{num}) A C statement to output to the stdio stream @var{stream} a debug info @@ -6757,7 +6778,7 @@ systems, branch target labels must be at the beginning of instruction bundles, but debug info labels can occur in the middle of instruction bundles. -If this macro is not defined, then @code{ASM_OUTPUT_INTERNAL_LABEL} will be +If this macro is not defined, then @code{(*targetm.asm_out.internal_label)} will be used. @findex ASM_GENERATE_INTERNAL_LABEL @@ -6766,7 +6787,7 @@ A C statement to store into the string @var{string} a label whose name is made from the string @var{prefix} and the number @var{num}. This string, when output subsequently by @code{assemble_name}, should -produce the output that @code{ASM_OUTPUT_INTERNAL_LABEL} would produce +produce the output that @code{(*targetm.asm_out.internal_label)} would produce with the same @var{prefix} and @var{num}. If the string begins with @samp{*}, then @code{assemble_name} will @@ -6796,6 +6817,9 @@ conflict with the user's own symbols. Most assemblers allow periods or percent signs in assembler symbols; putting at least one of these between the name and the number will suffice. +If this macro is not defined, a default definition will be provided +which is correct for most systems. + @findex ASM_OUTPUT_DEF @item ASM_OUTPUT_DEF (@var{stream}, @var{name}, @var{value}) A C statement to output to the stdio stream @var{stream} assembler code @@ -7365,7 +7389,7 @@ A C statement to output to the stdio stream @var{stream} an assembler pseudo-instruction to generate a difference between two labels. @var{value} and @var{rel} are the numbers of two internal labels. The definitions of these labels are output using -@code{ASM_OUTPUT_INTERNAL_LABEL}, and they must be printed in the same +@code{(*targetm.asm_out.internal_label)}, and they must be printed in the same way here. For example, @example @@ -7387,7 +7411,7 @@ in a dispatch table are absolute. The definition should be a C statement to output to the stdio stream @var{stream} an assembler pseudo-instruction to generate a reference to a label. @var{value} is the number of an internal label whose -definition is output using @code{ASM_OUTPUT_INTERNAL_LABEL}. +definition is output using @code{(*targetm.asm_out.internal_label)}. For example, @example @@ -7398,7 +7422,7 @@ fprintf (@var{stream}, "\t.word L%d\n", @var{value}) @item ASM_OUTPUT_CASE_LABEL (@var{stream}, @var{prefix}, @var{num}, @var{table}) Define this if the label before a jump-table needs to be output specially. The first three arguments are the same as for -@code{ASM_OUTPUT_INTERNAL_LABEL}; the fourth argument is the +@code{(*targetm.asm_out.internal_label)}; the fourth argument is the jump-table which follows (a @code{jump_insn} containing an @code{addr_vec} or @code{addr_diff_vec}). @@ -7406,7 +7430,7 @@ This feature is used on system V to output a @code{swbeg} statement for the table. If this macro is not defined, these labels are output with -@code{ASM_OUTPUT_INTERNAL_LABEL}. +@code{(*targetm.asm_out.internal_label)}. @findex ASM_OUTPUT_CASE_END @item ASM_OUTPUT_CASE_END (@var{stream}, @var{num}, @var{table}) |