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

--- Comment #5 from dodji at seketeli dot org <dodji at seketeli dot org> 
2011-05-27 17:27:43 UTC ---
In the example below, I could reproduce a case of difference between the
mangled name and the content of DW_AT_name.

Basically the content of the DW_AT_name property of the instanciation of
S is S<2048u>, and the mangled name of the member function f is
_ZN1N1SILm2048EE1fEm --> N::S<2048ul>::f(unsigned long).  Notice how the
former S<2048u> and the latter S<2048ul> are different.

typedef long unsigned int size_t;

static const size_t KB = 1024;
static const size_t atomSize = sizeof(double);
static const size_t blockSize = 16 * KB;

namespace N {
template<size_t size>
struct S
{
    void f(size_t);
};

template<size_t size>
inline void
S<size>::f(size_t)
{
    size_t i = size;
}

}

int
main()
{
    N::S<blockSize / atomSize> s1;
    s1.f(10);
}

Reply via email to