https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93998
Bug ID: 93998
Summary: ICE in adjust_temp_type, at cp/constexpr.c:1426
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: ostash at ostash dot kiev.ua
Target Milestone: ---
Hello,
Following code
----
#define LIKELY(x) __builtin_expect(!!(x), 1)
class Code
{
public:
constexpr bool operator==(Code rhs) const noexcept { return value_ ==
rhs.value_; }
private:
int value_;
};
int func(const Code a, const Code b, bool cond)
{
return LIKELY(a == b || cond) ? 0 : 1;
}
----
causes an ICE with GCC:
----
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/prefix/libexec/gcc/x86_64-pc-linux-gnu/10.0.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-10-20200223/configure --disable-multiarch
--disable-libquadmath --disable-libquadmath-support --disable-libssp
--disable-libstdcxx-pch --disable-multilib --disable-nls
--enable-checking=release --enable-__cxa_atexit --enable-languages=c,c++
--enable-libstdcxx-debug --enable-lto --enable-plugin --enable-threads=posix
--enable-tls --with-build-config=bootstrap-lto
--with-default-libstdcxx-abi=gcc4-compatible --with-linker-hash-style=gnu
--with-system-zlib --with-zstd=no --with-stage1-libs=
--host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu
--target=x86_64-pc-linux-gnu --prefix=/prefix
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.0.1 20200223 (experimental) (GCC)
----
----
gccice.cpp: In function 'int func(Code, Code, bool)':
gccice.cpp:1:44: internal compiler error: in adjust_temp_type, at
cp/constexpr.c:1426
1 | #define LIKELY(x) __builtin_expect(!!(x), 1)
| ^
gccice.cpp:14:10: note: in expansion of macro 'LIKELY'
14 | return LIKELY(a == b || cond) ? 0 : 1;
|
Please submit a full bug report,
with preprocessed source if appropriate.
----
Optimization level doesn't matter and any C++ standard >= c++11 causes an ICE.