[AArch64][4/14] Create TARGET_FIX_ERR_A53_835769 and use that instead of aarch64_fix_...
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Tue, 4 Aug 2015 10:01:06 +0000 (10:01 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Tue, 4 Aug 2015 10:01:06 +0000 (10:01 +0000)
        * config/aarch64/aarch64.h (TARGET_FIX_ERR_A53_835769_DEFAULT): Always
        define to 0 or 1.
        (TARGET_FIX_ERR_A53_835769): New macro.
        * config/aarch64/aarch64.c (aarch64_override_options_internal): Remove
        handling of opts->x_aarch64_fix_a53_err835769.
        (aarch64_madd_needs_nop): Check for TARGET_FIX_ERR_A53_835769 rather
        than aarch64_fix_a53_err835769.
        * config/aarch64/aarch64-elf-raw.h: Update for above changes.
        * config/aarch64/aarch64-linux.h: Likewise.

From-SVN: r226556

gcc/ChangeLog
gcc/config/aarch64/aarch64-elf-raw.h
gcc/config/aarch64/aarch64-linux.h
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.h

index bad96b6d4961efe831417af919d7a392d5e0d6e9..213bfc7bb6ce9236919fcdcfdef592721669b3c4 100644 (file)
@@ -1,3 +1,15 @@
+2015-08-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * config/aarch64/aarch64.h (TARGET_FIX_ERR_A53_835769_DEFAULT): Always
+       define to 0 or 1.
+       (TARGET_FIX_ERR_A53_835769): New macro.
+       * config/aarch64/aarch64.c (aarch64_override_options_internal): Remove
+       handling of opts->x_aarch64_fix_a53_err835769.
+       (aarch64_madd_needs_nop): Check for TARGET_FIX_ERR_A53_835769 rather
+       than aarch64_fix_a53_err835769.
+       * config/aarch64/aarch64-elf-raw.h: Update for above changes.
+       * config/aarch64/aarch64-linux.h: Likewise.
+
 2015-08-04  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.c (ix86_expand_int_movcc): Check result of
index d8c682f433f5d303766283a031d5058890673da4..ecd35908aa2208e40042ad70f546271fef6d98b6 100644 (file)
@@ -27,7 +27,7 @@
   " crtend%O%s crtn%O%s " \
   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
 
-#ifdef TARGET_FIX_ERR_A53_835769_DEFAULT
+#if TARGET_FIX_ERR_A53_835769_DEFAULT
 #define CA53_ERR_835769_SPEC \
   " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
 #else
index c51c8b27e42f01e6848eb3e57357897fd8fd5b2d..e41ca25cd7b15f9e3fd6a8e022100ee39bffabc6 100644 (file)
@@ -45,7 +45,7 @@
    %{mbig-endian:-EB} %{mlittle-endian:-EL}     \
    -maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}"
 
-#ifdef TARGET_FIX_ERR_A53_835769_DEFAULT
+#if TARGET_FIX_ERR_A53_835769_DEFAULT
 #define CA53_ERR_835769_SPEC \
   " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
 #else
index e0ae64d4a44627fb6bd09fe6cba036e192780bf6..3cd29272d33cafab7a7bc4cec7b64ed349909487 100644 (file)
@@ -7542,15 +7542,6 @@ aarch64_override_options_internal (struct gcc_options *opts)
   if (opts->x_flag_strict_volatile_bitfields < 0 && abi_version_at_least (2))
     opts->x_flag_strict_volatile_bitfields = 1;
 
-  if (opts->x_aarch64_fix_a53_err835769 == 2)
-    {
-#ifdef TARGET_FIX_ERR_A53_835769_DEFAULT
-      opts->x_aarch64_fix_a53_err835769 = 1;
-#else
-      opts->x_aarch64_fix_a53_err835769 = 0;
-#endif
-    }
-
   /* -mgeneral-regs-only sets a mask in target_flags, make sure that
      aarch64_isa_flags does not contain the FP/SIMD/Crypto feature flags
      in case some code tries reading aarch64_isa_flags directly to check if
@@ -8985,7 +8976,7 @@ aarch64_madd_needs_nop (rtx_insn* insn)
   rtx_insn *prev;
   rtx body;
 
-  if (!aarch64_fix_a53_err835769)
+  if (!TARGET_FIX_ERR_A53_835769)
     return false;
 
   if (recog_memoized (insn) < 0)
index 80a239c6cee358a6b41f548d0c2f9f78dd520639..1f8f52cede943d2e9b2435ea09f476b77e1172b0 100644 (file)
@@ -235,6 +235,20 @@ extern unsigned long aarch64_isa_flags;
 /* CRC instructions that can be enabled through +crc arch extension.  */
 #define TARGET_CRC32 (AARCH64_ISA_CRC)
 
+/* Make sure this is always defined so we don't have to check for ifdefs
+   but rather use normal ifs.  */
+#ifndef TARGET_FIX_ERR_A53_835769_DEFAULT
+#define TARGET_FIX_ERR_A53_835769_DEFAULT 0
+#else
+#undef TARGET_FIX_ERR_A53_835769_DEFAULT
+#define TARGET_FIX_ERR_A53_835769_DEFAULT 1
+#endif
+
+/* Apply the workaround for Cortex-A53 erratum 835769.  */
+#define TARGET_FIX_ERR_A53_835769      \
+  ((aarch64_fix_a53_err835769 == 2)    \
+  ? TARGET_FIX_ERR_A53_835769_DEFAULT : aarch64_fix_a53_err835769)
+
 /* Standard register usage.  */
 
 /* 31 64-bit general purpose registers R0-R30: