[Bug c++/53839] New: [4.7/4.8 Regresion] [C++11] internal compiler error: in adjust_temp_type, at cp/semantics.c:6391
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jul 3 13:22:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53839
Bug #: 53839
Summary: [4.7/4.8 Regresion] [C++11] internal compiler error:
in adjust_temp_type, at cp/semantics.c:6391
Classification: Unclassified
Product: gcc
Version: 4.7.1
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: redi@gcc.gnu.org
#include <chrono>
namespace c = std::chrono;
struct X { long x; };
X f(const c::time_point<c::system_clock, c::microseconds>& tp)
{
return { (tp - tp).count() };
}
void g()
{
c::time_point<c::system_clock, c::microseconds> tp;
f(tp);
}
ICE with 4.7.1 and 4.8-20120701 snapshot, the snapshot output is
ice.cc: In function 'X f(const
std::chrono::time_point<std::chrono::system_clock, std::chrono::duration<long
int, std::ratio<1l, 1000000l> > >&)':
ice.cc:9:20: in constexpr expansion of
'std::chrono::operator-<std::chrono::system_clock, std::chrono::duration<long
int, std::ratio<1l, 1000000l> >, std::chrono::duration<long int, std::ratio<1l,
1000000l> > >((* & tp), (* & tp))'
/home/jwakely/gcc/4.x/include/c++/4.8.0/chrono:629:41: in constexpr expansion
of '(& __lhs)->std::chrono::time_point<_Clock,
_Dur>::time_since_epoch<std::chrono::system_clock, std::chrono::duration<long
int, std::ratio<1l, 1000000l> > >()'
ice.cc:9:32: internal compiler error: in adjust_temp_type, at
cp/semantics.c:6396
return { (tp - tp).count() };
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
Compiles OK with 4.6.3 or if the expression is changed to not use a temporary:
auto x = tp - tp;
return { x.count() };
More information about the Gcc-bugs
mailing list