A preprocessor should Interpret an input line "# NUM FILENAME" as "#line NUM FILENAME"

A cpp from gcc do this.
A test case:
     tcc -E tccasm.c -o tccasm.i
     tcc -E tccasm.i -o tccasm.ii
After a patch the line numbers in tccasm.ii are the same
as in tccasm.i
master
seyko 2015-03-03 14:06:05 +03:00
parent 1706d2254b
commit 5e3e321474
1 changed files with 6 additions and 1 deletions

View File

@ -1626,7 +1626,12 @@ include_done:
case TOK_LINE:
next();
if (tok != TOK_CINT)
tcc_error("#line");
tcc_error("A #line format is wrong");
case TOK_PPNUM:
if (tok != TOK_CINT) {
char *p = tokc.cstr->data;
tokc.i = strtoul(p, (char **)&p, 10);
}
file->line_num = tokc.i - 1; /* the line number will be incremented after */
next();
if (tok != TOK_LINEFEED) {