gcc 4.2.1 (reduced)

Extract upstream gcc using the following shell code.

v=4.2.1 &&
sha1core=bcd024dd860853d003f56c7caf6557d910b98a7d &&
sha1cxx=c2d0a621eda8c6b63a0d04ff27ae186b9739f33f &&
sha1sum gcc-core-$v.tar.gz |grep $sha1core &&
sha1sum gcc-g++-$v.tar.gz |grep $sha1cxx &&
tar xzf gcc-core-$v.tar.gz &&
tar xzf gcc-g++-$v.tar.gz &&
paths='
 COPYING
 COPYING.LIB
 config*
 gcc
 include
 libcpp
 libdecnumber
 libiberty
 --exclude=*ChangeLog*
 --exclude=config-ml.in
 --exclude=config/*.m4
 --exclude=gcc/doc
 --exclude=gcc/po
 --exclude=gcc/treelang
' &&
mkdir gcc-$v-reduced &&
(cd gcc-$v && tar c $paths) |
(cd gcc-$v-reduced && tar x)
Add GCC/.gitattributes to disable whitespace checks in third-party code

Also add GCC/gcc/cp/.gitattributes to enable whitespace checks in our
code.
Re-tabify GCC sources

When the GCC sources were imported from upstream we had whitespace
checks that disallowed hard TAB characters.  Restore hard TAB characters
as they originally appeared in the upstream sources.  This will make it
easier to import upstream changes later.
Add __builtin_bswap32/64 builtins for GCC 4.7

The builtins added by commit 7409c592 (Add llvm-gcc/g++ builtins,
2010-09-07) are now available in GCC 4.7, so remove the __llvm__
conditional in "GCC_XML/Support/GCC/4.7/gccxml_builtins.h".

Reported-by: Matěj Cepl <mcepl@redhat.com>
Add __builtin_bswap32/64 builtins for all GCC >= 4.2 (#13430)

The builtins added by commit 7409c592 (Add llvm-gcc/g++ builtins,
2010-09-07) are now available in glibc 2.16 so remove the __llvm__
conditional in "GCC_XML/Support/GCC/*/gccxml_builtins.h".  This
generalizes the parent commit.
Merge branch 're-tabify-gcc'
Merge branch 'gcc-upstream'

Merge a branch representing a snapshot of the upstream GCC 4.2.1 source
tree on which our current GCC directory is based.  Use the 'ours' merge
strategy since we do not actually need any changes.

The merge will serve to hold a reference to an unnamed "upstream
snapshot" branch.  In the future one may add a snapshot of a new
upstream version to the branch and merge it into our GCC directory using
a "-X subtree=GCC" option to the Git recursive merge strategy.
Fix compiler identification for flag selection

The name "clang" matches "cl" so we can no longer use that ancient
method of testing for MSVC.  Use modern compiler identification tests to
add compiler-specific C flags for building GCC code.

Reported-by: Sebastien Binet <binet@cern.ch>
Fix compilation with Clang

Compile GCC *.c source files with "-std=c89" since the sources use
constructs not valid under C99.

Reported-by: Sebastien Binet <binet@cern.ch>
Tell Git to skip whitespace checks in GCC_XML/Support/GCC

This directory contains third-party code so add a .gitattributes file to
tell Git not to check it for whitespace style.
Add gccxml_builtins.h for GCC 4.8 starting with 4.7 version
Override GCC 4.8 <bits/c++config.h> to disable __int128
Add GCC 4.8 original headers
Update GCC 4.8 headers to work with gccxml's GCC 4.2 parser

Port changes from commit 16190d39 (Update GCC 4.7 headers...,
2012-03-09) to GCC 4.8 headers:

* In (|e|x)mmintrin.h remove the function bodies that use builtins not
  provided by the GCC 4.2 parser.  The declarations are sufficient for
  our needs anyway.

* In <complex> remove assignment operator implementations that use
  conversions the older GCC parser does not recognize.

* In <iomanip> remove use of initializer lists.

* In <bits/stl_*> remove use of decltype.

* In <ext/atomicity.h> replace use of atomic builtins with older GCC
  names.

Inspired-by: Mattias Ellert <mattias.ellert@fysast.uu.se>