aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Macleod <amacleod@redhat.com>2011-11-25 13:35:13 +0000
committerAndrew Macleod <amacleod@redhat.com>2011-11-25 13:35:13 +0000
commit950bd9d1893bad58788e61f3fb6f966fdbe6fd18 (patch)
treeb137ccbe21de5a50b1ef9d25894e931b998042b3
parentef794b006e890cdf5f0e10af35495d8a373f5d17 (diff)
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. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@181721 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/builtins.c2
-rw-r--r--gcc/tree.h1
-rw-r--r--gcc/varasm.c4
4 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9091465a3b4..a77cf2e3c06 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/builtins.c b/gcc/builtins.c
index c9c02d10550..5ad69ceca92 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -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)
diff --git a/gcc/tree.h b/gcc/tree.h
index a76b0bc891a..fa4adac5d80 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -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);
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 2c31af91b9a..a01f49af58f 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -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;