This is the mail archive of the
mailing list for the GCC project.
Re: target attributes, pragmas and preprocessor macros
- From: Christian Bruel <christian dot bruel at st dot com>
- To: Kyrill Tkachov <kyrylo dot tkachov at arm dot com>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Mon, 18 May 2015 08:26:46 +0200
- Subject: Re: target attributes, pragmas and preprocessor macros
- Authentication-results: sourceware.org; auth=none
- References: <55537136 dot 5030007 at arm dot com>
On 05/13/2015 05:43 PM, Kyrill Tkachov wrote:
Are target attributes supposed to redefine the preprocessor macros available?
For example, on aarch64 if the file is compiled with floating point support
the __ARM_FEATURE_FMA predefine is available. If the user adds to a function
a target attribute disabling floating point, then is __ARM_FEATURE_FMA supposed
to be undefined in the body of that function?
Looking at some backends, it seems that only #pragmas are supposed to have that effect,
but I just wanted to confirm.
yes they do, But careful, even the "inherited" macros should be redefined...
for instance for arm/thumb we can have something like:
#pragma GCC target ("thumb")
#error "__thumb__ is not defined"
#error "__ARM_32BIT_STATE is not defined"
#else /* thumb1 */
#error "__ARM_32BIT_STATE is defined"
#endif /* thumb1 */