diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2025-04-13 22:48:44 +0200 |
---|---|---|
committer | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2025-04-13 22:48:44 +0200 |
commit | b0fb746bf2ff533eccf3a4ea7fbbc02a9a1f8b81 (patch) | |
tree | 97842f2ba315037450857363e736963782ffa914 /gcc | |
parent | ee6173800ed1f9b653a85019ad2fa8e6d883823a (diff) | |
download | gcc-b0fb746bf2ff533eccf3a4ea7fbbc02a9a1f8b81.zip gcc-b0fb746bf2ff533eccf3a4ea7fbbc02a9a1f8b81.tar.gz gcc-b0fb746bf2ff533eccf3a4ea7fbbc02a9a1f8b81.tar.bz2 |
cobol: Avoid conflict with OVERFLOW in system headers [PR119217]
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>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cobol/parse.y | 12 | ||||
-rw-r--r-- | gcc/cobol/scan.l | 6 | ||||
-rw-r--r-- | gcc/cobol/token_names.h | 2 |
3 files changed, 10 insertions, 10 deletions
diff --git a/gcc/cobol/parse.y b/gcc/cobol/parse.y index d14cc31..55c26fe 100644 --- a/gcc/cobol/parse.y +++ b/gcc/cobol/parse.y @@ -338,7 +338,7 @@ %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 @@ -997,7 +997,7 @@ 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); } diff --git a/gcc/cobol/scan.l b/gcc/cobol/scan.l index 2cb7d30..e30634d 100644 --- a/gcc/cobol/scan.l +++ b/gcc/cobol/scan.l @@ -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; } diff --git a/gcc/cobol/token_names.h b/gcc/cobol/token_names.h index a082078..d1e3b5d 100644 --- a/gcc/cobol/token_names.h +++ b/gcc/cobol/token_names.h @@ -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 |