When mangling names, always use the canonical decl. Fixes PR5144.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83420 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Anders Carlsson 2009-10-06 21:58:01 +00:00
Родитель 6e461bf753
Коммит b217c1b9d2
2 изменённых файлов: 10 добавлений и 1 удалений

Просмотреть файл

@ -1303,7 +1303,7 @@ namespace clang {
"Mangling declaration"); "Mangling declaration");
CXXNameMangler Mangler(Context, os); CXXNameMangler Mangler(Context, os);
if (!Mangler.mangle(D)) if (!Mangler.mangle(cast<NamedDecl>(D->getCanonicalDecl())))
return false; return false;
os.flush(); os.flush();

Просмотреть файл

@ -198,3 +198,12 @@ template<typename T> typename __enable_if<__is_scalar<T>::__value, void>::__type
template void ft7<int>(); template void ft7<int>();
// CHECK: @_Z3ft7IPvEN11__enable_ifIXsr11__is_scalarIT_E7__valueEvE6__typeEv // CHECK: @_Z3ft7IPvEN11__enable_ifIXsr11__is_scalarIT_E7__valueEvE6__typeEv
template void ft7<void*>(); template void ft7<void*>();
// PR5144
extern "C" {
void extern_f(void);
};
// CHECK: @extern_f
void extern_f(void) { }