This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [FORTRAN mainline] dereference POINTER_PLUS_EXPR check (was tuples)


> 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.

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, 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]