llvm-project/clang/lib/AST
Michael Kruse 2130117f92 [Clang][OpenMP] Allow loop-transformations with template parameters.
Clang would reject

    #pragma omp for
    #pragma omp tile sizes(P)
    for (int i = 0; i < 128; ++i) {}

where P is a template parameter, but the loop itself is not
template-dependent. Because P context-dependent, the TransformedStmt
cannot be generated and therefore is nullptr (until the template is
instantiated by TreeTransform). The OMPForDirective would still expect
the a loop is the dependent context and trigger an error.

Fix by introducing a NumGeneratedLoops field to OMPLoopTransformation.
This is used to distinguish the case where no TransformedStmt will be
generated at all (e.g. #pragma omp unroll full) and template
instantiation is needed. In the latter case, delay resolving the
iteration space like when the for-loop itself is template-dependent
until the template instatiation.

A more radical solution would always delay the iteration space analysis
until template instantiation, but would also break many test cases.

Reviewed By: ABataev

Differential Revision: https://reviews.llvm.org/D111124
2021-10-06 12:21:04 -05:00
..
Interp Implement if consteval (P1938) 2021-10-05 08:04:14 -04:00
APValue.cpp [NFC] Move readAPValue/writeAPValue up the inheritance hierarchy 2021-01-06 16:44:50 -08:00
ASTConcept.cpp [llvm][clang][NFC] updates inline licence info 2021-08-11 02:48:53 +00:00
ASTConsumer.cpp
ASTContext.cpp [PowerPC][MMA] Allow MMA builtin types in pre-P10 compilation units 2021-10-05 07:59:32 -05:00
ASTDiagnostic.cpp Fix missing qualifier in template type diffing 2021-08-16 18:34:18 -07:00
ASTDumper.cpp Undo Revert "Ignore template instantiations if not in AsIs mode" 2020-11-03 13:59:01 -08:00
ASTImporter.cpp Implement if consteval (P1938) 2021-10-05 08:04:14 -04:00
ASTImporterLookupTable.cpp [clang][AST] Set correct DeclContext in ASTImporter lookup table for ParmVarDecl. 2021-06-04 14:24:44 +02:00
ASTStructuralEquivalence.cpp [ADT] Remove APInt/APSInt toString() std::string variants 2021-06-11 13:19:15 +01:00
ASTTypeTraits.cpp Update `DynTypedNode` to support the conversion of `TypeLoc`s. 2021-10-04 19:25:24 +00:00
AttrDocTable.cpp [gn build] manually port 18f9e25ce1 (AttrDocTable) 2021-08-12 21:30:59 -04:00
AttrImpl.cpp [OpenMP] Overhaul `declare target` handling 2021-05-06 02:10:41 -05:00
CMakeLists.txt [gn build] manually port 18f9e25ce1 (AttrDocTable) 2021-08-12 21:30:59 -04:00
CXXABI.h Recommit of a2fdf9d4d7. 2021-02-05 11:27:30 -05:00
CXXInheritance.cpp Make iteration over the DeclContext::lookup_result safe. 2021-03-17 08:59:04 +00:00
Comment.cpp
CommentBriefParser.cpp [clang] Fix a few more comment typos to cycle bots 2021-09-20 20:06:03 -04:00
CommentCommandTraits.cpp
CommentLexer.cpp [clang][NFC] Rearrange Comment Token and Lexer fields to reduce padding 2020-10-27 00:03:43 +00:00
CommentParser.cpp
CommentSema.cpp
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 Update inline builtin handling to honor gnu inline attribute 2021-10-04 22:26:25 +02:00
DeclBase.cpp Replace an unnecessary null check with an assert; NFC 2021-08-20 12:04:46 -04:00
DeclCXX.cpp [clang] Fix a few more comment typos to cycle bots 2021-09-20 20:06:03 -04:00
DeclFriend.cpp
DeclGroup.cpp
DeclObjC.cpp [ObjC] Add a command line flag that disables recognition of objc_direct for testability 2021-04-06 11:17:01 -04:00
DeclOpenMP.cpp [OPENMP]Redesign of OMPExecutableDirective/OMPDeclarativeDirective representation. 2020-08-06 12:25:19 -04:00
DeclPrinter.cpp Add dumping support for RequiresExpr. 2021-06-30 14:27:19 -07:00
DeclTemplate.cpp [clang] set templates as invalid when any of the parameters are invalid 2021-09-25 04:04:47 +02:00
DeclarationName.cpp [clang][AST] Encapsulate DeclarationNameLoc, NFCI 2021-01-27 11:21:01 +00:00
Expr.cpp Fix missing return from 9324cc2ca9 2021-09-28 07:30:06 -07: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] NFC: Rename rvalue to prvalue 2021-06-09 12:27:10 +02:00
ExprConstant.cpp Implement if consteval (P1938) 2021-10-05 08:04:14 -04:00
ExprObjC.cpp [clang] NFC: refactor multiple implementations of getDecltypeForParenthesizedExpr 2021-07-28 23:27:43 +02:00
ExternalASTMerger.cpp Make iteration over the DeclContext::lookup_result safe. 2021-03-17 08:59:04 +00:00
ExternalASTSource.cpp
FormatString.cpp
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 Change __builtin_sycl_unique_stable_name to just use an Itanium mangling 2021-09-28 06:41:03 -07:00
JSONNodeDumper.cpp Implement if consteval (P1938) 2021-10-05 08:04:14 -04:00
Linkage.h [c++20] For P0732R2 / P1907R1: Basic code generation and name 2020-11-09 22:10:27 -08:00
Mangle.cpp [clang/Basic] Make TargetInfo.h not use DataLayout again 2021-04-27 22:26:10 -04:00
MicrosoftCXXABI.cpp Change __builtin_sycl_unique_stable_name to just use an Itanium mangling 2021-09-28 06:41:03 -07:00
MicrosoftMangle.cpp [clang] Fix a few more comment typos to cycle bots 2021-09-20 20:06:03 -04: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
OpenMPClause.cpp [APInt] Stop using soft-deprecated constructors and methods in clang. NFC. 2021-10-04 09:38:11 +01:00
ParentMap.cpp
ParentMapContext.cpp Reapply "Support Attr in DynTypedNode and ASTMatchers." 2021-08-06 22:30:32 +02:00
PrintfFormatString.cpp [Clang] Add __ibm128 type to represent ppc_fp128 2021-09-06 18:00:58 +08:00
QualTypeNames.cpp Fully-qualify template args of outer types in getFullyQualifiedType 2021-06-03 10:50:00 -07:00
RawCommentList.cpp
RecordLayout.cpp [AIX] Implement AIX special alignment rule about double/long double 2020-07-27 15:13:03 -04:00
RecordLayoutBuilder.cpp [clang] Fix a few more comment typos to cycle bots 2021-09-20 20:06:03 -04:00
ScanfFormatString.cpp
SelectorLocationsKind.cpp
Stmt.cpp Implement if consteval (P1938) 2021-10-05 08:04:14 -04:00
StmtCXX.cpp
StmtIterator.cpp
StmtObjC.cpp
StmtOpenMP.cpp [Clang][OpenMP] Allow loop-transformations with template parameters. 2021-10-06 12:21:04 -05:00
StmtPrinter.cpp Implement if consteval (P1938) 2021-10-05 08:04:14 -04:00
StmtProfile.cpp [Clang][OpenMP] Infix OMPLoopTransformationDirective abstract class. NFC. 2021-10-06 10:49:07 -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 Implement if consteval (P1938) 2021-10-05 08:04:14 -04:00
Type.cpp Fixed warnings in LLVM produced by -Wbitwise-instead-of-logical 2021-10-03 13:04:18 +02:00
TypeLoc.cpp [Clang] Add __ibm128 type to represent ppc_fp128 2021-09-06 18:00:58 +08:00
TypePrinter.cpp [Clang] Ignore BTFTag attr if used as a type attribute 2021-09-22 13:48:29 -07:00
VTTBuilder.cpp
VTableBuilder.cpp [NFC] [Clang]: fix spelling mistake in assert message 2021-04-12 14:10:52 +08:00