Menu

#334 internal compiler error, optimizing empty function

None
open
nobody
None
1
2019-02-27
2019-02-27
Anonymous
No

Description

I've met some 'internal compiler error'today.
It was a C++11 code  with some incomplete class methods.
The funny thing is that this only happens when following conditions are met.

Error conditions(If both are met, error comes out.)

Give some optimization flag. (-O2, -O3, -Os crashed, -O0, -O1 didn't.)
Not commenting empty class method.(code bellow.)

Code that makes error(Error won't come out when comment these.)

Rational& Rational::operator+=(const Rational& R)
{

}

const Rational Rational::operator+(const Rational& R) const
{

}

Rational& Rational::operator-=(const Rational& R)
{

}

const Rational Rational::operator-(const Rational& R) const
{

}

Command that I used

g++ -std=c++0x -O2 -Wall -c -fmessage-length=0 -save-temps -v -o Rational.o "..\\Rational.cpp"
g++ -std=c++0x -O3 -Wall -c -fmessage-length=0 -save-temps -v -o Rational.o "..\\Rational.cpp"
g++ -std=c++0x -Os -Wall -c -fmessage-length=0 -save-temps -v -o Rational.o "..\\Rational.cpp"

Error output

..\Rational.cpp:424:1: internal compiler error: in expand_thunk, at cgraphunit.c:1700
}
^
Please submit a full bug report,
with preprocessed source if appropriate.
See http://tdm-gcc.tdragon.net/bugs for instructions.

Enviornment and tools

OS : Windows 10 home, 64bit
GCC version : TDM-GCC 5.1.0 (I installed 64bit version)
Build tool : Eclipse CDT

All verbose output(Output from -Os flag)

Using built-in specs.
COLLECT_GCC=g++
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-5.1.0/configure --build=x86_64-w64-mingw32 --enable-targets=all --enable-languages=ada,c,c++,fortran,lto,objc,obj-c++ --enable-libgomp --enable-lto --enable-graphite --enable-cxx-flags=-DWINPTHREAD_STATIC --disable-build-with-cxx --disable-build-poststage1-with-cxx --enable-libstdcxx-debug --enable-threads=posix --enable-version-specific-runtime-libs --enable-fully-dynamic-string --enable-libstdcxx-threads --enable-libstdcxx-time --with-gnu-ld --disable-werror --disable-nls --disable-win32-registry --prefix=/mingw64tdm --with-local-prefix=/mingw64tdm --with-pkgversion=tdm64-1 --with-bugurl=http://tdm-gcc.tdragon.net/bugs
Thread model: posix
gcc version 5.1.0 (tdm64-1) 
COLLECT_GCC_OPTIONS='-std=c++11' '-Os' '-Wall' '-c' '-fmessage-length=0' '-save-temps' '-v' '-o' 'Rational.o' '-mtune=generic' '-march=x86-64'
 C:/TDM-GCC-64/bin/../libexec/gcc/x86_64-w64-mingw32/5.1.0/cc1plus.exe -E -quiet -v -iprefix C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/ -D_REENTRANT ..\Rational.cpp -mtune=generic -march=x86-64 -std=c++11 -Wall -fmessage-length=0 -Os -fpch-preprocess -o Rational.ii
ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++"
ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32"
ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/backward"
ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/5.1.0/include"
ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../include"
ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/5.1.0/include-fixed"
ignoring duplicate directory "C:/TDM-GCC-64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/include"
\#include "..." search starts here:
\#include <...> search starts here:
 C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++
 C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/x86_64-w64-mingw32
 C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/backward
 C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/include
 C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../include
 C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/include-fixed
 C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/include
End of search list.
COLLECT_GCC_OPTIONS='-std=c++11' '-Os' '-Wall' '-c' '-fmessage-length=0' '-save-temps' '-v' '-o' 'Rational.o' '-mtune=generic' '-march=x86-64'
 C:/TDM-GCC-64/bin/../libexec/gcc/x86_64-w64-mingw32/5.1.0/cc1plus.exe -fpreprocessed Rational.ii -quiet -dumpbase Rational.cpp -mtune=generic -march=x86-64 -auxbase-strip Rational.o -Os -Wall -std=c++11 -version -fmessage-length=0 -o Rational.s
GNU C++11 (tdm64-1) version 5.1.0 (x86_64-w64-mingw32)
    compiled by GNU C version 5.1.0, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++11 (tdm64-1) version 5.1.0 (x86_64-w64-mingw32)
    compiled by GNU C version 5.1.0, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 912f8e56a1253e7d16da34ab477cf469
..\Rational.cpp: In member function 'sjusju::Rational& sjusju::Rational::operator+=(const sjusju::Rational&)':
..\Rational.cpp:211:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
..\Rational.cpp: In member function 'const sjusju::Rational sjusju::Rational::operator+(const sjusju::Rational&) const':
..\Rational.cpp:216:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
..\Rational.cpp: In member function 'sjusju::Rational& sjusju::Rational::operator-=(const sjusju::Rational&)':
..\Rational.cpp:221:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
..\Rational.cpp: In member function 'const sjusju::Rational sjusju::Rational::operator-(const sjusju::Rational&) const':
..\Rational.cpp:226:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
..\Rational.cpp: In member function 'sjusju::Rational& sjusju::Rational::operator-=(const sjusju::Rational&)':
..\Rational.cpp:424:1: internal compiler error: in expand_thunk, at cgraphunit.c:1700
 }
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://tdm-gcc.tdragon.net/bugs> for instructions.

About preprecessed file

The file I uploaded is from -Os flag. (I don't think this makes difference, but in case you need.)
1 Attachments

Discussion

Anonymous
Anonymous

Add attachments
Cancel