Commit 3645c4dc by Richard Henderson Committed by Richard Henderson

c-common.h (DECL_C_HARD_REGISTER): New.

        * 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.

From-SVN: r37748
parent a17a5850
2000-11-25 Richard Henderson <rth@redhat.com> 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 * c-decl.c (c_expand_body): Use DECL_SOURCE_LINE rather than
lineno for the start of the function. lineno for the start of the function.
......
...@@ -686,6 +686,10 @@ extern int anon_aggr_type_p PARAMS ((tree)); ...@@ -686,6 +686,10 @@ extern int anon_aggr_type_p PARAMS ((tree));
#define CLEAR_DECL_C_BIT_FIELD(NODE) \ #define CLEAR_DECL_C_BIT_FIELD(NODE) \
(DECL_LANG_FLAG_4 (FIELD_DECL_CHECK (NODE)) = 0) (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 emit_local_var PARAMS ((tree));
extern void make_rtl_for_local_static PARAMS ((tree)); extern void make_rtl_for_local_static PARAMS ((tree));
extern tree expand_cond PARAMS ((tree)); extern tree expand_cond PARAMS ((tree));
......
...@@ -3765,7 +3765,10 @@ finish_decl (decl, init, asmspec_tree) ...@@ -3765,7 +3765,10 @@ finish_decl (decl, init, asmspec_tree)
else else
{ {
if (asmspec) 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); add_decl_stmt (decl);
} }
......
...@@ -313,9 +313,9 @@ emit_local_var (decl) ...@@ -313,9 +313,9 @@ emit_local_var (decl)
/* Create RTL for this variable. */ /* Create RTL for this variable. */
if (!DECL_RTL (decl)) if (!DECL_RTL (decl))
{ {
if (DECL_ASSEMBLER_NAME (decl) != DECL_NAME (decl)) if (DECL_C_HARD_REGISTER (decl))
/* The user must have specified an assembler name for this /* The user specified an assembler name for this variable.
variable. Set that up now. */ Set that up now. */
rest_of_decl_compilation rest_of_decl_compilation
(decl, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)), (decl, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)),
/*top_level=*/0, /*at_end=*/0); /*top_level=*/0, /*at_end=*/0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment