On Thu, Apr 12, 2012 at 01:37:24PM +0400, Kirill Yukhin wrote: > Folks, > Here is patch with removed implied atomic ACQUIRE/RELEASE. Could you > please have a look?
+ + sprintf (hle_macro, "__ATOMIC_HLE_ACQUIRE=%d", IX86_HLE_ACQUIRE); + def_or_undef (parse_in, hle_macro); + + sprintf (hle_macro, "__ATOMIC_HLE_RELEASE=%d", IX86_HLE_RELEASE); + def_or_undef (parse_in, hle_macro); This doesn't belong to ix86_target_macros_internal, but to ix86_target_macros. It is defined unconditionally, so you don't want to undef and define it again on each target pragma, and furthermore cpp_undef with __ATOMIC_HLE_ACQUIRE=something wouldn't work (for undef you'd need __ATOMIC_HLE_ACQUIRE). And in ix86_target_macros you should be able to use cpp_define_formatted and avoid the temporary buffer. As for the rest of the patch, I'd like Richard to chime in... Jakub