Hi,
Code that compiled in 16.0 Update 1 no longer compiles after upgrading to Update 2. Here is a simple test case:
#define RECURS(ARG0,...)\
recurs(ARG0,##__VA_ARGS__)
#define FUNCS_OKAY(ARG0,...)\
direct(ARG0, ##__VA_ARGS__)\
RECURS(ARG0, ##__VA_ARGS__)
#define FUNCS_BROKEN(ARG0,...)\
direct(ARG0, 7, ##__VA_ARGS__)\
RECURS(ARG0, 7, ##__VA_ARGS__)
FUNCS_OKAY("arg0");
FUNCS_OKAY("arg0","args");
FUNCS_BROKEN("arg0");
FUNCS_BROKEN("arg0","args");Intel 16.0 Update 2 produces (preprocess only, use "-EP -P"):
direct("arg0" ) recurs("arg0" );
direct("arg0","args") recurs("arg0","args");
direct("arg0", 7 ) recurs("arg0",7,);
direct("arg0", 7,"args") recurs("arg0",7,"args");Notice that the comma was (erroneously) not elided after the "7" in the broken case (line 4). However, e.g. GCC 5.3.0 produces (use "-E"):
direct("arg0") recurs("arg0");
direct("arg0","args") recurs("arg0","args");
direct("arg0", 7) recurs("arg0", 7);
direct("arg0", 7,"args") recurs("arg0", 7,"args");Thanks,
Ian