AVX-512: Handle curly braces in multi-line macro parameters
Multi-line macro uses curly braces for enclosing a parameter containing comma(s). Passing curly braces as a part of a parameter which is already enclosed with braces confuses the macro expander. Escape character '\' is prefixed in this case. e.g.) mmacro {1,2,3}, {4,\{5,6\}} mmacro gets 2 parameters of '1,2,3' and '4,{5,6}' Signed-off-by: Jin Kyu Song <jin.kyu.song@intel.com> Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
This commit is contained in:
parent
cc1dc9de53
commit
a800aed7b7
1 changed files with 5 additions and 0 deletions
|
@ -208,6 +208,7 @@ enum pp_token_type {
|
|||
TOK_PREPROC_Q, TOK_PREPROC_QQ,
|
||||
TOK_PASTE, /* %+ */
|
||||
TOK_INDIRECT, /* %[...] */
|
||||
TOK_BRACE, /* \{...\} */
|
||||
TOK_SMAC_PARAM, /* MUST BE LAST IN THE LIST!!! */
|
||||
TOK_MAX = INT_MAX /* Keep compiler from reducing the range */
|
||||
};
|
||||
|
@ -1103,6 +1104,10 @@ static Token *tokenize(char *line)
|
|||
type = TOK_COMMENT;
|
||||
while (*p)
|
||||
p++;
|
||||
} else if (p[0] == '\\' && (p[1] == '{' || p[1] == '}')) {
|
||||
type = TOK_BRACE;
|
||||
p += 2;
|
||||
line++;
|
||||
} else {
|
||||
/*
|
||||
* Anything else is an operator of some kind. We check
|
||||
|
|
Loading…
Reference in a new issue