Makefile.in (print-rtl.o): Depend on TREE_H.
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Wed, 17 Oct 2001 09:40:21 +0000 (09:40 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Wed, 17 Oct 2001 09:40:21 +0000 (05:40 -0400)
* Makefile.in (print-rtl.o): Depend on TREE_H.
* alias.c (get_alias_set): Make two passes over objects to first
see if inner object is access via restricted pointer.
Defer allocating alias set for restricted pointer until here.
Call find_placeholder with second arg nonzero.
Minor cleanups.
* c-common.c (c_apply_type_quals_to_decl): Defer getting alias
set for restricted pointer types.
* emit-rtl.c (set_mem_attributes): Set more attributes.
(set_mem_align, change_address, adjust_address_1): New functions.
(change_address_1): Now static.
(adjust_address, adjust_address_nv): Deleted.
(replace_equiv_address): Call change_address_1.
* expr.c (get_inner_reference): Handle PLACEHOLDER_EXPR.
(find_placeholder): Get starting point from PLIST arg.
(expand_expr, case PLACEHOLDER_EXPR): Initialize find_placeholder arg.
* expr.h (set_mem_align, change_address, adjust_address_1): New decls.
(adjust_address, adjust_address_nv): New macros.
* print-rtl.c (tree.h): New include.
(print_rtx, case MEM): Print all memory attributes.

From-SVN: r46314

gcc/ChangeLog
gcc/c-common.c

index 751e583..809c208 100644 (file)
@@ -6,6 +6,8 @@ Wed Oct 17 05:26:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
        Defer allocating alias set for restricted pointer until here.
        Call find_placeholder with second arg nonzero.
        Minor cleanups.
+       * c-common.c (c_apply_type_quals_to_decl): Defer getting alias
+       set for restricted pointer types.
        * emit-rtl.c (set_mem_attributes): Set more attributes.
        (set_mem_align, change_address, adjust_address_1): New functions.
        (change_address_1): Now static.
index 67b6e1e..6a4e1af 100644 (file)
@@ -2131,28 +2131,10 @@ c_apply_type_quals_to_decl (type_quals, decl)
          || !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (TREE_TYPE (decl))))
        error ("invalid use of `restrict'");
       else if (flag_strict_aliasing)
-       {
-         /* No two restricted pointers can point at the same thing.
-            However, a restricted pointer can point at the same thing
-            as an unrestricted pointer, if that unrestricted pointer
-            is based on the restricted pointer.  So, we make the
-            alias set for the restricted pointer a subset of the
-            alias set for the type pointed to by the type of the
-            decl.  */
-
-         HOST_WIDE_INT pointed_to_alias_set
-           = get_alias_set (TREE_TYPE (TREE_TYPE (decl)));
-
-         if (pointed_to_alias_set == 0)
-           /* It's not legal to make a subset of alias set zero.  */
-           ;
-         else
-           {
-             DECL_POINTER_ALIAS_SET (decl) = new_alias_set ();
-             record_alias_subset  (pointed_to_alias_set,
-                                   DECL_POINTER_ALIAS_SET (decl));
-           }
-       }
+       /* Indicate we need to make a unique alias set for this pointer.
+          We can't do it here because it might be pointing to an
+          incomplete type.  */
+       DECL_POINTER_ALIAS_SET (decl) = -2;
     }
 }