[Bug c++/78908] [6/7 Regression] lto1: internal compiler error: in lto_read_decls, at lto/lto.c:1814
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 17 15:05:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78908
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jason at gcc dot gnu.org
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The reason for the ICE is that emplace is instantiated twice, once with
unsigned char type and once with unsigned : 1 (with QImode). Both are mangled
as h and that is the reason why we want to put them into the same comdat group.
Looking at the *.original dump,
;; Function void operator<<(Logger, T) [with Logger = G<L<int> >; T = unsigned
char:1] (null)
;; Function void H::insert(const T&) [with T = unsigned char:1] (null)
look like bug, I believe C++ should never instantiate anything with the
bitfield types, there is missing call to cp_perform_integral_promotions or
unlowered_expr_type or something similar somewhere, more likely the latter.
In the *.original dump there is also:
operator<< <G<L<int> >, unsigned char:1> (TARGET_EXPR <D.2839, b>, (int)
p2->depth)
which shows that p2->depth has been actually promoted afterwards, but not when
deducing the arguments of the template.
More information about the Gcc-bugs
mailing list