typeck.c (mark_addressable): Don't test TREE_ADDRESSABLE early.

* typeck.c (mark_addressable): Don't test TREE_ADDRESSABLE early.
        Call put_var_into_stack.
	* g++.dg/opt/asm1.C: New.

From-SVN: r54864
This commit is contained in:
Richard Henderson 2002-06-20 16:25:11 -07:00 committed by Richard Henderson
parent 67c0982255
commit c883fe8951
2 changed files with 10 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2002-06-20 Richard Henderson <rth@redhat.com>
PR c++/6747
* typeck.c (mark_addressable): Don't test TREE_ADDRESSABLE early.
Call put_var_into_stack.
2002-06-20 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/6892

View File

@ -4806,9 +4806,6 @@ mark_addressable (exp)
{
register tree x = exp;
if (TREE_ADDRESSABLE (x) == 1)
return 1;
while (1)
switch (TREE_CODE (x))
{
@ -4827,6 +4824,8 @@ mark_addressable (exp)
TREE_ADDRESSABLE (x) = 1; /* so compiler doesn't die later */
return 1;
}
/* FALLTHRU */
case VAR_DECL:
/* Caller should not be trying to mark initialized
constant fields addressable. */
@ -4834,6 +4833,7 @@ mark_addressable (exp)
|| DECL_IN_AGGR_P (x) == 0
|| TREE_STATIC (x)
|| DECL_EXTERNAL (x), 314);
/* FALLTHRU */
case CONST_DECL:
case RESULT_DECL:
@ -4842,6 +4842,7 @@ mark_addressable (exp)
warning ("address requested for `%D', which is declared `register'",
x);
TREE_ADDRESSABLE (x) = 1;
put_var_into_stack (x);
return 1;
case FUNCTION_DECL: