mirror of
https://github.com/frida/tinycc
synced 2024-12-22 13:12:34 +03:00
3e77bfb6e9
See testcase. We must always paste tokens (at least if not currently substing a normal argument, which is a speed optimization only now) but at the same time must not regard a ## token coming from argument expansion as the token-paste operator, nor if we constructed a ## token due to pasting itself (that was already checked by pp/01.c).
15 lines
289 B
C
15 lines
289 B
C
#define STR1(u) # u
|
|
#define pass(a) a
|
|
#define __ASM_REG(reg) STR1(one##reg)
|
|
#define _ASM_DX __ASM_REG(tok)
|
|
X162 pass(__ASM_REG(tok))
|
|
X161 pass(_ASM_DX)
|
|
X163 pass(STR1(one##tok))
|
|
|
|
X170 pass(x ## y)
|
|
X171 pass(x pass(##) y)
|
|
|
|
#define Y(x) Z(x)
|
|
#define X Y
|
|
X180 return X(X(1));
|