Hello world,

the attached, rather simple, patch, fixes a regression where
the locus was not set, leading to an ICE on a warning.

Regression-tested on trunk. OK on all affected and open branches
(7/6/5)?

Regards

        Thomas

2016-11-01  Thomas Koenig  <tkoe...@gcc.gnu.org>

        PR fortran/69544
        * match.c (gfc_match_where):  Fill in locus for assigment
        in simple WHERE statement.

2016-11-01  Thomas Koenig  <tkoe...@gcc.gnu.org>

        PR fortran/69544
        * gfortran.dg/where_5.f90:  New test.
Index: match.c
===================================================================
--- match.c	(Revision 241590)
+++ match.c	(Arbeitskopie)
@@ -6265,8 +6265,12 @@ gfc_match_where (gfc_statement *st)
   c = gfc_get_code (EXEC_WHERE);
   c->expr1 = expr;
 
+  /* Put in the assignment.  It will not be processed by add_statement, so we
+     need to copy the location here. */
+
   c->next = XCNEW (gfc_code);
   *c->next = new_st;
+  c->next->loc = gfc_current_locus;
   gfc_clear_new_st ();
 
   new_st.op = EXEC_WHERE;
! { dg-do compile }
! { dg-options "-Wcharacter-truncation" }
subroutine where_ice (i,j)
     
  implicit none

  character(8)  :: y(10,10,2)

  integer       :: i
  integer       :: j

  character(12) :: txt(5)
  where (txt(1:3) /= ''   )  y(1:3,i,j) = txt(1:3) ! { dg-warning "CHARACTER expression will be truncated" }

end subroutine where_ice

Reply via email to