http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56759
Bug #: 56759 Summary: result of __builtin_constant_p( ) is not constant enough for __builtin_choose_expr( ) Classification: Unclassified Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassig...@gcc.gnu.org ReportedBy: gcc-bugzi...@codyps.com Testcase: --- static inline int x(int y) { return __builtin_choose_expr(__builtin_constant_p(y), 1, 0); } int foo(void) { return x(3); } --- $ i386-linux-gcc constant_not_constant.c -O3 -c constant_not_constant.c: In function 'x': constant_not_constant.c:4:9: error: first argument to '__builtin_choose_expr' not a constant return __builtin_choose_expr(__builtin_constant_p(y), 1, 0); ^ $ i386-linux-gcc -v Using built-in specs. COLLECT_GCC=i386-linux-gcc COLLECT_LTO_WRAPPER=/home/cody/x-buildall/libexec/gcc/i386-linux/4.8.1/lto-wrapper Target: i386-linux Configured with: /home/cody/g/gcc/configure --target=i386-linux --enable-targets=all --prefix=/home/cody/x-buildall --enable-languages=c --without-headers --enable-sjlj-exceptions --with-system-libunwind --disable-nls --disable-threads --disable-shared --disable-libmudflap --disable-libssp --disable-libgomp --disable-decimal-float --disable-libquadmath --enable-checking=release --disable-libatomic : (reconfigured) /home/cody/g/gcc/configure --target=i386-linux --enable-targets=all --prefix=/home/cody/x-buildall --enable-languages=c --without-headers --enable-sjlj-exceptions --with-system-libunwind --disable-nls --disable-threads --disable-shared --disable-libmudflap --disable-libssp --disable-libgomp --disable-decimal-float --disable-libquadmath --enable-checking=release --disable-libatomic : (reconfigured) /home/cody/g/gcc/configure --target=i386-linux --enable-targets=all --prefix=/home/cody/x-buildall --enable-languages=c --without-headers --enable-sjlj-exceptions --with-system-libunwind --disable-nls --disable-threads --disable-shared --disable-libmudflap --disable-libssp --disable-libgomp --disable-decimal-float --disable-libquadmath --enable-checking=release --disable-libatomic : (reconfigured) /home/cody/g/gcc/configure --target=i386-linux --enable-targets=all --prefix=/home/cody/x-buildall --enable-languages=c --without-headers --enable-sjlj-exceptions --with-system-libunwind --disable-nls --disable-threads --disable-shared --disable-libmudflap --disable-libssp --disable-libgomp --disable-decimal-float --disable-libquadmath --enable-checking=release --disable-libatomic Thread model: single gcc version 4.8.1 20130328 (prerelease) (GCC)