[PATCH,fortran] Relax restrictions on KIND in SELECT CASE constructs

Steve Kargl sgk@troutmask.apl.washington.edu
Sat Dec 18 06:22:00 GMT 2004


On Sat, Dec 18, 2004 at 03:34:04AM +0100, Tobias Schl?ter wrote:
> Steve Kargl wrote:
> > +  if (e->ts.kind != case_expr->ts.kind)
> > +    {
> > +      if (e->ts.kind == gfc_kind_max(e, case_expr))
> > +	gfc_convert_type_warn (case_expr, &e->ts, 2, 0);
> > +      else
> > +	gfc_convert_type_warn (e, &case_expr->ts, 2, 0);
> > +    }
> > +
> 
> I think since this is invalid code you should warn for the conversion (i.e.
> call gfc_convert_type), and then change the dg-error lines in the testcase you
> pointed out to dg-warning.
> 

Actually, the code in the testsuite is valid code.  It's
that the testsuite assumes that it is invalid.  Sorry
for the confusion.  No warning is necessary in that the
standard Fortran conversion is assumed.  See 7.2.3.

   subroutine (x,y)
   integer*1 x
   integer y
   if (x == y) then
   else
   end if
   end

 The standard mandates that x is promoted to the kind of
 y.  The same holds for select case.


   subroutine (x,y)
   integer*1 x
   integer y
   select case (x)
   case y
   end select
   end

These are equivalent.

-- 
Steve



More information about the Fortran mailing list