* c-common.h (DECL_C_HARD_REGISTER): New.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 26 Nov 2000 00:40:46 +0000 (00:40 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 26 Nov 2000 00:40:46 +0000 (00:40 +0000)
        * c-decl.c (finish_decl): Set it for asm register variables.
        * c-semantics.c (emit_local_var): Test it when instantiating one.

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

gcc/ChangeLog
gcc/c-common.h
gcc/c-decl.c
gcc/c-semantics.c

index 33f3d53..e6497ee 100644 (file)
@@ -1,5 +1,11 @@
 2000-11-25  Richard Henderson  <rth@redhat.com>
 
+       * c-common.h (DECL_C_HARD_REGISTER): New.
+       * c-decl.c (finish_decl): Set it for asm register variables.
+       * c-semantics.c (emit_local_var): Test it when instantiating one.
+
+2000-11-25  Richard Henderson  <rth@redhat.com>
+
        * c-decl.c (c_expand_body): Use DECL_SOURCE_LINE rather than
        lineno for the start of the function.
 
index b27c760..94c89cf 100644 (file)
@@ -686,6 +686,10 @@ extern int anon_aggr_type_p                     PARAMS ((tree));
 #define CLEAR_DECL_C_BIT_FIELD(NODE) \
   (DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) = 0)
 
+/* In a VAR_DECL, nonzero if the decl is a register variable with
+   an explicit asm specification.  */
+#define DECL_C_HARD_REGISTER(DECL)  DECL_LANG_FLAG_4 (VAR_DECL_CHECK (DECL))
+
 extern void emit_local_var                      PARAMS ((tree));
 extern void make_rtl_for_local_static           PARAMS ((tree));
 extern tree expand_cond                         PARAMS ((tree));
index 7806819..7653479 100644 (file)
@@ -3765,7 +3765,10 @@ finish_decl (decl, init, asmspec_tree)
       else
        {
          if (asmspec)
-           DECL_ASSEMBLER_NAME (decl) = get_identifier (asmspec);
+           {
+             DECL_ASSEMBLER_NAME (decl) = get_identifier (asmspec);
+             DECL_C_HARD_REGISTER (decl) = 1;
+           }
          add_decl_stmt (decl);
        }
 
index 8988680..d5150ba 100644 (file)
@@ -313,9 +313,9 @@ emit_local_var (decl)
   /* Create RTL for this variable.  */
   if (!DECL_RTL (decl))
     {
-      if (DECL_ASSEMBLER_NAME (decl) != DECL_NAME (decl))
-       /* The user must have specified an assembler name for this
-          variable.  Set that up now.  */
+      if (DECL_C_HARD_REGISTER (decl))
+       /* The user specified an assembler name for this variable.
+          Set that up now.  */
        rest_of_decl_compilation
          (decl, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)),
           /*top_level=*/0, /*at_end=*/0);