]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
sparc.c (def_builtin): Change from macro into function.
authorDavid S. Miller <davem@davemloft.net>
Wed, 21 Sep 2011 08:13:36 +0000 (08:13 +0000)
committerDavid S. Miller <davem@gcc.gnu.org>
Wed, 21 Sep 2011 08:13:36 +0000 (01:13 -0700)
* config/sparc/sparc.c (def_builtin): Change from macro into function.
(def_builtin_const): New.
(sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
other than alignaddr and falignaddr.

From-SVN: r179035

gcc/ChangeLog
gcc/config/sparc/sparc.c

index afec0a443982450ee498a728ba7c7c7be866c4eb..d1265fb6e0164e2d892e30c6066762537a6f48bf 100644 (file)
@@ -1,3 +1,10 @@
+2011-09-21  David S. Miller  <davem@davemloft.net>
+
+       * config/sparc/sparc.c (def_builtin): Change from macro into function.
+       (def_builtin_const): New.
+       (sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
+       other than alignaddr and falignaddr.
+
 2011-09-21  Tom de Vries  <tom@codesourcery.com>
 
        * final.c (final): Handle if JUMP_LABEL is not LABEL_P.
index 68b5961bd38215bd9423d5d78d164c788bb9a054..7533307e4a21dce8c5f1d76abd31575a543c73ce 100644 (file)
@@ -9100,9 +9100,21 @@ sparc_init_libfuncs (void)
     }
 }
 \f
-#define def_builtin(NAME, CODE, TYPE) \
-  add_builtin_function((NAME), (TYPE), (CODE), BUILT_IN_MD, NULL, \
-                       NULL_TREE)
+static tree def_builtin(const char *name, int code, tree type)
+{
+  return add_builtin_function(name, type, code, BUILT_IN_MD, NULL,
+                             NULL_TREE);
+}
+
+static tree def_builtin_const(const char *name, int code, tree type)
+{
+  tree t = def_builtin(name, code, type);
+
+  if (t)
+    TREE_READONLY (t) = 1;
+
+  return t;
+}
 
 /* Implement the TARGET_INIT_BUILTINS target hook.
    Create builtin functions for special SPARC instructions.  */
@@ -9154,30 +9166,32 @@ sparc_vis_init_builtins (void)
                                                    ptr_type_node, 0);
 
   /* Packing and expanding vectors.  */
-  def_builtin ("__builtin_vis_fpack16", CODE_FOR_fpack16_vis, v4qi_ftype_v4hi);
-  def_builtin ("__builtin_vis_fpack32", CODE_FOR_fpack32_vis,
-              v8qi_ftype_v2si_v8qi);
-  def_builtin ("__builtin_vis_fpackfix", CODE_FOR_fpackfix_vis,
-              v2hi_ftype_v2si);
-  def_builtin ("__builtin_vis_fexpand", CODE_FOR_fexpand_vis, v4hi_ftype_v4qi);
-  def_builtin ("__builtin_vis_fpmerge", CODE_FOR_fpmerge_vis,
-              v8qi_ftype_v4qi_v4qi);
+  def_builtin_const ("__builtin_vis_fpack16", CODE_FOR_fpack16_vis,
+                    v4qi_ftype_v4hi);
+  def_builtin_const ("__builtin_vis_fpack32", CODE_FOR_fpack32_vis,
+                    v8qi_ftype_v2si_v8qi);
+  def_builtin_const ("__builtin_vis_fpackfix", CODE_FOR_fpackfix_vis,
+                    v2hi_ftype_v2si);
+  def_builtin_const ("__builtin_vis_fexpand", CODE_FOR_fexpand_vis,
+                    v4hi_ftype_v4qi);
+  def_builtin_const ("__builtin_vis_fpmerge", CODE_FOR_fpmerge_vis,
+                    v8qi_ftype_v4qi_v4qi);
 
   /* Multiplications.  */
-  def_builtin ("__builtin_vis_fmul8x16", CODE_FOR_fmul8x16_vis,
-              v4hi_ftype_v4qi_v4hi);
-  def_builtin ("__builtin_vis_fmul8x16au", CODE_FOR_fmul8x16au_vis,
-              v4hi_ftype_v4qi_v2hi);
-  def_builtin ("__builtin_vis_fmul8x16al", CODE_FOR_fmul8x16al_vis,
-              v4hi_ftype_v4qi_v2hi);
-  def_builtin ("__builtin_vis_fmul8sux16", CODE_FOR_fmul8sux16_vis,
-              v4hi_ftype_v8qi_v4hi);
-  def_builtin ("__builtin_vis_fmul8ulx16", CODE_FOR_fmul8ulx16_vis,
-              v4hi_ftype_v8qi_v4hi);
-  def_builtin ("__builtin_vis_fmuld8sux16", CODE_FOR_fmuld8sux16_vis,
-              v2si_ftype_v4qi_v2hi);
-  def_builtin ("__builtin_vis_fmuld8ulx16", CODE_FOR_fmuld8ulx16_vis,
-              v2si_ftype_v4qi_v2hi);
+  def_builtin_const ("__builtin_vis_fmul8x16", CODE_FOR_fmul8x16_vis,
+                    v4hi_ftype_v4qi_v4hi);
+  def_builtin_const ("__builtin_vis_fmul8x16au", CODE_FOR_fmul8x16au_vis,
+                    v4hi_ftype_v4qi_v2hi);
+  def_builtin_const ("__builtin_vis_fmul8x16al", CODE_FOR_fmul8x16al_vis,
+                    v4hi_ftype_v4qi_v2hi);
+  def_builtin_const ("__builtin_vis_fmul8sux16", CODE_FOR_fmul8sux16_vis,
+                    v4hi_ftype_v8qi_v4hi);
+  def_builtin_const ("__builtin_vis_fmul8ulx16", CODE_FOR_fmul8ulx16_vis,
+                    v4hi_ftype_v8qi_v4hi);
+  def_builtin_const ("__builtin_vis_fmuld8sux16", CODE_FOR_fmuld8sux16_vis,
+                    v2si_ftype_v4qi_v2hi);
+  def_builtin_const ("__builtin_vis_fmuld8ulx16", CODE_FOR_fmuld8ulx16_vis,
+                    v2si_ftype_v4qi_v2hi);
 
   /* Data aligning.  */
   def_builtin ("__builtin_vis_faligndatav4hi", CODE_FOR_faligndatav4hi_vis,
@@ -9187,7 +9201,7 @@ sparc_vis_init_builtins (void)
   def_builtin ("__builtin_vis_faligndatav2si", CODE_FOR_faligndatav2si_vis,
               v2si_ftype_v2si_v2si);
   def_builtin ("__builtin_vis_faligndatadi", CODE_FOR_faligndatadi_vis,
-               di_ftype_di_di);
+              di_ftype_di_di);
   if (TARGET_ARCH64)
     {
       def_builtin ("__builtin_vis_alignaddr", CODE_FOR_alignaddrdi_vis,
@@ -9204,39 +9218,39 @@ sparc_vis_init_builtins (void)
     }
 
   /* Pixel distance.  */
-  def_builtin ("__builtin_vis_pdist", CODE_FOR_pdist_vis,
-              di_ftype_v8qi_v8qi_di);
+  def_builtin_const ("__builtin_vis_pdist", CODE_FOR_pdist_vis,
+                    di_ftype_v8qi_v8qi_di);
 
   /* Edge handling.  */
   if (TARGET_ARCH64)
     {
-      def_builtin ("__builtin_vis_edge8", CODE_FOR_edge8di_vis,
-                  si_ftype_ptr_ptr);
-      def_builtin ("__builtin_vis_edge8l", CODE_FOR_edge8ldi_vis,
-                  si_ftype_ptr_ptr);
-      def_builtin ("__builtin_vis_edge16", CODE_FOR_edge16di_vis,
-                  si_ftype_ptr_ptr);
-      def_builtin ("__builtin_vis_edge16l", CODE_FOR_edge16ldi_vis,
-                  si_ftype_ptr_ptr);
-      def_builtin ("__builtin_vis_edge32", CODE_FOR_edge32di_vis,
-                  si_ftype_ptr_ptr);
-      def_builtin ("__builtin_vis_edge32l", CODE_FOR_edge32ldi_vis,
-                  si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge8", CODE_FOR_edge8di_vis,
+                        si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge8l", CODE_FOR_edge8ldi_vis,
+                        si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge16", CODE_FOR_edge16di_vis,
+                        si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge16l", CODE_FOR_edge16ldi_vis,
+                        si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge32", CODE_FOR_edge32di_vis,
+                        si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge32l", CODE_FOR_edge32ldi_vis,
+                        si_ftype_ptr_ptr);
     }
   else
     {
-      def_builtin ("__builtin_vis_edge8", CODE_FOR_edge8si_vis,
-                  si_ftype_ptr_ptr);
-      def_builtin ("__builtin_vis_edge8l", CODE_FOR_edge8lsi_vis,
-                  si_ftype_ptr_ptr);
-      def_builtin ("__builtin_vis_edge16", CODE_FOR_edge16si_vis,
-                  si_ftype_ptr_ptr);
-      def_builtin ("__builtin_vis_edge16l", CODE_FOR_edge16lsi_vis,
-                  si_ftype_ptr_ptr);
-      def_builtin ("__builtin_vis_edge32", CODE_FOR_edge32si_vis,
-                  si_ftype_ptr_ptr);
-      def_builtin ("__builtin_vis_edge32l", CODE_FOR_edge32lsi_vis,
-                  si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge8", CODE_FOR_edge8si_vis,
+                        si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge8l", CODE_FOR_edge8lsi_vis,
+                        si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge16", CODE_FOR_edge16si_vis,
+                        si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge16l", CODE_FOR_edge16lsi_vis,
+                        si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge32", CODE_FOR_edge32si_vis,
+                        si_ftype_ptr_ptr);
+      def_builtin_const ("__builtin_vis_edge32l", CODE_FOR_edge32lsi_vis,
+                        si_ftype_ptr_ptr);
     }
 }