]> granicus.if.org Git - clang/commitdiff
Ensure we peer through () when handling typeid(*p).
authorMike Stump <mrs@apple.com>
Tue, 17 Nov 2009 00:45:21 +0000 (00:45 +0000)
committerMike Stump <mrs@apple.com>
Tue, 17 Nov 2009 00:45:21 +0000 (00:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89015 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGCXXExpr.cpp
test/CodeGenCXX/rtti.cpp

index eff432a05c099504c58e067e5c53dff807eedd96..75740af0744fa18283a387c2135f57e016b83d12 100644 (file)
@@ -372,7 +372,7 @@ llvm::Value * CodeGenFunction::EmitCXXTypeidExpr(const CXXTypeidExpr *E) {
       // We need to do a zero check for *p, unless it has NonNullAttr.
       // FIXME: PointerType->hasAttr<NonNullAttr>()
       bool CanBeZero = false;
-      if (UnaryOperator *UO = dyn_cast<UnaryOperator>(subE))
+      if (UnaryOperator *UO = dyn_cast<UnaryOperator>(subE->IgnoreParens()))
         if (UO->getOpcode() == UnaryOperator::Deref)
           CanBeZero = true;
       if (CanBeZero) {
index 49dcbe3f77e85a8f791973d2b1801960a848ff0f..76f571ede2823261268a716e83aef64ef4e61e37 100644 (file)
@@ -102,7 +102,7 @@ void test2_2(test1_D *dp) {
     test2_1();
   if (typeid(NP) == typeid(test1_D))
     test2_1();
-  if (typeid(*dp) == typeid(test1_D))
+  if (typeid(((*(dp)))) == typeid(test1_D))
     test2_1();
 }