https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105732
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed.
Reduced as much as I could:
#define _VA_FEATURE_DETECT__3RD_ARG(_placeholder_1, _placeholder_2, value, ...)
value
# define _VA_FEATURE_OPT_DISAPPEARS 1
# define _VA_FEATURE_OPT_DISAPPEARS__VA_OPT__(_placeholder) 0
# define _VA_FEATURE_OPT_DETECT_UNEXPANDED(...)
_VA_FEATURE_OPT_DISAPPEARS##__VA_OPT__(foo)
# define _VA_FEATURE_OPT_DETECT_VERIFY_2_ARGS_TEST_ZERO(_placeholder_1,
_placeholder_2) \
_VA_FEATURE_OPT_DETECT_UNEXPANDED()
# define _VA_FEATURE_OPT_DETECT_1_OR_2_ARGS(_placeholder, ...) \
_VA_FEATURE_DETECT__3RD_ARG(__VA_ARGS__, \
_VA_FEATURE_OPT_DETECT_VERIFY_2_ARGS_TEST_ZERO, \
0)
# define _VA_FEATURE_OPT_DETECT_1_ARG(...) \
_VA_FEATURE_OPT_DETECT_1_OR_2_ARGS(bar, __VA_OPT__(, ))(__VA_OPT__(, ))
# define _VA_FEATURE_OPT_DETECT_SUPPORTED _VA_FEATURE_OPT_DETECT_1_ARG(?)
# if _VA_FEATURE_OPT_DETECT_SUPPORTED
# endif