https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68890
Bug ID: 68890
Summary: [5.3 Regression] ICE in verify_ctor_sanity, at
cp/constexpr.c:2113
Product: gcc
Version: 5.3.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: ---
Following minimal case:
#include <array>
template <typename T, std::size_t N>
class FixedVector : protected std::array<T, N>
{
public:
typedef typename std::array<T, N> base;
typedef uint8_t internal_size_type;
constexpr FixedVector()
: base()
, size_(0u)
{}
private:
internal_size_type size_;
};
template <typename T>
class ptr
{
public:
typedef T element_type;
constexpr ptr(T* p = nullptr) noexcept : px_(p) {}
private:
T* px_;
};
class ForwardDeclaredClass;
void func()
{
FixedVector<ptr<ForwardDeclaredClass>, 1> var;
}
gives me:
constexpr-ICE.cpp: In function 'void func()':
constexpr-ICE.cpp:34:45: in constexpr expansion of 'var.FixedVector<T,
N>::FixedVector<ptr<ForwardDeclaredClass>, 1ul>()'
constexpr-ICE.cpp:12:13: in constexpr expansion of
'((FixedVector<ptr<ForwardDeclaredClass>,
1ul>*)this)->FixedVector<ptr<ForwardDeclaredClass>,
1ul>::<anonymous>.std::array<ptr<ForwardDeclaredClass>, 1ul>::array()'
constexpr-ICE.cpp:34:45: internal compiler error: in verify_ctor_sanity, at
cp/constexpr.c:2113
FixedVector<ptr<ForwardDeclaredClass>, 1> var;
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
on GCC 5.3.0 release:
Using built-in specs.
COLLECT_GCC=bin/g++
COLLECT_LTO_WRAPPER=/login/sg220044/53/bin/../libexec/gcc/x86_64-pc-linux-gnu/5.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-5.3.0/configure --enable-bootstrap
--enable-checking=release --enable-clocale=gnu --enable-__cxa_atexit
--disable-fixed-point --enable-gnu-indirect-function --enable-gnu-unique-object
--enable-initfini-array --enable-languages=c,c++ --disable-libmudflap
--disable-libssp --disable-libstdcxx-pch --enable-libstdcxx-time
--enable-libstdcxx-threads --disable-libquadmath --disable-libquadmath-support
--enable-linux-futex --enable-lto --disable-multiarch --disable-multilib
--disable-nls --enable-plugin --enable-secureplt --disable-sjlj-exceptions
--enable-threads=posix --enable-tls --enable-vtable-verify --disable-werror
--with-build-config=bootstrap-lto --with-default-libstdcxx-abi=gcc4-compatible
--with-diagnostics-color=auto --with-gnu-as --with-gnu-ld
--with-linker-hash-style=gnu --with-system-zlib --host=x86_64-pc-linux-gnu
--build=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu
--prefix=/atse_git/ostash/tc5
Thread model: posix
gcc version 5.3.0 (GCC)
Same code compiles silently with July snapshot:
Using built-in specs.
COLLECT_GCC=/login/sg220044/storage/tc5/bin/g++
COLLECT_LTO_WRAPPER=/atse_git/ostash/tc5/libexec/gcc/x86_64-pc-linux-gnu/5.2.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-5-20150728/configure --enable-bootstrap
--enable-checking=release --enable-clocale=gnu --enable-__cxa_atexit
--disable-fixed-point --enable-gnu-indirect-function --enable-gnu-unique-object
--enable-initfini-array --enable-languages=c,c++ --disable-libmudflap
--disable-libssp --disable-libstdcxx-pch --enable-libstdcxx-time
--enable-libstdcxx-threads --disable-libquadmath --disable-libquadmath-support
--enable-linux-futex --enable-lto --disable-multiarch --disable-multilib
--disable-nls --enable-plugin --enable-secureplt --disable-sjlj-exceptions
--enable-threads=posix --enable-tls --enable-vtable-verify --disable-werror
--with-build-config=bootstrap-lto --with-default-libstdcxx-abi=gcc4-compatible
--with-diagnostics-color=auto --with-gnu-as --with-gnu-ld
--with-linker-hash-style=gnu --with-system-zlib --host=x86_64-pc-linux-gnu
--build=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu
--prefix=/atse_git/ostash/tc5
Thread model: posix
gcc version 5.2.1 20150728 (GCC)