summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-06-04 22:46:59 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-06-04 22:46:59 +0000
commit50fba8f0a9cccf38c64c312a40f1134490ab9fc3 (patch)
tree1df2573b75dc6214f71c1a8a1ba599c0b45b0909 /clang
parent47d988c54c8cac52c41917bcbf52f9bc244adf76 (diff)
downloadbcm5719-llvm-50fba8f0a9cccf38c64c312a40f1134490ab9fc3.tar.gz
bcm5719-llvm-50fba8f0a9cccf38c64c312a40f1134490ab9fc3.zip
PR13022: cope with parenthesized function types in MS name mangling.
llvm-svn: 157959
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/AST/MicrosoftMangle.cpp2
-rw-r--r--clang/test/CodeGenCXX/mangle-ms.cpp5
2 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp
index 7bcc2f384ac..59848817028 100644
--- a/clang/lib/AST/MicrosoftMangle.cpp
+++ b/clang/lib/AST/MicrosoftMangle.cpp
@@ -198,7 +198,7 @@ void MicrosoftCXXNameMangler::mangleFunctionEncoding(const FunctionDecl *FD) {
// We should never ever see a FunctionNoProtoType at this point.
// We don't even know how to mangle their types anyway :).
- const FunctionProtoType *FT = cast<FunctionProtoType>(FD->getType());
+ const FunctionProtoType *FT = FD->getType()->castAs<FunctionProtoType>();
bool InStructor = false, InInstMethod = false;
const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD);
diff --git a/clang/test/CodeGenCXX/mangle-ms.cpp b/clang/test/CodeGenCXX/mangle-ms.cpp
index 6556ab73086..ff757685b2d 100644
--- a/clang/test/CodeGenCXX/mangle-ms.cpp
+++ b/clang/test/CodeGenCXX/mangle-ms.cpp
@@ -116,3 +116,8 @@ void operator_new_delete() {
delete [] array;
// CHECK: @"\01??_V@YAXPAX@Z"
}
+
+// PR13022
+void (redundant_parens)();
+void redundant_parens_use() { redundant_parens(); }
+// CHECK: @"\01?redundant_parens@@YAXXZ"
OpenPOWER on IntegriCloud