[FORTRAN mainline] dereference POINTER_PLUS_EXPR check (was tuples)
Richard Guenther
richard.guenther@gmail.com
Fri Nov 23 15:13:00 GMT 2007
On Nov 23, 2007 1:27 AM, Aldy Hernandez <aldyh@redhat.com> wrote:
> > It should use the type of DEST, all pointers are trivially convertible
> > to void *,
> > which is the formal argument of memset (in the ChangeLog you have memmove).
> >
> > Not that it makes a big difference here (in the end we try to be type-exact in
> > one expression tree, but as the expression result type will vanish with tuples,
> > there won't a difference for both cases).
>
> Fixed below.
>
> > I wonder if the problem you see has been fixed with the fix for PR31608 which
> > went in a few days ago?
>
> No. Latest mainline still exhibited the same problem. The P_P_E was
> still wrong.
>
> I know Tobias approved the patch, but let me know if this updated one
> using the type of [dest] is what you wanted.
Yes, thanks.
Richard.
> No regressions on fortran tests.
>
> Aldy
>
> * trans-expr.c (gfc_trans_string_copy): Use "void *" when building a
> memset.
>
> --- trans-expr.c (revision 130355)
> +++ trans-expr.c (local)
> @@ -2701,7 +2701,7 @@ gfc_trans_string_copy (stmtblock_t * blo
> tmp3 = build_call_expr (built_in_decls[BUILT_IN_MEMMOVE],
> 3, dest, src, slen);
>
> - tmp4 = fold_build2 (POINTER_PLUS_EXPR, pchar_type_node, dest,
> + tmp4 = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (dest), dest,
>
> fold_convert (sizetype, slen));
> tmp4 = build_call_expr (built_in_decls[BUILT_IN_MEMSET], 3,
> tmp4,
>
More information about the Fortran
mailing list