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); }