llvm-project/clang/lib
Richard Smith a560ccf2af Switch to a different workaround for unimplementability of P0145R3 in MS ABIs.
Instead of ignoring the evaluation order rule, ignore the "destroy parameters
in reverse construction order" rule for the small number of problematic cases.
This only causes incorrect behavior in the rare case where both parameters to
an overloaded operator <<, >>, ->*, &&, ||, or comma are of class type with
non-trivial destructor, and the program is depending on those parameters being
destroyed in reverse construction order.

We could do a little better here by reversing the order of parameter
destruction for those functions (and reversing the argument evaluation order
for all direct calls, not just those with operator syntax), but that is not a
complete solution to the problem, as the same situation can be reached by an
indirect function call.

Approach reviewed off-line by rnk.

llvm-svn: 282777
2016-09-29 21:30:12 +00:00
..
ARCMigrate [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
AST [Coroutines] Add proper mangling for operator co_await for MicrosoftABI 2016-09-28 22:37:17 +00:00
ASTMatchers Complete support for the cxxCtorInitializer() AST matcher so that it can be used as a top-level matcher. 2016-09-26 17:04:27 +00:00
Analysis [analyzer] Fix CloneDetector crash on calling methods of class templates. 2016-08-23 16:42:00 +00:00
Basic [CUDA] added __nvvm_atom_{sys|cta}_* builtins. 2016-09-28 17:47:35 +00:00
CodeGen Switch to a different workaround for unimplementability of P0145R3 in MS ABIs. 2016-09-29 21:30:12 +00:00
Driver [Myriad] Silently ignore -fno-split-dwarf-inlining 2016-09-29 19:59:12 +00:00
Edit [OpenCL] Generate opaque type for sampler_t and function call for the initializer 2016-07-28 19:26:30 +00:00
Format [clang-format] Don't allow newline after uppercase Obj-C block return types 2016-09-26 22:19:08 +00:00
Frontend Mark P0127R3 as done, and replace its __has_feature check with the corresponding SD-6 macro. 2016-09-29 00:08:05 +00:00
FrontendTool C++ Modules TS: add frontend support for building pcm files from module 2016-08-26 00:14:38 +00:00
Headers [CUDA] Added support for CUDA-8 2016-09-28 17:47:40 +00:00
Index Visit lambda capture inits from RecursiveASTVisitor::TraverseLambdaCapture(). 2016-08-17 14:59:53 +00:00
Lex Mark P0127R3 as done, and replace its __has_feature check with the corresponding SD-6 macro. 2016-09-29 00:08:05 +00:00
Parse [SemaObjC] Be more strict while parsing type arguments and protocols 2016-09-13 20:04:35 +00:00
Rewrite [analyzer] Fix HTMLRewriter style sheets to support non-webkit browsers. 2016-09-15 16:25:42 +00:00
Sema P0127R2: Support type deduction for types of non-type template parameters in 2016-09-28 23:55:27 +00:00
Serialization [ASTImporter] Implement some expression-related AST node import (part 2) 2016-09-28 10:16:56 +00:00
StaticAnalyzer [StaticAnalyzer] Fix false positives for vardecls that are technically unreachable but they are needed. 2016-09-28 10:39:53 +00:00
Tooling Trying to buildbot failures caused by r282577. 2016-09-28 12:49:14 +00:00
CMakeLists.txt