Commit 3c5ad1ff by Richard Kenner Committed by Richard Kenner

Makefile.in (print-rtl.o): Depend on TREE_H.

	* 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
parent 738cc472
...@@ -6,6 +6,8 @@ Wed Oct 17 05:26:39 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> ...@@ -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. Defer allocating alias set for restricted pointer until here.
Call find_placeholder with second arg nonzero. Call find_placeholder with second arg nonzero.
Minor cleanups. 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. * emit-rtl.c (set_mem_attributes): Set more attributes.
(set_mem_align, change_address, adjust_address_1): New functions. (set_mem_align, change_address, adjust_address_1): New functions.
(change_address_1): Now static. (change_address_1): Now static.
......
...@@ -2131,28 +2131,10 @@ c_apply_type_quals_to_decl (type_quals, decl) ...@@ -2131,28 +2131,10 @@ c_apply_type_quals_to_decl (type_quals, decl)
|| !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (TREE_TYPE (decl)))) || !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (TREE_TYPE (decl))))
error ("invalid use of `restrict'"); error ("invalid use of `restrict'");
else if (flag_strict_aliasing) else if (flag_strict_aliasing)
{ /* Indicate we need to make a unique alias set for this pointer.
/* No two restricted pointers can point at the same thing. We can't do it here because it might be pointing to an
However, a restricted pointer can point at the same thing incomplete type. */
as an unrestricted pointer, if that unrestricted pointer DECL_POINTER_ALIAS_SET (decl) = -2;
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));
}
}
} }
} }
......
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