[PATCH] D37865: [Sema] Fix a pair of crashes when generating exception specifiers with an error'ed field for a template class' default ctor.
Erich Keane via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 18 14:30:39 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL313569: [Sema] Fix a pair of crashes when generating exception specifiers with an (authored by erichkeane).
Changed prior to commit:
https://reviews.llvm.org/D37865?vs=115278&id=115726#toc
Repository:
rL LLVM
https://reviews.llvm.org/D37865
Files:
cfe/trunk/lib/Sema/SemaDeclCXX.cpp
cfe/trunk/test/SemaCXX/init-expr-crash.cpp
Index: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp
@@ -12436,7 +12436,8 @@
assert(Pattern && "We must have set the Pattern!");
}
- if (InstantiateInClassInitializer(Loc, Field, Pattern,
+ if (!Pattern->hasInClassInitializer() ||
+ InstantiateInClassInitializer(Loc, Field, Pattern,
getTemplateInstantiationArgs(Field))) {
// Don't diagnose this again.
Field->setInvalidDecl();
Index: cfe/trunk/test/SemaCXX/init-expr-crash.cpp
===================================================================
--- cfe/trunk/test/SemaCXX/init-expr-crash.cpp
+++ cfe/trunk/test/SemaCXX/init-expr-crash.cpp
@@ -0,0 +1,31 @@
+// RUN: %clang_cc1 %s -fsyntax-only -verify -std=c++11
+
+// Test reproduces a pair of crashes that were caused by code attempting
+// to materialize a default constructor's exception specifier.
+
+template <class T> struct A {
+ static T tab[];
+
+ const int M = UNDEFINED; // expected-error {{use of undeclared identifier}}
+
+ int main()
+ {
+ A<char> a;
+
+ return 0;
+ }
+};
+
+template <class T> struct B {
+ static T tab[];
+
+ // expected-error at +1 {{invalid application of 'sizeof' to an incomplete type}}
+ const int N = sizeof(B<char>::tab) / sizeof(char);
+
+ int main()
+ {
+ B<char> b;
+
+ return 0;
+ }
+};
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D37865.115726.patch
Type: text/x-patch
Size: 1468 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170918/6cdbd69c/attachment-0001.bin>
More information about the cfe-commits
mailing list