https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69149
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2016-01-05 CC| |trippels at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- This is what creduce came up with: markus@x4 tmp % cat deb.ii template <typename _Tp> struct A { typedef __underlying_type(_Tp) type; }; namespace o3tl { template <typename> struct typed_flags; template <typename E, typename A<E>::type> struct is_typed_flags { class Wrap { public: constexpr operator E() {} }; }; } template <typename E> constexpr typename o3tl::typed_flags<E>::Wrap operator|(E, E) { __PRETTY_FUNCTION__; } enum SfxSlotMode { NONE, PROPGET }; namespace o3tl { template <> struct typed_flags<SfxSlotMode> : is_typed_flags<SfxSlotMode, 0x1ffffbfL> {}; class { public: short nGroupId; } a{(short)(NONE | PROPGET)}; } markus@x4 tmp % g++ deb.ii deb.ii:22:20: in constexpr expansion of ‘operator|<SfxSlotMode>((SfxSlotMode)0u, (SfxSlotMode)1u)’ deb.ii:22:28: internal compiler error: Segmentation fault } a{(short)(NONE | PROPGET)}; ^ 0xcc988f crash_signal ../../gcc/gcc/toplev.c:334 0x7f1334c6230f ??? /home/markus/glibc/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0 0xa48714 bool vec_safe_reserve<tree_node*, va_gc>(vec<tree_node*, va_gc, vl_embed>*&, unsigned int, bool) ../../gcc/gcc/vec.h:553 0xa48714 tree_node** vec_safe_push<tree_node*, va_gc>(vec<tree_node*, va_gc, vl_embed>*&, tree_node* const&) ../../gcc/gcc/vec.h:647 0xa48714 add_local_decl(function*, tree_node*) ../../gcc/gcc/function.c:6791 0xd3c416 remap_decls ../../gcc/gcc/tree-inline.c:611 0xd3d290 remap_block ../../gcc/gcc/tree-inline.c:679 0xd4373e copy_bind_expr ../../gcc/gcc/tree-inline.c:752