aboutsummaryrefslogtreecommitdiffstats
path: root/cparser
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2020-07-27 19:05:27 +0200
committerBernhard Schommer <bernhardschommer@gmail.com>2020-07-27 19:05:27 +0200
commit0132b8aa669adc10e6ca953d10d5c0b861f304b1 (patch)
tree3cf2c81cdac1103492489544449b614d58186abf /cparser
parent896310e89fd1e527d0fcf8162c50577db702fc13 (diff)
downloadcompcert-kvx-0132b8aa669adc10e6ca953d10d5c0b861f304b1.tar.gz
compcert-kvx-0132b8aa669adc10e6ca953d10d5c0b861f304b1.zip
Allow string_literals_list in _Static_assert.
Not all pre-processors concatenate string literal lists, however they are allowed in _Static_assert. This is similar to the rules for inline assembly etc.
Diffstat (limited to 'cparser')
-rw-r--r--cparser/handcrafted.messages47
-rw-r--r--cparser/pre_parser.mly2
2 files changed, 25 insertions, 24 deletions
diff --git a/cparser/handcrafted.messages b/cparser/handcrafted.messages
index 9b565b27..23e90b3e 100644
--- a/cparser/handcrafted.messages
+++ b/cparser/handcrafted.messages
@@ -4695,7 +4695,7 @@ translation_unit_file: STATIC_ASSERT XOR_ASSIGN
##
## Ends in an error in state: 76.
##
-## static_assert_declaration -> STATIC_ASSERT . LPAREN conditional_expression COMMA STRING_LITERAL RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## static_assert_declaration -> STATIC_ASSERT . LPAREN conditional_expression COMMA string_literals_list RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## STATIC_ASSERT
@@ -4710,7 +4710,7 @@ translation_unit_file: STATIC_ASSERT LPAREN XOR_ASSIGN
##
## Ends in an error in state: 77.
##
-## static_assert_declaration -> STATIC_ASSERT LPAREN . conditional_expression COMMA STRING_LITERAL RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## static_assert_declaration -> STATIC_ASSERT LPAREN . conditional_expression COMMA string_literals_list RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## STATIC_ASSERT LPAREN
@@ -4725,7 +4725,7 @@ translation_unit_file: STATIC_ASSERT LPAREN STRING_LITERAL XOR_ASSIGN
##
## Ends in an error in state: 167.
##
-## static_assert_declaration -> STATIC_ASSERT LPAREN conditional_expression . COMMA STRING_LITERAL RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## static_assert_declaration -> STATIC_ASSERT LPAREN conditional_expression . COMMA string_literals_list RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## STATIC_ASSERT LPAREN conditional_expression
@@ -4734,21 +4734,21 @@ translation_unit_file: STATIC_ASSERT LPAREN STRING_LITERAL XOR_ASSIGN
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 80, spurious reduction of production primary_expression -> string_literals_list
-## In state 82, spurious reduction of production postfix_expression -> primary_expression
-## In state 83, spurious reduction of production unary_expression -> postfix_expression
-## In state 79, spurious reduction of production cast_expression -> unary_expression
-## In state 110, spurious reduction of production multiplicative_expression -> cast_expression
-## In state 104, spurious reduction of production additive_expression -> multiplicative_expression
-## In state 123, spurious reduction of production shift_expression -> additive_expression
-## In state 100, spurious reduction of production relational_expression -> shift_expression
-## In state 116, spurious reduction of production equality_expression -> relational_expression
-## In state 132, spurious reduction of production and_expression -> equality_expression
-## In state 140, spurious reduction of production exclusive_or_expression -> and_expression
-## In state 141, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
-## In state 142, spurious reduction of production logical_and_expression -> inclusive_or_expression
-## In state 126, spurious reduction of production logical_or_expression -> logical_and_expression
-## In state 124, spurious reduction of production conditional_expression -> logical_or_expression
+## In state 80, spurious reduction of production primary_expression -> string_literals_list
+## In state 82, spurious reduction of production postfix_expression -> primary_expression
+## In state 83, spurious reduction of production unary_expression -> postfix_expression
+## In state 79, spurious reduction of production cast_expression -> unary_expression
+## In state 110, spurious reduction of production multiplicative_expression -> cast_expression
+## In state 104, spurious reduction of production additive_expression -> multiplicative_expression
+## In state 123, spurious reduction of production shift_expression -> additive_expression
+## In state 100, spurious reduction of production relational_expression -> shift_expression
+## In state 116, spurious reduction of production equality_expression -> relational_expression
+## In state 132, spurious reduction of production and_expression -> equality_expression
+## In state 140, spurious reduction of production exclusive_or_expression -> and_expression
+## In state 141, spurious reduction of production inclusive_or_expression -> exclusive_or_expression
+## In state 142, spurious reduction of production logical_and_expression -> inclusive_or_expression
+## In state 126, spurious reduction of production logical_or_expression -> logical_and_expression
+## In state 124, spurious reduction of production conditional_expression -> logical_or_expression
##
Ill-formed _Static_assert.
@@ -4760,7 +4760,7 @@ translation_unit_file: STATIC_ASSERT LPAREN STRING_LITERAL COMMA XOR_ASSIGN
##
## Ends in an error in state: 168.
##
-## static_assert_declaration -> STATIC_ASSERT LPAREN conditional_expression COMMA . STRING_LITERAL RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## static_assert_declaration -> STATIC_ASSERT LPAREN conditional_expression COMMA . string_literals_list RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
## STATIC_ASSERT LPAREN conditional_expression COMMA
@@ -4775,10 +4775,11 @@ translation_unit_file: STATIC_ASSERT LPAREN STRING_LITERAL COMMA STRING_LITERAL
##
## Ends in an error in state: 169.
##
-## static_assert_declaration -> STATIC_ASSERT LPAREN conditional_expression COMMA STRING_LITERAL . RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## static_assert_declaration -> STATIC_ASSERT LPAREN conditional_expression COMMA string_literals_list . RPAREN SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## string_literals_list -> string_literals_list . STRING_LITERAL [ STRING_LITERAL RPAREN ]
##
## The known suffix of the stack is as follows:
-## STATIC_ASSERT LPAREN conditional_expression COMMA STRING_LITERAL
+## STATIC_ASSERT LPAREN conditional_expression COMMA string_literals_list
##
Ill-formed _Static_assert.
@@ -4790,10 +4791,10 @@ translation_unit_file: STATIC_ASSERT LPAREN STRING_LITERAL COMMA STRING_LITERAL
##
## Ends in an error in state: 170.
##
-## static_assert_declaration -> STATIC_ASSERT LPAREN conditional_expression COMMA STRING_LITERAL RPAREN . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
+## static_assert_declaration -> STATIC_ASSERT LPAREN conditional_expression COMMA string_literals_list RPAREN . SEMICOLON [ WHILE VOLATILE VOID UNSIGNED UNION UNDERSCORE_BOOL TYPEDEF TILDE SWITCH STRUCT STRING_LITERAL STATIC_ASSERT STATIC STAR SIZEOF SIGNED SHORT SEMICOLON RETURN RESTRICT REGISTER RBRACE PRE_NAME PRAGMA PLUS PACKED NORETURN MINUS LPAREN LONG LBRACE INT INLINE INC IF GOTO FOR FLOAT EXTERN EOF ENUM DOUBLE DO DEFAULT DEC CONTINUE CONSTANT CONST CHAR CASE BUILTIN_VA_ARG BUILTIN_OFFSETOF BREAK BANG AUTO ATTRIBUTE ASM AND ALIGNOF ALIGNAS ]
##
## The known suffix of the stack is as follows:
-## STATIC_ASSERT LPAREN conditional_expression COMMA STRING_LITERAL RPAREN
+## STATIC_ASSERT LPAREN conditional_expression COMMA string_literals_list RPAREN
##
Ill-formed _Static_assert.
diff --git a/cparser/pre_parser.mly b/cparser/pre_parser.mly
index 6ba7ee39..4b62b235 100644
--- a/cparser/pre_parser.mly
+++ b/cparser/pre_parser.mly
@@ -610,7 +610,7 @@ gcc_attribute_word:
{}
static_assert_declaration:
-| STATIC_ASSERT LPAREN constant_expression COMMA STRING_LITERAL RPAREN SEMICOLON
+| STATIC_ASSERT LPAREN constant_expression COMMA string_literals_list RPAREN SEMICOLON
{}
function_specifier: