[PATCH] Fix PR79894

Richard Biener rguenther@suse.de
Mon Mar 6 12:01:00 GMT 2017

The Fortran FE creates non-1:1 type compatible complex-expr / 
realpart-expr in this case and thus like other FEs it can't expect
fold to end up with 1:1 type compatible results.

Testing on x86_64-unknown-linux-gnu in progress.

Ok for trunk?


2017-03-06  Richard Biener  <rguenther@suse.de>

	PR fortran/79894
	* trans.c (gfc_add_modify_loc): Weaken assert.

Index: gcc/fortran/trans.c
--- gcc/fortran/trans.c	(revision 245913)
+++ gcc/fortran/trans.c	(working copy)
@@ -151,11 +151,11 @@ gfc_add_modify_loc (location_t loc, stmt
   tree t1, t2;
   t1 = TREE_TYPE (rhs);
   t2 = TREE_TYPE (lhs);
-  /* Make sure that the types of the rhs and the lhs are the same
+  /* Make sure that the types of the rhs and the lhs are compatible
      for scalar assignments.  We should probably have something
      similar for aggregates, but right now removing that check just
      breaks everything.  */
-  gcc_checking_assert (t1 == t2
+  gcc_checking_assert (TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2)
 		       || AGGREGATE_TYPE_P (TREE_TYPE (lhs)));
   tmp = fold_build2_loc (loc, MODIFY_EXPR, void_type_node, lhs,

More information about the Gcc-patches mailing list