OSDN Git Service

2010-04-06 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 6 Apr 2010 19:03:10 +0000 (19:03 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 00:47:03 +0000 (09:47 +0900)
        PR fortran/18918
        * array.c (gfc_match_array_spec): Add error for -fcoarray=none.
        * match.c (gfc_match_critical, sync_statement): Ditto.
        * gfortran.h (gfc_fcoarray): New enum.
        (gfc_option_t): Use it.
        * lang.opt (fcoarray): Add new flag.
        * invoke.texi (fcoarray): Document it.
        * options.c (gfc_init_options,gfc_handle_option): Handle
        * -fcoarray=.
        (gfc_handle_coarray_option): New function.

2010-04-06  Tobias Burnus  <burnus@net-b.de>

        PR fortran/18918
        * gfortran.dg/coarray_2.f90: Add dg-options -fcoarray=single.
        * gfortran.dg/coarray_3.f90: Ditto.
        * gfortran.dg/coarray_4.f90: Ditto.
        * gfortran.dg/coarray_5.f90: Ditto.
        * gfortran.dg/coarray_6.f90: Ditto.
        * gfortran.dg/coarray_7.f90: Ditto.
        * gfortran.dg/coarray_8.f90: Ditto.
        * gfortran.dg/coarray_9.f90: New -fcoarray=none test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158016 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/array.c
gcc/fortran/gfortran.h
gcc/fortran/match.c
gcc/fortran/options.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/coarray_2.f90
gcc/testsuite/gfortran.dg/coarray_3.f90
gcc/testsuite/gfortran.dg/coarray_4.f90
gcc/testsuite/gfortran.dg/coarray_6.f90
gcc/testsuite/gfortran.dg/coarray_9.f90

index b1db67a..9725d8e 100644 (file)
@@ -1,6 +1,18 @@
 2010-04-06  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/18918
+       * array.c (gfc_match_array_spec): Add error for -fcoarray=none.
+       * match.c (gfc_match_critical, sync_statement): Ditto.
+       * gfortran.h (gfc_fcoarray): New enum.
+       (gfc_option_t): Use it.
+       * lang.opt (fcoarray): Add new flag.
+       * invoke.texi (fcoarray): Document it.
+       * options.c (gfc_init_options,gfc_handle_option): Handle -fcoarray=.
+       (gfc_handle_coarray_option): New function.
+
+2010-04-06  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/18918
        * gfortran.h (gfc_array_spec): Add cotype.
        * array.c (gfc_match_array_spec,gfc_set_array_spec): Use it
        and defer error diagnostic.
index c291ad8..4282fd1 100644 (file)
@@ -458,6 +458,12 @@ coarray:
       == FAILURE)
     goto cleanup;
 
+  if (gfc_option.coarray == GFC_FCOARRAY_NONE)
+    {
+       gfc_error ("Coarrays disabled at %C, use -fcoarray= to enable");
+       goto cleanup;
+    }
+
   for (;;)
     {
       as->corank++;
index 2bf0ef8..f4f5d52 100644 (file)
@@ -563,6 +563,13 @@ typedef enum
 }
 init_local_integer;
 
+typedef enum
+{
+  GFC_FCOARRAY_NONE = 0,
+  GFC_FCOARRAY_SINGLE
+}
+gfc_fcoarray;
+
 /************************* Structures *****************************/
 
 /* Used for keeping things in balanced binary trees.  */
@@ -2158,6 +2165,7 @@ typedef struct
 
   int fpe;
   int rtcheck;
+  gfc_fcoarray coarray;
 
   int warn_std;
   int allow_std;
index e719628..70bf9ac 100644 (file)
@@ -1743,6 +1743,12 @@ gfc_match_critical (void)
       == FAILURE)
     return MATCH_ERROR;
 
+  if (gfc_option.coarray == GFC_FCOARRAY_NONE)
+    {
+       gfc_error ("Coarrays disabled at %C, use -fcoarray= to enable");
+       return MATCH_ERROR;
+    }
+
   if (gfc_find_state (COMP_CRITICAL) == SUCCESS)
     {
       gfc_error ("Nested CRITICAL block at %C");
@@ -2138,6 +2144,12 @@ sync_statement (gfc_statement st)
       == FAILURE)
     return MATCH_ERROR;
 
+  if (gfc_option.coarray == GFC_FCOARRAY_NONE)
+    {
+       gfc_error ("Coarrays disabled at %C, use -fcoarray= to enable");
+       return MATCH_ERROR;
+    }
+
   if (gfc_find_state (COMP_CRITICAL) == SUCCESS)
     {
       gfc_error ("Image control statement SYNC at %C in CRITICAL block");
index a5c0b92..676bbe1 100644 (file)
@@ -78,7 +78,6 @@ gfc_init_options (unsigned int argc, const char **argv)
   gfc_option.warn_character_truncation = 0;
   gfc_option.warn_array_temp = 0;
   gfc_option.warn_conversion = 0;
-  gfc_option.warn_conversion_extra = 0;
   gfc_option.warn_implicit_interface = 0;
   gfc_option.warn_line_truncation = 0;
   gfc_option.warn_surprising = 0;
@@ -87,7 +86,6 @@ gfc_init_options (unsigned int argc, const char **argv)
   gfc_option.warn_intrinsic_shadow = 0;
   gfc_option.warn_intrinsics_std = 0;
   gfc_option.warn_align_commons = 1;
-  gfc_option.warn_unused_dummy_argument = 0;
   gfc_option.max_errors = 25;
 
   gfc_option.flag_all_intrinsics = 0;
@@ -134,8 +132,10 @@ gfc_init_options (unsigned int argc, const char **argv)
   gfc_option.rtcheck = 0;
   gfc_option.coarray = GFC_FCOARRAY_NONE;
 
+  /* Argument pointers cannot point to anything but their argument.  */
+  flag_argument_noalias = 3;
+
   flag_errno_math = 0;
-  flag_associative_math = -1;
 
   set_default_std_flags ();
 
@@ -249,11 +249,6 @@ gfc_post_options (const char **pfilename)
   if (flag_lto || flag_whopr)
     gfc_option.flag_whole_file = 1;
 
-  /* Fortran allows associative math - but we cannot reassociate if
-     we want traps or signed zeros. Cf. also flag_protect_parens.  */
-  if (flag_associative_math == -1)
-    flag_associative_math = (!flag_trapping_math && !flag_signed_zeros);
-
   /* -fbounds-check is equivalent to -fcheck=bounds */
   if (flag_bounds_check)
     gfc_option.rtcheck |= GFC_RTCHECK_BOUNDS;
@@ -410,7 +405,6 @@ set_Wall (int setting)
 {
   gfc_option.warn_aliasing = setting;
   gfc_option.warn_ampersand = setting;
-  gfc_option.warn_conversion = setting;
   gfc_option.warn_line_truncation = setting;
   gfc_option.warn_surprising = setting;
   gfc_option.warn_tabs = !setting;
@@ -418,12 +412,18 @@ set_Wall (int setting)
   gfc_option.warn_intrinsic_shadow = setting;
   gfc_option.warn_intrinsics_std = setting;
   gfc_option.warn_character_truncation = setting;
-  gfc_option.warn_unused_dummy_argument = setting;
 
   warn_unused = setting;
   warn_return_type = setting;
   warn_switch = setting;
-  warn_uninitialized = setting;
+
+  /* We save the value of warn_uninitialized, since if they put
+     -Wuninitialized on the command line, we need to generate a
+     warning about not using it without also specifying -O.  */
+  if (setting == 0)
+    warn_uninitialized = 0;
+  else if (warn_uninitialized != 1)
+    warn_uninitialized = 2;
 }
 
 
@@ -535,8 +535,7 @@ gfc_handle_runtime_check_option (const char *arg)
    recognized and handled.  */
 
 int
-gfc_handle_option (size_t scode, const char *arg, int value,
-                  int kind ATTRIBUTE_UNUSED)
+gfc_handle_option (size_t scode, const char *arg, int value)
 {
   int result = 1;
   enum opt_code code = (enum opt_code) scode;
@@ -578,10 +577,6 @@ gfc_handle_option (size_t scode, const char *arg, int value,
       gfc_option.warn_conversion = value;
       break;
 
-    case OPT_Wconversion_extra:
-      gfc_option.warn_conversion_extra = value;
-      break;
-
     case OPT_Wimplicit_interface:
       gfc_option.warn_implicit_interface = value;
       break;
@@ -618,10 +613,6 @@ gfc_handle_option (size_t scode, const char *arg, int value,
       gfc_option.warn_align_commons = value;
       break;
 
-    case OPT_Wunused_dummy_argument:
-      gfc_option.warn_unused_dummy_argument = value;
-      break;
-
     case OPT_fall_intrinsics:
       gfc_option.flag_all_intrinsics = 1;
       break;
index 2e03520..a485fcb 100644 (file)
@@ -1,6 +1,16 @@
 2010-04-06  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/18918
+       * gfortran.dg/coarray_2.f90: Add dg-options -fcoarray=single.
+       * gfortran.dg/coarray_3.f90: Ditto.
+       * gfortran.dg/coarray_4.f90: Ditto.
+       * gfortran.dg/coarray_5.f90: Ditto.
+       * gfortran.dg/coarray_6.f90: Ditto.
+       * gfortran.dg/coarray_9.f90: New -fcoarray=none test.
+
+2010-04-06  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/18918
        * gfortran.dg/coarray_4.f90: Fix test.
        * gfortran.dg/coarray_6.f90: Add more tests.
 
index 1fcb9b8..902a0dd 100644 (file)
@@ -1,4 +1,5 @@
 ! { dg-do run }
+! { dg-options "-fcoarray=single" }
 ! { dg-shouldfail "error stop" }
 ! 
 ! Coarray support
index 648f2fa..63c3bd3 100644 (file)
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-fcoarray=single" }
 ! 
 ! Coarray support
 ! PR fortran/18918
index cb693ea..5607ec9 100644 (file)
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-fcoarray=single" }
 !
 ! Coarray support -- corank declarations
 ! PR fortran/18918
index b6d8b49..d3c600b 100644 (file)
@@ -1,4 +1,5 @@
 ! { dg-do compile }
+! { dg-options "-fcoarray=single" }
 !
 ! Coarray support -- corank declarations
 ! PR fortran/18918
index cdfb4dc..d44cdda 100644 (file)
@@ -9,10 +9,9 @@ integer :: a
 integer :: b[*] ! { dg-error "Coarrays disabled" }
 
 error stop "Error"
-sync all !  "Coarrays disabled"  (but error above is fatal)
+sync all ! { dg-error "Coarrays disabled" }
 
-critical ! "Coarrays disabled"  (but error above is fatal)
-
-end critical ! "Expecting END PROGRAM statement"  (but error above is fatal)
+critical ! { dg-error "Coarrays disabled" }
+end critical ! { dg-error "Expecting END PROGRAM statement" }
 
 end