]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64: Remove lazy SIMD builtin initialisation
authorRichard Sandiford <richard.sandiford@arm.com>
Mon, 5 Sep 2022 13:14:44 +0000 (14:14 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Mon, 5 Sep 2022 13:14:44 +0000 (14:14 +0100)
At one time the aarch64 port registered the Advanced SIMD builtins
lazily, when we first encountered a set of target flags that includes
+simd.  These days we always initialise them at start-up, temporarily
forcing a conducive set of flags if necessary.

This patch removes some vestiges of the old way of doing things.

gcc/
* config/aarch64/aarch64-protos.h
(aarch64_init_simd_builtins): Remove prototype.
* config/aarch64/aarch64-builtins.cc
(aarch64_simd_builtins_initialized_p): Delete.
(aarch64_init_simd_builtins): Make static.  Remove protection
against multiple calls.
* config/aarch64/aarch64-c.cc (aarch64_pragma_target_parse): Remove
lazy SIMD builtin initialization.
* config/aarch64/aarch64.cc
(aarch64_option_valid_attribute_p): Likewise.

gcc/config/aarch64/aarch64-builtins.cc
gcc/config/aarch64/aarch64-c.cc
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64.cc

index f90fda4ca974d669718a42d725d17e8c89fea689..5eef5aaa40206b953ee14db24bed50fcef391bb6 100644 (file)
@@ -1300,8 +1300,6 @@ aarch64_get_attributes (unsigned int f, machine_mode mode)
   return aarch64_add_attribute ("leaf", attrs);
 }
 
-static bool aarch64_simd_builtins_initialized_p = false;
-
 /* Due to the architecture not providing lane variant of the lane instructions
    for fcmla we can't use the standard simd builtin expansion code, but we
    still want the majority of the validation that would normally be done.  */
@@ -1586,14 +1584,9 @@ handle_arm_neon_h (void)
   aarch64_init_simd_intrinsics ();
 }
 
-void
+static void
 aarch64_init_simd_builtins (void)
 {
-  if (aarch64_simd_builtins_initialized_p)
-    return;
-
-  aarch64_simd_builtins_initialized_p = true;
-
   aarch64_init_simd_builtin_types ();
 
   /* Strong-typing hasn't been implemented for all AdvSIMD builtin intrinsics.
index 3d2fb5ec2ef33e66aaa59d216c53a29737262794..52ed4a218a87465c27b323a55f34187a5cf90416 100644 (file)
@@ -270,19 +270,6 @@ aarch64_pragma_target_parse (tree args, tree pop_target)
   if (pop_target)
     aarch64_save_restore_target_globals (pop_target);
 
-  /* Initialize SIMD builtins if we haven't already.
-     Set current_target_pragma to NULL for the duration so that
-     the builtin initialization code doesn't try to tag the functions
-     being built with the attributes specified by any current pragma, thus
-     going into an infinite recursion.  */
-  if (TARGET_SIMD)
-    {
-      tree saved_current_target_pragma = current_target_pragma;
-      current_target_pragma = NULL;
-      aarch64_init_simd_builtins ();
-      current_target_pragma = saved_current_target_pragma;
-    }
-
   return true;
 }
 
index 99af10ad534b6f9ab281c73cb6cca82ed0f3139a..5ecdb8af8638b31345373f5679622d81a90ee52f 100644 (file)
@@ -907,7 +907,6 @@ void aarch64_sve_expand_vector_init (rtx, rtx);
 void aarch64_init_cumulative_args (CUMULATIVE_ARGS *, const_tree, rtx,
                                   const_tree, unsigned, bool = false);
 void aarch64_init_expanders (void);
-void aarch64_init_simd_builtins (void);
 void aarch64_emit_call_insn (rtx);
 void aarch64_register_pragmas (void);
 void aarch64_relayout_simd_types (void);
index b12f13f4f22ab1042a79f2540cd83f495c3f1fbc..2311ad0e2b83f8c9ce110dd06b12f7699740f213 100644 (file)
@@ -18898,18 +18898,6 @@ aarch64_option_valid_attribute_p (tree fndecl, tree, tree args, int)
   if (ret)
     {
       aarch64_override_options_internal (&global_options);
-      /* Initialize SIMD builtins if we haven't already.
-        Set current_target_pragma to NULL for the duration so that
-        the builtin initialization code doesn't try to tag the functions
-        being built with the attributes specified by any current pragma, thus
-        going into an infinite recursion.  */
-      if (TARGET_SIMD)
-       {
-         tree saved_current_target_pragma = current_target_pragma;
-         current_target_pragma = NULL;
-         aarch64_init_simd_builtins ();
-         current_target_pragma = saved_current_target_pragma;
-       }
       new_target = build_target_option_node (&global_options,
                                             &global_options_set);
     }