OSDN Git Service

2011-11-24 Andrew MacLeod <amacleod@redhat.com>
authoramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Nov 2011 13:35:13 +0000 (13:35 +0000)
committeramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Nov 2011 13:35:13 +0000 (13:35 +0000)
PR other/51011
* tree.h (is_builtin_name): No longer external.
* builtins.c (is_builtin_name): Make static.
* varasm.c (incorporeal_function_p): __sync and __atomic external calls
are not incorporeal and may need asm label processing.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181721 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/builtins.c
gcc/tree.h
gcc/varasm.c

index 9091465..a77cf2e 100644 (file)
@@ -1,3 +1,11 @@
+2011-11-24  Andrew MacLeod  <amacleod@redhat.com>
+
+       PR other/51011
+       * tree.h (is_builtin_name): No longer external.
+       * builtins.c (is_builtin_name): Make static.
+       * varasm.c (incorporeal_function_p): __sync and __atomic external calls
+       are not incorporeal and may need asm label processing.
+
 2011-11-25  Georg-Johann Lay  <avr@gjlay.de>
 
        PR target/50566
index c9c02d1..5ad69ce 100644 (file)
@@ -227,7 +227,7 @@ static void expand_builtin_sync_synchronize (void);
 
 /* Return true if NAME starts with __builtin_ or __sync_.  */
 
-bool
+static bool
 is_builtin_name (const char *name)
 {
   if (strncmp (name, "__builtin_", 10) == 0)
index a76b0bc..fa4adac 100644 (file)
@@ -5460,7 +5460,6 @@ extern tree build_va_arg_indirect_ref (tree);
 extern tree build_string_literal (int, const char *);
 extern bool validate_arglist (const_tree, ...);
 extern rtx builtin_memset_read_str (void *, HOST_WIDE_INT, enum machine_mode);
-extern bool is_builtin_name (const char *);
 extern bool is_builtin_fn (tree);
 extern unsigned int get_object_alignment_1 (tree, unsigned HOST_WIDE_INT *);
 extern unsigned int get_object_alignment (tree);
index 2c31af9..a01f49a 100644 (file)
@@ -2109,7 +2109,9 @@ incorporeal_function_p (tree decl)
        return true;
 
       name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
-      if (is_builtin_name (name))
+      /* Atomic or sync builtins which have survived this far will be
+        resolved externally and therefore are not incorporeal.  */
+      if (strncmp (name, "__builtin_", 10) == 0)
        return true;
     }
   return false;