inline asm: accept concatenated strings in constraints

This really should be handled implicitly in the preprocessor,
but for now this is enough.
This commit is contained in:
Michael Matz
2016-07-11 16:42:18 +02:00
parent f9423ff3fa
commit bbce31552e
4 changed files with 8 additions and 7 deletions

View File

@ -1079,6 +1079,7 @@ static void parse_asm_operands(ASMOperand *operands, int *nb_operands_ptr,
if (tok != ':') {
nb_operands = *nb_operands_ptr;
for(;;) {
CString astr;
if (nb_operands >= MAX_ASM_OPERANDS)
tcc_error("too many asm operands");
op = &operands[nb_operands++];
@ -1091,11 +1092,10 @@ static void parse_asm_operands(ASMOperand *operands, int *nb_operands_ptr,
next();
skip(']');
}
if (tok != TOK_STR)
expect("string constant");
op->constraint = tcc_malloc(tokc.str.size);
strcpy(op->constraint, tokc.str.data);
next();
parse_mult_str(&astr, "string constant");
op->constraint = tcc_malloc(astr.size);
strcpy(op->constraint, astr.data);
cstr_free(&astr);
skip('(');
gexpr();
if (is_output) {