Commit d466b407 by Michael Matz Committed by Michael Matz

cfgexpand.c (expand_one_register_var): Use get_pointer_alignment.

	* cfgexpand.c (expand_one_register_var): Use get_pointer_alignment.
	(gimple_expand_cfg): Merge alignment info for coalesced pointer
	SSA names.

From-SVN: r177989
parent bfcbe068
2011-08-12 Michael Matz <matz@suse.de>
* cfgexpand.c (expand_one_register_var): Use get_pointer_alignment.
(gimple_expand_cfg): Merge alignment info for coalesced pointer
SSA names.
2011-08-23 Richard Guenther <rguenther@suse.de> 2011-08-23 Richard Guenther <rguenther@suse.de>
* Makefile.in (tree-data-ref.o): Add tree-affine.h dependency. * Makefile.in (tree-data-ref.o): Add tree-affine.h dependency.
......
...@@ -909,7 +909,7 @@ expand_one_register_var (tree var) ...@@ -909,7 +909,7 @@ expand_one_register_var (tree var)
mark_user_reg (x); mark_user_reg (x);
if (POINTER_TYPE_P (type)) if (POINTER_TYPE_P (type))
mark_reg_pointer (x, TYPE_ALIGN (TREE_TYPE (type))); mark_reg_pointer (x, get_pointer_alignment (var));
} }
/* A subroutine of expand_one_var. Called to assign rtl to a VAR_DECL that /* A subroutine of expand_one_var. Called to assign rtl to a VAR_DECL that
...@@ -4265,6 +4265,31 @@ gimple_expand_cfg (void) ...@@ -4265,6 +4265,31 @@ gimple_expand_cfg (void)
} }
} }
/* If we have a class containing differently aligned pointers
we need to merge those into the corresponding RTL pointer
alignment. */
for (i = 1; i < num_ssa_names; i++)
{
tree name = ssa_name (i);
int part;
rtx r;
if (!name
|| !POINTER_TYPE_P (TREE_TYPE (name))
/* We might have generated new SSA names in
update_alias_info_with_stack_vars. They will have a NULL
defining statements, and won't be part of the partitioning,
so ignore those. */
|| !SSA_NAME_DEF_STMT (name))
continue;
part = var_to_partition (SA.map, name);
if (part == NO_PARTITION)
continue;
r = SA.partition_to_pseudo[part];
if (REG_P (r))
mark_reg_pointer (r, get_pointer_alignment (name));
}
/* If this function is `main', emit a call to `__main' /* If this function is `main', emit a call to `__main'
to run global initializers, etc. */ to run global initializers, etc. */
if (DECL_NAME (current_function_decl) if (DECL_NAME (current_function_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