Mercurial > hg > CbC > CbC_gcc
diff gcc/doc/sourcebuild.texi @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line diff
--- a/gcc/doc/sourcebuild.texi Thu Oct 25 07:37:49 2018 +0900 +++ b/gcc/doc/sourcebuild.texi Thu Feb 13 11:34:05 2020 +0900 @@ -1,4 +1,4 @@ -@c Copyright (C) 2002-2018 Free Software Foundation, Inc. +@c Copyright (C) 2002-2020 Free Software Foundation, Inc. @c This is part of the GCC manual. @c For copying conditions, see the file gcc.texi. @@ -66,7 +66,7 @@ The Ada runtime library. @item libatomic -The runtime support library for atomic operations (e.g. for @code{__sync} +The runtime support library for atomic operations (e.g.@: for @code{__sync} and @code{__atomic}). @item libcpp @@ -106,6 +106,10 @@ @item libquadmath The runtime support library for quad-precision math operations. +@item libphobos +The D standard and runtime library. The bulk of this library is mirrored +from the @uref{https://github.com/@/dlang, master D repositories}. + @item libssp The Stack protector runtime library. @@ -384,7 +388,7 @@ Manuals are also provided on the GCC web site, in both HTML and PostScript forms. This is done via the script -@file{maintainer-scripts/update_web_docs_svn}. Each manual to be +@file{maintainer-scripts/update_web_docs_git}. Each manual to be provided online must be listed in the definition of @code{MANUALS} in that file; a file @file{@var{name}.texi} must only appear once in the source tree, and the output manual must have the same name as the @@ -557,13 +561,13 @@ @email{gcc-announce@@gcc.gnu.org} mailing list. @item The front end's manuals should be mentioned in -@file{maintainer-scripts/update_web_docs_svn} (@pxref{Texinfo Manuals}) +@file{maintainer-scripts/update_web_docs_git} (@pxref{Texinfo Manuals}) and the online manuals should be linked to from @file{onlinedocs/index.html}. @item Any old releases or CVS repositories of the front end, before its -inclusion in GCC, should be made available on the GCC FTP site -@uref{ftp://gcc.gnu.org/pub/gcc/old-releases/}. +inclusion in GCC, should be made available on the GCC web site at +@uref{https://gcc.gnu.org/pub/gcc/old-releases/}. @item The release and snapshot script @file{maintainer-scripts/gcc_release} should be updated to generate appropriate tarballs for this front end. @@ -1353,9 +1357,18 @@ @item int16 Target has @code{int} that is 16 bits or shorter. +@item longlong64 +Target has 64-bit @code{long long}. + @item long_neq_int Target has @code{int} and @code{long} with different sizes. +@item int_eq_float +Target has @code{int} and @code{float} with the same size. + +@item ptr_eq_long +Target has pointers (@code{void *}) and @code{long} with the same size. + @item large_double Target supports @code{double} that is longer than @code{float}. @@ -1365,8 +1378,13 @@ @item ptr32plus Target has pointers that are 32 bits or longer. +@item size20plus +Target has a 20-bit or larger address space, so at least supports +16-bit array and structure sizes. + @item size32plus -Target supports array and structure sizes that are 32 bits or longer. +Target has a 32-bit or larger address space, so at least supports +24-bit array and structure sizes. @item 4byte_wchar_t Target has @code{wchar_t} that is at least 4 bytes. @@ -1389,8 +1407,11 @@ Target has runtime support for any options added with @code{dg-add-options} for any @code{_Float@var{n}} or @code{_Float@var{n}x} type. + +@item inf +Target supports floating point infinite (@code{inf}) for type +@code{double}. @end table - @subsubsection Fortran-specific attributes @table @code @@ -1421,6 +1442,14 @@ Target supports both signed and unsigned averaging operations on vectors of bytes. +@item vect_mulhrs_hi +Target supports both signed and unsigned multiply-high-with-round-and-scale +operations on vectors of half-words. + +@item vect_sdiv_pow2_si +Target supports signed division by constant power-of-2 operations +on vectors of 4-byte integers. + @item vect_condition Target supports vector conditional operations. @@ -1458,6 +1487,10 @@ @item vect_long_long Target supports hardware vectors of @code{long long}. +@item vect_check_ptrs +Target supports the @code{check_raw_ptrs} and @code{check_war_ptrs} +optabs on vectors. + @item vect_fully_masked Target supports fully-masked (also known as fully-predicated) loops, so that vector loops can handle partial as well as full vectors. @@ -1489,6 +1522,14 @@ @item vect_no_bitwise Target does not support vector bitwise instructions. +@item vect_bool_cmp +Target supports comparison of @code{bool} vectors for at least one +vector length. + +@item vect_char_add +Target supports addition of @code{char} vectors for at least one +vector length. + @item vect_char_mult Target supports @code{vector char} multiplication. @@ -1680,6 +1721,9 @@ @item arm32 ARM target generates 32-bit code. +@item arm_little_endian +ARM target that generates little-endian code. + @item arm_eabi ARM target adheres to the ABI for the ARM Architecture. @@ -1767,6 +1811,9 @@ @item arm_thumb2_ok ARM target generates Thumb-2 code for @code{-mthumb}. +@item arm_nothumb +ARM target that is not using Thumb. + @item arm_vfp_ok ARM target supports @code{-mfpu=vfp -mfloat-abi=softfp}. Some multilibs may be incompatible with these options. @@ -1836,6 +1883,16 @@ half-precision floating-point instructions available from ARMv8.2-A and onwards. Some multilibs may be incompatible with these options. +@item arm_v8_2a_bf16_neon_ok +ARM target supports options to generate instructions from ARMv8.2-A with +the BFloat16 extension (bf16). Some multilibs may be incompatible with these +options. + +@item arm_v8_2a_i8mm_ok +ARM target supports options to generate instructions from ARMv8.2-A with +the 8-Bit Integer Matrix Multiply extension (i8mm). Some multilibs may be +incompatible with these options. + @item arm_prefer_ldrd_strd ARM target prefers @code{LDRD} and @code{STRD} instructions over @code{LDM} and @code{STM} instructions. @@ -1875,6 +1932,19 @@ @item arm_coproc4_ok ARM target supports all the coprocessor instructions also listed as supported in @ref{arm_coproc3_ok} in addition the following: @code{MCRR2} and @code{MRRC2}. + +@item arm_simd32_ok +@anchor{arm_simd32_ok} +ARM Target supports options suitable for accessing the SIMD32 intrinsics from +@code{arm_acle.h}. +Some multilibs may be incompatible with these options. + +@item arm_qbit_ok +@anchor{arm_qbit_ok} +ARM Target supports options suitable for accessing the Q-bit manipulation +intrinsics from @code{arm_acle.h}. +Some multilibs may be incompatible with these options. + @end table @subsubsection AArch64-specific attributes @@ -1990,9 +2060,6 @@ @item ppc_recip_hw PowerPC target supports executing reciprocal estimate instructions. -@item spu_auto_overlay -SPU target has toolchain that supports automatic overlay generation. - @item vmx_hw PowerPC target supports executing AltiVec instructions. @@ -2025,6 +2092,9 @@ @item avx512f_runtime Target supports the execution of @code{avx512f} instructions. +@item avx512vp2intersect +Target supports the execution of @code{avx512vp2intersect} instructions. + @item cell_hw Test system can execute AltiVec and Cell PPU instructions. @@ -2099,14 +2169,24 @@ Target @code{string.h} and @code{wchar.h} headers provide C++ required overloads for @code{strchr} etc. functions. +@item d_runtime +Target provides the D runtime. + @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 +@file{libgfortran/io/unix.c:fd_truncate}; i.e.@: @code{ftruncate} or @code{chsize}. +@item fenv +Target provides @file{fenv.h} include file. + +@item fenv_exceptions +Target supports @file{fenv.h} with all the standard IEEE exceptions +and floating-point exceptions are raised by arithmetic operations. + @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 @@ -2137,6 +2217,10 @@ @item newlib Target supports Newlib. +@item newlib_nano_io +GCC was configured with @code{--enable-newlib-nano-formatted-io}, which reduces +the code size of Newlib formatted I/O functions. + @item pow10 Target provides @code{pow10} function. @@ -2152,8 +2236,8 @@ @env{GCC_TEST_RUN_EXPENSIVE} environment variable to a non-empty string. @item simulator -Test system runs executables on a simulator (i.e. slowly) rather than -hardware (i.e. fast). +Test system runs executables on a simulator (i.e.@: slowly) rather than +hardware (i.e.@: fast). @item signal Target has @code{signal.h}. @@ -2203,6 +2287,13 @@ @item default_packed Target has packed layout of structure members by default. +@item exceptions +Target supports exceptions. + +@item exceptions_enabled +Target supports exceptions and they are enabled in the current +testing configuration. + @item fgraphite Target supports Graphite optimizations. @@ -2237,9 +2328,16 @@ Target keeps null pointer checks, either due to the use of @option{-fno-delete-null-pointer-checks} or hardwired into the target. +@item llvm_binutils +Target is using an LLVM assembler and/or linker, instead of GNU Binutils. + @item lto Compiler has been configured to support link-time optimization (LTO). +@item lto_incremental +Compiler and linker support link-time optimization relocatable linking +with @option{-r} and @option{-flto} options. + @item naked_functions Target supports the @code{naked} function attribute. @@ -2254,9 +2352,15 @@ Target uses natural alignment (aligned to type size) for types of 64 bits or less. +@item noinit +Target supports the @code{noinit} variable attribute. + @item nonpic Target does not generate PIC by default. +@item offload_gcn +Target has been configured for OpenACC/OpenMP offloading on AMD GCN. + @item pie_enabled Target generates PIE by default. @@ -2323,6 +2427,10 @@ @item comdat_group Target uses comdat groups. + +@item indirect_calls +Target supports indirect calls, i.e. calls where the target is not +constant. @end table @subsubsection Local to tests in @code{gcc.target/i386} @@ -2337,6 +2445,10 @@ @item fma4 Target supports compiling @code{fma4} instructions. +@item mfentry +Target supports the @code{-mfentry} option that alters the +position of profiling calls such that they precede the prologue. + @item ms_hook_prologue Target supports attribute @code{ms_hook_prologue}. @@ -2365,13 +2477,6 @@ 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 @@ -2461,9 +2566,6 @@ 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 float@var{n} Add the target-specific flags needed to use the @code{_Float@var{n}} type. @@ -2484,6 +2586,10 @@ limit associated with the @ref{stack_size_et,,@code{stack_size} effective target}. +@item sqrt_insn +Add the target-specific flags needed to enable hardware square root +instructions, if any. + @item tls Add the target-specific flags needed to use thread-local storage. @end table @@ -2538,6 +2644,9 @@ @item dg-require-dll "" Skip the test if the target does not support DLL attributes. +@item dg-require-dot "" +Skip the test if the host does not have @command{dot}. + @item dg-require-fork "" Skip the test if the target does not support @code{fork}. @@ -2581,6 +2690,9 @@ 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}. +@item dg-check-dot @var{filename} +Passes if @var{filename} is a valid @file{.dot} file (by running +@code{dot -Tpng} on it, and verifying the exit code is 0). @end table @subsubsection Scan the assembly output @@ -2610,12 +2722,98 @@ @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 check-function-bodies @var{prefix} @var{terminator} [@var{option} [@{ target/xfail @var{selector} @}]] +Looks through the source file for comments that give the expected assembly +output for selected functions. Each line of expected output starts with the +prefix string @var{prefix} and the expected output for a function as a whole +is followed by a line that starts with the string @var{terminator}. +Specifying an empty terminator is equivalent to specifying @samp{"*/"}. + +If @var{option} is specified, the test only applies to command lines +that contain @var{option}. This can be useful if a source file is compiled +both with and without optimization, since it is rarely useful to check the +assembly output for unoptimized code. + +The first line of the expected output for a function @var{fn} has the form: + +@smallexample +@var{prefix} @var{fn}: [@{ target/xfail @var{selector} @}] +@end smallexample + +Subsequent lines of the expected output also start with @var{prefix}. +In both cases, whitespace after @var{prefix} is not significant. + +The test discards assembly directives such as @code{.cfi_startproc} +and local label definitions such as @code{.LFB0} from the compiler's +assembly output. It then matches the result against the expected +output for a function as a single regular expression. This means that +later lines can use backslashes to refer back to @samp{(@dots{})} +captures on earlier lines. For example: + +@smallexample +/* @{ dg-final @{ check-function-bodies "**" "" "-DCHECK_ASM" @} @} */ +@dots{} +/* +** add_w0_s8_m: +** mov (z[0-9]+\.b), w0 +** add z0\.b, p0/m, z0\.b, \1 +** ret +*/ +svint8_t add_w0_s8_m (@dots{}) @{ @dots{} @} +@dots{} +/* +** add_b0_s8_m: +** mov (z[0-9]+\.b), b0 +** add z1\.b, p0/m, z1\.b, \1 +** ret +*/ +svint8_t add_b0_s8_m (@dots{}) @{ @dots{} @} +@end smallexample + +checks whether the implementations of @code{add_w0_s8_m} and +@code{add_b0_s8_m} match the regular expressions given. The test only +runs when @samp{-DCHECK_ASM} is passed on the command line. + +It is possible to create non-capturing multi-line regular expression +groups of the form @samp{(@var{a}|@var{b}|@dots{})} by putting the +@samp{(}, @samp{|} and @samp{)} on separate lines (each still using +@var{prefix}). For example: + +@smallexample +/* +** cmple_f16_tied: +** ( +** fcmge p0\.h, p0/z, z1\.h, z0\.h +** | +** fcmle p0\.h, p0/z, z0\.h, z1\.h +** ) +** ret +*/ +svbool_t cmple_f16_tied (@dots{}) @{ @dots{} @} +@end smallexample + +checks whether @code{cmple_f16_tied} is implemented by the +@code{fcmge} instruction followed by @code{ret} or by the +@code{fcmle} instruction followed by @code{ret}. The test is +still a single regular rexpression. + +A line containing just: + +@smallexample +@var{prefix} ... +@end smallexample + +stands for zero or more unmatched lines; the whitespace after +@var{prefix} is again not significant. + @end table @subsubsection Scan optimization dump files These commands are available for @var{kind} of @code{tree}, @code{ltrans-tree}, -@code{offload-tree}, @code{rtl}, @code{ipa}, and @code{wpa-ipa}. +@code{offload-tree}, @code{rtl}, @code{offload-rtl}, @code{ipa}, and +@code{wpa-ipa}. @table @code @item scan-@var{kind}-dump @var{regex} @var{suffix} [@{ target/xfail @var{selector} @}] @@ -2638,7 +2836,7 @@ suffix @var{suffix}. @end table -@subsubsection Verify that an output files exists or not +@subsubsection Check for output files @table @code @item output-exists [@{ target/xfail @var{selector} @}] @@ -2646,13 +2844,12 @@ @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. + +@item scan-symbol-not @var{regexp} [@{ target/xfail @var{selector} @}] +Passes if the pattern is absent from the final executable. @end table @subsubsection Checks for @command{gcov} tests @@ -2727,9 +2924,6 @@ @item cleanup-profile-file Removes profiling files generated for this test. -@item cleanup-repo-files -Removes files generated for this test for @option{-frepo}. - @end table @node Ada Tests @@ -2918,7 +3112,7 @@ @command{gcov} test contains the following DejaGnu commands within comments: @smallexample -@{ dg-options "-fprofile-arcs -ftest-coverage" @} +@{ dg-options "--coverage" @} @{ dg-do run @{ target native @} @} @{ dg-final @{ run-gcov sourcefile @} @} @end smallexample @@ -3214,7 +3408,7 @@ The @code{startwith} argument indicates at which pass to begin. -Use the dump modifier @code{-gimple} (e.g. @option{-fdump-tree-all-gimple}) +Use the dump modifier @code{-gimple} (e.g.@: @option{-fdump-tree-all-gimple}) to make tree dumps more closely follow the format accepted by the GIMPLE parser.