OSDN Git Service

2005-08-14 Asher Langton <langton2@llnl.gov>
authortobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 14 Aug 2005 21:45:03 +0000 (21:45 +0000)
committertobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 14 Aug 2005 21:45:03 +0000 (21:45 +0000)
        * parse.c (match): Enclosed macro in do...while(0) and braces.

Also fix formatting of a few previous ChangeLog entries

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

gcc/fortran/ChangeLog
gcc/fortran/parse.c

index d92bfd4..2d4a86a 100644 (file)
@@ -1,9 +1,13 @@
-2005-08-14 Paul Thomas  <pault@gcc.gnu.org>
+2005-08-14  Asher Langton  <langton2@llnl.gov>
+
+       * parse.c (match): Enclosed macro in do...while(0) and braces.
+
+2005-08-14  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/21432.
        * gfortran.texi: Document PRINT namelist.
 
-2005-08-14 Paul Thomas  <pault@gcc.gnu.org>
+2005-08-14  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/21432.
        * io.c (match_io): Add code to implement PRINT namelist.
        * trans-stmt.c (gfc_trans_character_select): Use
        build_constructor_from_list instead of build_constructor.
 
-2005-07-19 Paul Thomas  <pault@gcc.gnu.org>
+2005-07-19  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/16940
        * resolve.c (resolve_symbol): A symbol with FL_UNKNOWN
        * resolve.c (resolve_variable): If e->symtree is not set, this
        ought to be a FAILURE, and not a segfault.
 
-2005-04-17 Paul Thomas <pault@gcc.gnu.org>
+2005-04-17  Paul Thomas <pault@gcc.gnu.org>
 
        PR fortran/17472
        PR fortran/18209
index 2894e50..9c404d5 100644 (file)
@@ -75,13 +75,16 @@ match_word (const char *str, match (*subr) (void), locus * old_locus)
 
 
 /* Figure out what the next statement is, (mostly) regardless of
-   proper ordering.  */
+   proper ordering.  The do...while(0) is there to prevent if/else
+   ambiguity.  */
 
 #define match(keyword, subr, st)                               \
-    if (match_word(keyword, subr, &old_locus) == MATCH_YES)    \
-      return st;                                               \
-    else                                                       \
-      undo_new_statement ();
+    do {                                                        \
+      if (match_word(keyword, subr, &old_locus) == MATCH_YES)  \
+        return st;                                             \
+      else                                                     \
+        undo_new_statement ();                                  \
+    } while (0);
 
 static gfc_statement
 decode_statement (void)