llvm-project/clang/lib/AST
Owen Pan 7cd441ff53 [clang][NFC] Wrap TYPE_SWITCH in "do while (0)" in the interpreter
Wraps the expansions of TYPE_SWITCH and COMPOSITE_TYPE_SWITCH in
the constexpr interpreter with "do { ... } while (0)" so that these
macros can be used like this:

if (llvm::Optional<PrimType> T = Ctx.classify(FieldTy))
  TYPE_SWITCH(*T, Ok &= ReturnValue<T>(FP.deref<T>(), Value));
else
  Ok &= Composite(FieldTy, FP, Value);

This bug was found while testing D116316. See also review comment:
https://reviews.llvm.org/D64146?id=208520#inline-584131

Also cleaned up the macro definitions by removing the superfluous
do-while statements and removed the unused INT_TPYE_SWITCH macro.

Differential Revision: https://reviews.llvm.org/D117301
2022-01-24 09:05:27 -08:00
..
Interp [clang][NFC] Wrap TYPE_SWITCH in "do while (0)" in the interpreter 2022-01-24 09:05:27 -08:00
APValue.cpp [clang] Do not crash in APValue::prettyPrint() on forward-decl structs. 2021-11-10 17:17:00 +01:00
ASTConcept.cpp [llvm][clang][NFC] updates inline licence info 2021-08-11 02:48:53 +00:00
ASTConsumer.cpp
ASTContext.cpp [clang] Fix function pointer address space 2022-01-13 08:06:19 -08:00
ASTDiagnostic.cpp Reland "[AST] Add UsingType: a sugar type for types found via UsingDecl" 2021-12-20 18:03:15 +01:00
ASTDumper.cpp [AST] injected-class-name is not a redecl, even in template specializations 2021-11-02 14:37:45 +01:00
ASTImporter.cpp Fix build failure with GCC 11 in C++20 mode 2022-01-06 17:20:26 +01:00
ASTImporterLookupTable.cpp [clang][ASTImporter] Update lookup table correctly at deduction guides. 2021-12-06 20:40:16 +01:00
ASTStructuralEquivalence.cpp Reland "[AST] Add UsingType: a sugar type for types found via UsingDecl" 2021-12-20 18:03:15 +01:00
ASTTypeTraits.cpp Add `LambdaCapture`-related matchers. 2021-11-08 18:50:54 +00:00
AttrDocTable.cpp [gn build] manually port 18f9e25ce1 (AttrDocTable) 2021-08-12 21:30:59 -04:00
AttrImpl.cpp [clang][OpenMP5.1] Initial parsing/sema for 'indirect' clause 2022-01-10 16:58:56 -08:00
CMakeLists.txt [gn build] manually port 18f9e25ce1 (AttrDocTable) 2021-08-12 21:30:59 -04:00
CXXABI.h [clang] Remove unused forward declarations (NFC) 2022-01-08 11:56:40 -08:00
CXXInheritance.cpp [clang] Use llvm::erase_if (NFC) 2021-10-17 13:50:29 -07:00
Comment.cpp Use llvm::any_of and llvm::all_of (NFC) 2021-12-11 11:54:37 -08:00
CommentBriefParser.cpp [AST] Remove an unnecessary continue (NFC) 2021-12-11 23:04:08 -08:00
CommentCommandTraits.cpp Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
CommentLexer.cpp Comment parsing: Don't recognize commands in single-line double quotation 2022-01-14 22:46:07 +01:00
CommentParser.cpp
CommentSema.cpp Comment AST: Recognize function-like objects via return type (NFC) 2021-11-12 21:11:11 +01:00
ComparisonCategories.cpp [clang] Fix a few more comment typos to cycle bots 2021-09-20 20:06:03 -04:00
ComputeDependence.cpp [clang] Make CXXDefaultArgExpr inherit dependence from the inner Expr 2021-06-10 14:51:08 +02:00
DataCollection.cpp
Decl.cpp [OpenMP] Change default visibility to protected for device declarations 2022-01-20 21:06:26 -05:00
DeclBase.cpp [C++20] [Module] fix bug 47716 and implement [module.interface]/p6 2022-01-24 10:25:25 +08:00
DeclCXX.cpp [clang] Remove redundant member initialization (NFC) 2022-01-02 10:20:23 -08:00
DeclFriend.cpp
DeclGroup.cpp
DeclObjC.cpp [Clang][Sema] Fix attribute mismatch warning for ObjC class properties 2022-01-11 12:10:18 +00:00
DeclOpenMP.cpp [OPENMP]Redesign of OMPExecutableDirective/OMPDeclarativeDirective representation. 2020-08-06 12:25:19 -04:00
DeclPrinter.cpp ast-print: Avoid extra whitespace before function opening brace 2021-11-14 20:45:16 -08:00
DeclTemplate.cpp DebugInfo/Printing: Improve name of policy for including types for template arguments 2021-11-11 21:59:27 -08:00
DeclarationName.cpp [NFC][AST] Return underlying strings directly instead of OS.str() 2021-12-09 16:05:46 -08:00
Expr.cpp [clang] Use true/false instead of 1/0 (NFC) 2022-01-09 00:19:47 -08:00
ExprCXX.cpp [Clang] Introduce Swift async calling convention. 2021-07-09 11:50:10 -07:00
ExprClassification.cpp [clang] NFC: change uses of `Expr->getValueKind` into `is?Value` 2021-07-28 03:09:31 +02:00
ExprConcepts.cpp [clang] Remove redundant member initialization (NFC) 2022-01-02 10:20:23 -08:00
ExprConstant.cpp [Parse] Use empty RecoveryExpr when if/while/do/switch conditions fail to parse 2022-01-10 10:38:27 +01:00
ExprObjC.cpp [clang] NFC: refactor multiple implementations of getDecltypeForParenthesizedExpr 2021-07-28 23:27:43 +02:00
ExternalASTMerger.cpp [clang] Use llvm::erase_if (NFC) 2021-10-17 13:50:29 -07:00
ExternalASTSource.cpp Avoid including FileManager.h from SourceManager.h 2020-03-11 13:53:12 -07:00
FormatString.cpp [clang] Remove unused "using" (NFC) 2021-12-29 08:27:29 -08:00
FormatStringParsing.h
InheritViz.cpp
ItaniumCXXABI.cpp Change __builtin_sycl_unique_stable_name to just use an Itanium mangling 2021-09-28 06:41:03 -07:00
ItaniumMangle.cpp [clang][NFC] Small mangler cleanups 2022-01-20 11:20:15 -08:00
JSONNodeDumper.cpp [JSONNodeDumper] Do not print mangled names for local variables (PR49111) 2021-12-23 08:55:41 +01:00
Linkage.h [c++20] For P0732R2 / P1907R1: Basic code generation and name 2020-11-09 22:10:27 -08:00
Mangle.cpp [clang][#52782] Bail on incomplete parameter type in stdcall name mangling 2022-01-05 17:58:24 +01:00
MicrosoftCXXABI.cpp [clang] Remove redundant member initialization (NFC) 2022-01-12 22:12:01 -08:00
MicrosoftMangle.cpp Introduce _BitInt, deprecate _ExtInt 2021-12-06 12:52:01 -05:00
NSAPI.cpp [Clang] Add __ibm128 type to represent ppc_fp128 2021-09-06 18:00:58 +08:00
NestedNameSpecifier.cpp Fully qualify template template parameters when printing 2021-09-02 15:04:34 -07:00
ODRHash.cpp Revert "Following up on PR48517, fix handling of template arguments that refer" 2021-01-20 15:55:35 +01:00
OSLog.cpp [Sema] Warn about printf %n on Android and Fuchsia 2022-01-21 21:00:39 +00:00
OpenMPClause.cpp [Clang][OpenMP] Add the support for atomic compare in parser 2021-12-24 08:16:51 -05:00
ParentMap.cpp Use DenseMap::lookup (NFC) 2021-12-17 18:19:25 -08:00
ParentMapContext.cpp [AST, CodeGen, Driver] Use llvm::is_contained (NFC) 2021-10-12 09:19:49 -07:00
PrintfFormatString.cpp [Sema] Warn about printf %n on Android and Fuchsia 2022-01-21 21:00:39 +00:00
QualTypeNames.cpp Reland "[AST] Add UsingType: a sugar type for types found via UsingDecl" 2021-12-20 18:03:15 +01:00
RawCommentList.cpp [clang] fix undefined behaviour in RawComment::getFormattedText() 2020-04-06 10:48:25 +02:00
RecordLayout.cpp [AIX] Implement AIX special alignment rule about double/long double 2020-07-27 15:13:03 -04:00
RecordLayoutBuilder.cpp [Clang][AArch64][ARM] Unaligned Access Warning Added 2022-01-20 14:12:49 +00:00
ScanfFormatString.cpp
SelectorLocationsKind.cpp
Stmt.cpp [clang] number labels in asm goto strings after tied inputs 2022-01-11 12:09:24 -08:00
StmtCXX.cpp
StmtIterator.cpp
StmtObjC.cpp [clang] Convert ObjCAtTryStmt to llvm::TrailingObjects 2021-10-27 08:57:05 -04:00
StmtOpenMP.cpp [clang] Fix bugprone argument comments (NFC) 2022-01-09 00:19:49 -08:00
StmtPrinter.cpp [HIP] Add atomic load, atomic store and atomic cmpxchng_weak builtin support in HIP-clang 2021-11-29 12:07:13 -07:00
StmtProfile.cpp [Clang][OpenMP] Add the support for atomic compare in parser 2021-12-24 08:16:51 -05:00
StmtViz.cpp
TemplateBase.cpp Fully qualify template template parameters when printing 2021-09-02 15:04:34 -07:00
TemplateName.cpp Fully qualify template template parameters when printing 2021-09-02 15:04:34 -07:00
TextNodeDumper.cpp Reland "[AST] Add UsingType: a sugar type for types found via UsingDecl" 2021-12-20 18:03:15 +01:00
Type.cpp [clang] Use nullptr instead of 0 or NULL (NFC) 2021-12-29 08:34:20 -08:00
TypeLoc.cpp Reland (2) "[AST] Add RParen loc for decltype AutoTypeloc."" 2022-01-17 11:33:11 +01:00
TypePrinter.cpp [clang][AST] Fix crash when printing error 2022-01-02 18:03:42 -08:00
VTTBuilder.cpp
VTableBuilder.cpp [clang] Use true/false instead of 1/0 (NFC) 2022-01-09 00:19:47 -08:00