sh.c (sh_gimplify_va_arg_expr): Don't substitute a RECORD_TYPE record with the type of its only member if...

* sh.c (sh_gimplify_va_arg_expr): Don't substitute a RECORD_TYPE
	record with the type of its only member if the modes don't match.

From-SVN: r103223
This commit is contained in:
Joern Rennecke 2005-08-17 20:44:24 +01:00
parent dd0ae678ee
commit c26104e494

View File

@ -6684,7 +6684,15 @@ sh_gimplify_va_arg_expr (tree valist, tree type, tree *pre_p,
&& (TREE_CODE (TREE_TYPE (TYPE_FIELDS (type))) == REAL_TYPE
|| TREE_CODE (TREE_TYPE (TYPE_FIELDS (type))) == COMPLEX_TYPE)
&& TREE_CHAIN (TYPE_FIELDS (type)) == NULL_TREE)
type = TREE_TYPE (TYPE_FIELDS (type));
{
tree field_type = TREE_TYPE (TYPE_FIELDS (type));
if (TYPE_MODE (type) == TYPE_MODE (field_type))
type = field_type;
else
gcc_assert (TYPE_ALIGN (type)
< GET_MODE_ALIGNMENT (TYPE_MODE (field_type)));
}
if (TARGET_SH4)
{