| Index: gcc/gcc/doc/sourcebuild.texi
|
| diff --git a/gcc/gcc/doc/sourcebuild.texi b/gcc/gcc/doc/sourcebuild.texi
|
| index fb639826f319d0572fad9b98e34cf607cd95efbd..7ff799019cfca2fd2a2200e1fe2ee61b689cd320 100644
|
| --- a/gcc/gcc/doc/sourcebuild.texi
|
| +++ b/gcc/gcc/doc/sourcebuild.texi
|
| @@ -1,4 +1,4 @@
|
| -@c Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009
|
| +@c Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
|
| @c Free Software Foundation, Inc.
|
| @c This is part of the GCC manual.
|
| @c For copying conditions, see the file gcc.texi.
|
| @@ -15,7 +15,6 @@ which it is presumed that you are familiar.
|
| * Configure Terms:: Configuration terminology and history.
|
| * Top Level:: The top level source directory.
|
| * gcc Directory:: The @file{gcc} subdirectory.
|
| -* Testsuites:: The GCC testsuites.
|
| @end menu
|
|
|
| @include configterms.texi
|
| @@ -33,15 +32,14 @@ subdirectories that contain parts of GCC and its runtime libraries:
|
| The Boehm conservative garbage collector, used as part of the Java
|
| runtime library.
|
|
|
| +@item config
|
| +Autoconf macros and Makefile fragments used throughout the tree.
|
| +
|
| @item contrib
|
| Contributed scripts that may be found useful in conjunction with GCC@.
|
| One of these, @file{contrib/texi2pod.pl}, is used to generate man
|
| pages from Texinfo manuals as part of the GCC build process.
|
|
|
| -@item fastjar
|
| -An implementation of the @command{jar} command, used with the Java
|
| -front end.
|
| -
|
| @item fixincludes
|
| The support for fixing system headers to work with GCC@. See
|
| @file{fixincludes/README} for more information. The headers fixed by
|
| @@ -55,12 +53,15 @@ including optimizers, support for different target architectures,
|
| language front ends, and testsuites. @xref{gcc Directory, , The
|
| @file{gcc} Subdirectory}, for details.
|
|
|
| +@item gnattools
|
| +Support tools for GNAT.
|
| +
|
| @item include
|
| Headers for the @code{libiberty} library.
|
|
|
| @item intl
|
| GNU @code{libintl}, from GNU @code{gettext}, for systems which do not
|
| -include it in libc.
|
| +include it in @code{libc}.
|
|
|
| @item libada
|
| The Ada runtime library.
|
| @@ -68,12 +69,21 @@ The Ada runtime library.
|
| @item libcpp
|
| The C preprocessor library.
|
|
|
| -@item libgfortran
|
| -The Fortran runtime library.
|
| +@item libdecnumber
|
| +The Decimal Float support library.
|
|
|
| @item libffi
|
| The @code{libffi} library, used as part of the Java runtime library.
|
|
|
| +@item libgcc
|
| +The GCC runtime library.
|
| +
|
| +@item libgfortran
|
| +The Fortran runtime library.
|
| +
|
| +@item libgomp
|
| +The GNU OpenMP runtime library.
|
| +
|
| @item libiberty
|
| The @code{libiberty} library, used for portability and for some
|
| generally useful data structures and algorithms. @xref{Top, ,
|
| @@ -90,15 +100,22 @@ dereferencing operations.
|
| @item libobjc
|
| The Objective-C and Objective-C++ runtime library.
|
|
|
| +@item libssp
|
| +The Stack protector runtime library.
|
| +
|
| @item libstdc++-v3
|
| The C++ runtime library.
|
|
|
| +@item lto-plugin
|
| +Plugin used by @command{gold} if link-time optimizations are enabled.
|
| +
|
| @item maintainer-scripts
|
| Scripts used by the @code{gccadmin} account on @code{gcc.gnu.org}.
|
|
|
| @item zlib
|
| -The @code{zlib} compression library, used by the Java front end and as
|
| -part of the Java runtime library.
|
| +The @code{zlib} compression library, used by the Java front end, as
|
| +part of the Java runtime library, and for compressing and uncompressing
|
| +GCC's intermediate language in LTO object files.
|
| @end table
|
|
|
| The build system in the top level directory, including how recursion
|
| @@ -137,11 +154,12 @@ The @file{gcc} directory contains the following subdirectories:
|
| @item @var{language}
|
| Subdirectories for various languages. Directories containing a file
|
| @file{config-lang.in} are language subdirectories. The contents of
|
| -the subdirectories @file{cp} (for C++), @file{objc} (for Objective-C)
|
| -and @file{objcp} (for Objective-C++) are documented in this manual
|
| -(@pxref{Passes, , Passes and Files of the Compiler}); those for other
|
| -languages are not. @xref{Front End, , Anatomy of a Language Front End},
|
| -for details of the files in these directories.
|
| +the subdirectories @file{cp} (for C++), @file{lto} (for LTO),
|
| +@file{objc} (for Objective-C) and @file{objcp} (for Objective-C++) are
|
| +documented in this manual (@pxref{Passes, , Passes and Files of the
|
| +Compiler}); those for other languages are not. @xref{Front End, ,
|
| +Anatomy of a Language Front End}, for details of the files in these
|
| +directories.
|
|
|
| @item config
|
| Configuration files for supported architectures and operating
|
| @@ -308,7 +326,7 @@ GCC can also install @code{<tgmath.h>}. It will do this when
|
| The main GCC documentation is in the form of manuals in Texinfo
|
| format. These are installed in Info format; DVI versions may be
|
| generated by @samp{make dvi}, PDF versions by @samp{make pdf}, and
|
| -HTML versions by @command{make html}. In addition, some man pages are
|
| +HTML versions by @samp{make html}. In addition, some man pages are
|
| generated from the Texinfo manuals, there are some other text files
|
| with miscellaneous documentation, and runtime libraries have their own
|
| documentation outside the @file{gcc} directory. FIXME: document the
|
| @@ -347,7 +365,7 @@ DVI-formatted manuals are generated by @samp{make dvi}, which uses
|
| @command{texi2dvi} (via the Makefile macro @code{$(TEXI2DVI)}).
|
| PDF-formatted manuals are generated by @samp{make pdf}, which uses
|
| @command{texi2pdf} (via the Makefile macro @code{$(TEXI2PDF)}). HTML
|
| -formatted manuals are generated by @command{make html}. Info
|
| +formatted manuals are generated by @samp{make html}. Info
|
| manuals are generated by @samp{make info} (which is run as part of
|
| a bootstrap); this generates the manuals in the source directory,
|
| using @command{makeinfo} via the Makefile macro @code{$(MAKEINFO)},
|
| @@ -367,7 +385,7 @@ directory or in @file{doc/include}. HTML manuals will be generated by
|
| @samp{makeinfo --html}, PostScript manuals by @command{texi2dvi}
|
| and @command{dvips}, and PDF manuals by @command{texi2pdf}.
|
| All Texinfo files that are parts of manuals must
|
| -be checked into SVN, even if they are generated files, for the
|
| +be version-controlled, even if they are generated files, for the
|
| generation of online manuals to work.
|
|
|
| The installation manual, @file{doc/install.texi}, is also provided on
|
| @@ -421,7 +439,8 @@ comments in more detail.
|
| @subsubsection Miscellaneous Documentation
|
|
|
| In addition to the formal documentation that is installed by GCC,
|
| -there are several other text files with miscellaneous documentation:
|
| +there are several other text files in the @file{gcc} subdirectory
|
| +with miscellaneous documentation:
|
|
|
| @table @file
|
| @item ABOUT-GCC-NLS
|
| @@ -430,9 +449,11 @@ this manual rather than a separate file.
|
| @item ABOUT-NLS
|
| Notes on the Free Translation Project.
|
| @item COPYING
|
| -The GNU General Public License.
|
| +@itemx COPYING3
|
| +The GNU General Public License, Versions 2 and 3.
|
| @item COPYING.LIB
|
| -The GNU Lesser General Public License.
|
| +@itemx COPYING3.LIB
|
| +The GNU Lesser General Public License, Versions 2.1 and 3.
|
| @item *ChangeLog*
|
| @itemx */ChangeLog*
|
| Change log files for various parts of GCC@.
|
| @@ -499,6 +520,10 @@ directory. FIXME: document this further.
|
| @item
|
| Details of the directories of any runtime libraries in
|
| @file{gcc/doc/sourcebuild.texi}.
|
| +@item
|
| +Check targets in @file{Makefile.def} for the top-level @file{Makefile}
|
| +to check just the compiler or the compiler and runtime library for the
|
| +language.
|
| @end itemize
|
|
|
| If the front end is added to the official GCC source repository, the
|
| @@ -544,6 +569,7 @@ updated accordingly.
|
| @menu
|
| * Front End Directory:: The front end @file{@var{language}} directory.
|
| * Front End Config:: The front end @file{config-lang.in} file.
|
| +* Front End Makefile:: The front end @file{Make-lang.in} file.
|
| @end menu
|
|
|
| @node Front End Directory
|
| @@ -552,7 +578,7 @@ updated accordingly.
|
| A front end @file{@var{language}} directory contains the source files
|
| of that front end (but not of any runtime libraries, which should be
|
| outside the @file{gcc} directory). This includes documentation, and
|
| -possibly some subsidiary programs build alongside the front end.
|
| +possibly some subsidiary programs built alongside the front end.
|
| Certain files are special and other parts of the compiler depend on
|
| their names:
|
|
|
| @@ -562,7 +588,84 @@ This file is required in all language subdirectories. @xref{Front End
|
| Config, , The Front End @file{config-lang.in} File}, for details of
|
| its contents
|
| @item Make-lang.in
|
| -This file is required in all language subdirectories. It contains
|
| +This file is required in all language subdirectories. @xref{Front End
|
| +Makefile, , The Front End @file{Make-lang.in} File}, for details of its
|
| +contents.
|
| +@item lang.opt
|
| +This file registers the set of switches that the front end accepts on
|
| +the command line, and their @option{--help} text. @xref{Options}.
|
| +@item lang-specs.h
|
| +This file provides entries for @code{default_compilers} in
|
| +@file{gcc.c} which override the default of giving an error that a
|
| +compiler for that language is not installed.
|
| +@item @var{language}-tree.def
|
| +This file, which need not exist, defines any language-specific tree
|
| +codes.
|
| +@end table
|
| +
|
| +@node Front End Config
|
| +@subsubsection The Front End @file{config-lang.in} File
|
| +
|
| +Each language subdirectory contains a @file{config-lang.in} file. In
|
| +addition the main directory contains @file{c-config-lang.in}, which
|
| +contains limited information for the C language. This file is a shell
|
| +script that may define some variables describing the language:
|
| +
|
| +@table @code
|
| +@item language
|
| +This definition must be present, and gives the name of the language
|
| +for some purposes such as arguments to @option{--enable-languages}.
|
| +@item lang_requires
|
| +If defined, this variable lists (space-separated) language front ends
|
| +other than C that this front end requires to be enabled (with the
|
| +names given being their @code{language} settings). For example, the
|
| +Java front end depends on the C++ front end, so sets
|
| +@samp{lang_requires=c++}.
|
| +@item subdir_requires
|
| +If defined, this variable lists (space-separated) front end directories
|
| +other than C that this front end requires to be present. For example,
|
| +the Objective-C++ front end uses source files from the C++ and
|
| +Objective-C front ends, so sets @samp{subdir_requires="cp objc"}.
|
| +@item target_libs
|
| +If defined, this variable lists (space-separated) targets in the top
|
| +level @file{Makefile} to build the runtime libraries for this
|
| +language, such as @code{target-libobjc}.
|
| +@item lang_dirs
|
| +If defined, this variable lists (space-separated) top level
|
| +directories (parallel to @file{gcc}), apart from the runtime libraries,
|
| +that should not be configured if this front end is not built.
|
| +@item build_by_default
|
| +If defined to @samp{no}, this language front end is not built unless
|
| +enabled in a @option{--enable-languages} argument. Otherwise, front
|
| +ends are built by default, subject to any special logic in
|
| +@file{configure.ac} (as is present to disable the Ada front end if the
|
| +Ada compiler is not already installed).
|
| +@item boot_language
|
| +If defined to @samp{yes}, this front end is built in stage1 of the
|
| +bootstrap. This is only relevant to front ends written in their own
|
| +languages.
|
| +@item compilers
|
| +If defined, a space-separated list of compiler executables that will
|
| +be run by the driver. The names here will each end
|
| +with @samp{\$(exeext)}.
|
| +@item outputs
|
| +If defined, a space-separated list of files that should be generated
|
| +by @file{configure} substituting values in them. This mechanism can
|
| +be used to create a file @file{@var{language}/Makefile} from
|
| +@file{@var{language}/Makefile.in}, but this is deprecated, building
|
| +everything from the single @file{gcc/Makefile} is preferred.
|
| +@item gtfiles
|
| +If defined, a space-separated list of files that should be scanned by
|
| +@file{gengtype.c} to generate the garbage collection tables and routines for
|
| +this language. This excludes the files that are common to all front
|
| +ends. @xref{Type Information}.
|
| +
|
| +@end table
|
| +
|
| +@node Front End Makefile
|
| +@subsubsection The Front End @file{Make-lang.in} File
|
| +
|
| +Each language subdirectory contains a @file{Make-lang.in} file. It contains
|
| targets @code{@var{lang}.@var{hook}} (where @code{@var{lang}} is the
|
| setting of @code{language} in @file{config-lang.in}) for the following
|
| values of @code{@var{hook}}, and any other Makefile rules required to
|
| @@ -612,10 +715,12 @@ that should be installed.
|
| @item install-man
|
| Install man pages for the front end. This target should ignore
|
| errors.
|
| +@item install-plugin
|
| +Install headers needed for plugins.
|
| @item srcextra
|
| Copies its dependencies into the source directory. This generally should
|
| be used for generated files such as Bison output files which are not
|
| -present in CVS, but should be included in any release tarballs. This
|
| +version-controlled, but should be included in any release tarballs. This
|
| target will be executed during a bootstrap if
|
| @samp{--enable-generated-files-in-srcdir} was specified as a
|
| @file{configure} option.
|
| @@ -636,84 +741,13 @@ The language parts of the standard GNU
|
| @samp{*clean} targets. @xref{Standard Targets, , Standard Targets for
|
| Users, standards, GNU Coding Standards}, for details of the standard
|
| targets. For GCC, @code{maintainer-clean} should delete
|
| -all generated files in the source directory that are not checked into
|
| -CVS, but should not delete anything checked into CVS@.
|
| +all generated files in the source directory that are not version-controlled,
|
| +but should not delete anything that is.
|
| @end table
|
|
|
| @file{Make-lang.in} must also define a variable @code{@var{lang}_OBJS}
|
| to a list of host object files that are used by that language.
|
|
|
| -@item lang.opt
|
| -This file registers the set of switches that the front end accepts on
|
| -the command line, and their @option{--help} text. @xref{Options}.
|
| -@item lang-specs.h
|
| -This file provides entries for @code{default_compilers} in
|
| -@file{gcc.c} which override the default of giving an error that a
|
| -compiler for that language is not installed.
|
| -@item @var{language}-tree.def
|
| -This file, which need not exist, defines any language-specific tree
|
| -codes.
|
| -@end table
|
| -
|
| -@node Front End Config
|
| -@subsubsection The Front End @file{config-lang.in} File
|
| -
|
| -Each language subdirectory contains a @file{config-lang.in} file. In
|
| -addition the main directory contains @file{c-config-lang.in}, which
|
| -contains limited information for the C language. This file is a shell
|
| -script that may define some variables describing the language:
|
| -
|
| -@table @code
|
| -@item language
|
| -This definition must be present, and gives the name of the language
|
| -for some purposes such as arguments to @option{--enable-languages}.
|
| -@item lang_requires
|
| -If defined, this variable lists (space-separated) language front ends
|
| -other than C that this front end requires to be enabled (with the
|
| -names given being their @code{language} settings). For example, the
|
| -Java front end depends on the C++ front end, so sets
|
| -@samp{lang_requires=c++}.
|
| -@item subdir_requires
|
| -If defined, this variable lists (space-separated) front end directories
|
| -other than C that this front end requires to be present. For example,
|
| -the Objective-C++ front end uses source files from the C++ and
|
| -Objective-C front ends, so sets @samp{subdir_requires="cp objc"}.
|
| -@item target_libs
|
| -If defined, this variable lists (space-separated) targets in the top
|
| -level @file{Makefile} to build the runtime libraries for this
|
| -language, such as @code{target-libobjc}.
|
| -@item lang_dirs
|
| -If defined, this variable lists (space-separated) top level
|
| -directories (parallel to @file{gcc}), apart from the runtime libraries,
|
| -that should not be configured if this front end is not built.
|
| -@item build_by_default
|
| -If defined to @samp{no}, this language front end is not built unless
|
| -enabled in a @option{--enable-languages} argument. Otherwise, front
|
| -ends are built by default, subject to any special logic in
|
| -@file{configure.ac} (as is present to disable the Ada front end if the
|
| -Ada compiler is not already installed).
|
| -@item boot_language
|
| -If defined to @samp{yes}, this front end is built in stage 1 of the
|
| -bootstrap. This is only relevant to front ends written in their own
|
| -languages.
|
| -@item compilers
|
| -If defined, a space-separated list of compiler executables that will
|
| -be run by the driver. The names here will each end
|
| -with @samp{\$(exeext)}.
|
| -@item outputs
|
| -If defined, a space-separated list of files that should be generated
|
| -by @file{configure} substituting values in them. This mechanism can
|
| -be used to create a file @file{@var{language}/Makefile} from
|
| -@file{@var{language}/Makefile.in}, but this is deprecated, building
|
| -everything from the single @file{gcc/Makefile} is preferred.
|
| -@item gtfiles
|
| -If defined, a space-separated list of files that should be scanned by
|
| -gengtype.c to generate the garbage collection tables and routines for
|
| -this language. This excludes the files that are common to all front
|
| -ends. @xref{Type Information}.
|
| -
|
| -@end table
|
| -
|
| @node Back End
|
| @subsection Anatomy of a Target Back End
|
|
|
| @@ -777,7 +811,7 @@ notes about installation for this target, or saying that there are no
|
| special notes if there are none.
|
| @item
|
| Possibly other support outside the @file{gcc} directory for runtime
|
| -libraries. FIXME: reference docs for this. The libstdc++ porting
|
| +libraries. FIXME: reference docs for this. The @code{libstdc++} porting
|
| manual needs to be installed as info for this to work, or to be a
|
| chapter of this manual.
|
| @end itemize
|
| @@ -803,7 +837,7 @@ a maintainer when support is added.
|
| @end itemize
|
|
|
| @node Testsuites
|
| -@section Testsuites
|
| +@chapter Testsuites
|
|
|
| GCC contains several testsuites to help maintain compiler quality.
|
| Most of the runtime libraries and language front ends in GCC have
|
| @@ -816,6 +850,7 @@ here; FIXME: document the others.
|
| * Ada Tests:: The Ada language testsuites.
|
| * C Tests:: The C language testsuites.
|
| * libgcj Tests:: The Java library testsuites.
|
| +* LTO Testing:: Support for testing link-time optimizations.
|
| * gcov Testing:: Support for testing gcov.
|
| * profopt Testing:: Support for testing profile-directed optimizations.
|
| * compat Testing:: Support for testing binary compatibility.
|
| @@ -823,7 +858,7 @@ here; FIXME: document the others.
|
| @end menu
|
|
|
| @node Test Idioms
|
| -@subsection Idioms Used in Testsuite Code
|
| +@section Idioms Used in Testsuite Code
|
|
|
| In general, C testcases have a trailing @file{-@var{n}.c}, starting
|
| with @file{-1.c}, in case other testcases with similar names are added
|
| @@ -902,7 +937,19 @@ unfortunately, the mechanisms for this differ by directory.
|
| FIXME: discuss non-C testsuites here.
|
|
|
| @node Test Directives
|
| -@subsection Directives used within DejaGnu tests
|
| +@section Directives used within DejaGnu tests
|
| +
|
| +@menu
|
| +* Directives:: Syntax and descriptions of test directives.
|
| +* Selectors:: Selecting targets to which a test applies.
|
| +* Effective-Target Keywords:: Keywords describing target attributes.
|
| +* Add Options:: Features for @code{dg-add-options}
|
| +* Require Support:: Variants of @code{dg-require-@var{support}}
|
| +* Final Actions:: Commands for use in @code{dg-final}
|
| +@end menu
|
| +
|
| +@node Directives
|
| +@subsection Syntax and Descriptions of test directives
|
|
|
| Test directives appear within comments in a test source file and begin
|
| with @code{dg-}. Some of these are defined within DejaGnu and others
|
| @@ -913,27 +960,10 @@ directives local to GCC sometimes override information used by the
|
| DejaGnu directives, which know nothing about the GCC directives, so the
|
| DejaGnu directives must precede GCC directives.
|
|
|
| -Several test directives include selectors which are usually preceded by
|
| -the keyword @code{target} or @code{xfail}. A selector is: one or more
|
| -target triplets, possibly including wildcard characters; a single
|
| -effective-target keyword; or a logical expression. Depending on the
|
| -context, the selector specifies whether a test is skipped and reported
|
| -as unsupported or is expected to fail. Use @samp{*-*-*} to match any
|
| -target.
|
| -Effective-target keywords are defined in @file{target-supports.exp} in
|
| -the GCC testsuite.
|
| -
|
| -A selector expression appears within curly braces and uses a single
|
| -logical operator: one of @samp{!}, @samp{&&}, or @samp{||}. An
|
| -operand is another selector expression, an effective-target keyword,
|
| -a single target triplet, or a list of target triplets within quotes or
|
| -curly braces. For example:
|
| +Several test directives include selectors (@pxref{Selectors, , })
|
| +which are usually preceded by the keyword @code{target} or @code{xfail}.
|
|
|
| -@smallexample
|
| -@{ target @{ ! "hppa*-*-* ia64*-*-*" @} @}
|
| -@{ target @{ powerpc*-*-* && lp64 @} @}
|
| -@{ xfail @{ lp64 || vect_no_align @} @}
|
| -@end smallexample
|
| +@subsubsection Specify how to build the test
|
|
|
| @table @code
|
| @item @{ dg-do @var{do-what-keyword} [@{ target/xfail @var{selector} @}] @}
|
| @@ -959,15 +989,19 @@ tests by redefining @code{dg-do-what-default} within the @code{.exp}
|
| file for those tests.
|
|
|
| If the directive includes the optional @samp{@{ target @var{selector} @}}
|
| -then the test is skipped unless the target system is included in the
|
| -list of target triplets or matches the effective-target keyword.
|
| +then the test is skipped unless the target system matches the
|
| +@var{selector}.
|
|
|
| -If @samp{do-what-keyword} is @code{run} and the directive includes
|
| +If @var{do-what-keyword} is @code{run} and the directive includes
|
| the optional @samp{@{ xfail @var{selector} @}} and the selector is met
|
| then the test is expected to fail. The @code{xfail} clause is ignored
|
| -for other values of @samp{do-what-keyword}; those tests can use
|
| +for other values of @var{do-what-keyword}; those tests can use
|
| directive @code{dg-xfail-if}.
|
| +@end table
|
| +
|
| +@subsubsection Specify additional compiler options
|
|
|
| +@table @code
|
| @item @{ dg-options @var{options} [@{ target @var{selector} @}] @}
|
| This DejaGnu directive provides a list of compiler options, to be used
|
| if the target system matches @var{selector}, that replace the default
|
| @@ -978,25 +1012,13 @@ Add any compiler options that are needed to access certain features.
|
| This directive does nothing on targets that enable the features by
|
| default, or that don't provide them at all. It must come after
|
| all @code{dg-options} directives.
|
| -
|
| -The supported values of @var{feature} are:
|
| -@table @code
|
| -@item c99_runtime
|
| -The target's C99 runtime (both headers and libraries).
|
| -
|
| -@item mips16_attribute
|
| -@code{mips16} function attributes. Only MIPS targets support this feature,
|
| -and only then in certain modes.
|
| +For supported values of @var{feature} see @ref{Add Options, ,}.
|
| @end table
|
|
|
| -@item @{ dg-timeout @var{n} [@{target @var{selector} @}] @}
|
| -Set the time limit for the compilation and for the execution of the test
|
| -to the specified number of seconds.
|
| +@subsubsection Modify the test timeout value
|
|
|
| -@item @{ dg-timeout-factor @var{x} [@{ target @var{selector} @}] @}
|
| -Multiply the normal time limit for compilation and execution of the test
|
| -by the specified floating-point factor. The normal timeout limit, in
|
| -seconds, is found by searching the following in order:
|
| +The normal timeout limit, in seconds, is found by searching the
|
| +following in order:
|
|
|
| @itemize @bullet
|
| @item the value defined by an earlier @code{dg-timeout} directive in
|
| @@ -1009,49 +1031,118 @@ the test
|
| @item 300
|
| @end itemize
|
|
|
| -@item @{ dg-skip-if @var{comment} @{ @var{selector} @} @{ @var{include-opts} @} @{ @var{exclude-opts} @} @}
|
| -Skip the test if the test system is included in @var{selector} and if
|
| -each of the options in @var{include-opts} is in the set of options with
|
| -which the test would be compiled and if none of the options in
|
| -@var{exclude-opts} is in the set of options with which the test would be
|
| -compiled.
|
| +@table @code
|
| +@item @{ dg-timeout @var{n} [@{target @var{selector} @}] @}
|
| +Set the time limit for the compilation and for the execution of the test
|
| +to the specified number of seconds.
|
|
|
| -Use @samp{"*"} for an empty @var{include-opts} list and @samp{""} for
|
| -an empty @var{exclude-opts} list.
|
| +@item @{ dg-timeout-factor @var{x} [@{ target @var{selector} @}] @}
|
| +Multiply the normal time limit for compilation and execution of the test
|
| +by the specified floating-point factor.
|
| +@end table
|
|
|
| -@item @{ dg-xfail-if @var{comment} @{ @var{selector} @} @{ @var{include-opts} @} @{ @var{exclude-opts} @} @}
|
| -Expect the test to fail if the conditions (which are the same as for
|
| -@code{dg-skip-if}) are met. This does not affect the execute step.
|
| +@subsubsection Skip a test for some targets
|
|
|
| -@item @{ dg-xfail-run-if @var{comment} @{ @var{selector} @} @{ @var{include-opts} @} @{ @var{exclude-opts} @} @}
|
| -Expect the execute step of a test to fail if the conditions (which are
|
| -the same as for @code{dg-skip-if}) and @code{dg-xfail-if}) are met.
|
| +@table @code
|
| +@item @{ dg-skip-if @var{comment} @{ @var{selector} @} [@{ @var{include-opts} @} [@{ @var{exclude-opts} @}]] @}
|
| +Arguments @var{include-opts} and @var{exclude-opts} are lists in which
|
| +each element is a string of zero or more GCC options.
|
| +Skip the test if all of the following conditions are met:
|
| +@itemize @bullet
|
| +@item the test system is included in @var{selector}
|
| +
|
| +@item for at least one of the option strings in @var{include-opts},
|
| +every option from that string is in the set of options with which
|
| +the test would be compiled; use @samp{"*"} for an @var{include-opts} list
|
| +that matches any options; that is the default if @var{include-opts} is
|
| +not specified
|
| +
|
| +@item for each of the option strings in @var{exclude-opts}, at least one
|
| +option from that string is not in the set of options with which the test
|
| +would be compiled; use @samp{""} for an empty @var{exclude-opts} list;
|
| +that is the default if @var{exclude-opts} is not specified
|
| +@end itemize
|
| +
|
| +For example, to skip a test if option @code{-Os} is present:
|
| +
|
| +@smallexample
|
| +/* @{ dg-skip-if "" @{ *-*-* @} @{ "-Os" @} @{ "" @} @} */
|
| +@end smallexample
|
| +
|
| +To skip a test if both options @code{-O2} and @code{-g} are present:
|
| +
|
| +@smallexample
|
| +/* @{ dg-skip-if "" @{ *-*-* @} @{ "-O2 -g" @} @{ "" @} @} */
|
| +@end smallexample
|
| +
|
| +To skip a test if either @code{-O2} or @code{-O3} is present:
|
| +
|
| +@smallexample
|
| +/* @{ dg-skip-if "" @{ *-*-* @} @{ "-O2" "-O3" @} @{ "" @} @} */
|
| +@end smallexample
|
| +
|
| +To skip a test unless option @code{-Os} is present:
|
| +
|
| +@smallexample
|
| +/* @{ dg-skip-if "" @{ *-*-* @} @{ "*" @} @{ "-Os" @} @} */
|
| +@end smallexample
|
| +
|
| +To skip a test if either @code{-O2} or @code{-O3} is used with @code{-g}
|
| +but not if @code{-fpic} is also present:
|
| +
|
| +@smallexample
|
| +/* @{ dg-skip-if "" @{ *-*-* @} @{ "-O2 -g" "-O3 -g" @} @{ "-fpic" @} @} */
|
| +@end smallexample
|
| +
|
| +@item @{ dg-require-effective-target @var{keyword} [@{ @var{selector} @}] @}
|
| +Skip the test if the test target, including current multilib flags,
|
| +is not covered by the effective-target keyword.
|
| +If the directive includes the optional @samp{@{ @var{selector} @}}
|
| +then the effective-target test is only performed if the target system
|
| +matches the @var{selector}.
|
| +This directive must appear after any @code{dg-do} directive in the test
|
| +and before any @code{dg-additional-sources} directive.
|
| +@xref{Effective-Target Keywords, , }.
|
|
|
| @item @{ dg-require-@var{support} args @}
|
| -Skip the test if the target does not provide the required support;
|
| -see @file{gcc-dg.exp} in the GCC testsuite for the actual directives.
|
| +Skip the test if the target does not provide the required support.
|
| These directives must appear after any @code{dg-do} directive in the test
|
| and before any @code{dg-additional-sources} directive.
|
| They require at least one argument, which can be an empty string if the
|
| specific procedure does not examine the argument.
|
| +@xref{Require Support, , }, for a complete list of these directives.
|
| +@end table
|
|
|
| -@item @{ dg-require-effective-target @var{keyword} @}
|
| -Skip the test if the test target, including current multilib flags,
|
| -is not covered by the effective-target keyword.
|
| -This directive must appear after any @code{dg-do} directive in the test
|
| -and before any @code{dg-additional-sources} directive.
|
| +@subsubsection Expect a test to fail for some targets
|
| +
|
| +@table @code
|
| +@item @{ dg-xfail-if @var{comment} @{ @var{selector} @} [@{ @var{include-opts} @} [@{ @var{exclude-opts} @}]] @}
|
| +Expect the test to fail if the conditions (which are the same as for
|
| +@code{dg-skip-if}) are met. This does not affect the execute step.
|
| +
|
| +@item @{ dg-xfail-run-if @var{comment} @{ @var{selector} @} [@{ @var{include-opts} @} [@{ @var{exclude-opts} @}]] @}
|
| +Expect the execute step of a test to fail if the conditions (which are
|
| +the same as for @code{dg-skip-if}) are met.
|
| +@end table
|
|
|
| -@item @{ dg-shouldfail @var{comment} @{ @var{selector} @} @{ @var{include-opts} @} @{ @var{exclude-opts} @} @}
|
| +@subsubsection Expect the test executable to fail
|
| +
|
| +@table @code
|
| +@item @{ dg-shouldfail @var{comment} [@{ @var{selector} @} [@{ @var{include-opts} @} [@{ @var{exclude-opts} @}]]] @}
|
| Expect the test executable to return a nonzero exit status if the
|
| conditions (which are the same as for @code{dg-skip-if}) are met.
|
| +@end table
|
|
|
| +@subsubsection Verify compiler messages
|
| +
|
| +@table @code
|
| @item @{ dg-error @var{regexp} [@var{comment} [@{ target/xfail @var{selector} @} [@var{line}] @}]] @}
|
| This DejaGnu directive appears on a source line that is expected to get
|
| an error message, or else specifies the source line associated with the
|
| message. If there is no message for that line or if the text of that
|
| message is not matched by @var{regexp} then the check fails and
|
| @var{comment} is included in the @code{FAIL} message. The check does
|
| -not look for the string @samp{"error"} unless it is part of @var{regexp}.
|
| +not look for the string @samp{error} unless it is part of @var{regexp}.
|
|
|
| @item @{ dg-warning @var{regexp} [@var{comment} [@{ target/xfail @var{selector} @} [@var{line}] @}]] @}
|
| This DejaGnu directive appears on a source line that is expected to get
|
| @@ -1059,7 +1150,7 @@ a warning message, or else specifies the source line associated with the
|
| message. If there is no message for that line or if the text of that
|
| message is not matched by @var{regexp} then the check fails and
|
| @var{comment} is included in the @code{FAIL} message. The check does
|
| -not look for the string @samp{"warning"} unless it is part of @var{regexp}.
|
| +not look for the string @samp{warning} unless it is part of @var{regexp}.
|
|
|
| @item @{ dg-message @var{regexp} [@var{comment} [@{ target/xfail @var{selector} @} [@var{line}] @}]] @}
|
| The line is expected to get a message other than an error or warning.
|
| @@ -1080,13 +1171,21 @@ to compiler messages that are not handled by @samp{dg-error},
|
| @samp{dg-warning} or @samp{dg-bogus}. For this directive @samp{xfail}
|
| has the same effect as @samp{target}.
|
|
|
| +@item @{ dg-prune-output @var{regexp} @}
|
| +Prune messages matching @var{regexp} from the test output.
|
| +@end table
|
| +
|
| +@subsubsection Verify output of the test executable
|
| +
|
| +@table @code
|
| @item @{ dg-output @var{regexp} [@{ target/xfail @var{selector} @}] @}
|
| This DejaGnu directive compares @var{regexp} to the combined output
|
| that the test executable writes to @file{stdout} and @file{stderr}.
|
| +@end table
|
|
|
| -@item @{ dg-prune-output @var{regexp} @}
|
| -Prune messages matching @var{regexp} from test output.
|
| +@subsubsection Specify additional files for a test
|
|
|
| +@table @code
|
| @item @{ dg-additional-files "@var{filelist}" @}
|
| Specify additional files, other than source files, that must be copied
|
| to the system where the compiler runs.
|
| @@ -1094,57 +1193,799 @@ to the system where the compiler runs.
|
| @item @{ dg-additional-sources "@var{filelist}" @}
|
| Specify additional source files to appear in the compile line
|
| following the main test file.
|
| +@end table
|
| +
|
| +@subsubsection Add checks at the end of a test
|
|
|
| +@table @code
|
| @item @{ dg-final @{ @var{local-directive} @} @}
|
| This DejaGnu directive is placed within a comment anywhere in the
|
| source file and is processed after the test has been compiled and run.
|
| Multiple @samp{dg-final} commands are processed in the order in which
|
| -they appear in the source file.
|
| +they appear in the source file. @xref{Final Actions, , }, for a list
|
| +of directives that can be used within @code{dg-final}.
|
| +@end table
|
|
|
| -The GCC testsuite defines the following directives to be used within
|
| -@code{dg-final}.
|
| +@node Selectors
|
| +@subsection Selecting targets to which a test applies
|
| +
|
| +Several test directives include @var{selector}s to limit the targets
|
| +for which a test is run or to declare that a test is expected to fail
|
| +on particular targets.
|
| +
|
| +A selector is:
|
| +@itemize @bullet
|
| +@item one or more target triplets, possibly including wildcard characters
|
| +@item a single effective-target keyword (@pxref{Effective-Target Keywords})
|
| +@item a logical expression
|
| +@end itemize
|
| +
|
| +Depending on the
|
| +context, the selector specifies whether a test is skipped and reported
|
| +as unsupported or is expected to fail. Use @samp{*-*-*} to match any
|
| +target.
|
| +
|
| +A selector expression appears within curly braces and uses a single
|
| +logical operator: one of @samp{!}, @samp{&&}, or @samp{||}. An
|
| +operand is another selector expression, an effective-target keyword,
|
| +a single target triplet, or a list of target triplets within quotes or
|
| +curly braces. For example:
|
| +
|
| +@smallexample
|
| +@{ target @{ ! "hppa*-*-* ia64*-*-*" @} @}
|
| +@{ target @{ powerpc*-*-* && lp64 @} @}
|
| +@{ xfail @{ lp64 || vect_no_align @} @}
|
| +@end smallexample
|
| +
|
| +@node Effective-Target Keywords
|
| +@subsection Keywords describing target attributes
|
| +
|
| +Effective-target keywords identify sets of targets that support
|
| +particular functionality. They are used to limit tests to be run only
|
| +for particular targets, or to specify that particular sets of targets
|
| +are expected to fail some tests.
|
| +
|
| +Effective-target keywords are defined in @file{lib/target-supports.exp} in
|
| +the GCC testsuite, with the exception of those that are documented as
|
| +being local to a particular test directory.
|
| +
|
| +The @samp{effective target} takes into account all of the compiler options
|
| +with which the test will be compiled, including the multilib options.
|
| +By convention, keywords ending in @code{_nocache} can also include options
|
| +specified for the particular test in an earlier @code{dg-options} or
|
| +@code{dg-add-options} directive.
|
| +
|
| +@subsubsection Data type sizes
|
|
|
| @table @code
|
| -@item cleanup-coverage-files
|
| -Removes coverage data files generated for this test.
|
| +@item ilp32
|
| +Target has 32-bit @code{int}, @code{long}, and pointers.
|
|
|
| -@item cleanup-repo-files
|
| -Removes files generated for this test for @option{-frepo}.
|
| +@item lp64
|
| +Target has 32-bit @code{int}, 64-bit @code{long} and pointers.
|
|
|
| -@item cleanup-rtl-dump @var{suffix}
|
| -Removes RTL dump files generated for this test.
|
| +@item llp64
|
| +Target has 32-bit @code{int} and @code{long}, 64-bit @code{long long}
|
| +and pointers.
|
|
|
| -@item cleanup-tree-dump @var{suffix}
|
| -Removes tree dump files matching @var{suffix} which were generated for
|
| -this test.
|
| +@item double64
|
| +Target has 64-bit @code{double}.
|
|
|
| -@item cleanup-saved-temps
|
| -Removes files for the current test which were kept for @option{--save-temps}.
|
| +@item double64plus
|
| +Target has @code{double} that is 64 bits or longer.
|
| +
|
| +@item int32plus
|
| +Target has @code{int} that is at 32 bits or longer.
|
| +
|
| +@item int16
|
| +Target has @code{int} that is 16 bits or shorter.
|
| +
|
| +@item large_double
|
| +Target supports @code{double} that is longer than @code{float}.
|
| +
|
| +@item large_long_double
|
| +Target supports @code{long double} that is longer than @code{double}.
|
| +
|
| +@item ptr32plus
|
| +Target has pointers that are 32 bits or longer.
|
| +
|
| +@item size32plus
|
| +Target supports array and structure sizes that are 32 bits or longer.
|
| +
|
| +@item 4byte_wchar_t
|
| +Target has @code{wchar_t} that is at least 4 bytes.
|
| +@end table
|
| +
|
| +@subsubsection Fortran-specific attributes
|
| +
|
| +@table @code
|
| +@item fortran_integer_16
|
| +Target supports Fortran @code{integer} that is 16 bytes or longer.
|
| +
|
| +@item fortran_large_int
|
| +Target supports Fortran @code{integer} kinds larger than @code{integer(8)}.
|
| +
|
| +@item fortran_large_real
|
| +Target supports Fortran @code{real} kinds larger than @code{real(8)}.
|
| +@end table
|
| +
|
| +@subsubsection Vector-specific attributes
|
| +
|
| +@table @code
|
| +@item vect_condition
|
| +Target supports vector conditional operations.
|
| +
|
| +@item vect_double
|
| +Target supports hardware vectors of @code{double}.
|
| +
|
| +@item vect_float
|
| +Target supports hardware vectors of @code{float}.
|
| +
|
| +@item vect_int
|
| +Target supports hardware vectors of @code{int}.
|
| +
|
| +@item vect_int_mult
|
| +Target supports a vector widening multiplication of @code{short} operands
|
| +into an @code{int} result, or supports promotion (unpacking) from
|
| +@code{short} to @code{int} and a non-widening multiplication of @code{int}.
|
| +
|
| +@item vect_long
|
| +Target supports hardware vectors of @code{long}.
|
| +
|
| +@item vect_long_long
|
| +Target supports hardware vectors of @code{long long}.
|
| +
|
| +@item vect_aligned_arrays
|
| +Target aligns arrays to vector alignment boundary.
|
|
|
| +@item vect_hw_misalign
|
| +Target supports a vector misalign access.
|
| +
|
| +@item vect_no_align
|
| +Target does not support a vector alignment mechanism.
|
| +
|
| +@item vect_no_int_max
|
| +Target does not support a vector max instruction on @code{int}.
|
| +
|
| +@item vect_no_int_add
|
| +Target does not support a vector add instruction on @code{int}.
|
| +
|
| +@item vect_no_bitwise
|
| +Target does not support vector bitwise instructions.
|
| +
|
| +@item vect_char_mult
|
| +Target supports @code{vector char} multiplication.
|
| +
|
| +@item vect_short_mult
|
| +Target supports @code{vector short} multiplication.
|
| +
|
| +@item vect_int_mult
|
| +Target supports @code{vector int} multiplication.
|
| +
|
| +@item vect_extract_even_odd
|
| +Target supports vector even/odd element extraction.
|
| +
|
| +@item vect_extract_even_odd_wide
|
| +Target supports vector even/odd element extraction of vectors with elements
|
| +@code{SImode} or larger.
|
| +
|
| +@item vect_interleave
|
| +Target supports vector interleaving.
|
| +
|
| +@item vect_strided
|
| +Target supports vector interleaving and extract even/odd.
|
| +
|
| +@item vect_strided_wide
|
| +Target supports vector interleaving and extract even/odd for wide
|
| +element types.
|
| +
|
| +@item vect_perm
|
| +Target supports vector permutation.
|
| +
|
| +@item vect_shift
|
| +Target supports a hardware vector shift operation.
|
| +
|
| +@item vect_widen_sum_hi_to_si
|
| +Target supports a vector widening summation of @code{short} operands
|
| +into @code{int} results, or can promote (unpack) from @code{short}
|
| +to @code{int}.
|
| +
|
| +@item vect_widen_sum_qi_to_hi
|
| +Target supports a vector widening summation of @code{char} operands
|
| +into @code{short} results, or can promote (unpack) from @code{char}
|
| +to @code{short}.
|
| +
|
| +@item vect_widen_sum_qi_to_si
|
| +Target supports a vector widening summation of @code{char} operands
|
| +into @code{int} results.
|
| +
|
| +@item vect_widen_mult_qi_to_hi
|
| +Target supports a vector widening multiplication of @code{char} operands
|
| +into @code{short} results, or can promote (unpack) from @code{char} to
|
| +@code{short} and perform non-widening multiplication of @code{short}.
|
| +
|
| +@item vect_widen_mult_hi_to_si
|
| +Target supports a vector widening multiplication of @code{short} operands
|
| +into @code{int} results, or can promote (unpack) from @code{short} to
|
| +@code{int} and perform non-widening multiplication of @code{int}.
|
| +
|
| +@item vect_sdot_qi
|
| +Target supports a vector dot-product of @code{signed char}.
|
| +
|
| +@item vect_udot_qi
|
| +Target supports a vector dot-product of @code{unsigned char}.
|
| +
|
| +@item vect_sdot_hi
|
| +Target supports a vector dot-product of @code{signed short}.
|
| +
|
| +@item vect_udot_hi
|
| +Target supports a vector dot-product of @code{unsigned short}.
|
| +
|
| +@item vect_pack_trunc
|
| +Target supports a vector demotion (packing) of @code{short} to @code{char}
|
| +and from @code{int} to @code{short} using modulo arithmetic.
|
| +
|
| +@item vect_unpack
|
| +Target supports a vector promotion (unpacking) of @code{char} to @code{short}
|
| +and from @code{char} to @code{int}.
|
| +
|
| +@item vect_intfloat_cvt
|
| +Target supports conversion from @code{signed int} to @code{float}.
|
| +
|
| +@item vect_uintfloat_cvt
|
| +Target supports conversion from @code{unsigned int} to @code{float}.
|
| +
|
| +@item vect_floatint_cvt
|
| +Target supports conversion from @code{float} to @code{signed int}.
|
| +
|
| +@item vect_floatuint_cvt
|
| +Target supports conversion from @code{float} to @code{unsigned int}.
|
| +@end table
|
| +
|
| +@subsubsection Thread Local Storage attributes
|
| +
|
| +@table @code
|
| +@item tls
|
| +Target supports thread-local storage.
|
| +
|
| +@item tls_native
|
| +Target supports native (rather than emulated) thread-local storage.
|
| +
|
| +@item tls_runtime
|
| +Test system supports executing TLS executables.
|
| +@end table
|
| +
|
| +@subsubsection Decimal floating point attributes
|
| +
|
| +@table @code
|
| +@item dfp
|
| +Targets supports compiling decimal floating point extension to C.
|
| +
|
| +@item dfp_nocache
|
| +Including the options used to compile this particular test, the
|
| +target supports compiling decimal floating point extension to C.
|
| +
|
| +@item dfprt
|
| +Test system can execute decimal floating point tests.
|
| +
|
| +@item dfprt_nocache
|
| +Including the options used to compile this particular test, the
|
| +test system can execute decimal floating point tests.
|
| +
|
| +@item hard_dfp
|
| +Target generates decimal floating point instructions with current options.
|
| +@end table
|
| +
|
| +@subsubsection ARM-specific attributes
|
| +
|
| +@table @code
|
| +@item arm32
|
| +ARM target generates 32-bit code.
|
| +
|
| +@item arm_eabi
|
| +ARM target adheres to the ABI for the ARM Architecture.
|
| +
|
| +@item arm_hard_vfp_ok
|
| +ARM target supports @code{-mfpu=vfp -mfloat-abi=hard}.
|
| +Some multilibs may be incompatible with these options.
|
| +
|
| +@item arm_iwmmxt_ok
|
| +ARM target supports @code{-mcpu=iwmmxt}.
|
| +Some multilibs may be incompatible with this option.
|
| +
|
| +@item arm_neon
|
| +ARM target supports generating NEON instructions.
|
| +
|
| +@item arm_neon_hw
|
| +Test system supports executing NEON instructions.
|
| +
|
| +@item arm_neon_ok
|
| +ARM Target supports @code{-mfpu=neon -mfloat-abi=softfp}.
|
| +Some multilibs may be incompatible with these options.
|
| +
|
| +@item arm_thumb1_ok
|
| +ARM target generates Thumb-1 code for @code{-mthumb}.
|
| +
|
| +@item arm_thumb2_ok
|
| +ARM target generates Thumb-2 code for @code{-mthumb}.
|
| +
|
| +@item arm_vfp_ok
|
| +ARM target supports @code{-mfpu=vfp -mfloat-abi=softfp}.
|
| +Some multilibs may be incompatible with these options.
|
| +@end table
|
| +
|
| +@subsubsection MIPS-specific attributes
|
| +
|
| +@table @code
|
| +@item mips64
|
| +MIPS target supports 64-bit instructions.
|
| +
|
| +@item nomips16
|
| +MIPS target does not produce MIPS16 code.
|
| +
|
| +@item mips16_attribute
|
| +MIPS target can generate MIPS16 code.
|
| +
|
| +@item mips_loongson
|
| +MIPS target is a Loongson-2E or -2F target using an ABI that supports
|
| +the Loongson vector modes.
|
| +
|
| +@item mips_newabi_large_long_double
|
| +MIPS target supports @code{long double} larger than @code{double}
|
| +when using the new ABI.
|
| +
|
| +@item mpaired_single
|
| +MIPS target supports @code{-mpaired-single}.
|
| +@end table
|
| +
|
| +@subsubsection PowerPC-specific attributes
|
| +
|
| +@table @code
|
| +@item powerpc64
|
| +Test system supports executing 64-bit instructions.
|
| +
|
| +@item powerpc_altivec
|
| +PowerPC target supports AltiVec.
|
| +
|
| +@item powerpc_altivec_ok
|
| +PowerPC target supports @code{-maltivec}.
|
| +
|
| +@item powerpc_fprs
|
| +PowerPC target supports floating-point registers.
|
| +
|
| +@item powerpc_hard_double
|
| +PowerPC target supports hardware double-precision floating-point.
|
| +
|
| +@item powerpc_ppu_ok
|
| +PowerPC target supports @code{-mcpu=cell}.
|
| +
|
| +@item powerpc_spe
|
| +PowerPC target supports PowerPC SPE.
|
| +
|
| +@item powerpc_spe_nocache
|
| +Including the options used to compile this particular test, the
|
| +PowerPC target supports PowerPC SPE.
|
| +
|
| +@item powerpc_spu
|
| +PowerPC target supports PowerPC SPU.
|
| +
|
| +@item spu_auto_overlay
|
| +SPU target has toolchain that supports automatic overlay generation.
|
| +
|
| +@item powerpc_vsx_ok
|
| +PowerPC target supports @code{-mvsx}.
|
| +
|
| +@item powerpc_405_nocache
|
| +Including the options used to compile this particular test, the
|
| +PowerPC target supports PowerPC 405.
|
| +
|
| +@item vmx_hw
|
| +PowerPC target supports executing AltiVec instructions.
|
| +@end table
|
| +
|
| +@subsubsection Other hardware attributes
|
| +
|
| +@table @code
|
| +@item avx
|
| +Target supports compiling AVX instructions.
|
| +
|
| +@item cell_hw
|
| +Test system can execute AltiVec and Cell PPU instructions.
|
| +
|
| +@item coldfire_fpu
|
| +Target uses a ColdFire FPU.
|
| +
|
| +@item hard_float
|
| +Target supports FPU instructions.
|
| +
|
| +@item sse
|
| +Target supports compiling @code{sse} instructions.
|
| +
|
| +@item sse_runtime
|
| +Target supports the execution of @code{sse} instructions.
|
| +
|
| +@item sse2
|
| +Target supports compiling @code{sse2} instructions.
|
| +
|
| +@item sse2_runtime
|
| +Target supports the execution of @code{sse2} instructions.
|
| +
|
| +@item sync_char_short
|
| +Target supports atomic operations on @code{char} and @code{short}.
|
| +
|
| +@item sync_int_long
|
| +Target supports atomic operations on @code{int} and @code{long}.
|
| +
|
| +@item ultrasparc_hw
|
| +Test environment appears to run executables on a simulator that
|
| +accepts only @code{EM_SPARC} executables and chokes on @code{EM_SPARC32PLUS}
|
| +or @code{EM_SPARCV9} executables.
|
| +
|
| +@item vect_cmdline_needed
|
| +Target requires a command line argument to enable a SIMD instruction set.
|
| +@end table
|
| +
|
| +@subsubsection Environment attributes
|
| +
|
| +@table @code
|
| +@item c
|
| +The language for the compiler under test is C.
|
| +
|
| +@item c++
|
| +The language for the compiler under test is C++.
|
| +
|
| +@item c99_runtime
|
| +Target provides a full C99 runtime.
|
| +
|
| +@item correct_iso_cpp_string_wchar_protos
|
| +Target @code{string.h} and @code{wchar.h} headers provide C++ required
|
| +overloads for @code{strchr} etc. functions.
|
| +
|
| +@item dummy_wcsftime
|
| +Target uses a dummy @code{wcsftime} function that always returns zero.
|
| +
|
| +@item fd_truncate
|
| +Target can truncate a file from a file descriptor, as used by
|
| +@file{libgfortran/io/unix.c:fd_truncate}; i.e. @code{ftruncate} or
|
| +@code{chsize}.
|
| +
|
| +@item freestanding
|
| +Target is @samp{freestanding} as defined in section 4 of the C99 standard.
|
| +Effectively, it is a target which supports no extra headers or libraries
|
| +other than what is considered essential.
|
| +
|
| +@item init_priority
|
| +Target supports constructors with initialization priority arguments.
|
| +
|
| +@item inttypes_types
|
| +Target has the basic signed and unsigned types in @code{inttypes.h}.
|
| +This is for tests that GCC's notions of these types agree with those
|
| +in the header, as some systems have only @code{inttypes.h}.
|
| +
|
| +@item lax_strtofp
|
| +Target might have errors of a few ULP in string to floating-point
|
| +conversion functions and overflow is not always detected correctly by
|
| +those functions.
|
| +
|
| +@item newlib
|
| +Target supports Newlib.
|
| +
|
| +@item pow10
|
| +Target provides @code{pow10} function.
|
| +
|
| +@item pthread
|
| +Target can compile using @code{pthread.h} with no errors or warnings.
|
| +
|
| +@item pthread_h
|
| +Target has @code{pthread.h}.
|
| +
|
| +@item simulator
|
| +Test system runs executables on a simulator (i.e. slowly) rather than
|
| +hardware (i.e. fast).
|
| +
|
| +@item stdint_types
|
| +Target has the basic signed and unsigned C types in @code{stdint.h}.
|
| +This will be obsolete when GCC ensures a working @code{stdint.h} for
|
| +all targets.
|
| +
|
| +@item trampolines
|
| +Target supports trampolines.
|
| +
|
| +@item uclibc
|
| +Target supports uClibc.
|
| +
|
| +@item unwrapped
|
| +Target does not use a status wrapper.
|
| +
|
| +@item vxworks_kernel
|
| +Target is a VxWorks kernel.
|
| +
|
| +@item vxworks_rtp
|
| +Target is a VxWorks RTP.
|
| +
|
| +@item wchar
|
| +Target supports wide characters.
|
| +@end table
|
| +
|
| +@subsubsection Other attributes
|
| +
|
| +@table @code
|
| +@item automatic_stack_alignment
|
| +Target supports automatic stack alignment.
|
| +
|
| +@item cxa_atexit
|
| +Target uses @code{__cxa_atexit}.
|
| +
|
| +@item default_packed
|
| +Target has packed layout of structure members by default.
|
| +
|
| +@item fgraphite
|
| +Target supports Graphite optimizations.
|
| +
|
| +@item fixed_point
|
| +Target supports fixed-point extension to C.
|
| +
|
| +@item fopenmp
|
| +Target supports OpenMP via @option{-fopenmp}.
|
| +
|
| +@item fpic
|
| +Target supports @option{-fpic} and @option{-fPIC}.
|
| +
|
| +@item freorder
|
| +Target supports @option{-freorder-blocks-and-partition}.
|
| +
|
| +@item fstack_protector
|
| +Target supports @option{-fstack-protector}.
|
| +
|
| +@item gas
|
| +Target uses GNU @command{as}.
|
| +
|
| +@item gc_sections
|
| +Target supports @option{--gc-sections}.
|
| +
|
| +@item keeps_null_pointer_checks
|
| +Target keeps null pointer checks, either due to the use of
|
| +@option{-fno-delete-null-pointer-checks} or hardwired into the target.
|
| +
|
| +@item lto
|
| +Compiler has been configured to support link-time optimization (LTO).
|
| +
|
| +@item named_sections
|
| +Target supports named sections.
|
| +
|
| +@item natural_alignment_32
|
| +Target uses natural alignment (aligned to type size) for types of
|
| +32 bits or less.
|
| +
|
| +@item target_natural_alignment_64
|
| +Target uses natural alignment (aligned to type size) for types of
|
| +64 bits or less.
|
| +
|
| +@item nonpic
|
| +Target does not generate PIC by default.
|
| +
|
| +@item pcc_bitfield_type_matters
|
| +Target defines @code{PCC_BITFIELD_TYPE_MATTERS}.
|
| +
|
| +@item pe_aligned_commons
|
| +Target supports @option{-mpe-aligned-commons}.
|
| +
|
| +@item section_anchors
|
| +Target supports section anchors.
|
| +
|
| +@item short_enums
|
| +Target defaults to short enums.
|
| +
|
| +@item static
|
| +Target supports @option{-static}.
|
| +
|
| +@item static_libgfortran
|
| +Target supports statically linking @samp{libgfortran}.
|
| +
|
| +@item string_merging
|
| +Target supports merging string constants at link time.
|
| +
|
| +@item ucn
|
| +Target supports compiling and assembling UCN.
|
| +
|
| +@item ucn_nocache
|
| +Including the options used to compile this particular test, the
|
| +target supports compiling and assembling UCN.
|
| +
|
| +@item unaligned_stack
|
| +Target does not guarantee that its @code{STACK_BOUNDARY} is greater than
|
| +or equal to the required vector alignment.
|
| +
|
| +@item vector_alignment_reachable
|
| +Vector alignment is reachable for types of 32 bits or less.
|
| +
|
| +@item vector_alignment_reachable_for_64bit
|
| +Vector alignment is reachable for types of 64 bits or less.
|
| +
|
| +@item wchar_t_char16_t_compatible
|
| +Target supports @code{wchar_t} that is compatible with @code{char16_t}.
|
| +
|
| +@item wchar_t_char32_t_compatible
|
| +Target supports @code{wchar_t} that is compatible with @code{char32_t}.
|
| +@end table
|
| +
|
| +@subsubsection Local to tests in @code{gcc.target/i386}
|
| +
|
| +@table @code
|
| +@item 3dnow
|
| +Target supports compiling @code{3dnow} instructions.
|
| +
|
| +@item aes
|
| +Target supports compiling @code{aes} instructions.
|
| +
|
| +@item fma4
|
| +Target supports compiling @code{fma4} instructions.
|
| +
|
| +@item ms_hook_prologue
|
| +Target supports attribute @code{ms_hook_prologue}.
|
| +
|
| +@item pclmul
|
| +Target supports compiling @code{pclmul} instructions.
|
| +
|
| +@item sse3
|
| +Target supports compiling @code{sse3} instructions.
|
| +
|
| +@item sse4
|
| +Target supports compiling @code{sse4} instructions.
|
| +
|
| +@item sse4a
|
| +Target supports compiling @code{sse4a} instructions.
|
| +
|
| +@item ssse3
|
| +Target supports compiling @code{ssse3} instructions.
|
| +
|
| +@item vaes
|
| +Target supports compiling @code{vaes} instructions.
|
| +
|
| +@item vpclmul
|
| +Target supports compiling @code{vpclmul} instructions.
|
| +
|
| +@item xop
|
| +Target supports compiling @code{xop} instructions.
|
| +@end table
|
| +
|
| +@subsubsection Local to tests in @code{gcc.target/spu/ea}
|
| +
|
| +@table @code
|
| +@item ealib
|
| +Target @code{__ea} library functions are available.
|
| +@end table
|
| +
|
| +@subsubsection Local to tests in @code{gcc.test-framework}
|
| +
|
| +@table @code
|
| +@item no
|
| +Always returns 0.
|
| +
|
| +@item yes
|
| +Always returns 1.
|
| +@end table
|
| +
|
| +@node Add Options
|
| +@subsection Features for @code{dg-add-options}
|
| +
|
| +The supported values of @var{feature} for directive @code{dg-add-options}
|
| +are:
|
| +
|
| +@table @code
|
| +@item bind_pic_locally
|
| +Add the target-specific flags needed to enable functions to bind
|
| +locally when using pic/PIC passes in the testsuite.
|
| +
|
| +@item c99_runtime
|
| +Add the target-specific flags needed to access the C99 runtime.
|
| +
|
| +@item ieee
|
| +Add the target-specific flags needed to enable full IEEE
|
| +compliance mode.
|
| +
|
| +@item mips16_attribute
|
| +@code{mips16} function attributes.
|
| +Only MIPS targets support this feature, and only then in certain modes.
|
| +@end table
|
| +
|
| +@node Require Support
|
| +@subsection Variants of @code{dg-require-@var{support}}
|
| +
|
| +A few of the @code{dg-require} directives take arguments.
|
| +
|
| +@table @code
|
| +@item dg-require-iconv @var{codeset}
|
| +Skip the test if the target does not support iconv. @var{codeset} is
|
| +the codeset to convert to.
|
| +
|
| +@item dg-require-profiling @var{profopt}
|
| +Skip the test if the target does not support profiling with option
|
| +@var{profopt}.
|
| +
|
| +@item dg-require-visibility @var{vis}
|
| +Skip the test if the target does not support the @code{visibility} attribute.
|
| +If @var{vis} is @code{""}, support for @code{visibility("hidden")} is
|
| +checked, for @code{visibility("@var{vis}")} otherwise.
|
| +@end table
|
| +
|
| +The original @code{dg-require} directives were defined before there
|
| +was support for effective-target keywords. The directives that do not
|
| +take arguments could be replaced with effective-target keywords.
|
| +
|
| +@table @code
|
| +@item dg-require-alias ""
|
| +Skip the test if the target does not support the @samp{alias} attribute.
|
| +
|
| +@item dg-require-compat-dfp ""
|
| +Skip this test unless both compilers in a @file{compat} testsuite
|
| +support decimal floating point.
|
| +
|
| +@item dg-require-cxa-atexit ""
|
| +Skip the test if the target does not support @code{__cxa_atexit}.
|
| +This is equivalent to @code{dg-require-effective-target cxa_atexit}.
|
| +
|
| +@item dg-require-dll ""
|
| +Skip the test if the target does not support DLL attributes.
|
| +
|
| +@item dg-require-fork ""
|
| +Skip the test if the target does not support @code{fork}.
|
| +
|
| +@item dg-require-gc-sections ""
|
| +Skip the test if the target's linker does not support the
|
| +@code{--gc-sections} flags.
|
| +This is equivalent to @code{dg-require-effective-target gc-sections}.
|
| +
|
| +@item dg-require-host-local ""
|
| +Skip the test if the host is remote, rather than the same as the build
|
| +system. Some tests are incompatible with DejaGnu's handling of remote
|
| +hosts, which involves copying the source file to the host and compiling
|
| +it with a relative path and "@code{-o a.out}".
|
| +
|
| +@item dg-require-mkfifo ""
|
| +Skip the test if the target does not support @code{mkfifo}.
|
| +
|
| +@item dg-require-named-sections ""
|
| +Skip the test is the target does not support named sections.
|
| +This is equivalent to @code{dg-require-effective-target named_sections}.
|
| +
|
| +@item dg-require-weak ""
|
| +Skip the test if the target does not support weak symbols.
|
| +
|
| +@item dg-require-weak-override ""
|
| +Skip the test if the target does not support overriding weak symbols.
|
| +@end table
|
| +
|
| +@node Final Actions
|
| +@subsection Commands for use in @code{dg-final}
|
| +
|
| +The GCC testsuite defines the following directives to be used within
|
| +@code{dg-final}.
|
| +
|
| +@subsubsection Scan a particular file
|
| +
|
| +@table @code
|
| @item scan-file @var{filename} @var{regexp} [@{ target/xfail @var{selector} @}]
|
| Passes if @var{regexp} matches text in @var{filename}.
|
| -
|
| @item scan-file-not @var{filename} @var{regexp} [@{ target/xfail @var{selector} @}]
|
| Passes if @var{regexp} does not match text in @var{filename}.
|
| +@item scan-module @var{module} @var{regexp} [@{ target/xfail @var{selector} @}]
|
| +Passes if @var{regexp} matches in Fortran module @var{module}.
|
| +@end table
|
|
|
| -@item scan-hidden @var{symbol} [@{ target/xfail @var{selector} @}]
|
| -Passes if @var{symbol} is defined as a hidden symbol in the test's
|
| -assembly output.
|
| -
|
| -@item scan-not-hidden @var{symbol} [@{ target/xfail @var{selector} @}]
|
| -Passes if @var{symbol} is not defined as a hidden symbol in the test's
|
| -assembly output.
|
| -
|
| -@item scan-assembler-times @var{regex} @var{num} [@{ target/xfail @var{selector} @}]
|
| -Passes if @var{regex} is matched exactly @var{num} times in the test's
|
| -assembler output.
|
| +@subsubsection Scan the assembly output
|
|
|
| +@table @code
|
| @item scan-assembler @var{regex} [@{ target/xfail @var{selector} @}]
|
| Passes if @var{regex} matches text in the test's assembler output.
|
|
|
| @item scan-assembler-not @var{regex} [@{ target/xfail @var{selector} @}]
|
| Passes if @var{regex} does not match text in the test's assembler output.
|
|
|
| +@item scan-assembler-times @var{regex} @var{num} [@{ target/xfail @var{selector} @}]
|
| +Passes if @var{regex} is matched exactly @var{num} times in the test's
|
| +assembler output.
|
| +
|
| @item scan-assembler-dem @var{regex} [@{ target/xfail @var{selector} @}]
|
| Passes if @var{regex} matches text in the test's demangled assembler output.
|
|
|
| @@ -1152,31 +1993,61 @@ Passes if @var{regex} matches text in the test's demangled assembler output.
|
| Passes if @var{regex} does not match text in the test's demangled assembler
|
| output.
|
|
|
| -@item scan-tree-dump-times @var{regex} @var{num} @var{suffix} [@{ target/xfail @var{selector} @}]
|
| -Passes if @var{regex} is found exactly @var{num} times in the dump file
|
| -with suffix @var{suffix}.
|
| +@item scan-hidden @var{symbol} [@{ target/xfail @var{selector} @}]
|
| +Passes if @var{symbol} is defined as a hidden symbol in the test's
|
| +assembly output.
|
| +
|
| +@item scan-not-hidden @var{symbol} [@{ target/xfail @var{selector} @}]
|
| +Passes if @var{symbol} is not defined as a hidden symbol in the test's
|
| +assembly output.
|
| +@end table
|
|
|
| -@item scan-tree-dump @var{regex} @var{suffix} [@{ target/xfail @var{selector} @}]
|
| +@subsubsection Scan optimization dump files
|
| +
|
| +These commands are available for @var{kind} of @code{tree}, @code{rtl},
|
| +and @code{ipa}.
|
| +
|
| +@table @code
|
| +@item scan-@var{kind}-dump @var{regex} @var{suffix} [@{ target/xfail @var{selector} @}]
|
| Passes if @var{regex} matches text in the dump file with suffix @var{suffix}.
|
|
|
| -@item scan-tree-dump-not @var{regex} @var{suffix} [@{ target/xfail @var{selector} @}]
|
| +@item scan-@var{kind}-dump-not @var{regex} @var{suffix} [@{ target/xfail @var{selector} @}]
|
| Passes if @var{regex} does not match text in the dump file with suffix
|
| @var{suffix}.
|
|
|
| -@item scan-tree-dump-dem @var{regex} @var{suffix} [@{ target/xfail @var{selector} @}]
|
| +@item scan-@var{kind}-dump-times @var{regex} @var{num} @var{suffix} [@{ target/xfail @var{selector} @}]
|
| +Passes if @var{regex} is found exactly @var{num} times in the dump file
|
| +with suffix @var{suffix}.
|
| +
|
| +@item scan-@var{kind}-dump-dem @var{regex} @var{suffix} [@{ target/xfail @var{selector} @}]
|
| Passes if @var{regex} matches demangled text in the dump file with
|
| suffix @var{suffix}.
|
|
|
| -@item scan-tree-dump-dem-not @var{regex} @var{suffix} [@{ target/xfail @var{selector} @}]
|
| +@item scan-@var{kind}-dump-dem-not @var{regex} @var{suffix} [@{ target/xfail @var{selector} @}]
|
| Passes if @var{regex} does not match demangled text in the dump file with
|
| suffix @var{suffix}.
|
| +@end table
|
| +
|
| +@subsubsection Verify that an output files exists or not
|
|
|
| +@table @code
|
| @item output-exists [@{ target/xfail @var{selector} @}]
|
| Passes if compiler output file exists.
|
|
|
| @item output-exists-not [@{ target/xfail @var{selector} @}]
|
| Passes if compiler output file does not exist.
|
| +@end table
|
|
|
| +@subsubsection Check for LTO tests
|
| +
|
| +@table @code
|
| +@item scan-symbol @var{regexp} [@{ target/xfail @var{selector} @}]
|
| +Passes if the pattern is present in the final executable.
|
| +@end table
|
| +
|
| +@subsubsection Checks for @command{gcov} tests
|
| +
|
| +@table @code
|
| @item run-gcov @var{sourcefile}
|
| Check line counts in @command{gcov} tests.
|
|
|
| @@ -1184,17 +2055,45 @@ Check line counts in @command{gcov} tests.
|
| Check branch and/or call counts, in addition to line counts, in
|
| @command{gcov} tests.
|
| @end table
|
| +
|
| +@subsubsection Clean up generated test files
|
| +
|
| +@table @code
|
| +@item cleanup-coverage-files
|
| +Removes coverage data files generated for this test.
|
| +
|
| +@item cleanup-ipa-dump @var{suffix}
|
| +Removes IPA dump files generated for this test.
|
| +
|
| +@item cleanup-modules
|
| +Removes Fortran module files generated for this test.
|
| +
|
| +@item cleanup-profile-file
|
| +Removes profiling files generated for this test.
|
| +
|
| +@item cleanup-repo-files
|
| +Removes files generated for this test for @option{-frepo}.
|
| +
|
| +@item cleanup-rtl-dump @var{suffix}
|
| +Removes RTL dump files generated for this test.
|
| +
|
| +@item cleanup-saved-temps
|
| +Removes files for the current test which were kept for @option{-save-temps}.
|
| +
|
| +@item cleanup-tree-dump @var{suffix}
|
| +Removes tree dump files matching @var{suffix} which were generated for
|
| +this test.
|
| @end table
|
|
|
| @node Ada Tests
|
| -@subsection Ada Language Testsuites
|
| +@section Ada Language Testsuites
|
|
|
| The Ada testsuite includes executable tests from the ACATS 2.5
|
| testsuite, publicly available at
|
| -@uref{http://www.adaic.org/compilers/acats/2.5}
|
| +@uref{http://www.adaic.org/compilers/acats/2.5}.
|
|
|
| These tests are integrated in the GCC testsuite in the
|
| -@file{gcc/testsuite/ada/acats} directory, and
|
| +@file{ada/acats} directory, and
|
| enabled automatically when running @code{make check}, assuming
|
| the Ada language has been enabled when configuring GCC@.
|
|
|
| @@ -1207,11 +2106,12 @@ $ make check-ada CHAPTERS="c3 c9"
|
| @end smallexample
|
|
|
| The tests are organized by directory, each directory corresponding to
|
| -a chapter of the Ada Reference Manual. So for example, c9 corresponds
|
| +a chapter of the Ada Reference Manual. So for example, @file{c9} corresponds
|
| to chapter 9, which deals with tasking features of the language.
|
|
|
| There is also an extra chapter called @file{gcc} containing a template for
|
| -creating new executable tests.
|
| +creating new executable tests, although this is deprecated in favor of
|
| +the @file{gnat.dg} testsuite.
|
|
|
| The tests are run using two @command{sh} scripts: @file{run_acats} and
|
| @file{run_all.sh}. To run the tests using a simulator or a cross
|
| @@ -1222,7 +2122,7 @@ These tests are run using the build tree: they can be run without doing
|
| a @code{make install}.
|
|
|
| @node C Tests
|
| -@subsection C Language Testsuites
|
| +@section C Language Testsuites
|
|
|
| GCC contains the following C language testsuites, in the
|
| @file{gcc/testsuite} directory:
|
| @@ -1241,7 +2141,7 @@ unless other options are given in the test. Except as noted below they
|
| are not run with multiple optimization options.
|
| @item gcc.dg/compat
|
| This subdirectory contains tests for binary compatibility using
|
| -@file{compat.exp}, which in turn uses the language-independent support
|
| +@file{lib/compat.exp}, which in turn uses the language-independent support
|
| (@pxref{compat Testing, , Support for testing binary compatibility}).
|
| @item gcc.dg/cpp
|
| This subdirectory contains tests of the preprocessor.
|
| @@ -1291,21 +2191,19 @@ This contains tests which are specific to IEEE floating point.
|
| FIXME: describe this.
|
|
|
| This directory should probably not be used for new tests.
|
| -@item gcc.c-torture/misc-tests
|
| +@item gcc.misc-tests
|
| This directory contains C tests that require special handling. Some
|
| of these tests have individual expect files, and others share
|
| special-purpose expect files:
|
|
|
| @table @file
|
| @item @code{bprob*.c}
|
| -Test @option{-fbranch-probabilities} using @file{bprob.exp}, which
|
| +Test @option{-fbranch-probabilities} using
|
| +@file{gcc.misc-tests/bprob.exp}, which
|
| in turn uses the generic, language-independent framework
|
| (@pxref{profopt Testing, , Support for testing profile-directed
|
| optimizations}).
|
|
|
| -@item @code{dg-*.c}
|
| -Test the testsuite itself using @file{dg-test.exp}.
|
| -
|
| @item @code{gcov*.c}
|
| Test @command{gcov} output using @file{gcov.exp}, which in turn uses the
|
| language-independent support (@pxref{gcov Testing, , Support for testing gcov}).
|
| @@ -1314,13 +2212,19 @@ language-independent support (@pxref{gcov Testing, , Support for testing gcov}).
|
| Test i386-specific support for data prefetch using @file{i386-prefetch.exp}.
|
| @end table
|
|
|
| +@item gcc.test-framework
|
| +@table @file
|
| +@item @code{dg-*.c}
|
| +Test the testsuite itself using @file{gcc.test-framework/test-framework.exp}.
|
| +@end table
|
| +
|
| @end table
|
|
|
| FIXME: merge in @file{testsuite/README.gcc} and discuss the format of
|
| test cases and magic comments more.
|
|
|
| @node libgcj Tests
|
| -@subsection The Java library testsuites.
|
| +@section The Java library testsuites.
|
|
|
| Runtime tests are executed via @samp{make check} in the
|
| @file{@var{target}/libjava/testsuite} directory in the build
|
| @@ -1342,13 +2246,55 @@ bugs in libgcj that had caused Mauve test failures.
|
|
|
| We encourage developers to contribute test cases to Mauve.
|
|
|
| +@node LTO Testing
|
| +@section Support for testing link-time optimizations
|
| +
|
| +Tests for link-time optimizations usually require multiple source files
|
| +that are compiled separately, perhaps with different sets of options.
|
| +There are several special-purpose test directives used for these tests.
|
| +
|
| +@table @code
|
| +@item @{ dg-lto-do @var{do-what-keyword} @}
|
| +@var{do-what-keyword} specifies how the test is compiled and whether
|
| +it is executed. It is one of:
|
| +
|
| +@table @code
|
| +@item assemble
|
| +Compile with @option{-c} to produce a relocatable object file.
|
| +@item link
|
| +Compile, assemble, and link to produce an executable file.
|
| +@item run
|
| +Produce and run an executable file, which is expected to return
|
| +an exit code of 0.
|
| +@end table
|
| +
|
| +The default is @code{assemble}. That can be overridden for a set of
|
| +tests by redefining @code{dg-do-what-default} within the @code{.exp}
|
| +file for those tests.
|
| +
|
| +Unlike @code{dg-do}, @code{dg-lto-do} does not support an optional
|
| +@samp{target} or @samp{xfail} list. Use @code{dg-skip-if},
|
| +@code{dg-xfail-if}, or @code{dg-xfail-run-if}.
|
| +
|
| +@item @{ dg-lto-options @{ @{ @var{options} @} [@{ @var{options} @}] @} [@{ target @var{selector} @}]@}
|
| +This directive provides a list of one or more sets of compiler options
|
| +to override @var{LTO_OPTIONS}. Each test will be compiled and run with
|
| +each of these sets of options.
|
| +
|
| +@item @{ dg-extra-ld-options @var{options} @}
|
| +This directive adds @var{options} to the linker options used.
|
| +
|
| +@item @{ dg-suppress-ld-options @var{options} @}
|
| +This directive removes @var{options} from the set of linker options used.
|
| +@end table
|
| +
|
| @node gcov Testing
|
| -@subsection Support for testing @command{gcov}
|
| +@section Support for testing @command{gcov}
|
|
|
| Language-independent support for testing @command{gcov}, and for checking
|
| that branch profiling produces expected values, is provided by the
|
| -expect file @file{gcov.exp}. @command{gcov} tests also rely on procedures
|
| -in @file{gcc.dg.exp} to compile and run the test program. A typical
|
| +expect file @file{lib/gcov.exp}. @command{gcov} tests also rely on procedures
|
| +in @file{lib/gcc-dg.exp} to compile and run the test program. A typical
|
| @command{gcov} test contains the following DejaGnu commands within comments:
|
|
|
| @smallexample
|
| @@ -1409,7 +2355,7 @@ commands to check branch percentages and call return percentages can
|
| bracket the lines that report them.
|
|
|
| @node profopt Testing
|
| -@subsection Support for testing profile-directed optimizations
|
| +@section Support for testing profile-directed optimizations
|
|
|
| The file @file{profopt.exp} provides language-independent support for
|
| checking correct execution of a test built with profile-directed
|
| @@ -1445,10 +2391,18 @@ suffix of profile data files
|
| @item PROFOPT_OPTIONS
|
| list of options with which to run each test, similar to the lists for
|
| torture tests
|
| +
|
| +@item @{ dg-final-generate @{ @var{local-directive} @} @}
|
| +This directive is similar to @code{dg-final}, but the
|
| +@var{local-directive} is run after the generation of profile data.
|
| +
|
| +@item @{ dg-final-use @{ @var{local-directive} @} @}
|
| +The @var{local-directive} is run after the profile data have been
|
| +used.
|
| @end table
|
|
|
| @node compat Testing
|
| -@subsection Support for testing binary compatibility
|
| +@section Support for testing binary compatibility
|
|
|
| The file @file{compat.exp} provides language-independent support for
|
| binary compatibility testing. It supports testing interoperability of
|
| @@ -1521,7 +2475,7 @@ following from @file{@var{objdir}/gcc}:
|
| rm site.exp
|
| make -k \
|
| ALT_CXX_UNDER_TEST=$@{alt_prefix@}/bin/g++ \
|
| - COMPAT_OPTIONS="lists as shown above" \
|
| + COMPAT_OPTIONS="@var{lists as shown above}" \
|
| check-c++ \
|
| RUNTESTFLAGS="compat.exp"
|
| @end smallexample
|
| @@ -1555,12 +2509,12 @@ targets.
|
| @end table
|
|
|
| @node Torture Tests
|
| -@subsection Support for torture testing using multiple options
|
| +@section Support for torture testing using multiple options
|
|
|
| Throughout the compiler testsuite there are several directories whose
|
| tests are run multiple times, each with a different set of options.
|
| These are known as torture tests.
|
| -@file{gcc/testsuite/lib/torture-options.exp} defines procedures to
|
| +@file{lib/torture-options.exp} defines procedures to
|
| set up these lists:
|
|
|
| @table @code
|
|
|