[clang] [llvm] [openmp] Revert "[Clang][OpenMP] Implement Loop splitting `#pragma omp split` directive " (PR #190335)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 3 04:47:33 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-static-analyzer-1
@llvm/pr-subscribers-clang-modules
Author: theRonShark (ronlieb)
<details>
<summary>Changes</summary>
Reverts llvm/llvm-project#<!-- -->183261
15 new lit tests failing in openmp
---
Patch is 217.81 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/190335.diff
80 Files Affected:
- (modified) clang/bindings/python/clang/cindex.py (-3)
- (modified) clang/include/clang-c/Index.h (-4)
- (modified) clang/include/clang/AST/OpenMPClause.h (-101)
- (modified) clang/include/clang/AST/RecursiveASTVisitor.h (-10)
- (modified) clang/include/clang/AST/StmtOpenMP.h (-78)
- (modified) clang/include/clang/ASTMatchers/ASTMatchers.h (-20)
- (modified) clang/include/clang/Basic/DiagnosticSemaKinds.td (-2)
- (modified) clang/include/clang/Basic/StmtNodes.td (-1)
- (modified) clang/include/clang/Parse/Parser.h (-3)
- (modified) clang/include/clang/Sema/SemaOpenMP.h (-12)
- (modified) clang/include/clang/Serialization/ASTBitCodes.h (-1)
- (modified) clang/lib/AST/OpenMPClause.cpp (-35)
- (modified) clang/lib/AST/StmtOpenMP.cpp (-21)
- (modified) clang/lib/AST/StmtPrinter.cpp (-5)
- (modified) clang/lib/AST/StmtProfile.cpp (-10)
- (modified) clang/lib/ASTMatchers/ASTMatchersInternal.cpp (-4)
- (modified) clang/lib/ASTMatchers/Dynamic/Registry.cpp (-2)
- (modified) clang/lib/Basic/OpenMPKinds.cpp (+1-4)
- (modified) clang/lib/CodeGen/CGStmt.cpp (-3)
- (modified) clang/lib/CodeGen/CGStmtOpenMP.cpp (-8)
- (modified) clang/lib/CodeGen/CodeGenFunction.h (-1)
- (modified) clang/lib/Parse/ParseOpenMP.cpp (-59)
- (modified) clang/lib/Sema/SemaExceptionSpec.cpp (-1)
- (modified) clang/lib/Sema/SemaOpenMP.cpp (-270)
- (modified) clang/lib/Sema/TreeTransform.h (-44)
- (modified) clang/lib/Serialization/ASTReader.cpp (-15)
- (modified) clang/lib/Serialization/ASTReaderStmt.cpp (-11)
- (modified) clang/lib/Serialization/ASTWriter.cpp (-11)
- (modified) clang/lib/Serialization/ASTWriterStmt.cpp (-5)
- (modified) clang/lib/StaticAnalyzer/Core/ExprEngine.cpp (-1)
- (removed) clang/test/AST/ast-dump-openmp-split.c (-19)
- (removed) clang/test/Index/openmp-split.c (-11)
- (removed) clang/test/OpenMP/split_analyze.c (-10)
- (removed) clang/test/OpenMP/split_ast_print.cpp (-71)
- (removed) clang/test/OpenMP/split_codegen.cpp (-1986)
- (removed) clang/test/OpenMP/split_composition.cpp (-17)
- (removed) clang/test/OpenMP/split_compound_associated.cpp (-13)
- (removed) clang/test/OpenMP/split_counts_constexpr.cpp (-19)
- (removed) clang/test/OpenMP/split_counts_ice.c (-56)
- (removed) clang/test/OpenMP/split_counts_verify.c (-123)
- (removed) clang/test/OpenMP/split_diag_errors.c (-61)
- (removed) clang/test/OpenMP/split_distribute_inner_split.cpp (-14)
- (removed) clang/test/OpenMP/split_driver_smoke.c (-12)
- (removed) clang/test/OpenMP/split_iv_types.c (-24)
- (removed) clang/test/OpenMP/split_loop_styles.cpp (-14)
- (removed) clang/test/OpenMP/split_member_ctor.cpp (-20)
- (removed) clang/test/OpenMP/split_messages.cpp (-99)
- (removed) clang/test/OpenMP/split_nested_outer_only.c (-12)
- (removed) clang/test/OpenMP/split_offload_codegen.cpp (-27)
- (removed) clang/test/OpenMP/split_omp_fill.c (-34)
- (removed) clang/test/OpenMP/split_openmp_version.cpp (-22)
- (removed) clang/test/OpenMP/split_opts_simd_debug.cpp (-30)
- (removed) clang/test/OpenMP/split_parallel_split.cpp (-15)
- (removed) clang/test/OpenMP/split_pch_codegen.cpp (-43)
- (removed) clang/test/OpenMP/split_range_for_diag.cpp (-25)
- (removed) clang/test/OpenMP/split_serialize_module.cpp (-24)
- (removed) clang/test/OpenMP/split_teams_nesting.cpp (-13)
- (removed) clang/test/OpenMP/split_template_nttp.cpp (-15)
- (removed) clang/test/OpenMP/split_templates.cpp (-30)
- (removed) clang/test/OpenMP/split_trip_volatile.c (-14)
- (modified) clang/tools/libclang/CIndex.cpp (-7)
- (modified) clang/tools/libclang/CXCursor.cpp (-3)
- (modified) clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp (-62)
- (modified) clang/unittests/ASTMatchers/ASTMatchersTest.h (-14)
- (modified) llvm/include/llvm/Frontend/OpenMP/OMP.td (+10-11)
- (removed) openmp/runtime/test/transform/split/fill_first.c (-23)
- (removed) openmp/runtime/test/transform/split/foreach.cpp (-24)
- (removed) openmp/runtime/test/transform/split/intfor.c (-26)
- (removed) openmp/runtime/test/transform/split/intfor_negstart.c (-27)
- (removed) openmp/runtime/test/transform/split/iterfor.cpp (-139)
- (removed) openmp/runtime/test/transform/split/leq_bound.c (-22)
- (removed) openmp/runtime/test/transform/split/negative_incr.c (-22)
- (removed) openmp/runtime/test/transform/split/nonconstant_count.c (-27)
- (removed) openmp/runtime/test/transform/split/nonconstant_incr.c (-22)
- (removed) openmp/runtime/test/transform/split/parallel-split-intfor.c (-27)
- (removed) openmp/runtime/test/transform/split/single_fill.c (-23)
- (removed) openmp/runtime/test/transform/split/three_segments.c (-26)
- (removed) openmp/runtime/test/transform/split/trip_one.c (-32)
- (removed) openmp/runtime/test/transform/split/unsigned_iv.c (-24)
- (removed) openmp/runtime/test/transform/split/zero_first_segment.c (-21)
``````````diff
diff --git a/clang/bindings/python/clang/cindex.py b/clang/bindings/python/clang/cindex.py
index a90d48cf6d481..b71f9ed2275e0 100644
--- a/clang/bindings/python/clang/cindex.py
+++ b/clang/bindings/python/clang/cindex.py
@@ -1453,9 +1453,6 @@ def is_unexposed(self):
# OpenMP fuse directive.
OMP_FUSE_DIRECTIVE = 311
- # OpenMP split directive.
- OMP_SPLIT_DIRECTIVE = 312
-
# OpenACC Compute Construct.
OPEN_ACC_COMPUTE_DIRECTIVE = 320
diff --git a/clang/include/clang-c/Index.h b/clang/include/clang-c/Index.h
index 119bd68ff9814..dcf1f4f1b4258 100644
--- a/clang/include/clang-c/Index.h
+++ b/clang/include/clang-c/Index.h
@@ -2166,10 +2166,6 @@ enum CXCursorKind {
*/
CXCursor_OMPFuseDirective = 311,
- /** OpenMP split directive.
- */
- CXCursor_OMPSplitDirective = 312,
-
/** OpenACC Compute Construct.
*/
CXCursor_OpenACCComputeConstruct = 320,
diff --git a/clang/include/clang/AST/OpenMPClause.h b/clang/include/clang/AST/OpenMPClause.h
index ccf2c40bc5efa..af5d3f4698eda 100644
--- a/clang/include/clang/AST/OpenMPClause.h
+++ b/clang/include/clang/AST/OpenMPClause.h
@@ -39,7 +39,6 @@
#include "llvm/Support/Compiler.h"
#include "llvm/Support/TrailingObjects.h"
#include <cassert>
-#include <climits>
#include <cstddef>
#include <iterator>
#include <utility>
@@ -1024,106 +1023,6 @@ class OMPSizesClause final
}
};
-/// This represents the 'counts' clause in the '#pragma omp split' directive.
-///
-/// \code
-/// #pragma omp split counts(3, omp_fill, 2)
-/// for (int i = 0; i < n; ++i) { ... }
-/// \endcode
-class OMPCountsClause final
- : public OMPClause,
- private llvm::TrailingObjects<OMPCountsClause, Expr *> {
- friend class OMPClauseReader;
- friend class llvm::TrailingObjects<OMPCountsClause, Expr *>;
-
- /// Location of '('.
- SourceLocation LParenLoc;
-
- /// Number of count expressions in the clause.
- unsigned NumCounts = 0;
-
- /// 0-based index of the omp_fill list item.
- std::optional<unsigned> OmpFillIndex;
-
- /// Source location of the omp_fill keyword.
- SourceLocation OmpFillLoc;
-
- /// Build an empty clause.
- explicit OMPCountsClause(int NumCounts)
- : OMPClause(llvm::omp::OMPC_counts, SourceLocation(), SourceLocation()),
- NumCounts(NumCounts) {}
-
- /// Sets the location of '('.
- void setLParenLoc(SourceLocation Loc) { LParenLoc = Loc; }
- void setOmpFillIndex(std::optional<unsigned> Idx) { OmpFillIndex = Idx; }
- void setOmpFillLoc(SourceLocation Loc) { OmpFillLoc = Loc; }
-
- /// Sets the count expressions.
- void setCountsRefs(ArrayRef<Expr *> VL) {
- assert(VL.size() == NumCounts);
- llvm::copy(VL, getCountsRefs().begin());
- }
-
-public:
- /// Build a 'counts' AST node.
- ///
- /// \param C Context of the AST.
- /// \param StartLoc Location of the 'counts' identifier.
- /// \param LParenLoc Location of '('.
- /// \param EndLoc Location of ')'.
- /// \param Counts Content of the clause.
- static OMPCountsClause *Create(const ASTContext &C, SourceLocation StartLoc,
- SourceLocation LParenLoc,
- SourceLocation EndLoc, ArrayRef<Expr *> Counts,
- std::optional<unsigned> FillIdx,
- SourceLocation FillLoc);
-
- /// Build an empty 'counts' AST node for deserialization.
- ///
- /// \param C Context of the AST.
- /// \param NumCounts Number of items in the clause.
- static OMPCountsClause *CreateEmpty(const ASTContext &C, unsigned NumCounts);
-
- /// Returns the location of '('.
- SourceLocation getLParenLoc() const { return LParenLoc; }
-
- /// Returns the number of list items.
- unsigned getNumCounts() const { return NumCounts; }
-
- std::optional<unsigned> getOmpFillIndex() const { return OmpFillIndex; }
- SourceLocation getOmpFillLoc() const { return OmpFillLoc; }
- bool hasOmpFill() const { return OmpFillIndex.has_value(); }
-
- /// Returns the count expressions.
- MutableArrayRef<Expr *> getCountsRefs() {
- return getTrailingObjects(NumCounts);
- }
- ArrayRef<Expr *> getCountsRefs() const {
- return getTrailingObjects(NumCounts);
- }
-
- child_range children() {
- MutableArrayRef<Expr *> Counts = getCountsRefs();
- return child_range(reinterpret_cast<Stmt **>(Counts.begin()),
- reinterpret_cast<Stmt **>(Counts.end()));
- }
- const_child_range children() const {
- ArrayRef<Expr *> Counts = getCountsRefs();
- return const_child_range(reinterpret_cast<Stmt *const *>(Counts.begin()),
- reinterpret_cast<Stmt *const *>(Counts.end()));
- }
- child_range used_children() {
- return child_range(child_iterator(), child_iterator());
- }
- const_child_range used_children() const {
- return const_child_range(const_child_iterator(), const_child_iterator());
- }
-
- static bool classof(const OMPClause *T) {
- return T->getClauseKind() == llvm::omp::OMPC_counts;
- }
-};
-
/// This class represents the 'permutation' clause in the
/// '#pragma omp interchange' directive.
///
diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h
index 1a14dd2c666b5..ce6ad723191e0 100644
--- a/clang/include/clang/AST/RecursiveASTVisitor.h
+++ b/clang/include/clang/AST/RecursiveASTVisitor.h
@@ -3202,9 +3202,6 @@ DEF_TRAVERSE_STMT(OMPFuseDirective,
DEF_TRAVERSE_STMT(OMPInterchangeDirective,
{ TRY_TO(TraverseOMPExecutableDirective(S)); })
-DEF_TRAVERSE_STMT(OMPSplitDirective,
- { TRY_TO(TraverseOMPExecutableDirective(S)); })
-
DEF_TRAVERSE_STMT(OMPForDirective,
{ TRY_TO(TraverseOMPExecutableDirective(S)); })
@@ -3506,13 +3503,6 @@ bool RecursiveASTVisitor<Derived>::VisitOMPSizesClause(OMPSizesClause *C) {
return true;
}
-template <typename Derived>
-bool RecursiveASTVisitor<Derived>::VisitOMPCountsClause(OMPCountsClause *C) {
- for (Expr *E : C->getCountsRefs())
- TRY_TO(TraverseStmt(E));
- return true;
-}
-
template <typename Derived>
bool RecursiveASTVisitor<Derived>::VisitOMPPermutationClause(
OMPPermutationClause *C) {
diff --git a/clang/include/clang/AST/StmtOpenMP.h b/clang/include/clang/AST/StmtOpenMP.h
index dbc76e7df8ecd..bc6aeaa8d143c 100644
--- a/clang/include/clang/AST/StmtOpenMP.h
+++ b/clang/include/clang/AST/StmtOpenMP.h
@@ -6065,84 +6065,6 @@ class OMPFuseDirective final
}
};
-/// Represents the '#pragma omp split' loop transformation directive.
-///
-/// \code{.c}
-/// #pragma omp split counts(3, omp_fill, 2)
-/// for (int i = 0; i < n; ++i)
-/// ...
-/// \endcode
-///
-/// This directive transforms a single loop into multiple loops based on
-/// index ranges. The transformation splits the iteration space of the loop
-/// into multiple contiguous ranges. The \c counts clause is required and
-/// exactly one list item must be \c omp_fill.
-class OMPSplitDirective final
- : public OMPCanonicalLoopNestTransformationDirective {
- friend class ASTStmtReader;
- friend class OMPExecutableDirective;
-
- /// Offsets of child members.
- enum {
- PreInitsOffset = 0,
- TransformedStmtOffset,
- };
-
- explicit OMPSplitDirective(SourceLocation StartLoc, SourceLocation EndLoc,
- unsigned NumLoops)
- : OMPCanonicalLoopNestTransformationDirective(
- OMPSplitDirectiveClass, llvm::omp::OMPD_split, StartLoc, EndLoc,
- NumLoops) {}
-
- void setPreInits(Stmt *PreInits) {
- Data->getChildren()[PreInitsOffset] = PreInits;
- }
-
- void setTransformedStmt(Stmt *S) {
- Data->getChildren()[TransformedStmtOffset] = S;
- }
-
-public:
- /// Create a new AST node representation for '#pragma omp split'.
- ///
- /// \param C Context of the AST.
- /// \param StartLoc Location of the introducer (e.g. the 'omp' token).
- /// \param EndLoc Location of the directive's end (e.g. the tok::eod).
- /// \param Clauses The directive's clauses (e.g. the required \c counts
- /// clause).
- /// \param NumLoops Number of affected loops (should be 1 for split).
- /// \param AssociatedStmt The outermost associated loop.
- /// \param TransformedStmt The loop nest after splitting, or nullptr in
- /// dependent contexts.
- /// \param PreInits Helper preinits statements for the loop nest.
- static OMPSplitDirective *Create(const ASTContext &C, SourceLocation StartLoc,
- SourceLocation EndLoc,
- ArrayRef<OMPClause *> Clauses,
- unsigned NumLoops, Stmt *AssociatedStmt,
- Stmt *TransformedStmt, Stmt *PreInits);
-
- /// Build an empty '#pragma omp split' AST node for deserialization.
- ///
- /// \param C Context of the AST.
- /// \param NumClauses Number of clauses to allocate.
- /// \param NumLoops Number of associated loops to allocate.
- static OMPSplitDirective *CreateEmpty(const ASTContext &C,
- unsigned NumClauses, unsigned NumLoops);
-
- /// Gets/sets the associated loops after the transformation, i.e. after
- /// de-sugaring.
- Stmt *getTransformedStmt() const {
- return Data->getChildren()[TransformedStmtOffset];
- }
-
- /// Return preinits statement.
- Stmt *getPreInits() const { return Data->getChildren()[PreInitsOffset]; }
-
- static bool classof(const Stmt *T) {
- return T->getStmtClass() == OMPSplitDirectiveClass;
- }
-};
-
/// This represents '#pragma omp scan' directive.
///
/// \code
diff --git a/clang/include/clang/ASTMatchers/ASTMatchers.h b/clang/include/clang/ASTMatchers/ASTMatchers.h
index 87b6dbefa7a62..e8e7643e0dddd 100644
--- a/clang/include/clang/ASTMatchers/ASTMatchers.h
+++ b/clang/include/clang/ASTMatchers/ASTMatchers.h
@@ -8781,26 +8781,6 @@ extern const internal::VariadicDynCastAllOfMatcher<Stmt,
OMPTargetUpdateDirective>
ompTargetUpdateDirective;
-/// Matches any ``#pragma omp split`` executable directive.
-///
-/// Given
-///
-/// \code
-/// #pragma omp split counts(2, omp_fill)
-/// for (int i = 0; i < n; ++i) {}
-/// \endcode
-///
-/// ``ompSplitDirective()`` matches the split directive.
-extern const internal::VariadicDynCastAllOfMatcher<Stmt, OMPSplitDirective>
- ompSplitDirective;
-
-/// Matches OpenMP ``counts`` clause used by ``#pragma omp split``.
-///
-/// Given ``#pragma omp split counts(1, 2, omp_fill)``, ``ompCountsClause()``
-/// matches the ``counts`` clause node.
-extern const internal::VariadicDynCastAllOfMatcher<OMPClause, OMPCountsClause>
- ompCountsClause;
-
/// Matches OpenMP ``default`` clause.
///
/// Given
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 7c65fc15f2836..eddf9c50033e1 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -11174,8 +11174,6 @@ def err_omp_bind_required_on_loop : Error<
"construct">;
def err_omp_loop_reduction_clause : Error<
"'reduction' clause not allowed with '#pragma omp loop bind(teams)'">;
-def err_omp_split_counts_not_one_omp_fill : Error<
- "exactly one 'omp_fill' must appear in the 'counts' clause">;
def warn_break_binds_to_switch : Warning<
"'break' is bound to loop, GCC binds it to switch">,
InGroup<GccCompat>;
diff --git a/clang/include/clang/Basic/StmtNodes.td b/clang/include/clang/Basic/StmtNodes.td
index e166894ea024b..61d76bafdfcde 100644
--- a/clang/include/clang/Basic/StmtNodes.td
+++ b/clang/include/clang/Basic/StmtNodes.td
@@ -244,7 +244,6 @@ def OMPTileDirective : StmtNode<OMPCanonicalLoopNestTransformationDirective>;
def OMPStripeDirective : StmtNode<OMPCanonicalLoopNestTransformationDirective>;
def OMPUnrollDirective : StmtNode<OMPCanonicalLoopNestTransformationDirective>;
def OMPReverseDirective : StmtNode<OMPCanonicalLoopNestTransformationDirective>;
-def OMPSplitDirective : StmtNode<OMPCanonicalLoopNestTransformationDirective>;
def OMPInterchangeDirective
: StmtNode<OMPCanonicalLoopNestTransformationDirective>;
def OMPCanonicalLoopSequenceTransformationDirective
diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h
index bd313d37cc4b5..08a3d88ee6a36 100644
--- a/clang/include/clang/Parse/Parser.h
+++ b/clang/include/clang/Parse/Parser.h
@@ -6812,9 +6812,6 @@ class Parser : public CodeCompletionHandler {
/// Parses the 'sizes' clause of a '#pragma omp tile' directive.
OMPClause *ParseOpenMPSizesClause();
- /// Parses the 'counts' clause of a '#pragma omp split' directive.
- OMPClause *ParseOpenMPCountsClause();
-
/// Parses the 'permutation' clause of a '#pragma omp interchange' directive.
OMPClause *ParseOpenMPPermutationClause();
diff --git a/clang/include/clang/Sema/SemaOpenMP.h b/clang/include/clang/Sema/SemaOpenMP.h
index 3621ce96b8724..7853f29f98c25 100644
--- a/clang/include/clang/Sema/SemaOpenMP.h
+++ b/clang/include/clang/Sema/SemaOpenMP.h
@@ -42,7 +42,6 @@ class FunctionScopeInfo;
class DeclContext;
class DeclGroupRef;
-class EnumConstantDecl;
class ParsedAttr;
class Scope;
@@ -458,11 +457,6 @@ class SemaOpenMP : public SemaBase {
/// Called on well-formed '#pragma omp reverse'.
StmtResult ActOnOpenMPReverseDirective(Stmt *AStmt, SourceLocation StartLoc,
SourceLocation EndLoc);
- /// Called on well-formed '#pragma omp split' after parsing of its
- /// associated statement.
- StmtResult ActOnOpenMPSplitDirective(ArrayRef<OMPClause *> Clauses,
- Stmt *AStmt, SourceLocation StartLoc,
- SourceLocation EndLoc);
/// Called on well-formed '#pragma omp interchange' after parsing of its
/// clauses and the associated statement.
StmtResult ActOnOpenMPInterchangeDirective(ArrayRef<OMPClause *> Clauses,
@@ -917,12 +911,6 @@ class SemaOpenMP : public SemaBase {
SourceLocation StartLoc,
SourceLocation LParenLoc,
SourceLocation EndLoc);
- /// Called on well-formed 'counts' clause after parsing its arguments.
- OMPClause *
- ActOnOpenMPCountsClause(ArrayRef<Expr *> CountExprs, SourceLocation StartLoc,
- SourceLocation LParenLoc, SourceLocation EndLoc,
- std::optional<unsigned> FillIdx,
- SourceLocation FillLoc, unsigned FillCount);
/// Called on well-form 'permutation' clause after parsing its arguments.
OMPClause *ActOnOpenMPPermutationClause(ArrayRef<Expr *> PermExprs,
SourceLocation StartLoc,
diff --git a/clang/include/clang/Serialization/ASTBitCodes.h b/clang/include/clang/Serialization/ASTBitCodes.h
index 9b798ed484454..783cd82895a90 100644
--- a/clang/include/clang/Serialization/ASTBitCodes.h
+++ b/clang/include/clang/Serialization/ASTBitCodes.h
@@ -1965,7 +1965,6 @@ enum StmtCode {
STMP_OMP_STRIPE_DIRECTIVE,
STMT_OMP_UNROLL_DIRECTIVE,
STMT_OMP_REVERSE_DIRECTIVE,
- STMT_OMP_SPLIT_DIRECTIVE,
STMT_OMP_INTERCHANGE_DIRECTIVE,
STMT_OMP_FUSE_DIRECTIVE,
STMT_OMP_FOR_DIRECTIVE,
diff --git a/clang/lib/AST/OpenMPClause.cpp b/clang/lib/AST/OpenMPClause.cpp
index 3a35e17aff40b..d4826c3c6edca 100644
--- a/clang/lib/AST/OpenMPClause.cpp
+++ b/clang/lib/AST/OpenMPClause.cpp
@@ -15,12 +15,10 @@
#include "clang/AST/Attr.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclOpenMP.h"
-#include "clang/AST/Expr.h"
#include "clang/AST/ExprOpenMP.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/OpenMPKinds.h"
#include "clang/Basic/TargetInfo.h"
-#include "llvm/ADT/Sequence.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/Support/ErrorHandling.h"
#include <algorithm>
@@ -988,26 +986,6 @@ OMPSizesClause *OMPSizesClause::CreateEmpty(const ASTContext &C,
return new (Mem) OMPSizesClause(NumSizes);
}
-OMPCountsClause *OMPCountsClause::Create(
- const ASTContext &C, SourceLocation StartLoc, SourceLocation LParenLoc,
- SourceLocation EndLoc, ArrayRef<Expr *> Counts,
- std::optional<unsigned> FillIdx, SourceLocation FillLoc) {
- OMPCountsClause *Clause = CreateEmpty(C, Counts.size());
- Clause->setLocStart(StartLoc);
- Clause->setLParenLoc(LParenLoc);
- Clause->setLocEnd(EndLoc);
- Clause->setCountsRefs(Counts);
- Clause->setOmpFillIndex(FillIdx);
- Clause->setOmpFillLoc(FillLoc);
- return Clause;
-}
-
-OMPCountsClause *OMPCountsClause::CreateEmpty(const ASTContext &C,
- unsigned NumCounts) {
- void *Mem = C.Allocate(totalSizeToAlloc<Expr *>(NumCounts));
- return new (Mem) OMPCountsClause(NumCounts);
-}
-
OMPPermutationClause *OMPPermutationClause::Create(const ASTContext &C,
SourceLocation StartLoc,
SourceLocation LParenLoc,
@@ -2006,19 +1984,6 @@ void OMPClausePrinter::VisitOMPSizesClause(OMPSizesClause *Node) {
OS << ")";
}
-void OMPClausePrinter::VisitOMPCountsClause(OMPCountsClause *Node) {
- OS << "counts(";
- std::optional<unsigned> FillIdx = Node->getOmpFillIndex();
- ArrayRef<Expr *> Refs = Node->getCountsRefs();
- llvm::interleaveComma(llvm::seq<unsigned>(Refs.size()), OS, [&](unsigned I) {
- if (FillIdx && I == *FillIdx)
- OS << "omp_fill";
- else
- Refs[I]->printPretty(OS, nullptr, Policy, 0);
- });
- OS << ")";
-}
-
void OMPClausePrinter::VisitOMPPermutationClause(OMPPermutationClause *Node) {
OS << "permutation(";
llvm::interleaveComma(Node->getArgsRefs(), OS, [&](const Expr *E) {
diff --git a/clang/lib/AST/StmtOpenMP.cpp b/clang/lib/AST/StmtOpenMP.cpp
index 9d6b315effb41..a5b0cd3786a28 100644
--- a/clang/lib/AST/StmtOpenMP.cpp
+++ b/clang/lib/AST/StmtOpenMP.cpp
@@ -552,27 +552,6 @@ OMPInterchangeDirective::CreateEmpty(const ASTContext &C, unsigned NumClauses,
SourceLocation(), SourceLocation(), NumLoops);
}
-OMPSplitDirective *
-OMPSplitDirective::Create(const ASTContext &C, SourceLocation StartLoc,
- SourceLocation EndLoc, ArrayRef<OMPClause *> Clauses,
- unsigned NumLoops, Stmt *AssociatedStmt,
- Stmt *TransformedStmt, Stmt *PreInits) {
- OMPSplitDirective *Dir = createDirective<OMPSplitDirective>(
- C, Clauses, AssociatedStmt, TransformedStmtOffset + 1, StartLoc, EndLoc,
- NumLoops);
- Dir->setTransformedStmt(TransformedStmt);
- Dir->setPreInits(PreInits);
- return Dir;
-}
-
-OMPSplitDirective *OMPSplitDirective::CreateEmpty(const ASTContext &C,
- unsigned NumClauses,
- unsigned NumLoops) {
- return createEmptyDirective<OMPSplitDirective>(
- C, NumClauses, /*HasAssociatedStmt=*/true, TransformedStmtOffset + 1,
- SourceLocation(), SourceLocation(), NumLoops);
-}
-
OMPFuseDirective *OMPFuseDirective::Create(
const ASTContext &C, SourceLocation StartLoc, SourceLocation EndLoc,
ArrayRef<OMPClause *> Clauses, unsigned NumGeneratedTopLevelLoops,
diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp
index e0b930ba0a21a..4d364fdcd5502 100644
--- a/clang/lib/AST/StmtPrinter.cpp
+++ b/clang/lib/AST/StmtPrinter.cpp
@@ -800,11 +800,6 @@ void StmtPrinter::VisitOMPInterchangeDirective(OMPInterchangeDirective *Node) {
PrintOMPExecutableDirective(Node);
}
-void StmtPrinter::VisitOMPSplitDirective(OMPSplitDirective *Node) {
- Indent() << "#pragma omp split";
- PrintOMPExecutableDirective(Node);
-}
-
void StmtPrinter::VisitOMPFuseDirective(OMPFuseDirective *Node) {
Indent() << "#pragma omp fuse";
PrintOMPExecutableDirective(Node);
diff --git a/clang/lib/AST/StmtProfile.cpp b/clang/lib/AST/StmtProfile.cpp
index c75652e5c1dd3..e8c1f8a8ecb5f 100644
--- a/clang/lib/AST/StmtProfile.cpp
+++ b/clang/lib/AST/StmtProfile.cpp
@@ -498,12 +498,6 @@ void OMPClauseProfiler::VisitOMPSizesClause(const OMPSizesClause *C) {
Profiler->VisitExpr(E);
}
-void OMPClauseProfiler::VisitOMPCountsClause(const OMPCountsClause *C) {
- for (auto *E : C->getCountsRefs())
- if ...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/190335
More information about the llvm-commits
mailing list