[Bug c++/12843] New: [ABI] Possibly wrong mangling (incompatibility with icc7)

bangerth at dealii dot org gcc-bugzilla@gcc.gnu.org
Thu Oct 30 14:41:00 GMT 2003


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

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

           Summary: [ABI] Possibly wrong mangling (incompatibility with
                    icc7)
           Product: gcc
           Version: 3.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bangerth at dealii dot org
                CC: gcc-bugs at gcc dot gnu dot org

This code
--------------------------------
template <typename Container>
typename Container::iterator
f(Container)
{ return typename Container::iterator(); }

struct X {
    typedef int * iterator;
};

template X::iterator f<X> (X);
------------------------------
produces the following manglings of the instance of f():
  mainline -fabi-version=1:
    _Z1fI1XEN9Container8iteratorES1_
  mainline -fabi-version=2:
    _Z1fI1XENT_8iteratorES1_
  icc 7.0:
    _Z1fI1XEN9Container8iteratorET_

I am not familiar with the mangling rules, but someone might want to
check that we really do the right thing in this case and that it is icc's
faulty mangling that lets us not be link-compatible between icc and
mainline with -fabi-version=2.

W.



More information about the Gcc-bugs mailing list