]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
cobol: Avoid conflict with OVERFLOW in system headers [PR119217]
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Sun, 13 Apr 2025 20:48:44 +0000 (22:48 +0200)
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Sun, 13 Apr 2025 20:48:44 +0000 (22:48 +0200)
parse.h causes the COBOL build to break on Solaris:

cobol/parse.h:356:5: error: expected identifier before numeric constant
  356 |     OVERFLOW = 305,                /* OVERFLOW  */
      |     ^~~~~~~~

The problem is that <math.h> has

#define OVERFLOW 3

To avoid the conflict, this patch renames OVERFLOW to OVERFLOW_kw,
following existing praxis.

Btw., token_names.h has a comment claiming

// generated by ./token_names.h.gen ../../build/gcc/cobol/parse.h

but there's no token_names.h.gen anywhere in the tree, so I've updated
the file manually.

Bootstrapped without regressions on amd64-pc-solaris2.11,
sparcv9-sun-solaris2.11, and x86_64-pc-linux-gnu.

2025-04-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

gcc/cobol:
PR cobol/119217
* parse.y: Rename OVERFLOW to OVERFLOW_kw.
Specify type name in %token directive.
* scan.l: Likewise.
* token_names.h: Regenerate.

Co-Authored-By: Simon Sobisch <simonsobisch@gnu.org>
gcc/cobol/parse.y
gcc/cobol/scan.l
gcc/cobol/token_names.h

index d14cc3170b0e6d372e621f29844afa3193fe9105..55c26febe7eb32ae44cc22b7680604d3dac6476c 100644 (file)
 %token  <number>        INVALID
 %token  <number>        NUMBER NEGATIVE
 %token  <numstr>        NUMSTR    "numeric literal"
-%token  <number>        OVERFLOW
+%token  <number>        OVERFLOW_kw "OVERFLOW"
 %token  <computational> COMPUTATIONAL
 
 %token  <boolean>       PERFORM BACKWARD
                         DELETE DISPLAY DIVIDE EVALUATE END EOP EXIT FILLER_kw
                         GOBACK GOTO
                         INITIALIZE INSPECT
-                        MERGE MOVE MULTIPLY OPEN OVERFLOW PARAGRAPH PERFORM
+                        MERGE MOVE MULTIPLY OPEN OVERFLOW_kw PARAGRAPH PERFORM
                         READ RELEASE RETURN REWRITE
                         SEARCH SET SELECT SORT SORT_MERGE
                         STRING_kw STOP SUBTRACT START
@@ -9488,7 +9488,7 @@ call_except:    EXCEPTION
                     std::swap($$.on_error, $$.not_error);
                   }
                 }
-        |       OVERFLOW
+        |       OVERFLOW_kw
                 {
                   $$.not_error = NULL;
                   $$.on_error = label_add(LblArith,
@@ -9496,7 +9496,7 @@ call_except:    EXCEPTION
                   if( !$$.on_error ) YYERROR;
                   parser_call_exception( $$.on_error );
 
-                  assert( $1 == OVERFLOW || $1 == NOT );
+                  assert( $1 == OVERFLOW_kw || $1 == NOT );
                   if( $1 == NOT ) {
                     std::swap($$.on_error, $$.not_error);
                   }
@@ -9751,7 +9751,7 @@ on_overflows:   on_overflow[over] statements %prec ADD
                 }
                 ;
 
-on_overflow:    OVERFLOW
+on_overflow:    OVERFLOW_kw
                 {
                   $$.not_error = NULL;
                   $$.on_error = label_add(LblString,
@@ -9759,7 +9759,7 @@ on_overflow:    OVERFLOW
                   if( !$$.on_error ) YYERROR;
                   parser_string_overflow( $$.on_error );
 
-                  assert( $1 == OVERFLOW || $1 == NOT );
+                  assert( $1 == OVERFLOW_kw || $1 == NOT );
                   if( $1 == NOT ) {
                     std::swap($$.on_error, $$.not_error);
                   }
index 2cb7d3029f7c6a12306b656c1931d22beabb1473..e30634de9552fff4d2d16c4e321b0e29fb436efa 100644 (file)
@@ -1543,9 +1543,9 @@ USE({SPC}FOR)?            { return USE; }
   NOT{SPC}(ON{SPC})?EXCEPTION {
                                   yylval.number = NOT;       return EXCEPTION; }
 
- (ON{SPC})?OVERFLOW      { yylval.number = OVERFLOW; return OVERFLOW; }
+ (ON{SPC})?OVERFLOW      { yylval.number = OVERFLOW_kw; return OVERFLOW_kw; }
   NOT{SPC}(ON{SPC})?OVERFLOW {
-                                  yylval.number = NOT;      return OVERFLOW; }
+                                  yylval.number = NOT;      return OVERFLOW_kw; }
 
  (AT{SPC})?END/[[:space:]]                { yylval.number = END;
                                                    return END; }
@@ -2312,7 +2312,7 @@ BASIS             { yy_push_state(basis); return BASIS; }
   ORGANIZATION { return ORGANIZATION; }
   OTHER        { return OTHER; }
   OUTPUT       { return OUTPUT; }
-  OVERFLOW     { return OVERFLOW; }
+  OVERFLOW     { return OVERFLOW_kw; }
   OVERRIDE     { return OVERRIDE; }
   PACKED-DECIMAL       { return PACKED_DECIMAL; }
   PAGE { return PAGE; }
index a0820784090c38ed8b29a7a8f20ba0cd4aee8a16..d1e3b5d544eff82070b367f64b799fbd5a219d6d 100644 (file)
@@ -49,7 +49,7 @@ tokens = {
         { "number", NUMBER }, // 302
         { "negative", NEGATIVE }, // 303
         { "numstr", NUMSTR }, // 304
-        { "overflow", OVERFLOW }, // 305
+        { "overflow", OVERFLOW_kw }, // 305
         { "computational", COMPUTATIONAL }, // 306
         { "perform", PERFORM }, // 307
         { "backward", BACKWARD }, // 308