summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Stump <mrs@apple.com>2009-11-17 00:45:21 +0000
committerMike Stump <mrs@apple.com>2009-11-17 00:45:21 +0000
commitc2c03349f35662eeba595af9ca9eca20ae1dc900 (patch)
treed504e6792adc718398571aecbc63e56e9b324f5a
parent7c57c41d5f8e700151c5eeb2b7e0e65f4d3149a1 (diff)
downloadbcm5719-llvm-c2c03349f35662eeba595af9ca9eca20ae1dc900.tar.gz
bcm5719-llvm-c2c03349f35662eeba595af9ca9eca20ae1dc900.zip
Ensure we peer through () when handling typeid(*p).
llvm-svn: 89015
-rw-r--r--clang/lib/CodeGen/CGCXXExpr.cpp2
-rw-r--r--clang/test/CodeGenCXX/rtti.cpp2
2 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGCXXExpr.cpp b/clang/lib/CodeGen/CGCXXExpr.cpp
index eff432a05c0..75740af0744 100644
--- a/clang/lib/CodeGen/CGCXXExpr.cpp
+++ b/clang/lib/CodeGen/CGCXXExpr.cpp
@@ -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) {
diff --git a/clang/test/CodeGenCXX/rtti.cpp b/clang/test/CodeGenCXX/rtti.cpp
index 49dcbe3f77e..76f571ede28 100644
--- a/clang/test/CodeGenCXX/rtti.cpp
+++ b/clang/test/CodeGenCXX/rtti.cpp
@@ -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();
}
OpenPOWER on IntegriCloud