[cfe-commits] r144582 - in /cfe/trunk: lib/Sema/SemaAccess.cpp test/SemaTemplate/crash-10438657.cpp
Douglas Gregor
dgregor at apple.com
Mon Nov 14 15:00:44 PST 2011
Author: dgregor
Date: Mon Nov 14 17:00:43 2011
New Revision: 144582
URL: http://llvm.org/viewvc/llvm-project?rev=144582&view=rev
Log:
When we're checking access in a dependent context, don't try to look
at the bases of an undefined class. Fixes <rdar://problem/10438657>.
Added:
cfe/trunk/test/SemaTemplate/crash-10438657.cpp
Modified:
cfe/trunk/lib/Sema/SemaAccess.cpp
Modified: cfe/trunk/lib/Sema/SemaAccess.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaAccess.cpp?rev=144582&r1=144581&r2=144582&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaAccess.cpp (original)
+++ cfe/trunk/lib/Sema/SemaAccess.cpp Mon Nov 14 17:00:43 2011
@@ -265,6 +265,9 @@
SmallVector<const CXXRecordDecl*, 8> Queue; // actually a stack
while (true) {
+ if (Derived->isDependentContext() && !Derived->hasDefinition())
+ return AR_dependent;
+
for (CXXRecordDecl::base_class_const_iterator
I = Derived->bases_begin(), E = Derived->bases_end(); I != E; ++I) {
Added: cfe/trunk/test/SemaTemplate/crash-10438657.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/crash-10438657.cpp?rev=144582&view=auto
==============================================================================
--- cfe/trunk/test/SemaTemplate/crash-10438657.cpp (added)
+++ cfe/trunk/test/SemaTemplate/crash-10438657.cpp Mon Nov 14 17:00:43 2011
@@ -0,0 +1,15 @@
+// RUN: not %clang_cc1 -fsyntax-only %s 2> %t
+// RUN: FileCheck %s < %t
+// CHECK: 10 errors
+template<typename _CharT>
+class collate : public locale::facet {
+
+protected:
+virtual ~collate() {}
+ class wxObject;
+ class __attribute__ ((visibility("default"))) wxGDIRefData
+ : public wxObjectRefData {};
+ class __attribute__ ((visibility("default"))) wxGDIObject : public wxObject { \
+ public:
+ virtual bool IsOk() const {
+ return m_refData && static_cast<wxGDIRefData *>(m_refData)->IsOk();
More information about the cfe-commits
mailing list