check.c (gfc_check_rand): Allow missing optional argument.
authorCanqun Yang <canqun@nudt.edu.cn>
Sat, 30 Oct 2004 14:18:34 +0000 (14:18 +0000)
committerPaul Brook <pbrook@gcc.gnu.org>
Sat, 30 Oct 2004 14:18:34 +0000 (14:18 +0000)
2004-10-30  Canqun Yang  <canqun@nudt.edu.cn>

* 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
gcc/fortran/check.c
gcc/fortran/intrinsic.c
libgfortran/ChangeLog
libgfortran/intrinsics/rand.c

index 676a50f724acdb2ee87b5ded8d4cd99cf5a7ab7c..c950f8c1920c50efa7b191a05fbee9c3c264c92a 100644 (file)
@@ -1,9 +1,15 @@
+2004-10-30  Canqun Yang  <canqun@nudt.edu.cn>
+
+       * 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  <scott.ladd@coyotegulch.com>
 
        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
index a22acf062cfd618f8f2b7caab1b12a8019a534a3..b8ed5e9f5a7b2be48ae5f5fe82030c2f83b70a6d 100644 (file)
@@ -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;
 
index aa358f0716ccacd4f3e29e6ae00ff3deba020a67..bc69f54cb2cb1213531e95c6797749460d3b0a7d 100644 (file)
@@ -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 
index aafa660ccf51f7c181024b4688b1b29a7ea316f6..e2057a1f2f5bc6785f6af6948c40185936f46dda 100644 (file)
@@ -1,3 +1,7 @@
+2004-10-30  Canqun Yang  <canqun@nudt.edu.cn>
+
+       * intrinsics/rand.c (irand): Handle NULL argument.
+
 2004-10-07  Paul Brook  <paul@codesourcery.com>
 
        * io/transfer.c (finalize_transfer): Free internal streams.
index d59e168837114f3f4959dd601c313bb7c9295bf3..f4e78d0470e2eeb0d8e16f5ae682652cba7ce8f6 100644 (file)
@@ -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)
   {