diff mbox

PR fortran/77372

Message ID 20160825221328.GA96344@troutmask.apl.washington.edu
State New
Headers show

Commit Message

Steve Kargl Aug. 25, 2016, 10:13 p.m. UTC
I plan to commit the following patch on Saturday if
no one objects in the next 40 or so hours.

2016-08-25  Steven G. Kargl <kargl@gcc.gnu.org>

	PR fortran/77372
	simplify.c (simplify_ieee_selected_real_kind): Check for NULL pointers.

2016-08-25  Steven G. Kargl <kargl@gcc.gnu.org>

	PR fortran/77372
	gfortran.dg/pr77372.f90: New test.

Comments

Andreas Schwab Aug. 29, 2016, 9:10 a.m. UTC | #1
On Aug 26 2016, Steve Kargl <sgk@troutmask.apl.washington.edu> wrote:

> 2016-08-25  Steven G. Kargl <kargl@gcc.gnu.org>
>
> 	PR fortran/77372
> 	gfortran.dg/pr77372.f90: New test.

FAIL: gfortran.dg/pr77372.f90   -O  (test for excess errors)
Excess errors:
/usr/local/gcc/gcc-20160829/gcc/testsuite/gfortran.dg/pr77372.f90:3:7: Fatal Error: Can't open module file 'ieee_arithmetic.mod' for reading at (1): No such file or directory
compilation terminated.

Andreas.
Steve Kargl Aug. 29, 2016, 3:01 p.m. UTC | #2
On Mon, Aug 29, 2016 at 11:10:41AM +0200, Andreas Schwab wrote:
> On Aug 26 2016, Steve Kargl <sgk@troutmask.apl.washington.edu> wrote:
> 
> > 2016-08-25  Steven G. Kargl <kargl@gcc.gnu.org>
> >
> > 	PR fortran/77372
> > 	gfortran.dg/pr77372.f90: New test.
> 
> FAIL: gfortran.dg/pr77372.f90   -O  (test for excess errors)
> Excess errors:
> /usr/local/gcc/gcc-20160829/gcc/testsuite/gfortran.dg/pr77372.f90:3:7: Fatal Error: Can't open module file 'ieee_arithmetic.mod' for reading at (1): No such file or directory
> compilation terminated.
> 

Does it FAIL if you move the test into the gfortran.dg/ieee
directory?
Andreas Schwab Aug. 29, 2016, 3:09 p.m. UTC | #3
On Aug 29 2016, Steve Kargl <sgk@troutmask.apl.washington.edu> wrote:

> On Mon, Aug 29, 2016 at 11:10:41AM +0200, Andreas Schwab wrote:
>> On Aug 26 2016, Steve Kargl <sgk@troutmask.apl.washington.edu> wrote:
>> 
>> > 2016-08-25  Steven G. Kargl <kargl@gcc.gnu.org>
>> >
>> > 	PR fortran/77372
>> > 	gfortran.dg/pr77372.f90: New test.
>> 
>> FAIL: gfortran.dg/pr77372.f90   -O  (test for excess errors)
>> Excess errors:
>> /usr/local/gcc/gcc-20160829/gcc/testsuite/gfortran.dg/pr77372.f90:3:7: Fatal Error: Can't open module file 'ieee_arithmetic.mod' for reading at (1): No such file or directory
>> compilation terminated.
>> 
>
> Does it FAIL if you move the test into the gfortran.dg/ieee
> directory?

With that change it passes.

Andreas.
Steven G. Kargl Aug. 29, 2016, 4:27 p.m. UTC | #4
On Mon, Aug 29, 2016 at 05:09:59PM +0200, Andreas Schwab wrote:
> On Aug 29 2016, Steve Kargl <sgk@troutmask.apl.washington.edu> wrote:
> 
> > On Mon, Aug 29, 2016 at 11:10:41AM +0200, Andreas Schwab wrote:
> >> On Aug 26 2016, Steve Kargl <sgk@troutmask.apl.washington.edu> wrote:
> >> 
> >> > 2016-08-25  Steven G. Kargl <kargl@gcc.gnu.org>
> >> >
> >> > 	PR fortran/77372
> >> > 	gfortran.dg/pr77372.f90: New test.
> >> 
> >> FAIL: gfortran.dg/pr77372.f90   -O  (test for excess errors)
> >> Excess errors:
> >> /usr/local/gcc/gcc-20160829/gcc/testsuite/gfortran.dg/pr77372.f90:3:7: Fatal Error: Can't open module file 'ieee_arithmetic.mod' for reading at (1): No such file or directory
> >> compilation terminated.
> >> 
> >
> > Does it FAIL if you move the test into the gfortran.dg/ieee
> > directory?
> 
> With that change it passes.

Thanks for checking.  Seems that some targets need 
ieee.exp to set up the path correctly.  I'll move
the test shortly.
diff mbox

Patch

Index: gcc/fortran/simplify.c
===================================================================
--- gcc/fortran/simplify.c	(revision 239762)
+++ gcc/fortran/simplify.c	(working copy)
@@ -7044,9 +7044,19 @@  gfc_simplify_compiler_version (void)
 gfc_expr *
 simplify_ieee_selected_real_kind (gfc_expr *expr)
 {
-  gfc_actual_arglist *arg = expr->value.function.actual;
-  gfc_expr *p = arg->expr, *q = arg->next->expr,
-	   *rdx = arg->next->next->expr;
+  gfc_actual_arglist *arg;
+  gfc_expr *p = NULL, *q = NULL, *rdx = NULL;
+
+  arg = expr->value.function.actual;
+  if (arg->expr)
+    p = arg->expr;
+  if (arg->next)
+    {
+      if (arg->next->expr)
+	q = arg->next->expr;
+      if (arg->next->next && arg->next->next->expr)
+	rdx = arg->next->next->expr;
+    }
 
   /* Currently, if IEEE is supported and this module is built, it means
      all our floating-point types conform to IEEE. Hence, we simply handle
Index: gcc/testsuite/gfortran.dg/pr77372.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr77372.f90	(nonexistent)
+++ gcc/testsuite/gfortran.dg/pr77372.f90	(working copy)
@@ -0,0 +1,7 @@ 
+! { dg-do compile }
+program p
+   use ieee_arithmetic
+   real(kind=ieee_selected_real_kind(10_1)) :: z1
+   real(kind=ieee_selected_real_kind(10_2)) :: z2
+   real(kind=ieee_selected_real_kind(10_4)) :: z4
+end