re PR middle-end/46314 (frontends use ASM_GENERATE_INTERNAL_LABEL)
authorJoern Rennecke <amylaar@spamcop.net>
Sat, 6 Nov 2010 15:04:52 +0000 (15:04 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Sat, 6 Nov 2010 15:04:52 +0000 (15:04 +0000)
PR middle-end/46314
gcc:
* target.def (generate_internal_label): New asm_out hook.
* output.h (default_generate_internal_label): Declare.
* varasm.c (default_generate_internal_label): Define.
gcc/cp:
* method.c (make_alias_for_thunk):
Use targetm.asm_out.generate_internal_label.
gcc/java:
* class.c: Include target.h.
(make_local_function_alias):
Use targetm.asm_out.generate_internal_label.
* expr.c (lookup_label, generate_name): Likewise.

From-SVN: r166404

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/method.c
gcc/java/ChangeLog
gcc/java/class.c
gcc/java/expr.c
gcc/output.h
gcc/target.def
gcc/varasm.c

index e3f26e8969bb0f9ada648a29ed2f060c709da774..9809534250e537121fde2f7b9c2ba4d28a775e3c 100644 (file)
@@ -1,3 +1,10 @@
+2010-11-06  Joern Rennecke  <amylaar@spamcop.net>
+
+       PR middle-end/46314
+       * target.def (generate_internal_label): New asm_out hook.
+       * output.h (default_generate_internal_label): Declare.
+       * varasm.c (default_generate_internal_label): Define.
+
 2010-11-06  Iain Sandoe  <iains@gcc.gnu.org>
 
        PR target/44981
index cab1040c6ddcfdc10ebc4074ddc94efbc285ef1f..bfa4af439166dd346e8a1abf9be0011d797c0acc 100644 (file)
@@ -1,3 +1,9 @@
+2010-11-06  Joern Rennecke  <amylaar@spamcop.net>
+
+       PR middle-end/46314
+       * method.c (make_alias_for_thunk):
+       Use targetm.asm_out.generate_internal_label.
+
 2010-11-05  Jason Merrill  <jason@redhat.com>
 
        PR c++/45473
index c1d30d476a1c3f6eb89f6158b170f13b514e572d..d0ed0f4e9cb34734d49cc8aaae14f2aede025c5d 100644 (file)
@@ -252,7 +252,7 @@ make_alias_for_thunk (tree function)
   tree alias;
   char buf[256];
 
-  ASM_GENERATE_INTERNAL_LABEL (buf, "LTHUNK", thunk_labelno);
+  targetm.asm_out.generate_internal_label (buf, "LTHUNK", thunk_labelno);
   thunk_labelno++;
 
   alias = make_alias_for (function, get_identifier (buf));
index ae89444eb1e9f03134a1c54d63dcdb9bac2bdfde..4b9767768fe6675db16068d54d2f6d90fe326e33 100644 (file)
@@ -1,3 +1,11 @@
+2010-11-06  Joern Rennecke  <amylaar@spamcop.net>
+
+       PR middle-end/46314
+       * class.c: Include target.h.
+       (make_local_function_alias):
+       Use targetm.asm_out.generate_internal_label.
+       * expr.c (lookup_label, generate_name): Likewise.
+
 2010-11-03  Joern Rennecke  <joern.rennecke@embecosm.com>
 
        PR bootstrap/44335
index ece261b8dd310e1a96cbbfcdc73a8e7a06379201..a1dc9c08b2597027a28fad7cb0023b470ea62d32 100644 (file)
@@ -43,6 +43,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "tree-iterator.h"
 #include "vecprim.h"
 #include "tm.h"         /* FIXME: For gcc_obstack_init from defaults.h.  */
+#include "target.h"
 
 /* DOS brain-damage */
 #ifndef O_BINARY
@@ -1399,7 +1400,7 @@ make_local_function_alias (tree method)
   *name = 'L';
   strcpy (name + 1, method_name);
 
-  ASM_GENERATE_INTERNAL_LABEL (buf, name, alias_labelno++);  
+  targetm.asm_out.generate_internal_label (buf, name, alias_labelno++);  
   alias = build_decl (input_location,
                      FUNCTION_DECL, get_identifier (buf),
                      TREE_TYPE (method));
index 9f9667fa88ae55155e37246fefd51a92409fc1bd..85cf1a2bcaeea309a25abc7cac22c5fdcc759da3 100644 (file)
@@ -1763,7 +1763,8 @@ lookup_label (int pc)
   char buf[32];
   if (pc > highest_label_pc_this_method)
     highest_label_pc_this_method = pc;
-  ASM_GENERATE_INTERNAL_LABEL(buf, "LJpc=", start_label_pc_this_method + pc);
+  targetm.asm_out.generate_internal_label (buf, "LJpc=",
+                                          start_label_pc_this_method + pc);
   name = get_identifier (buf);
   if (IDENTIFIER_LOCAL_VALUE (name))
     return IDENTIFIER_LOCAL_VALUE (name);
@@ -1783,7 +1784,7 @@ generate_name (void)
 {
   static int l_number = 0;
   char buff [32];
-  ASM_GENERATE_INTERNAL_LABEL(buff, "LJv", l_number);
+  targetm.asm_out.generate_internal_label (buff, "LJv", l_number);
   l_number++;
   return get_identifier (buff);
 }
index 2a70fd25bdd4b34ae5efa5b0f625c6ee9dc6ce37..fa223d5cf7e64b8ebf20cf2741273c16769823ab 100644 (file)
@@ -627,6 +627,8 @@ extern void default_globalize_label (FILE *, const char *);
 extern void default_globalize_decl_name (FILE *, tree);
 extern void default_emit_unwind_label (FILE *, tree, int, int);
 extern void default_emit_except_table_label (FILE *);
+extern void default_generate_internal_label (char *, const char *,
+                                            unsigned long);
 extern void default_internal_label (FILE *, const char *, unsigned long);
 extern void default_asm_declare_constant_name (FILE *, const char *,
                                               const_tree, HOST_WIDE_INT);
index 7e014c7e625edd45d973cfd17e006a5db21db785..66006aee9f9129c3f99c05f3c02e948fe6a8d003 100644 (file)
@@ -200,6 +200,14 @@ DEFHOOKPOD
  be called afterward.",
  bool, true)
 
+/* Generate an internal label.
+   For now this is just a wrapper for ASM_GENERATE_INTERNAL_LABEL.  */
+DEFHOOK_UNDOC
+(generate_internal_label,
+ "",
+ void, (char *buf, const char *prefix, unsigned long labelno),
+ default_generate_internal_label)
+
 /* Output an internal label.  */
 DEFHOOK
 (internal_label,
index 4739410081a4a361255bcad91d8ae337eac1d569..fe60bb2397d3657700f72db10889ad10888d40c4 100644 (file)
@@ -6607,6 +6607,16 @@ default_emit_except_table_label (FILE * stream ATTRIBUTE_UNUSED)
 {
 }
 
+/* This is how to output an internal numbered label where PREFIX is
+   the class of label and LABELNO is the number within the class.  */
+
+void
+default_generate_internal_label (char *buf, const char *prefix,
+                                unsigned long labelno)
+{
+  ASM_GENERATE_INTERNAL_LABEL (buf, prefix, labelno);
+}
+
 /* This is how to output an internal numbered label where PREFIX is
    the class of label and LABELNO is the number within the class.  */