summaryrefslogtreecommitdiff
path: root/debian/patches/gcc-linaro-doc.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/gcc-linaro-doc.diff')
-rw-r--r--debian/patches/gcc-linaro-doc.diff703
1 files changed, 703 insertions, 0 deletions
diff --git a/debian/patches/gcc-linaro-doc.diff b/debian/patches/gcc-linaro-doc.diff
new file mode 100644
index 0000000..45e8750
--- /dev/null
+++ b/debian/patches/gcc-linaro-doc.diff
@@ -0,0 +1,703 @@
+# DP: Changes for the Linaro 6-2017.03 release (documentation).
+
+--- a/src/gcc/doc/cpp.texi
++++ b/src/gcc/doc/cpp.texi
+@@ -1984,7 +1984,7 @@ by GCC, or a non-GCC compiler that claims to accept the GNU C dialects,
+ you can simply test @code{__GNUC__}. If you need to write code
+ which depends on a specific version, you must be more careful. Each
+ time the minor version is increased, the patch level is reset to zero;
+-each time the major version is increased (which happens rarely), the
++each time the major version is increased, the
+ minor version and patch level are reset. If you wish to use the
+ predefined macros directly in the conditional, you will need to write it
+ like this:
+--- a/src/gcc/doc/extend.texi
++++ b/src/gcc/doc/extend.texi
+@@ -11416,6 +11416,7 @@ instructions, but allow the compiler to schedule those calls.
+ * ARM iWMMXt Built-in Functions::
+ * ARM C Language Extensions (ACLE)::
+ * ARM Floating Point Status and Control Intrinsics::
++* ARM ARMv8-M Security Extensions::
+ * AVR Built-in Functions::
+ * Blackfin Built-in Functions::
+ * FR-V Built-in Functions::
+@@ -12260,6 +12261,35 @@ unsigned int __builtin_arm_get_fpscr ()
+ void __builtin_arm_set_fpscr (unsigned int)
+ @end smallexample
+
++@node ARM ARMv8-M Security Extensions
++@subsection ARM ARMv8-M Security Extensions
++
++GCC implements the ARMv8-M Security Extensions as described in the ARMv8-M
++Security Extensions: Requiremenets on Development Tools Engineering
++Specification, which can be found at
++@uref{http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/ECM0359818_armv8m_security_extensions_reqs_on_dev_tools_1_0.pdf}.
++
++As part of the Security Extensions GCC implements two new function attributes:
++@code{cmse_nonsecure_entry} and @code{cmse_nonsecure_call}.
++
++As part of the Security Extensions GCC implements the intrinsics below. FPTR
++is used here to mean any function pointer type.
++
++@smallexample
++cmse_address_info_t cmse_TT (void *)
++cmse_address_info_t cmse_TT_fptr (FPTR)
++cmse_address_info_t cmse_TTT (void *)
++cmse_address_info_t cmse_TTT_fptr (FPTR)
++cmse_address_info_t cmse_TTA (void *)
++cmse_address_info_t cmse_TTA_fptr (FPTR)
++cmse_address_info_t cmse_TTAT (void *)
++cmse_address_info_t cmse_TTAT_fptr (FPTR)
++void * cmse_check_address_range (void *, size_t, int)
++typeof(p) cmse_nsfptr_create (FPTR p)
++intptr_t cmse_is_nsfptr (FPTR)
++int cmse_nonsecure_caller (void)
++@end smallexample
++
+ @node AVR Built-in Functions
+ @subsection AVR Built-in Functions
+
+--- a/src/gcc/doc/fragments.texi
++++ b/src/gcc/doc/fragments.texi
+@@ -156,15 +156,16 @@ variants. And for some targets it is better to reuse an existing multilib
+ than to fall back to default multilib when there is no corresponding multilib.
+ This can be done by adding reuse rules to @code{MULTILIB_REUSE}.
+
+-A reuse rule is comprised of two parts connected by equality sign. The left part
+-is option set used to build multilib and the right part is option set that will
+-reuse this multilib. The order of options in the left part matters and should be
+-same with those specified in @code{MULTILIB_REQUIRED} or aligned with order in
+-@code{MULTILIB_OPTIONS}. There is no such limitation for options in right part
+-as we don't build multilib from them. But the equality sign in both parts should
+-be replaced with period.
+-
+-The @code{MULTILIB_REUSE} is different from @code{MULTILIB_MATCHES} in that it
++A reuse rule is comprised of two parts connected by equality sign. The left
++part is the option set used to build multilib and the right part is the option
++set that will reuse this multilib. Both parts should only use options
++specified in @code{MULTILIB_OPTIONS} and the equality signs found in options
++name should be replaced with periods. The order of options in the left part
++matters and should be same with those specified in @code{MULTILIB_REQUIRED} or
++aligned with the order in @code{MULTILIB_OPTIONS}. There is no such limitation
++for options in the right part as we don't build multilib from them.
++
++@code{MULTILIB_REUSE} is different from @code{MULTILIB_MATCHES} in that it
+ sets up relations between two option sets rather than two options. Here is an
+ example to demo how we reuse libraries built in Thumb mode for applications built
+ in ARM mode:
+--- a/src/gcc/doc/install.texi
++++ b/src/gcc/doc/install.texi
+@@ -1101,19 +1101,59 @@ sysv, aix.
+
+ @item --with-multilib-list=@var{list}
+ @itemx --without-multilib-list
+-Specify what multilibs to build.
+-Currently only implemented for arm*-*-*, sh*-*-* and x86-64-*-linux*.
++Specify what multilibs to build. @var{list} is a comma separated list of
++values, possibly consisting of a single value. Currently only implemented
++for arm*-*-*, sh*-*-* and x86-64-*-linux*. The accepted values and meaning
++for each target is given below.
+
+ @table @code
+ @item arm*-*-*
+-@var{list} is either @code{default} or @code{aprofile}. Specifying
+-@code{default} is equivalent to omitting this option while specifying
+-@code{aprofile} builds multilibs for each combination of ISA (@code{-marm} or
+-@code{-mthumb}), architecture (@code{-march=armv7-a}, @code{-march=armv7ve},
+-or @code{-march=armv8-a}), FPU available (none, @code{-mfpu=vfpv3-d16},
+-@code{-mfpu=neon}, @code{-mfpu=vfpv4-d16}, @code{-mfpu=neon-vfpv4} or
+-@code{-mfpu=neon-fp-armv8} depending on architecture) and floating-point ABI
+-(@code{-mfloat-abi=softfp} or @code{-mfloat-abi=hard}).
++@var{list} is one of@code{default}, @code{aprofile} or @code{rmprofile}.
++Specifying @code{default} is equivalent to omitting this option, ie. only the
++default runtime library will be enabled. Specifying @code{aprofile} or
++@code{rmprofile} builds multilibs for a combination of ISA, architecture,
++FPU available and floating-point ABI.
++
++The table below gives the combination of ISAs, architectures, FPUs and
++floating-point ABIs for which multilibs are built for each accepted value.
++
++@multitable @columnfractions .15 .28 .30
++@item Option @tab aprofile @tab rmprofile
++@item ISAs
++@tab @code{-marm} and @code{-mthumb}
++@tab @code{-mthumb}
++@item Architectures@*@*@*@*@*@*
++@tab default architecture@*
++@code{-march=armv7-a}@*
++@code{-march=armv7ve}@*
++@code{-march=armv8-a}@*@*@*
++@tab default architecture@*
++@code{-march=armv6s-m}@*
++@code{-march=armv7-m}@*
++@code{-march=armv7e-m}@*
++@code{-march=armv8-m.base}@*
++@code{-march=armv8-m.main}@*
++@code{-march=armv7}
++@item FPUs@*@*@*@*@*
++@tab none@*
++@code{-mfpu=vfpv3-d16}@*
++@code{-mfpu=neon}@*
++@code{-mfpu=vfpv4-d16}@*
++@code{-mfpu=neon-vfpv4}@*
++@code{-mfpu=neon-fp-armv8}
++@tab none@*
++@code{-mfpu=vfpv3-d16}@*
++@code{-mfpu=fpv4-sp-d16}@*
++@code{-mfpu=fpv5-sp-d16}@*
++@code{-mfpu=fpv5-d16}@*
++@item floating-point@/ ABIs@*@*
++@tab @code{-mfloat-abi=soft}@*
++@code{-mfloat-abi=softfp}@*
++@code{-mfloat-abi=hard}
++@tab @code{-mfloat-abi=soft}@*
++@code{-mfloat-abi=softfp}@*
++@code{-mfloat-abi=hard}
++@end multitable
+
+ @item sh*-*-*
+ @var{list} is a comma separated list of CPU names. These must be of the
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -573,6 +573,8 @@ Objective-C and Objective-C++ Dialects}.
+ -mfix-cortex-a53-835769 -mno-fix-cortex-a53-835769 @gol
+ -mfix-cortex-a53-843419 -mno-fix-cortex-a53-843419 @gol
+ -mlow-precision-recip-sqrt -mno-low-precision-recip-sqrt@gol
++-mlow-precision-sqrt -mno-low-precision-sqrt@gol
++-mlow-precision-div -mno-low-precision-div @gol
+ -march=@var{name} -mcpu=@var{name} -mtune=@var{name}}
+
+ @emph{Adapteva Epiphany Options}
+@@ -606,7 +608,6 @@ Objective-C and Objective-C++ Dialects}.
+ @gccoptlist{-mapcs-frame -mno-apcs-frame @gol
+ -mabi=@var{name} @gol
+ -mapcs-stack-check -mno-apcs-stack-check @gol
+--mapcs-float -mno-apcs-float @gol
+ -mapcs-reentrant -mno-apcs-reentrant @gol
+ -msched-prolog -mno-sched-prolog @gol
+ -mlittle-endian -mbig-endian @gol
+@@ -632,7 +633,8 @@ Objective-C and Objective-C++ Dialects}.
+ -mneon-for-64bits @gol
+ -mslow-flash-data @gol
+ -masm-syntax-unified @gol
+--mrestrict-it}
++-mrestrict-it @gol
++-mcmse}
+
+ @emph{AVR Options}
+ @gccoptlist{-mmcu=@var{mcu} -maccumulate-args -mbranch-cost=@var{cost} @gol
+@@ -9477,6 +9479,11 @@ Size of minimal partition for WHOPR (in estimated instructions).
+ This prevents expenses of splitting very small programs into too many
+ partitions.
+
++@item lto-max-partition
++Size of max partition for WHOPR (in estimated instructions).
++to provide an upper bound for individual size of partition.
++Meant to be used only with balanced partitioning.
++
+ @item cxx-max-namespaces-for-diagnostic-help
+ The maximum number of namespaces to consult for suggestions when C++
+ name lookup fails for an identifier. The default is 1000.
+@@ -12827,9 +12834,9 @@ These options are defined for AArch64 implementations:
+ @item -mabi=@var{name}
+ @opindex mabi
+ Generate code for the specified data model. Permissible values
+-are @samp{ilp32} for SysV-like data model where int, long int and pointer
+-are 32-bit, and @samp{lp64} for SysV-like data model where int is 32-bit,
+-but long int and pointer are 64-bit.
++are @samp{ilp32} for SysV-like data model where int, long int and pointers
++are 32 bits, and @samp{lp64} for SysV-like data model where int is 32 bits,
++but long int and pointers are 64 bits.
+
+ The default depends on the specific target configuration. Note that
+ the LP64 and ILP32 ABIs are not link-compatible; you must compile your
+@@ -12854,25 +12861,24 @@ Generate little-endian code. This is the default when GCC is configured for an
+ @item -mcmodel=tiny
+ @opindex mcmodel=tiny
+ Generate code for the tiny code model. The program and its statically defined
+-symbols must be within 1GB of each other. Pointers are 64 bits. Programs can
+-be statically or dynamically linked. This model is not fully implemented and
+-mostly treated as @samp{small}.
++symbols must be within 1MB of each other. Programs can be statically or
++dynamically linked.
+
+ @item -mcmodel=small
+ @opindex mcmodel=small
+ Generate code for the small code model. The program and its statically defined
+-symbols must be within 4GB of each other. Pointers are 64 bits. Programs can
+-be statically or dynamically linked. This is the default code model.
++symbols must be within 4GB of each other. Programs can be statically or
++dynamically linked. This is the default code model.
+
+ @item -mcmodel=large
+ @opindex mcmodel=large
+ Generate code for the large code model. This makes no assumptions about
+-addresses and sizes of sections. Pointers are 64 bits. Programs can be
+-statically linked only.
++addresses and sizes of sections. Programs can be statically linked only.
+
+ @item -mstrict-align
+ @opindex mstrict-align
+-Do not assume that unaligned memory references are handled by the system.
++Avoid generating memory accesses that may not be aligned on a natural object
++boundary as described in the architecture specification.
+
+ @item -momit-leaf-frame-pointer
+ @itemx -mno-omit-leaf-frame-pointer
+@@ -12894,7 +12900,7 @@ of TLS variables.
+ @item -mtls-size=@var{size}
+ @opindex mtls-size
+ Specify bit size of immediate TLS offsets. Valid values are 12, 24, 32, 48.
+-This option depends on binutils higher than 2.25.
++This option requires binutils 2.26 or newer.
+
+ @item -mfix-cortex-a53-835769
+ @itemx -mno-fix-cortex-a53-835769
+@@ -12914,12 +12920,34 @@ corresponding flag to the linker.
+
+ @item -mlow-precision-recip-sqrt
+ @item -mno-low-precision-recip-sqrt
+-@opindex -mlow-precision-recip-sqrt
+-@opindex -mno-low-precision-recip-sqrt
+-When calculating the reciprocal square root approximation,
+-uses one less step than otherwise, thus reducing latency and precision.
+-This is only relevant if @option{-ffast-math} enables the reciprocal square root
+-approximation, which in turn depends on the target processor.
++@opindex mlow-precision-recip-sqrt
++@opindex mno-low-precision-recip-sqrt
++Enable or disable the reciprocal square root approximation.
++This option only has an effect if @option{-ffast-math} or
++@option{-funsafe-math-optimizations} is used as well. Enabling this reduces
++precision of reciprocal square root results to about 16 bits for
++single precision and to 32 bits for double precision.
++
++@item -mlow-precision-sqrt
++@item -mno-low-precision-sqrt
++@opindex -mlow-precision-sqrt
++@opindex -mno-low-precision-sqrt
++Enable or disable the square root approximation.
++This option only has an effect if @option{-ffast-math} or
++@option{-funsafe-math-optimizations} is used as well. Enabling this reduces
++precision of square root results to about 16 bits for
++single precision and to 32 bits for double precision.
++If enabled, it implies @option{-mlow-precision-recip-sqrt}.
++
++@item -mlow-precision-div
++@item -mno-low-precision-div
++@opindex -mlow-precision-div
++@opindex -mno-low-precision-div
++Enable or disable the division approximation.
++This option only has an effect if @option{-ffast-math} or
++@option{-funsafe-math-optimizations} is used as well. Enabling this reduces
++precision of division results to about 16 bits for
++single precision and to 32 bits for double precision.
+
+ @item -march=@var{name}
+ @opindex march
+@@ -12928,10 +12956,16 @@ more feature modifiers. This option has the form
+ @option{-march=@var{arch}@r{@{}+@r{[}no@r{]}@var{feature}@r{@}*}}.
+
+ The permissible values for @var{arch} are @samp{armv8-a},
+-@samp{armv8.1-a} or @var{native}.
++@samp{armv8.1-a}, @samp{armv8.2-a}, @samp{armv8.3-a} or @var{native}.
++
++The value @samp{armv8.3-a} implies @samp{armv8.2-a} and enables compiler
++support for the ARMv8.3-A architecture extensions.
++
++The value @samp{armv8.2-a} implies @samp{armv8.1-a} and enables compiler
++support for the ARMv8.2-A architecture extensions.
+
+ The value @samp{armv8.1-a} implies @samp{armv8-a} and enables compiler
+-support for the ARMv8.1 architecture extension. In particular, it
++support for the ARMv8.1-A architecture extension. In particular, it
+ enables the @samp{+crc} and @samp{+lse} features.
+
+ The value @samp{native} is available on native AArch64 GNU/Linux and
+@@ -12955,18 +12989,18 @@ processors implementing the target architecture.
+ Specify the name of the target processor for which GCC should tune the
+ performance of the code. Permissible values for this option are:
+ @samp{generic}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a57},
+-@samp{cortex-a72}, @samp{exynos-m1}, @samp{qdf24xx}, @samp{thunderx},
+-@samp{xgene1}.
++@samp{cortex-a72}, @samp{cortex-a73}, @samp{exynos-m1}, @samp{qdf24xx},
++@samp{thunderx}, @samp{xgene1}, @samp{vulcan}, @samp{cortex-a57.cortex-a53},
++@samp{cortex-a72.cortex-a53}, @samp{cortex-a73.cortex-a35},
++@samp{cortex-a73.cortex-a53}, @samp{native}.
+
+-Additionally, this option can specify that GCC should tune the performance
+-of the code for a big.LITTLE system. Permissible values for this
+-option are: @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53}.
++The values @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53},
++@samp{cortex-a73.cortex-a35}, @samp{cortex-a73.cortex-a53}
++specify that GCC should tune for a big.LITTLE system.
+
+ Additionally on native AArch64 GNU/Linux systems the value
+-@samp{native} is available. This option causes the compiler to pick
+-the architecture of and tune the performance of the code for the
+-processor of the host system. This option has no effect if the
+-compiler is unable to recognize the architecture of the host system.
++@samp{native} tunes performance to the host system. This option has no effect
++if the compiler is unable to recognize the processor of the host system.
+
+ Where none of @option{-mtune=}, @option{-mcpu=} or @option{-march=}
+ are specified, the code is tuned to perform well across a range
+@@ -12986,12 +13020,6 @@ documented in the sub-section on
+ Feature Modifiers}. Where conflicting feature modifiers are
+ specified, the right-most feature is used.
+
+-Additionally on native AArch64 GNU/Linux systems the value
+-@samp{native} is available. This option causes the compiler to tune
+-the performance of the code for the processor of the host system.
+-This option has no effect if the compiler is unable to recognize the
+-architecture of the host system.
+-
+ GCC uses @var{name} to determine what kind of instructions it can emit when
+ generating assembly code (as if by @option{-march}) and to determine
+ the target processor for which to tune for performance (as if
+@@ -13009,11 +13037,11 @@ across releases.
+ This option is only intended to be useful when developing GCC.
+
+ @item -mpc-relative-literal-loads
+-@opindex mpcrelativeliteralloads
+-Enable PC relative literal loads. If this option is used, literal
+-pools are assumed to have a range of up to 1MiB and an appropriate
+-instruction sequence is used. This option has no impact when used
+-with @option{-mcmodel=tiny}.
++@opindex mpc-relative-literal-loads
++Enable PC-relative literal loads. With this option literal pools are
++accessed using a single instruction and emitted after each function. This
++limits the maximum size of functions to 1MB. This is enabled by default for
++@option{-mcmodel=tiny}.
+
+ @end table
+
+@@ -13041,12 +13069,14 @@ instructions. This is on by default for all possible values for options
+ @item lse
+ Enable Large System Extension instructions. This is on by default for
+ @option{-march=armv8.1-a}.
++@item fp16
++Enable FP16 extension. This also enables floating-point instructions.
+
+ @end table
+
+-That is, @option{crypto} implies @option{simd} implies @option{fp}.
+-Conversely, @option{nofp} (or equivalently, @option{-mgeneral-regs-only})
+-implies @option{nosimd} implies @option{nocrypto}.
++Feature @option{crypto} implies @option{simd}, which implies @option{fp}.
++Conversely, @option{nofp} implies @option{nosimd}, which implies
++@option{nocrypto}.
+
+ @node Adapteva Epiphany Options
+ @subsection Adapteva Epiphany Options
+@@ -13897,16 +13927,6 @@ system is required to provide these functions. The default is
+ @option{-mno-apcs-stack-check}, since this produces smaller code.
+
+ @c not currently implemented
+-@item -mapcs-float
+-@opindex mapcs-float
+-Pass floating-point arguments using the floating-point registers. This is
+-one of the variants of the APCS@. This option is recommended if the
+-target hardware has a floating-point unit or if a lot of floating-point
+-arithmetic is going to be performed by the code. The default is
+-@option{-mno-apcs-float}, since the size of integer-only code is
+-slightly increased if @option{-mapcs-float} is used.
+-
+-@c not currently implemented
+ @item -mapcs-reentrant
+ @opindex mapcs-reentrant
+ Generate reentrant, position-independent code. The default is
+@@ -13966,21 +13986,42 @@ name to determine what kind of instructions it can emit when generating
+ assembly code. This option can be used in conjunction with or instead
+ of the @option{-mcpu=} option. Permissible names are: @samp{armv2},
+ @samp{armv2a}, @samp{armv3}, @samp{armv3m}, @samp{armv4}, @samp{armv4t},
+-@samp{armv5}, @samp{armv5t}, @samp{armv5e}, @samp{armv5te},
+-@samp{armv6}, @samp{armv6j},
+-@samp{armv6t2}, @samp{armv6z}, @samp{armv6kz}, @samp{armv6-m},
+-@samp{armv7}, @samp{armv7-a}, @samp{armv7-r}, @samp{armv7-m}, @samp{armv7e-m},
++@samp{armv5}, @samp{armv5e}, @samp{armv5t}, @samp{armv5te},
++@samp{armv6}, @samp{armv6-m}, @samp{armv6j}, @samp{armv6k},
++@samp{armv6kz}, @samp{armv6s-m},
++@samp{armv6t2}, @samp{armv6z}, @samp{armv6zk},
++@samp{armv7}, @samp{armv7-a}, @samp{armv7-m}, @samp{armv7-r}, @samp{armv7e-m},
+ @samp{armv7ve}, @samp{armv8-a}, @samp{armv8-a+crc}, @samp{armv8.1-a},
+-@samp{armv8.1-a+crc}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}.
++@samp{armv8.1-a+crc}, @samp{armv8-m.base}, @samp{armv8-m.main},
++@samp{armv8-m.main+dsp}, @samp{iwmmxt}, @samp{iwmmxt2}.
+
+-Architecture revisions older than @option{armv4t} are deprecated.
++Architecture revisions older than @samp{armv4t} are deprecated.
+
+-@option{-march=armv7ve} is the armv7-a architecture with virtualization
++@option{-march=armv6s-m} is the @samp{armv6-m} architecture with support for
++the (now mandatory) SVC instruction.
++
++@option{-march=armv6zk} is an alias for @samp{armv6kz}, existing for backwards
++compatibility.
++
++@option{-march=armv7ve} is the @samp{armv7-a} architecture with virtualization
+ extensions.
+
+ @option{-march=armv8-a+crc} enables code generation for the ARMv8-A
+ architecture together with the optional CRC32 extensions.
+
++@option{-march=armv8.1-a} enables compiler support for the ARMv8.1-A
++architecture. This also enables the features provided by
++@option{-march=armv8-a+crc}.
++
++@option{-march=armv8.2-a} enables compiler support for the ARMv8.2-A
++architecture. This also enables the features provided by
++@option{-march=armv8.1-a}.
++
++@option{-march=armv8.2-a+fp16} enables compiler support for the
++ARMv8.2-A architecture with the optional FP16 instructions extension.
++This also enables the features provided by @option{-march=armv8.1-a}
++and implies @option{-mfp16-format=ieee}.
++
+ @option{-march=native} causes the compiler to auto-detect the architecture
+ of the build computer. At present, this feature is only supported on
+ GNU/Linux, and not all architectures are recognized. If the auto-detect
+@@ -14012,8 +14053,10 @@ Permissible names are: @samp{arm2}, @samp{arm250},
+ @samp{generic-armv7-a}, @samp{cortex-a5}, @samp{cortex-a7}, @samp{cortex-a8},
+ @samp{cortex-a9}, @samp{cortex-a12}, @samp{cortex-a15}, @samp{cortex-a17},
+ @samp{cortex-a32}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a57},
+-@samp{cortex-a72}, @samp{cortex-r4},
++@samp{cortex-a72}, @samp{cortex-a73}, @samp{cortex-r4},
+ @samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-r8},
++@samp{cortex-m33},
++@samp{cortex-m23},
+ @samp{cortex-m7},
+ @samp{cortex-m4},
+ @samp{cortex-m3},
+@@ -14034,7 +14077,8 @@ Permissible names are: @samp{arm2}, @samp{arm250},
+ Additionally, this option can specify that GCC should tune the performance
+ of the code for a big.LITTLE system. Permissible names are:
+ @samp{cortex-a15.cortex-a7}, @samp{cortex-a17.cortex-a7},
+-@samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53}.
++@samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53},
++@samp{cortex-a72.cortex-a35}, @samp{cortex-a73.cortex-a53}.
+
+ @option{-mtune=generic-@var{arch}} specifies that GCC should tune the
+ performance for a blend of processors within architecture @var{arch}.
+@@ -14072,12 +14116,14 @@ is unsuccessful the option has no effect.
+ @item -mfpu=@var{name}
+ @opindex mfpu
+ This specifies what floating-point hardware (or hardware emulation) is
+-available on the target. Permissible names are: @samp{vfp}, @samp{vfpv3},
++available on the target. Permissible names are: @samp{vfpv2}, @samp{vfpv3},
+ @samp{vfpv3-fp16}, @samp{vfpv3-d16}, @samp{vfpv3-d16-fp16}, @samp{vfpv3xd},
+-@samp{vfpv3xd-fp16}, @samp{neon}, @samp{neon-fp16}, @samp{vfpv4},
++@samp{vfpv3xd-fp16}, @samp{neon-vfpv3}, @samp{neon-fp16}, @samp{vfpv4},
+ @samp{vfpv4-d16}, @samp{fpv4-sp-d16}, @samp{neon-vfpv4},
+ @samp{fpv5-d16}, @samp{fpv5-sp-d16},
+ @samp{fp-armv8}, @samp{neon-fp-armv8} and @samp{crypto-neon-fp-armv8}.
++Note that @samp{neon} is an alias for @samp{neon-vfpv3} and @samp{vfp}
++is an alias for @samp{vfpv2}.
+
+ If @option{-msoft-float} is specified this specifies the format of
+ floating-point values.
+@@ -14164,9 +14210,12 @@ otherwise the default is @samp{R10}.
+
+ @item -mpic-data-is-text-relative
+ @opindex mpic-data-is-text-relative
+-Assume that each data segments are relative to text segment at load time.
+-Therefore, it permits addressing data using PC-relative operations.
+-This option is on by default for targets other than VxWorks RTP.
++Assume that the displacement between the text and data segments is fixed
++at static link time. This permits using PC-relative addressing
++operations to access data known to be in the data segment. For
++non-VxWorks RTP targets, this option is enabled by default. When
++disabled on such targets, it will enable @option{-msingle-pic-base} by
++default.
+
+ @item -mpoke-function-name
+ @opindex mpoke-function-name
+@@ -14276,10 +14325,10 @@ generating these instructions. This option is enabled by default when
+ @opindex mno-unaligned-access
+ Enables (or disables) reading and writing of 16- and 32- bit values
+ from addresses that are not 16- or 32- bit aligned. By default
+-unaligned access is disabled for all pre-ARMv6 and all ARMv6-M
+-architectures, and enabled for all other architectures. If unaligned
+-access is not enabled then words in packed data structures are
+-accessed a byte at a time.
++unaligned access is disabled for all pre-ARMv6, all ARMv6-M and for
++ARMv8-M Baseline architectures, and enabled for all other
++architectures. If unaligned access is not enabled then words in packed
++data structures are accessed a byte at a time.
+
+ The ARM attribute @code{Tag_CPU_unaligned_access} is set in the
+ generated object file to either true or false, depending upon the
+@@ -14319,6 +14368,12 @@ Print CPU tuning information as comment in assembler file. This is
+ an option used only for regression testing of the compiler and not
+ intended for ordinary use in compiling code. This option is disabled
+ by default.
++
++@item -mcmse
++@opindex mcmse
++Generate secure code as per the "ARMv8-M Security Extensions: Requirements on
++Development Tools Engineering Specification", which can be found on
++@url{http://infocenter.arm.com/help/topic/com.arm.doc.ecm0359818/ECM0359818_armv8m_security_extensions_reqs_on_dev_tools_1_0.pdf}.
+ @end table
+
+ @node AVR Options
+@@ -18081,7 +18136,7 @@ IEEE 754 floating-point data.
+
+ The @option{-mnan=legacy} option selects the legacy encoding. In this
+ case quiet NaNs (qNaNs) are denoted by the first bit of their trailing
+-significand field being 0, whereas signalling NaNs (sNaNs) are denoted
++significand field being 0, whereas signaling NaNs (sNaNs) are denoted
+ by the first bit of their trailing significand field being 1.
+
+ The @option{-mnan=2008} option selects the IEEE 754-2008 encoding. In
+--- a/src/gcc/doc/md.texi
++++ b/src/gcc/doc/md.texi
+@@ -5027,7 +5027,7 @@ it is unspecified which of the two operands is returned as the result.
+ IEEE-conformant minimum and maximum operations. If one operand is a quiet
+ @code{NaN}, then the other operand is returned. If both operands are quiet
+ @code{NaN}, then a quiet @code{NaN} is returned. In the case when gcc supports
+-signalling @code{NaN} (-fsignaling-nans) an invalid floating point exception is
++signaling @code{NaN} (-fsignaling-nans) an invalid floating point exception is
+ raised and a quiet @code{NaN} is returned.
+
+ All operands have mode @var{m}, which is a scalar or vector
+--- a/src/gcc/doc/sourcebuild.texi
++++ b/src/gcc/doc/sourcebuild.texi
+@@ -1555,6 +1555,16 @@ options. Some multilibs may be incompatible with these options.
+ ARM Target supports @code{-mfpu=neon-vfpv4 -mfloat-abi=softfp} or compatible
+ options. Some multilibs may be incompatible with these options.
+
++@item arm_fp16_ok
++@anchor{arm_fp16_ok}
++Target supports options to generate VFP half-precision floating-point
++instructions. Some multilibs may be incompatible with these
++options. This test is valid for ARM only.
++
++@item arm_fp16_hw
++Target supports executing VFP half-precision floating-point
++instructions. This test is valid for ARM only.
++
+ @item arm_neon_fp16_ok
+ @anchor{arm_neon_fp16_ok}
+ ARM Target supports @code{-mfpu=neon-fp16 -mfloat-abi=softfp} or compatible
+@@ -1565,6 +1575,13 @@ options, including @code{-mfp16-format=ieee} if necessary to obtain the
+ Test system supports executing Neon half-precision float instructions.
+ (Implies previous.)
+
++@item arm_fp16_alternative_ok
++ARM target supports the ARM FP16 alternative format. Some multilibs
++may be incompatible with the options needed.
++
++@item arm_fp16_none_ok
++ARM target supports specifying none as the ARM FP16 format.
++
+ @item arm_thumb1_ok
+ ARM target generates Thumb-1 code for @code{-mthumb}.
+
+@@ -1589,6 +1606,7 @@ ARM target supports @code{-mfpu=neon-fp-armv8 -mfloat-abi=softfp}.
+ Some multilibs may be incompatible with these options.
+
+ @item arm_v8_1a_neon_ok
++@anchor{arm_v8_1a_neon_ok}
+ ARM target supports options to generate ARMv8.1 Adv.SIMD instructions.
+ Some multilibs may be incompatible with these options.
+
+@@ -1597,10 +1615,47 @@ ARM target supports executing ARMv8.1 Adv.SIMD instructions. Some
+ multilibs may be incompatible with the options needed. Implies
+ arm_v8_1a_neon_ok.
+
++@item arm_acq_rel
++ARM target supports acquire-release instructions.
++
++@item arm_v8_2a_fp16_scalar_ok
++@anchor{arm_v8_2a_fp16_scalar_ok}
++ARM target supports options to generate instructions for ARMv8.2 and
++scalar instructions from the FP16 extension. Some multilibs may be
++incompatible with these options.
++
++@item arm_v8_2a_fp16_scalar_hw
++ARM target supports executing instructions for ARMv8.2 and scalar
++instructions from the FP16 extension. Some multilibs may be
++incompatible with these options. Implies arm_v8_2a_fp16_neon_ok.
++
++@item arm_v8_2a_fp16_neon_ok
++@anchor{arm_v8_2a_fp16_neon_ok}
++ARM target supports options to generate instructions from ARMv8.2 with
++the FP16 extension. Some multilibs may be incompatible with these
++options. Implies arm_v8_2a_fp16_scalar_ok.
++
++@item arm_v8_2a_fp16_neon_hw
++ARM target supports executing instructions from ARMv8.2 with the FP16
++extension. Some multilibs may be incompatible with these options.
++Implies arm_v8_2a_fp16_neon_ok and arm_v8_2a_fp16_scalar_hw.
++
+ @item arm_prefer_ldrd_strd
+ ARM target prefers @code{LDRD} and @code{STRD} instructions over
+ @code{LDM} and @code{STM} instructions.
+
++@item arm_thumb1_movt_ok
++ARM target generates Thumb-1 code for @code{-mthumb} with @code{MOVW}
++and @code{MOVT} instructions available.
++
++@item arm_thumb1_cbz_ok
++ARM target generates Thumb-1 code for @code{-mthumb} with
++@code{CBZ} and @code{CBNZ} instructions available.
++
++@item arm_cmse_ok
++ARM target supports ARMv8-M Security Extensions, enabled by the @code{-mcmse}
++option.
++
+ @end table
+
+ @subsubsection AArch64-specific attributes
+@@ -2066,6 +2121,28 @@ NEON support. Only ARM targets support this feature, and only then
+ in certain modes; see the @ref{arm_neon_ok,,arm_neon_ok effective target
+ keyword}.
+
++@item arm_fp16
++VFP half-precision floating point support. This does not select the
++FP16 format; for that, use @ref{arm_fp16_ieee,,arm_fp16_ieee} or
++@ref{arm_fp16_alternative,,arm_fp16_alternative} instead. This
++feature is only supported by ARM targets and then only in certain
++modes; see the @ref{arm_fp16_ok,,arm_fp16_ok effective target
++keyword}.
++
++@item arm_fp16_ieee
++@anchor{arm_fp16_ieee}
++ARM IEEE 754-2008 format VFP half-precision floating point support.
++This feature is only supported by ARM targets and then only in certain
++modes; see the @ref{arm_fp16_ok,,arm_fp16_ok effective target
++keyword}.
++
++@item arm_fp16_alternative
++@anchor{arm_fp16_alternative}
++ARM Alternative format VFP half-precision floating point support.
++This feature is only supported by ARM targets and then only in certain
++modes; see the @ref{arm_fp16_ok,,arm_fp16_ok effective target
++keyword}.
++
+ @item arm_neon_fp16
+ NEON and half-precision floating point support. Only ARM targets
+ support this feature, and only then in certain modes; see
+@@ -2075,6 +2152,23 @@ the @ref{arm_neon_fp16_ok,,arm_neon_fp16_ok effective target keyword}.
+ arm vfp3 floating point support; see
+ the @ref{arm_vfp3_ok,,arm_vfp3_ok effective target keyword}.
+
++@item arm_v8_1a_neon
++Add options for ARMv8.1 with Adv.SIMD support, if this is supported
++by the target; see the @ref{arm_v8_1a_neon_ok,,arm_v8_1a_neon_ok}
++effective target keyword.
++
++@item arm_v8_2a_fp16_scalar
++Add options for ARMv8.2 with scalar FP16 support, if this is
++supported by the target; see the
++@ref{arm_v8_2a_fp16_scalar_ok,,arm_v8_2a_fp16_scalar_ok} effective
++target keyword.
++
++@item arm_v8_2a_fp16_neon
++Add options for ARMv8.2 with Adv.SIMD FP16 support, if this is
++supported by the target; see the
++@ref{arm_v8_2a_fp16_neon_ok,,arm_v8_2a_fp16_neon_ok} effective target
++keyword.
++
+ @item bind_pic_locally
+ Add the target-specific flags needed to enable functions to bind
+ locally when using pic/PIC passes in the testsuite.