From 7a003d8e2e5f20fab390c2e2988e1c630cbb3ba9 Mon Sep 17 00:00:00 2001 From: Canqun Yang Date: Sat, 30 Oct 2004 14:18:34 +0000 Subject: [PATCH] check.c (gfc_check_rand): Allow missing optional argument. 2004-10-30 Canqun Yang * check.c (gfc_check_rand): Allow missing optional argument. (gfc_check_irand): Ditto. * intrinsic.c (add_functions): Set arg optional flag for {i,}rand. libgfortran/ * intrinsics/rand.c (irand): Handle NULL argument. From-SVN: r89886 --- gcc/fortran/ChangeLog | 8 +++++++- gcc/fortran/check.c | 6 ++++++ gcc/fortran/intrinsic.c | 4 ++-- libgfortran/ChangeLog | 4 ++++ libgfortran/intrinsics/rand.c | 6 +++++- 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 676a50f724a..c950f8c1920 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,9 +1,15 @@ +2004-10-30 Canqun Yang + + * check.c (gfc_check_rand): Allow missing optional argument. + (gfc_check_irand): Ditto. + * intrinsic.c (add_functions): Set arg optional flag for {i,}rand. + 2004-10-28 Scott Robert Ladd PR fortran/13490, PR fortran/17912 * gcc/fortran/gfortran.h: Added pedantic_min_int to gfc_integer_info * gcc/fortran/gfortran.h: Added ARITH_ASYMMETRIC to arith - * gcc/fortran/arith.c: Added support for an "asymmetric integer" + * gcc/fortran/arith.c: Added support for an "asymmetric integer" warning when compiling with pedantic. * gcc/fortran/arith.c: Set minimum integer values to reflect realities of two's complement signed integers. Added diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index a22acf062cf..b8ed5e9f5a7 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -2001,6 +2001,9 @@ gfc_check_system_clock (gfc_expr * count, gfc_expr * count_rate, try gfc_check_irand (gfc_expr * x) { + if (x == NULL) + return SUCCESS; + if (scalar_check (x, 0) == FAILURE) return FAILURE; @@ -2016,6 +2019,9 @@ gfc_check_irand (gfc_expr * x) try gfc_check_rand (gfc_expr * x) { + if (x == NULL) + return SUCCESS; + if (scalar_check (x, 0) == FAILURE) return FAILURE; diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index aa358f0716c..bc69f54cb2c 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -1307,7 +1307,7 @@ add_functions (void) /* The following function is for G77 compatibility. */ add_sym_1 ("irand", 0, 1, BT_INTEGER, 4, gfc_check_irand, NULL, NULL, - i, BT_INTEGER, 4, 0); + i, BT_INTEGER, 4, 1); make_generic ("irand", GFC_ISYM_IRAND); @@ -1602,7 +1602,7 @@ add_functions (void) /* The following function is for G77 compatibility. */ add_sym_1 ("rand", 0, 1, BT_REAL, 4, gfc_check_rand, NULL, NULL, - i, BT_INTEGER, 4, 0); + i, BT_INTEGER, 4, 1); /* Compatibility with HP FORTRAN 77/iX Reference. Note, rand() and ran() use slightly different shoddy multiplicative congruential diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index aafa660ccf5..e2057a1f2f5 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,7 @@ +2004-10-30 Canqun Yang + + * intrinsics/rand.c (irand): Handle NULL argument. + 2004-10-07 Paul Brook * io/transfer.c (finalize_transfer): Free internal streams. diff --git a/libgfortran/intrinsics/rand.c b/libgfortran/intrinsics/rand.c index d59e1688371..f4e78d0470e 100644 --- a/libgfortran/intrinsics/rand.c +++ b/libgfortran/intrinsics/rand.c @@ -51,7 +51,11 @@ GFC_INTEGER_4 prefix(irand) (GFC_INTEGER_4 *i) { - GFC_INTEGER_4 j = *i; + GFC_INTEGER_4 j; + if (i) + j = *i; + else + j = 0; switch (j) { -- 2.30.2