llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang @llvm/pr-subscribers-clang-modules Author: David Pagan (ddpagan) <details> <summary>Changes</summary> …ts'. Add initial parsing/sema support for new assumption clause so clause can be specified. For now, it's ignored, just like the others. Added support for 'no_openmp_construct' to release notes. Testing - Updated appropriate LIT tests. - Testing: check-all --- Patch is 51.39 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/125933.diff 25 Files Affected: - (modified) clang/docs/ReleaseNotes.rst (+1) - (modified) clang/include/clang/AST/OpenMPClause.h (+22) - (modified) clang/include/clang/AST/RecursiveASTVisitor.h (+6) - (modified) clang/include/clang/Basic/AttrDocs.td (+1) - (modified) clang/lib/AST/OpenMPClause.cpp (+5) - (modified) clang/lib/AST/StmtProfile.cpp (+3) - (modified) clang/lib/Parse/ParseOpenMP.cpp (+2) - (modified) clang/lib/Sema/SemaOpenMP.cpp (+2) - (modified) clang/lib/Sema/TreeTransform.h (+5) - (modified) clang/lib/Serialization/ASTReader.cpp (+6) - (modified) clang/lib/Serialization/ASTWriter.cpp (+3) - (modified) clang/test/OpenMP/assume_lambda.cpp (+7-1) - (modified) clang/test/OpenMP/assume_nesting_tmpl.cpp (+9-1) - (modified) clang/test/OpenMP/assume_template.cpp (+9-3) - (modified) clang/test/OpenMP/assumes_codegen.cpp (+9-9) - (modified) clang/test/OpenMP/assumes_messages.c (+22-22) - (modified) clang/test/OpenMP/assumes_messages_attr.c (+14-14) - (modified) clang/test/OpenMP/assumes_print.cpp (+10-9) - (modified) clang/test/OpenMP/attr-assume.cpp (+2-1) - (modified) clang/tools/libclang/CIndex.cpp (+3) - (modified) llvm/include/llvm/Frontend/OpenMP/OMP.td (+4) - (modified) llvm/include/llvm/Frontend/OpenMP/OMPKinds.def (+1) - (modified) llvm/lib/IR/Assumptions.cpp (+7-6) - (modified) llvm/lib/Transforms/IPO/OpenMPOpt.cpp (+2-1) - (modified) llvm/test/Transforms/OpenMP/icv_tracking.ll (+2) ``````````diff diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 21c1ff25d2862ba..d45e46cab3f923a 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -262,6 +262,7 @@ Python Binding Changes OpenMP Support -------------- +- Added support 'no_openmp_constructs' assumption clause. Improvements ^^^^^^^^^^^^ diff --git a/clang/include/clang/AST/OpenMPClause.h b/clang/include/clang/AST/OpenMPClause.h index abdf9333e7125c4..154ecfbaa441820 100644 --- a/clang/include/clang/AST/OpenMPClause.h +++ b/clang/include/clang/AST/OpenMPClause.h @@ -2423,6 +2423,28 @@ class OMPNoOpenMPRoutinesClause final OMPNoOpenMPRoutinesClause() : OMPNoChildClause() {} }; +/// This represents the 'no_openmp_constructs' clause in the +//// '#pragma omp assume' directive. +/// +/// \code +/// #pragma omp assume no_openmp_constructs +/// \endcode +/// In this example directive '#pragma omp assume' has a 'no_openmp_constructs' +/// clause. +class OMPNoOpenMPConstructsClause final + : public OMPNoChildClause<llvm::omp::OMPC_no_openmp_constructs> { +public: + /// Build 'no_openmp_constructs' clause. + /// + /// \param StartLoc Starting location of the clause. + /// \param EndLoc Ending location of the clause. + OMPNoOpenMPConstructsClause(SourceLocation StartLoc, SourceLocation EndLoc) + : OMPNoChildClause(StartLoc, EndLoc) {} + + /// Build an empty clause. + OMPNoOpenMPConstructsClause() : OMPNoChildClause() {} +}; + /// This represents the 'no_parallelism' clause in the '#pragma omp assume' /// directive. /// diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h index 55505794e70542c..06c762c080de09d 100644 --- a/clang/include/clang/AST/RecursiveASTVisitor.h +++ b/clang/include/clang/AST/RecursiveASTVisitor.h @@ -3544,6 +3544,12 @@ bool RecursiveASTVisitor<Derived>::VisitOMPNoOpenMPRoutinesClause( return true; } +template <typename Derived> +bool RecursiveASTVisitor<Derived>::VisitOMPNoOpenMPConstructsClause( + OMPNoOpenMPConstructsClause *) { + return true; +} + template <typename Derived> bool RecursiveASTVisitor<Derived>::VisitOMPNoParallelismClause( OMPNoParallelismClause *) { diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td index a8b588169725a2c..0ad4c958d098303 100644 --- a/clang/include/clang/Basic/AttrDocs.td +++ b/clang/include/clang/Basic/AttrDocs.td @@ -5274,6 +5274,7 @@ optimization passes are aware of the following assumptions: "omp_no_openmp" "omp_no_openmp_routines" "omp_no_parallelism" + "omp_no_openmp_constructs" The OpenMP standard defines the meaning of OpenMP assumptions ("omp_XYZ" is spelled "XYZ" in the `OpenMP 5.1 Standard`_). diff --git a/clang/lib/AST/OpenMPClause.cpp b/clang/lib/AST/OpenMPClause.cpp index bbf7a4d95654837..424cab3a7de35cb 100644 --- a/clang/lib/AST/OpenMPClause.cpp +++ b/clang/lib/AST/OpenMPClause.cpp @@ -2073,6 +2073,11 @@ void OMPClausePrinter::VisitOMPNoOpenMPRoutinesClause( OS << "no_openmp_routines"; } +void OMPClausePrinter::VisitOMPNoOpenMPConstructsClause( + OMPNoOpenMPConstructsClause *) { + OS << "no_openmp_constructs"; +} + void OMPClausePrinter::VisitOMPNoParallelismClause(OMPNoParallelismClause *) { OS << "no_parallelism"; } diff --git a/clang/lib/AST/StmtProfile.cpp b/clang/lib/AST/StmtProfile.cpp index 36d231e21fa9509..8b4b8ba19f75b66 100644 --- a/clang/lib/AST/StmtProfile.cpp +++ b/clang/lib/AST/StmtProfile.cpp @@ -606,6 +606,9 @@ void OMPClauseProfiler::VisitOMPNoOpenMPClause(const OMPNoOpenMPClause *) {} void OMPClauseProfiler::VisitOMPNoOpenMPRoutinesClause( const OMPNoOpenMPRoutinesClause *) {} +void OMPClauseProfiler::VisitOMPNoOpenMPConstructsClause( + const OMPNoOpenMPConstructsClause *) {} + void OMPClauseProfiler::VisitOMPNoParallelismClause( const OMPNoParallelismClause *) {} diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp index 77a3695f06cbab0..a455659ca8f2c32 100644 --- a/clang/lib/Parse/ParseOpenMP.cpp +++ b/clang/lib/Parse/ParseOpenMP.cpp @@ -1693,6 +1693,7 @@ void Parser::ParseOpenMPClauses(OpenMPDirectiveKind DKind, /// 'holds' '(' scalar-expression ')' /// 'no_openmp' /// 'no_openmp_routines' +/// 'no_openmp_constructs' (OpenMP 6.0) /// 'no_parallelism' /// void Parser::ParseOpenMPAssumesDirective(OpenMPDirectiveKind DKind, @@ -3474,6 +3475,7 @@ OMPClause *Parser::ParseOpenMPClause(OpenMPDirectiveKind DKind, } case OMPC_no_openmp: case OMPC_no_openmp_routines: + case OMPC_no_openmp_constructs: case OMPC_no_parallelism: { if (!FirstClause) { Diag(Tok, diag::err_omp_more_one_clause) diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 7e366019e33cbe3..b060039d188a1bc 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -23763,6 +23763,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPNullaryAssumptionClause(OpenMPClauseKind CK, return new (getASTContext()) OMPNoOpenMPRoutinesClause(Loc, RLoc); case OMPC_no_parallelism: return new (getASTContext()) OMPNoParallelismClause(Loc, RLoc); + case OMPC_no_openmp_constructs: + return new (getASTContext()) OMPNoOpenMPConstructsClause(Loc, RLoc); default: llvm_unreachable("Unexpected OpenMP clause"); } diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 60100d77c22a734..813b172c4d89eba 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -10627,6 +10627,11 @@ OMPClause *TreeTransform<Derived>::TransformOMPNoOpenMPRoutinesClause( return C; } template <typename Derived> +OMPClause *TreeTransform<Derived>::TransformOMPNoOpenMPConstructsClause( + OMPNoOpenMPConstructsClause *C) { + return C; +} +template <typename Derived> OMPClause *TreeTransform<Derived>::TransformOMPNoParallelismClause( OMPNoParallelismClause *C) { return C; diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 24acd6e297e7125..b74bd586e74d7a9 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -11059,6 +11059,9 @@ OMPClause *OMPClauseReader::readClause() { case llvm::omp::OMPC_no_openmp_routines: C = new (Context) OMPNoOpenMPRoutinesClause(); break; + case llvm::omp::OMPC_no_openmp_constructs: + C = new (Context) OMPNoOpenMPConstructsClause(); + break; case llvm::omp::OMPC_no_parallelism: C = new (Context) OMPNoParallelismClause(); break; @@ -11500,6 +11503,9 @@ void OMPClauseReader::VisitOMPNoOpenMPClause(OMPNoOpenMPClause *) {} void OMPClauseReader::VisitOMPNoOpenMPRoutinesClause( OMPNoOpenMPRoutinesClause *) {} +void OMPClauseReader::VisitOMPNoOpenMPConstructsClause( + OMPNoOpenMPConstructsClause *) {} + void OMPClauseReader::VisitOMPNoParallelismClause(OMPNoParallelismClause *) {} void OMPClauseReader::VisitOMPSeqCstClause(OMPSeqCstClause *) {} diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index ef8ee5bc94d0ec6..903a165ee75c6bb 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -7886,6 +7886,9 @@ void OMPClauseWriter::VisitOMPNoOpenMPClause(OMPNoOpenMPClause *) {} void OMPClauseWriter::VisitOMPNoOpenMPRoutinesClause( OMPNoOpenMPRoutinesClause *) {} +void OMPClauseWriter::VisitOMPNoOpenMPConstructsClause( + OMPNoOpenMPConstructsClause *) {} + void OMPClauseWriter::VisitOMPNoParallelismClause(OMPNoParallelismClause *) {} void OMPClauseWriter::VisitOMPAcquireClause(OMPAcquireClause *) {} diff --git a/clang/test/OpenMP/assume_lambda.cpp b/clang/test/OpenMP/assume_lambda.cpp index 4000dc1600b238d..fa0d9ac2c327c50 100644 --- a/clang/test/OpenMP/assume_lambda.cpp +++ b/clang/test/OpenMP/assume_lambda.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -ast-print %s | FileCheck %s +// RUN: %clang_cc1 -fopenmp -fopenmp-version=60 -x c++ -std=c++11 -ast-print %s | FileCheck %s // expected-no-diagnostics extern int bar(int); @@ -11,6 +11,12 @@ int foo(int arg) // CHECK: auto fn = [](int x) { return fn(5); } + #pragma omp assume no_openmp_constructs + { + auto fn = [](int x) { return bar(x); }; +// CHECK: auto fn = [](int x) { + return fn(6); + } } class C { diff --git a/clang/test/OpenMP/assume_nesting_tmpl.cpp b/clang/test/OpenMP/assume_nesting_tmpl.cpp index 59ef603f5874dc3..b0f50b0ddddf7c9 100644 --- a/clang/test/OpenMP/assume_nesting_tmpl.cpp +++ b/clang/test/OpenMP/assume_nesting_tmpl.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -ast-print %s | FileCheck %s +// RUN: %clang_cc1 -fopenmp -fopenmp-version=60 -x c++ -std=c++11 -ast-print %s | FileCheck %s // expected-no-diagnostics extern void bar(); @@ -14,6 +14,14 @@ void foo() {} } + #pragma omp assume no_openmp_constructs + // CHECK: omp assume no_openmp_constructs + { + #pragma omp assume no_parallelism + // CHECK: omp assume no_parallelism + {} + } + #pragma omp target // CHECK: omp target { diff --git a/clang/test/OpenMP/assume_template.cpp b/clang/test/OpenMP/assume_template.cpp index 20d1c5d43714580..2bf7567f675e997 100644 --- a/clang/test/OpenMP/assume_template.cpp +++ b/clang/test/OpenMP/assume_template.cpp @@ -1,6 +1,6 @@ -// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s -// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s -// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck %s +// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=60 -ast-print %s | FileCheck %s +// RUN: %clang_cc1 -fopenmp -fopenmp-version=60 -x c++ -std=c++11 -emit-pch -o %t %s +// RUN: %clang_cc1 -fopenmp -fopenmp-version=60 -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck %s // expected-no-diagnostics #ifndef HEADER @@ -17,6 +17,12 @@ int foo(T arg) // CHECK: auto fn = [](int x) { return fn(5); } + #pragma omp assume no_openmp_constructs + { + auto fn = [](int x) { return qux(x); }; +// CHECK: auto fn = [](int x) { + return fn(6); + } } template<typename T> diff --git a/clang/test/OpenMP/assumes_codegen.cpp b/clang/test/OpenMP/assumes_codegen.cpp index 4206e5a9caab750..a52ea956af245d7 100644 --- a/clang/test/OpenMP/assumes_codegen.cpp +++ b/clang/test/OpenMP/assumes_codegen.cpp @@ -1,11 +1,11 @@ -// RUN: %clang_cc1 -verify -fopenmp -x c++ -emit-llvm %s -fexceptions -fcxx-exceptions -triple x86_64-unknown-unknown -o - | FileCheck %s -// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s --check-prefix=AST -// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -verify -o %t %s -// RUN: %clang_cc1 -fopenmp -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -std=c++11 -include-pch %t -verify=pch %s -emit-llvm -o - | FileCheck %s -// RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -fopenmp -fexceptions -fcxx-exceptions -debug-info-kind=line-tables-only -x c++ -emit-llvm %s -o - | FileCheck %s -// RUN: %clang_cc1 -verify -fopenmp -fopenmp-enable-irbuilder -x c++ -emit-llvm %s -fexceptions -fcxx-exceptions -triple x86_64-unknown-unknown -o - | FileCheck %s -// RUN: %clang_cc1 -fopenmp -fopenmp-enable-irbuilder -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -verify -o %t %s -// RUN: %clang_cc1 -fopenmp -fopenmp-enable-irbuilder -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -std=c++11 -include-pch %t -verify=pch %s -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=60 -x c++ -emit-llvm %s -fexceptions -fcxx-exceptions -triple x86_64-unknown-unknown -o - | FileCheck %s +// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=60 -ast-print %s | FileCheck %s --check-prefix=AST +// RUN: %clang_cc1 -fopenmp -fopenmp-version=60 -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -verify -o %t %s +// RUN: %clang_cc1 -fopenmp -fopenmp-version=60 -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -std=c++11 -include-pch %t -verify=pch %s -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -fopenmp -fopenmp-version=60 -fexceptions -fcxx-exceptions -debug-info-kind=line-tables-only -x c++ -emit-llvm %s -o - | FileCheck %s +// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=60 -fopenmp-enable-irbuilder -x c++ -emit-llvm %s -fexceptions -fcxx-exceptions -triple x86_64-unknown-unknown -o - | FileCheck %s +// RUN: %clang_cc1 -fopenmp -fopenmp-version=60 -fopenmp-enable-irbuilder -x c++ -std=c++11 -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -emit-pch -verify -o %t %s +// RUN: %clang_cc1 -fopenmp -fopenmp-version=60 -fopenmp-enable-irbuilder -x c++ -triple x86_64-unknown-unknown -fexceptions -fcxx-exceptions -std=c++11 -include-pch %t -verify=pch %s -emit-llvm -o - | FileCheck %s // pch-no-diagnostics @@ -15,7 +15,7 @@ void foo() { } -#pragma omp assumes no_openmp_routines warning ext_another_warning(1) ext_after_invalid_clauses // expected-warning {{valid assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ignored}} expected-warning {{'ext_another_warning' clause should not be followed by arguments; tokens will be ignored}} expected-note {{the ignored tokens spans until here}} +#pragma omp assumes no_openmp_routines warning ext_another_warning(1) ext_after_invalid_clauses // expected-warning {{valid assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_openmp_constructs', 'no_parallelism'; token will be ignored}} expected-warning {{'ext_another_warning' clause should not be followed by arguments; tokens will be ignored}} expected-note {{the ignored tokens spans until here}} #pragma omp assumes no_openmp diff --git a/clang/test/OpenMP/assumes_messages.c b/clang/test/OpenMP/assumes_messages.c index 99bbe93dc1fc2b8..9bbedf59b77fc62 100644 --- a/clang/test/OpenMP/assumes_messages.c +++ b/clang/test/OpenMP/assumes_messages.c @@ -1,46 +1,46 @@ -// RUN: %clang_cc1 -triple=x86_64-pc-win32 -verify -fopenmp -x c -std=c99 -fms-extensions -Wno-pragma-pack %s +// RUN: %clang_cc1 -triple=x86_64-pc-win32 -verify -fopenmp -fopenmp-version=60 -x c -std=c99 -fms-extensions -Wno-pragma-pack %s -// RUN: %clang_cc1 -triple=x86_64-pc-win32 -verify -fopenmp-simd -x c -std=c99 -fms-extensions -Wno-pragma-pack %s +// RUN: %clang_cc1 -triple=x86_64-pc-win32 -verify -fopenmp-simd -fopenmp-version=60 -x c -std=c99 -fms-extensions -Wno-pragma-pack %s -#pragma omp assumes // expected-error {{expected at least one 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism' clause for '#pragma omp assumes'}} +#pragma omp assumes // expected-error {{expected at least one 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_openmp_constructs', 'no_parallelism' clause for '#pragma omp assumes'}} #pragma omp begin // expected-error {{expected an OpenMP directive}} -#pragma omp begin assumes // expected-error {{expected at least one 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism' clause for '#pragma omp begin assumes'}} +#pragma omp begin assumes // expected-error {{expected at least one 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_openmp_constructs', 'no_parallelism' clause for '#pragma omp begin assumes'}} #pragma omp end assumes -#pragma omp assumes foobar // expected-warning {{valid assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ignored}} -#pragma omp begin assumes foobar // expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ignored}} +#pragma omp assumes foobar // expected-warning {{valid assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_openmp_constructs', 'no_parallelism'; token will be ignored}} +#pragma omp begin assumes foobar // expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_openmp_constructs', 'no_parallelism'; token will be ignored}} #pragma omp end assumes -#pragma omp begin assumes foobar(foo 2 no_openmp // expected-error {{expected ')'}} expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; tokens will be ignored}} expected-note {{to match this '('}} -#pragma omp assumes foobar(foo 2 no_openmp // expected-error {{expected ')'}} expected-warning {{valid assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; tokens will be ignored}} expected-note {{to match this '('}} +#pragma omp begin assumes foobar(foo 2 no_openmp // expected-error {{expected ')'}} expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_openmp_constructs', 'no_parallelism'; tokens will be ignored}} expected-note {{to match this '('}} +#pragma omp assumes foobar(foo 2 no_openmp // expected-error {{expected ')'}} expected-warning {{valid assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_openmp_constructs', 'no_parallelism'; tokens will be ignored}} expected-note {{to match this '('}} #pragma omp end assumes -#pragma omp begin assumes foobar(foo 2 baz) // expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; tokens will be ignored}} expected-note {{the ignored tokens spans until here}} -#pragma omp assumes foobar(foo 2 baz) // expected-warning {{valid assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; tokens will be ignored}} expected-note {{the ignored tokens spans until here}} +#pragma omp begin assumes foobar(foo 2 baz) // expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_openmp_constructs', 'no_parallelism'; tokens will be ignored}} expected-note {{the ignored tokens spans until here}} +#pragma omp assumes foobar(foo 2 baz) // expected-warning {{valid assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_openmp_constructs', 'no_parallelism'; tokens will be ignored}} expected-note {{the ignored tokens spans until here}} #pragma omp end assumes -#pragma omp begin assumes foobar foo 2 baz) bar // expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ignored}} expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ignored}} expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ignored}} expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ignored}} expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ignored}} expected-warning {{valid begin assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ignored}} -#pragma omp assumes foobar foo 2 baz) bar // expected-warning {{valid assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ignored}} expected-warning {{valid assumes clauses start with 'ext_', 'absent', 'contains', 'holds', 'no_openmp', 'no_openmp_routines', 'no_parallelism'; token will be ... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/125933 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits