http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19449
Ryan Lortie <desrt at desrt dot ca> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |desrt at desrt dot ca
--- Comment #7 from Ryan Lortie <desrt at desrt dot ca> ---
Another case, and this one fails at all optimisation levels:
int a(void) { return 0; }
/* This always returns a constant expression. If we can't statically
* determine its value, then this is the constant expression '0'.
*/
#define CONSTIFY(x) (__builtin_constant_p(x)&&(x))
/* works fine */
int b = CONSTIFY(a());
int c = CONSTIFY(a()) ? 2 : 3;
/* fails */
int d = __builtin_choose_expr(CONSTIFY(a()), 2, 3);