To summarize, c++ doesn't work in a native build for x86_64-pc-mingw32. We have
found that not all of c++ is broken, and I've been narrowing it down further.
The problem manifests itself as a segfault and ICE that is only visible when
you use the -E switch -- otherwise, the failure is silent. This in and of
itself I think is a bug, and we should report it to gcc.
The segfault can be triggered by #including a c++ header like iostream or
cmath. Further digging reveals that it's not all of the headers. I found that
for instance cassert works fine. I've been able to narrow down cmath's failure
due to including <ext/type_traits.h>, and this might be the failure point for
everything.
I think I've found a reduced test case...
#include <bits/c++config.h>
#include <bits/cpp_type_traits.h>
template<bool, typename>
struct __enable_if
{ };
template<typename _Tp>
struct __enable_if<true, _Tp>
{ typedef _Tp __type; };
int main() {return 0; }
That code is taken from the ext/type_traits.h header. It doesn't give any error
(and no segfault in the -E output), but it won't compile. If you get rid of the
second template, it will compile and link to create an executable. This is, I
think, getting much closer to the heart of the problem. I think we should post
on gcc soon for this.
--
Summary: g++ inoperable with no error message
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: nightstrike at gmail dot com
GCC host triplet: x86_64-pc-mingw32
GCC target triplet: x86_64-pc-mingw32
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35159