summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-03-07 05:10:40 +0000
committerDouglas Gregor <dgregor@apple.com>2010-03-07 05:10:40 +0000
commit577cf97cf3ef54b29ecca43d2c5561d0165548bf (patch)
tree8985b66fcddc5d47160cbe6a44cd50baa539d8d7
parent5cb196e14bff6f73eb2ee69bce06ab2ccb7df18e (diff)
downloadbcm5719-llvm-577cf97cf3ef54b29ecca43d2c5561d0165548bf.tar.gz
bcm5719-llvm-577cf97cf3ef54b29ecca43d2c5561d0165548bf.zip
Don't turn off mangling in implicitly extern "C" system headers. GCC
doesn't do this on any of the major platforms, and we don't really support any of the platforms that do (nor will we actually handle those headers well). Fixes PR6217; see PR6530 for details on what we would need to do to support these platforms. llvm-svn: 97899
-rw-r--r--clang/lib/CodeGen/Mangle.cpp6
-rw-r--r--clang/test/CodeGenCXX/mangle-system-header.cpp4
2 files changed, 4 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp
index 20d54b34105..2e0580f5e79 100644
--- a/clang/lib/CodeGen/Mangle.cpp
+++ b/clang/lib/CodeGen/Mangle.cpp
@@ -214,12 +214,6 @@ bool MangleContext::shouldMangleDeclName(const NamedDecl *D) {
if (!getASTContext().getLangOptions().CPlusPlus)
return false;
- // No mangling in an "implicit extern C" header.
- if (D->getLocation().isValid() &&
- getASTContext().getSourceManager().
- isInExternCSystemHeader(D->getLocation()))
- return false;
-
// Variables at global scope with non-internal linkage are not mangled
if (!FD) {
const DeclContext *DC = D->getDeclContext();
diff --git a/clang/test/CodeGenCXX/mangle-system-header.cpp b/clang/test/CodeGenCXX/mangle-system-header.cpp
index cb68bc19760..6716b58926d 100644
--- a/clang/test/CodeGenCXX/mangle-system-header.cpp
+++ b/clang/test/CodeGenCXX/mangle-system-header.cpp
@@ -5,3 +5,7 @@
# 1 "fake_system_header.h" 1 3 4
// CHECK: define void @_ZdlPvS_(
void operator delete (void*, void*) {}
+
+// PR6217
+// CHECK: define void @_Z3barv()
+void bar() { }
OpenPOWER on IntegriCloud