Check in LLVM r95781.
diff --git a/test/CodeGenCXX/mangle-extern-local.cpp b/test/CodeGenCXX/mangle-extern-local.cpp
new file mode 100644
index 0000000..ed91da4
--- /dev/null
+++ b/test/CodeGenCXX/mangle-extern-local.cpp
@@ -0,0 +1,45 @@
+// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
+
+// CHECK: @var1 = external global i32
+// CHECK: @_ZN1N4var2E = external global i32
+// CHECK: @var5 = external global i32
+// CHECK: @_ZN1N4var3E = external global i32
+// CHECK: @_ZN1N4var4E = external global i32
+
+// CHECK: declare i32 @_Z5func1v()
+// CHECK: declare i32 @_ZN1N5func2Ev()
+// CHECK: declare i32 @func4()
+// CHECK: declare i32 @_ZN1N5func3Ev()
+
+int f1() {
+  extern int var1, func1();
+  return var1 + func1();
+}
+
+namespace N {
+
+int f2() {
+  extern int var2, func2();
+  return var2 + func2();
+}
+
+struct S {
+  static int f3() {
+    extern int var3, func3();
+    struct LC { int localfunc() { extern int var4; return var4; } };
+    LC localobj;
+    return var3 + func3() + localobj.localfunc();
+  }
+};
+
+int anchorf3() { return S::f3(); } 
+
+extern "C" {
+int f4() {
+  extern int var5, func4();
+  return var5 + func4();
+}
+}
+
+}
+