summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorCharles Davis <cdavis@mines.edu>2010-07-03 05:53:41 +0000
committerCharles Davis <cdavis@mines.edu>2010-07-03 05:53:41 +0000
commit0029a2a9579c4222c8feea85c2e4d5047297438e (patch)
tree63374f2c44f7234feccfe3375291a54694593dfa /clang/lib
parentbf6ffa3b894c99c169432b759e50ce91bd746e6f (diff)
downloadbcm5719-llvm-0029a2a9579c4222c8feea85c2e4d5047297438e.tar.gz
bcm5719-llvm-0029a2a9579c4222c8feea85c2e4d5047297438e.zip
Fix mangling of function pointers in the Microsoft C++ Mangler.
llvm-svn: 107564
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/CodeGen/MicrosoftCXXABI.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp
index a8fd0b0c2dd..960b1fe77a0 100644
--- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp
+++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp
@@ -1015,6 +1015,11 @@ void MicrosoftCXXNameMangler::mangleType(const PointerType *T) {
if (PointeeTy->isArrayType()) {
// Pointers to arrays are mangled like arrays.
mangleExtraDimensions(T->getPointeeType());
+ } else if (PointeeTy->isFunctionType()) {
+ // Function pointers are special.
+ Out << '6';
+ mangleType(static_cast<const FunctionType *>(PointeeTy.getTypePtr()),
+ NULL, false, false);
} else {
if (!PointeeTy.hasQualifiers())
// Lack of qualifiers is mangled as 'A'.
OpenPOWER on IntegriCloud