llvm-project/clang/lib/Sema
Alp Toker ae3a944a6e Fix missed exception spec checks and crashes
Delayed exception specification checking for defaulted members and virtual
destructors are both susceptible to mutation during iteration so we need to
swap and process the worklists.

This resolves both accepts-invalid and rejects-valid issues and moreover fixes
potential invalid memory access as the contents of the vectors change during
iteration and recursive template instantiation.

Checking can be further delayed where parent classes aren't yet fully defined.
This patch adds two assertions at end of TU to ensure no specs are left
unchecked as was happenning before the fix, plus a test case from Marshall Clow
for the defaulted member crash extracted from the libcxx headers.

Reviewed by Richard Smith.

llvm-svn: 192947
2013-10-18 05:54:19 +00:00
..
AnalysisBasedWarnings.cpp Consumed analysis: Add param_typestate attribute, which specifies that 2013-10-17 23:23:53 +00:00
AttributeList.cpp Make helper function static. 2013-09-28 15:08:41 +00:00
CMakeLists.txt Attribute tablegen now understands that attribute arguments can be optional. This allows for automated checking of the number of arguments expected vs number of arguments given for attributes. Greatly reduces the amount of manual checking required. 2013-09-09 23:33:17 +00:00
CodeCompleteConsumer.cpp Allow the computation of the base priority for a declaration code completion result to consider the completion context 2013-01-31 04:52:16 +00:00
DeclSpec.cpp [-fms-extensions] Permit 'override' in C++98 and 'sealed' as a synonym for 'final' 2013-10-18 00:33:31 +00:00
DelayedDiagnostic.cpp objective-C: when diagnosing deprecated/unavailable usage of 2012-09-21 20:46:37 +00:00
IdentifierResolver.cpp Convert anachronistic use of 'void *' to 'DeclContext *' in Scope that was a holdover from the long-dead Action interface. 2013-10-08 17:08:03 +00:00
JumpDiagnostics.cpp Fix a couple of bugs where jump diagnostics would not notice that a variable 2013-06-03 01:05:37 +00:00
Makefile
MultiplexExternalSemaSource.cpp Add hooks to ExternalSemaSource for after-the-fact diagnosis of 2013-08-12 22:11:14 +00:00
Scope.cpp Reapply r151638 and r151641. 2012-02-29 10:24:19 +00:00
ScopeInfo.cpp Sema for Captured Statements 2013-04-16 19:37:38 +00:00
Sema.cpp Fix missed exception spec checks and crashes 2013-10-18 05:54:19 +00:00
SemaAccess.cpp Fix typo correction usage of SemaAccess.cpp. 2013-10-01 02:44:48 +00:00
SemaAttr.cpp Tablegen now generates a StringSwitch for attributes containing enumeration arguments to map strings to the proper enumeration value. This makes error checking more consistent and reduces the amount of hand-written code required. 2013-09-11 19:47:58 +00:00
SemaCXXScopeSpec.cpp Use -fms-compatibility to trigger lookup into dep. bases 2013-09-20 17:04:25 +00:00
SemaCast.cpp Allow dynamic_cast to void* even with -fno-rtti. 2013-09-24 23:21:41 +00:00
SemaChecking.cpp Special case '%C' handling in ObjC format strings to handle integer literals that can represent unicode characters 2013-10-15 05:25:17 +00:00
SemaCodeComplete.cpp Convert anachronistic use of 'void *' to 'DeclContext *' in Scope that was a holdover from the long-dead Action interface. 2013-10-08 17:08:03 +00:00
SemaConsumer.cpp
SemaDecl.cpp [-fms-extensions] Permit 'override' in C++98 and 'sealed' as a synonym for 'final' 2013-10-18 00:33:31 +00:00
SemaDeclAttr.cpp Consumed analysis: Add param_typestate attribute, which specifies that 2013-10-17 23:23:53 +00:00
SemaDeclCXX.cpp Fix missed exception spec checks and crashes 2013-10-18 05:54:19 +00:00
SemaDeclObjC.cpp Reduce double set lookups by using the result of insert. 2013-10-14 15:16:10 +00:00
SemaExceptionSpec.cpp Add the intrinsic __builtin_convertvector 2013-09-18 03:29:45 +00:00
SemaExpr.cpp Rename some functions for consistency. 2013-10-17 15:37:26 +00:00
SemaExprCXX.cpp [-fms-extensions] Permit 'override' in C++98 and 'sealed' as a synonym for 'final' 2013-10-18 00:33:31 +00:00
SemaExprMember.cpp Refactor all diagnosing of TypoCorrections through a common function, in 2013-08-17 00:46:16 +00:00
SemaExprObjC.cpp Refine string literal concatenation warning within an NSArray literal to not warn when the literal comes from a macro expansion. Fixes <rdar://problem/15147688>. 2013-10-09 22:34:33 +00:00
SemaFixItUtils.cpp PR17290: Use 'false' macro in fix-it hint for initializing a variable of type 2013-09-20 00:27:40 +00:00
SemaInit.cpp Gracefully (and correctly) handle init of multiple union members 2013-10-03 12:14:24 +00:00
SemaLambda.cpp Implement conversion to function pointer for generic lambdas without captures. 2013-09-29 08:45:24 +00:00
SemaLookup.cpp PR17592: Ensure we diagnose shadowing a template parameter with a local extern 2013-10-16 21:12:00 +00:00
SemaObjCProperty.cpp ObjectiveC: Warn when 'readonly' property has explicit 2013-10-07 17:20:02 +00:00
SemaOpenMP.cpp Convert anachronistic use of 'void *' to 'DeclContext *' in Scope that was a holdover from the long-dead Action interface. 2013-10-08 17:08:03 +00:00
SemaOverload.cpp Sema: Cleanup redundant variable NumArgsToCheck 2013-10-05 10:03:01 +00:00
SemaPseudoObject.cpp ObjectiveC++: support for passing C++11 style initialized temporaries to 2013-10-16 17:51:43 +00:00
SemaStmt.cpp Improve the error message for attempting to build a for range loop using a 2013-10-11 22:16:04 +00:00
SemaStmtAsm.cpp [ms-inline asm] Don't diagnose an empty lookup for inline assmebly. This happen 2013-05-24 18:32:55 +00:00
SemaStmtAttr.cpp PR15300: Support C++11 attributes on base-specifiers. We don't support any such 2013-02-19 23:47:15 +00:00
SemaTemplate.cpp Convert anachronistic use of 'void *' to 'DeclContext *' in Scope that was a holdover from the long-dead Action interface. 2013-10-08 17:08:03 +00:00
SemaTemplateDeduction.cpp Make InstantiatingTemplate depth checks clearer 2013-10-08 08:09:04 +00:00
SemaTemplateInstantiate.cpp Make InstantiatingTemplate depth checks clearer 2013-10-08 08:09:04 +00:00
SemaTemplateInstantiateDecl.cpp Rename some functions for consistency. 2013-10-17 15:37:26 +00:00
SemaTemplateVariadic.cpp Refactor all diagnosing of TypoCorrections through a common function, in 2013-08-17 00:46:16 +00:00
SemaType.cpp Tighten diagnostics for calling conventions on variadic functions 2013-10-09 18:10:25 +00:00
TargetAttributesSema.cpp Implement ARM GNU-style interrupt attribute 2013-10-01 14:34:25 +00:00
TargetAttributesSema.h Revert r170500. It over-zealously converted *ALL* things named Attributes, which is wrong here. 2012-12-20 19:22:21 +00:00
TreeTransform.h ms-compat: Fix taking the address of a member of a dependent base 2013-10-15 18:38:02 +00:00
TypeLocBuilder.cpp Add missing file from r183563 (the recommit of 183466). 2013-06-07 20:33:10 +00:00
TypeLocBuilder.h Re-commit r183466 with a fix to make the TypeLoc casting machinery work 2013-06-07 20:31:48 +00:00