The code trying to assign a typedef to an anonymous tag declaration was
extremely rambunctious, both on parsing and on template instantiation.
Calm it down, fixing an internal consistency assert on anonymous enum
instantiation manglings.

llvm-svn: 124653
diff --git a/clang/test/CodeGenCXX/mangle-unnamed.cpp b/clang/test/CodeGenCXX/mangle-unnamed.cpp
index 83b46d6..e9f60d0 100644
--- a/clang/test/CodeGenCXX/mangle-unnamed.cpp
+++ b/clang/test/CodeGenCXX/mangle-unnamed.cpp
@@ -69,3 +69,14 @@
   // CHECK: _ZZ2f7vE1a
   return a.b;
 }
+
+// This used to cause an assert because the typedef-for-anonymous-tag
+// code was trying to claim the enum for the template.
+enum { T8 };
+template <class T> struct Test8 {
+  typedef T type;
+  // define internal void @"_ZN5Test8I3$_2EC1ES0_"(
+  Test8(type t) {}
+};
+template <class T> void make_test8(T value) { Test8<T> t(value); }
+void test8() { make_test8(T8); }