Finish off zero check for typeid(*p) so that it will do a __cxa_bad_typeid.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88852 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/CodeGenCXX/rtti.cpp b/test/CodeGenCXX/rtti.cpp
index f89396d..3e41c72 100644
--- a/test/CodeGenCXX/rtti.cpp
+++ b/test/CodeGenCXX/rtti.cpp
@@ -102,6 +102,8 @@
     test2_1();
   if (typeid(NP) == typeid(test1_D))
     test2_1();
+  if (typeid(*dp) == typeid(test1_D))
+    test2_1();
 }
 
 // CHECK-LL:define void @_Z7test2_2P7test1_D(%class.test1_B7* %dp) nounwind {
@@ -113,3 +115,15 @@
 // CHECK-LL-NEXT:  %call = call zeroext i1 @_ZNK3std9type_infoeqERKS0_(%"class.std::type_info"* %2, %"class.std::type_info"* bitcast (%1* @_ZTI7test1_D to %"class.std::type_info"*))
 
 // CHECK-LL:       %call2 = call zeroext i1 @_ZNK3std9type_infoeqERKS0_(%"class.std::type_info"* bitcast (%0* @_ZTI2NP to %"class.std::type_info"*), %"class.std::type_info"* bitcast (%1* @_ZTI7test1_D to %"class.std::type_info"*))
+
+// CHECK-LL:       %3 = bitcast %class.test1_B7* %tmp5 to %"class.std::type_info"***
+// CHECK-LL-NEXT:  %4 = icmp ne %"class.std::type_info"*** %3, null
+// CHECK-LL-NEXT:  br i1 %4, label %6, label %5
+// CHECK-LL:     ; <label>:5
+// CHECK-LL-NEXT:  call void @__cxa_bad_typeid()
+// CHECK-LL-NEXT:  unreachable
+// CHECK-LL:     ; <label>:6
+// CHECK-LL-NEXT:  %vtable6 = load %"class.std::type_info"*** %3
+// CHECK-LL-NEXT:  %7 = getelementptr inbounds %"class.std::type_info"** %vtable6, i64 -1
+// CHECK-LL-NEXT:  %8 = load %"class.std::type_info"** %7
+// CHECK-LL-NEXT:  %call7 = call zeroext i1 @_ZNK3std9type_infoeqERKS0_(%"class.std::type_info"* %8, %"class.std::type_info"* bitcast (%1* @_ZTI7test1_D to %"class.std::type_info"*))