D-Programming-GDC/GDC — pull request #37 by jpf91 (2012-11-10 19:34:47+00:00)
Title: Sync GCC 4.7 branch with latest master

I merged the latest master branch into gcc-4.7 so we'll have the new frontend and the ARM fixes in the gcc-4.7 branch. Among other things this means that we could build and ship binary cross compilers for ARM with crosstool-NG.

I assume we'll use a merge workflow to get the commits from master into gcc-4.7 (as opposed to a rebase / cherry pick workflow).

Merging was actually easier than I though: There were only two merge conflicts, update-gcc.sh was removed, but the new setup-gcc.sh works fine for gcc 4.7. Then there was a small 2line merge conflict in some file.
GCC version specific changes were easy to fix as well.

The biggest problem is the GCC 4.8 is now compiled as c++ code and 4.7 is compiled as C. For now I backported the GCC 4.8 changes to keep the C / C++ mix we had used before in 4.7. But if we want to support the gcc-4.7 branch it's probably best to change the build scripts to compile all GDC/D FE code as C++ and make sure all GCC imports are extern(C)?

The test suite doesn't show any regressions. gcc 4.7 actually passes 2 more tests than gcc-4.8. I guess that's a bug in the gcc backend?
```
=== gdc Summary ===

# of expected passes	2478
# of unexpected failures	10
# of unresolved testcases	26
/home/jpf/gdc/objdir/gcc/testsuite/gdc/../../gdc version 4.7.1 (GCC)
```
```
=== gdc Summary ===

# of expected passes	2476
# of unexpected failures	12
# of unresolved testcases	26
/home/jpf/gdc/objdir2/gcc/testsuite/gdc/../../gdc version 4.8.0 20121021 (experimental) (GCC)
```