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
This commit is contained in:
parent
a17a58505d
commit
3645c4dc1c
@ -1,3 +1,9 @@
|
||||
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
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user