Add Options (GNU Compiler Collection (GCC) Internals)

#### 6.2.4 Features for `dg-add-options` ¶

The supported values of feature for directive `dg-add-options` are:

`arm_fp`

  `__ARM_FP` definition. Only ARM targets support this feature, and only then in certain modes; see the arm_fp_ok effective target keyword.

`arm_fp_dp`

  `__ARM_FP` definition with double-precision support. Only ARM targets support this feature, and only then in certain modes; see the arm_fp_dp_ok effective target keyword.

`arm_neon`

  NEON support. Only ARM targets support this feature, and only then in certain modes; see the arm_neon_ok effective target keyword.

`arm_fp16`

  VFP half-precision floating point support. This does not select the FP16 format; for that, use arm_fp16_ieee or arm_fp16_alternative instead. This feature is only supported by ARM targets and then only in certain modes; see the arm_fp16_ok effective target keyword.

`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 arm_fp16_ok effective target keyword.

`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 arm_fp16_ok effective target keyword.

`arm_neon_fp16`

  NEON and half-precision floating point support. Only ARM targets support this feature, and only then in certain modes; see the arm_neon_fp16_ok effective target keyword.

`arm_vfp3`

  arm vfp3 floating point support; see the arm_vfp3_ok effective target keyword.

`arm_arch_v8a_hard`

  Add options for ARMv8-A and the hard-float variant of the AAPCS, if this is supported by the compiler; see the arm_arch_v8a_hard_ok effective target keyword.

`arm_v8_1a_neon`

  Add options for ARMv8.1-A with Adv.SIMD support, if this is supported by the target; see the arm_v8_1a_neon_ok effective target keyword.

`arm_v8_2a_fp16_scalar`

  Add options for ARMv8.2-A with scalar FP16 support, if this is supported by the target; see the arm_v8_2a_fp16_scalar_ok effective target keyword.

`arm_v8_2a_fp16_neon`

  Add options for ARMv8.2-A with Adv.SIMD FP16 support, if this is supported by the target; see the arm_v8_2a_fp16_neon_ok effective target keyword.

`arm_v8_2a_dotprod_neon`

  Add options for ARMv8.2-A with Adv.SIMD Dot Product support, if this is supported by the target; see the arm_v8_2a_dotprod_neon_ok effective target keyword.

`arm_fp16fml_neon`

  Add options to enable generation of the `VFMAL` and `VFMSL` instructions, if this is supported by the target; see the arm_fp16fml_neon_ok effective target keyword.

`arm_dsp`

  Add options for ARM DSP intrinsics support, if this is supported by the target; see the arm_dsp_ok effective target keyword.

`bind_pic_locally`

  Add the target-specific flags needed to enable functions to bind locally when using pic/PIC passes in the testsuite.

`check_function_bodies`

  Add the target-specific flags needed to use `check-function-bodies` from `dg-final`.

`floatn`

  Add the target-specific flags needed to use the `_Floatn` type.

`floatnx`

  Add the target-specific flags needed to use the `_Floatnx` type.

`ieee`

  Add the target-specific flags needed to enable full IEEE compliance mode.

`mips16_attribute`

  `mips16` function attributes. Only MIPS targets support this feature, and only then in certain modes.

`nvptx_alias_ptx`

  Enable using the PTX ISA directive `.alias` on nvptx targets.

`nvptx_alloca_ptx`

  Enable PTX ’alloca’ on nvptx targets.

`riscv_a`

  Add the ’A’ extension to the -march string on RISC-V targets.

`riscv_zaamo`

  Add the zaamo extension to the -march string on RISC-V targets.

`riscv_zabha`

  Add the zabha extension to the -march string on RISC-V targets.

`riscv_zacas`

  Add the zacas extension to the -march string on RISC-V targets.

`riscv_zalrsc`

  Add the zalrsc extension to the -march string on RISC-V targets.

`riscv_ztso`

  Add the ztso extension to the -march string on RISC-V targets.

`stack_size`

  Add the flags needed to define macro STACK_SIZE and set it to the stack size limit associated with the `stack_size` effective target.

`sqrt_insn`

  Add the target-specific flags needed to enable hardware square root instructions, if any.

`tls`

  Add the target-specific flags needed to use thread-local storage.

`vect_early_break`

  Add the target-specific flags needed to enable early break vectorization for a target, if any. This requires the target to have an implementation of the `cbranch` optab.

`weak_undefined`

  Add the flags needed to enable support for weak undefined symbols.