https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84441
Bug ID: 84441
Summary: Internal compiler error
Product: gcc
Version: 7.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: egil.brendsdal at gmail dot com
Target Milestone: ---
Created attachment 43450
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43450&action=edit
Preprocessed source code.
gcc 4.x and gcc 5.x compiles the following snippet, version 6.x and 7.x fails.
The compiler output is
/tmp/bug_report.cpp: In constructor 'derived::derived(int)':
/tmp/bug_report.cpp:15:84: internal compiler error: in assign_temp, at
function.c:968
( int n ) : base( n>=0 ? make_base( 1, n ) : make_base( -1, (size_t)0-n ) ) {
}
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
Preprocessed source stored into /tmp/ccye5Pzm.out file, please attach this to
your bugreport.
+===+
#include <string>
struct base
{
typedef std::string string;
string r;
int e;
};
base make_base( int, size_t n );
struct derived : public base
{
derived( int n ) : base( n>=0 ? make_base( 1, n ) : make_base( -1,
(size_t)0-n ) ) { }
};
derived f() { return derived(1); }