aboutsummaryrefslogtreecommitdiffstats
path: root/cparser
diff options
context:
space:
mode:
authorBernhard Schommer <bernhardschommer@gmail.com>2017-02-01 14:56:21 +0100
committerBernhard Schommer <bernhardschommer@gmail.com>2017-02-01 14:56:21 +0100
commit34886d135cec62883e76ba25bda34b4623e4a696 (patch)
tree11f91b98317dbed13dabf2e1c02008eaca58dcdf /cparser
parent31f86965bf172fb32f9cca99a292ebdf6cea57b9 (diff)
downloadcompcert-kvx-34886d135cec62883e76ba25bda34b4623e4a696.tar.gz
compcert-kvx-34886d135cec62883e76ba25bda34b4623e4a696.zip
Change the syntax to gcc/clangs syntax.
This only means that there must be one identifier at the begining and then a designator. Bug 20765
Diffstat (limited to 'cparser')
-rw-r--r--cparser/Parser.vy6
-rw-r--r--cparser/pre_parser.mly3
2 files changed, 6 insertions, 3 deletions
diff --git a/cparser/Parser.vy b/cparser/Parser.vy
index f6bd6a7e..7fe686f1 100644
--- a/cparser/Parser.vy
+++ b/cparser/Parser.vy
@@ -145,8 +145,10 @@ postfix_expression:
{ (CAST typ (COMPOUND_INIT (rev' init)), loc) }
| loc = LPAREN typ = type_name RPAREN LBRACE init = initializer_list COMMA RBRACE
{ (CAST typ (COMPOUND_INIT (rev' init)), loc) }
-| loc = BUILTIN_OFFSETOF LPAREN typ = type_name COMMA mem = designator_list RPAREN
- { (BUILTIN_OFFSETOF typ (rev mem), loc) }
+| loc = BUILTIN_OFFSETOF LPAREN typ = type_name COMMA id = OTHER_NAME mems = designator_list RPAREN
+ { (BUILTIN_OFFSETOF typ ((INFIELD_INIT (fst id))::(rev mems)), loc) }
+| loc = BUILTIN_OFFSETOF LPAREN typ = type_name COMMA mem = OTHER_NAME RPAREN
+ { (BUILTIN_OFFSETOF typ [INFIELD_INIT (fst mem)], loc) }
(* Semantic value is in reverse order. *)
argument_expression_list:
diff --git a/cparser/pre_parser.mly b/cparser/pre_parser.mly
index dc9c5319..cdd043a7 100644
--- a/cparser/pre_parser.mly
+++ b/cparser/pre_parser.mly
@@ -254,7 +254,8 @@ postfix_expression:
| postfix_expression LBRACK expression RBRACK
| postfix_expression LPAREN argument_expression_list? RPAREN
| BUILTIN_VA_ARG LPAREN assignment_expression COMMA type_name RPAREN
-| BUILTIN_OFFSETOF LPAREN type_name COMMA designator_list RPAREN
+| BUILTIN_OFFSETOF LPAREN type_name COMMA other_identifier RPAREN
+| BUILTIN_OFFSETOF LPAREN type_name COMMA other_identifier designator_list RPAREN
| postfix_expression DOT other_identifier
| postfix_expression PTR other_identifier
| postfix_expression INC