[Bug rtl-optimization/54342] [4.8 Regression] Wrong mode of call argument
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Aug 21 11:08:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54342
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |4.8.0
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-08-21 11:08:27 UTC ---
> diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
> index 53554a9..bb39e7f 100644
> --- a/gcc/stor-layout.c
> +++ b/gcc/stor-layout.c
> @@ -1639,7 +1639,8 @@ compute_record_mode (tree type)
> /* If we only have one real field; use its mode if that mode's size
> matches the type's size. This only applies to RECORD_TYPE. This
> does not apply to unions. */
> - if (TREE_CODE (type) == RECORD_TYPE && mode != VOIDmode
> + if ((TREE_CODE (type) == RECORD_TYPE || TREE_CODE (type) == UNION_TYPE)
> + && mode != VOIDmode
> && host_integerp (TYPE_SIZE (type), 1)
> && GET_MODE_BITSIZE (mode) == TREE_INT_CST_LOW (TYPE_SIZE (type)))
> SET_TYPE_MODE (type, mode);
Reading the comment immediately makes the patch suspicious.
More information about the Gcc-bugs
mailing list