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)