This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: FORTRAN :PATCH FOR PR 7179


Toon Moene wrote:

bdavis wrote:

The problem:

     dimension  a(250000,250000)
     a(1,1)= 0.
     write(*,*) ' a',a(1,1)
     end

gives no error message.


Here is what it should do:



big.f: In program `MAIN__': big.f:1: dimension a(250000,250000) ^ Array `a' at (^) is too large to handle.

Patch tested on i386 / linux with no new failures. The above snippet can be added to the "non-compile" directory of the testsuite.
(Toon, what is the best way to post new test files?)


--bud davis

----------------------------------------------------------------------------------------------------------------------------------------

Index: gcc/gcc/f/com.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/f/com.c,v
retrieving revision 1.195
diff -c -3 -p -r1.195 com.c
*** gcc/gcc/f/com.c     13 May 2003 18:06:48 -0000      1.195
--- gcc/gcc/f/com.c     18 May 2003 21:57:36 -0000
*************** ffecom_sym_transform_ (ffesymbol s)
*** 7407,7420 ****
         {
           ffestorag st = ffesymbol_storage (s);
           tree type;
-
-           if ((st != NULL)
-               && (ffestorag_size (st) == 0))
-             {
-               t = error_mark_node;
-               break;
-             }
-
           type = ffecom_type_localvar_ (s, bt, kt);

           if (type == error_mark_node)
--- 7407,7412 ----

Hmmmm, can we be sure that `s' being "too large" is the only reason that ffestorag_size (st) is zero ?




Below is a patch that moves the test "ffestorag_size (st) ==0" so it happens after the error has been diagnosed.
bootstrapped on i686-pc-linux-gnu with no additional testsuite failures.


regards,
bud davis


Index: gcc/gcc/f/com.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/f/com.c,v retrieving revision 1.195 diff -c -3 -p -r1.195 com.c *** gcc/gcc/f/com.c 13 May 2003 18:06:48 -0000 1.195 --- gcc/gcc/f/com.c 22 May 2003 02:50:19 -0000 *************** ffecom_sym_transform_ (ffesymbol s) *** 7408,7420 **** ffestorag st = ffesymbol_storage (s); tree type;

-           if ((st != NULL)
-               && (ffestorag_size (st) == 0))
-             {
-               t = error_mark_node;
-               break;
-             }
-
           type = ffecom_type_localvar_ (s, bt, kt);

           if (type == error_mark_node)
--- 7408,7413 ----
*************** ffecom_sym_transform_ (ffesymbol s)
*** 7422,7427 ****
--- 7415,7427 ----
               t = error_mark_node;
               break;
             }
+
+             if ((st != NULL)
+                 && (ffestorag_size (st) == 0))
+               {
+                 t = error_mark_node;
+                 break;
+               }

           if ((st != NULL)
               && (ffestorag_parent (st) != NULL))





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]