[Bug middle-end/56759] New: result of __builtin_constant_p( ) is not constant enough for __builtin_choose_expr( )

gcc-bugzilla at codyps dot com gcc-bugzilla@gcc.gnu.org
Thu Mar 28 00:55:00 GMT 2013


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: unassigned@gcc.gnu.org
        ReportedBy: gcc-bugzilla@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)



More information about the Gcc-bugs mailing list