]> gcc.gnu.org Git - gcc.git/commitdiff
function.c (assign_parms): If TREE_ADDRESSABLE is set...
authorJason Merrill <jason@redhat.com>
Sun, 12 Nov 2000 00:11:47 +0000 (19:11 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Sun, 12 Nov 2000 00:11:47 +0000 (19:11 -0500)
        * function.c (assign_parms): If TREE_ADDRESSABLE is set, try to
        give the parm a register and then call put_var_into_stack.
        * stmt.c (expand_decl): Likewise.

cp/
        * typeck.c (mark_addressable): Don't call put_var_into_stack.

From-SVN: r37396

gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/typeck.c
gcc/function.c
gcc/stmt.c

index 7dc20bb11bea9b8af8ada059d916e49d89f306d0..c73993445d413e4e8ab52a8c194b89ec3d23492d 100644 (file)
@@ -1,3 +1,9 @@
+2000-11-11  Jason Merrill  <jason@redhat.com>
+
+       * function.c (assign_parms): If TREE_ADDRESSABLE is set, try to 
+       give the parm a register and then call put_var_into_stack.
+       * stmt.c (expand_decl): Likewise.
+
 2000-11-11  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * gcc.texi: Adjust wording.
 2000-11-11  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * gcc.texi: Adjust wording.
index 12947e1da4cd74a3cae81db9c012cc1020cced2e..1dfd37aa362032eeddc813e1bbf28aaac2923b28 100644 (file)
@@ -1,4 +1,6 @@
-2000-11-09  Jason Merrill  <jason@redhat.com>
+2000-11-11  Jason Merrill  <jason@redhat.com>
+
+       * typeck.c (mark_addressable): Don't call put_var_into_stack.
 
        * decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics
        in inlines.
 
        * decl.c (maybe_commonize_var): Set DECL_UNINLINABLE for statics
        in inlines.
index 84b648c148a3fe2462651f0f97b4c58376cadadc..06e6deee178e3db80e93ddc4f4f0dc4fa1986e3e 100644 (file)
@@ -4904,7 +4904,6 @@ mark_addressable (exp)
            if (! flag_this_is_variable)
              error ("cannot take the address of `this', which is an ravlue expression");
            TREE_ADDRESSABLE (x) = 1; /* so compiler doesn't die later */
            if (! flag_this_is_variable)
              error ("cannot take the address of `this', which is an ravlue expression");
            TREE_ADDRESSABLE (x) = 1; /* so compiler doesn't die later */
-           put_var_into_stack (x);
            return 1;
          }
       case VAR_DECL:
            return 1;
          }
       case VAR_DECL:
@@ -6797,7 +6796,7 @@ check_return_expr (retval)
 
       /* First convert the value to the function's return type, then
         to the type of return value's location to handle the
 
       /* First convert the value to the function's return type, then
         to the type of return value's location to handle the
-         case that functype is thiner than the valtype. */
+         case that functype is smaller than the valtype. */
       retval = convert_for_initialization
        (NULL_TREE, functype, retval, LOOKUP_NORMAL|LOOKUP_ONLYCONVERTING,
         "return", NULL_TREE, 0);
       retval = convert_for_initialization
        (NULL_TREE, functype, retval, LOOKUP_NORMAL|LOOKUP_ONLYCONVERTING,
         "return", NULL_TREE, 0);
index 98184eff13b2bcbf69252a3ca417a49f99520d04..ece43d3dc9dfe0d944f36da804ca79bba5285229 100644 (file)
@@ -4610,8 +4610,6 @@ assign_parms (fndecl)
       else if (! ((! optimize
                   && ! DECL_REGISTER (parm)
                   && ! DECL_INLINE (fndecl))
       else if (! ((! optimize
                   && ! DECL_REGISTER (parm)
                   && ! DECL_INLINE (fndecl))
-                 /* layout_decl may set this.  */
-                 || TREE_ADDRESSABLE (parm)
                  || TREE_SIDE_EFFECTS (parm)
                  /* If -ffloat-store specified, don't put explicit
                     float variables into registers.  */
                  || TREE_SIDE_EFFECTS (parm)
                  /* If -ffloat-store specified, don't put explicit
                     float variables into registers.  */
@@ -4695,8 +4693,6 @@ assign_parms (fndecl)
              && ! ((! optimize
                     && ! DECL_REGISTER (parm)
                     && ! DECL_INLINE (fndecl))
              && ! ((! optimize
                     && ! DECL_REGISTER (parm)
                     && ! DECL_INLINE (fndecl))
-                   /* layout_decl may set this.  */
-                   || TREE_ADDRESSABLE (parm)
                    || TREE_SIDE_EFFECTS (parm)
                    /* If -ffloat-store specified, don't put explicit
                       float variables into registers.  */
                    || TREE_SIDE_EFFECTS (parm)
                    /* If -ffloat-store specified, don't put explicit
                       float variables into registers.  */
@@ -4865,6 +4861,9 @@ assign_parms (fndecl)
            mark_reg_pointer (parmreg,
                              TYPE_ALIGN (TREE_TYPE (TREE_TYPE (parm))));
 
            mark_reg_pointer (parmreg,
                              TYPE_ALIGN (TREE_TYPE (TREE_TYPE (parm))));
 
+         /* If something wants our address, try to use ADDRESSOF.  */
+         if (TREE_ADDRESSABLE (parm))
+           put_var_into_stack (parm);
        }
       else
        {
        }
       else
        {
index cf0124b7977115b95b8c0e64d75b801c3e6dbfe3..4e42e699462408b307a724cb8218a7f0a72c3885 100644 (file)
@@ -3837,7 +3837,6 @@ expand_decl (decl)
           && !(flag_float_store
                && TREE_CODE (type) == REAL_TYPE)
           && ! TREE_THIS_VOLATILE (decl)
           && !(flag_float_store
                && TREE_CODE (type) == REAL_TYPE)
           && ! TREE_THIS_VOLATILE (decl)
-          && ! TREE_ADDRESSABLE (decl)
           && (DECL_REGISTER (decl) || optimize)
           /* if -fcheck-memory-usage, check all variables.  */
           && ! current_function_check_memory_usage)
           && (DECL_REGISTER (decl) || optimize)
           /* if -fcheck-memory-usage, check all variables.  */
           && ! current_function_check_memory_usage)
@@ -3855,6 +3854,10 @@ expand_decl (decl)
                          TYPE_ALIGN (TREE_TYPE (TREE_TYPE (decl))));
 
       maybe_set_unchanging (DECL_RTL (decl), decl);
                          TYPE_ALIGN (TREE_TYPE (TREE_TYPE (decl))));
 
       maybe_set_unchanging (DECL_RTL (decl), decl);
+
+      /* If something wants our address, try to use ADDRESSOF.  */
+      if (TREE_ADDRESSABLE (decl))
+       put_var_into_stack (decl);
     }
 
   else if (TREE_CODE (DECL_SIZE_UNIT (decl)) == INTEGER_CST
     }
 
   else if (TREE_CODE (DECL_SIZE_UNIT (decl)) == INTEGER_CST
This page took 0.125673 seconds and 5 git commands to generate.