https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118542

Hubert Tong <hstong at ca dot ibm.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hstong at ca dot ibm.com

--- Comment #5 from Hubert Tong <hstong at ca dot ibm.com> ---
(In reply to Andrew Pinski from comment #4)
> https://github.com/llvm/llvm-project/commit/
> b2348f4ced639e7247cf3a0bba900dd3ca855996

The "compilers seem to not have differing behavior in that case" claim made as
part of the Clang rationale warning less about the function-like macro case is
can be disproved.

https://godbolt.org/z/5se6Pe83Y demonstrates, three different behaviours using
five extant implementations for the following:

#define PLATFORM_HAS_ALPHA 1
#define HAS(X) (defined(PLATFORM_HAS_ ## X) && (PLATFORM_HAS_ ## X))
#define NOT(X) !(X)

#if NOT(HAS(ALPHA))
static_assert(false, "Hi");
#endif

Reply via email to