http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59555

            Bug ID: 59555
           Summary: bogus error: template with C linkage with preprocessed
                    c++ file
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: amker.cheng at gmail dot com

Created attachment 31478
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31478&action=edit
preprocessed c++ file

For attached preprocessed file, arm-none-eabi-g++ and m68k-unknown-elf-g++ give
below error messages with either "-xc++" or "-xc++-cpp-output":

In file included from
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/stringfwd.h:40:0,
                 from
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:39,
                 from
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:25,
                 from ../../gcc/gcc/system.h:647,
                 from ../../gcc/gcc/tree-loop-distribution.c:45:
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/memoryfwd.h:63:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/memoryfwd.h:66:3:
error: template specialization with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/memoryfwd.h:70:3:
error: template with C linkage
In file included from
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:39:0,
                 from
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:25,
                 from ../../gcc/gcc/system.h:647,
                 from ../../gcc/gcc/tree-loop-distribution.c:45:
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/stringfwd.h:52:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/stringfwd.h:55:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/stringfwd.h:59:3:
error: template specialization with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/stringfwd.h:65:3:
error: template specialization with C linkage
In file included from
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:40:0,
                 from
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:25,
                 from ../../gcc/gcc/system.h:647,
                 from ../../gcc/gcc/tree-loop-distribution.c:45:
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/postypes.h:111:3:
error: template with C linkage
In file included from
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:40:0,
                 from
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:25,
                 from ../../gcc/gcc/system.h:647,
                 from ../../gcc/gcc/tree-loop-distribution.c:45:
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/postypes.h:214:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/bits/postypes.h:219:3:
error: template with C linkage
In file included from
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:25:0,
                 from ../../gcc/gcc/system.h:647,
                 from ../../gcc/gcc/tree-loop-distribution.c:45:
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:76:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:79:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:82:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:85:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:88:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:91:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:95:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:99:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:103:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:107:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:110:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:113:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:116:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:119:3:
error: template with C linkage
/daten/cross/m68k-linux/gcc-4.8/m68k-linux/include/c++/4.8.2/iosfwd:122:3:
error: template with C linkage
In file included from ../../gcc/gcc/system.h:647:0,
                 from ../../gcc/gcc/tree-loop-distribution.c:45:
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2179:54: error:
conflicting declaration of C function 'std::ostream& operator<<(std::ostream&,
mpq_srcptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2178:16: note:
previous declaration 'std::ostream& operator<<(std::ostream&, mpz_srcptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2180:54: error:
conflicting declaration of C function 'std::ostream& operator<<(std::ostream&,
mpf_srcptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2179:16: note:
previous declaration 'std::ostream& operator<<(std::ostream&, mpq_srcptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2180:54: error:
conflicting declaration of C function 'std::ostream& operator<<(std::ostream&,
mpf_srcptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2178:16: note:
previous declaration 'std::ostream& operator<<(std::ostream&, mpz_srcptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2182:51: error:
conflicting declaration of C function 'std::istream& operator>>(std::istream&,
mpq_ptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2181:16: note:
previous declaration 'std::istream& operator>>(std::istream&, mpz_ptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2183:51: error:
conflicting declaration of C function 'std::istream& operator>>(std::istream&,
mpf_ptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2182:16: note:
previous declaration 'std::istream& operator>>(std::istream&, mpq_ptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2183:51: error:
conflicting declaration of C function 'std::istream& operator>>(std::istream&,
mpf_ptr)'
/daten/cross/m68k-linux/m68k-linux/sys-root/usr/include/gmp.h:2181:16: note:
previous declaration 'std::istream& operator>>(std::istream&, mpz_ptr)'

The messages disappear if I delete all "# ...file..." lines.

Reply via email to