HomePhabricator

Add -fgnuc-version= to control __GNUC__ and other GCC macros

Authored by rnk on Oct 10 2019, 2:04 PM.

Description

Add -fgnuc-version= to control GNUC and other GCC macros

I noticed that compiling on Windows with -fno-ms-compatibility had the
side effect of defining GNUC, along with GNUG, GXX_RTTI, and
a number of other macros for GCC compatibility. This is undesirable and
causes Chromium to do things like mix attribute and __declspec,
which doesn't work. We should have a positive language option to enable
GCC compatibility features so that we can experiment with
-fno-ms-compatibility on Windows. This change adds -fgnuc-version= to be
that option.

My issue aside, users have, for a long time, reported that GNUC
doesn't match their expectations in one way or another. We have
encouraged users to migrate code away from this macro, but new code
continues to be written assuming a GCC-only environment. There's really
nothing we can do to stop that. By adding this flag, we can allow them
to choose their own adventure with GNUC.

This overlaps a bit with the "GNUMode" language option from -std=gnu*.
The gnu language mode tends to enable non-conforming behaviors that we'd
rather not enable by default, but the we want to set things like
GXX_RTTI by default, so I've kept these separate.

Helps address PR42817

Reviewed By: hans, nickdesaulniers, MaskRay

Differential Revision: https://reviews.llvm.org/D68055

llvm-svn: 374449

Details

Committed
rnkOct 10 2019, 2:04 PM
Reviewer
hans
Differential Revision
D68055: Add -fgnuc-version= to control __GNUC__ and other GCC macros
Parents
rG53a53e63c85e: Add a missing include in test.
Branches
Unknown
Tags
Unknown