Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===- OpenMP/OMPAssume.h --- OpenMP assumption helper functions  - C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
/// \file
9
///
10
/// This file provides helper functions and classes to deal with OpenMP
11
/// assumptions, e.g., as used by `[begin/end] assumes` and `assume`.
12
///
13
//===----------------------------------------------------------------------===//
14
 
15
#ifndef LLVM_FRONTEND_OPENMP_OMPASSUME_H
16
#define LLVM_FRONTEND_OPENMP_OMPASSUME_H
17
 
18
#include "llvm/ADT/StringRef.h"
19
 
20
namespace llvm {
21
 
22
namespace omp {
23
 
24
/// Helper to describe assume clauses.
25
struct AssumptionClauseMappingInfo {
26
  /// The identifier describing the (beginning of the) clause.
27
  llvm::StringLiteral Identifier;
28
  /// Flag to determine if the identifier is a full name or the start of a name.
29
  bool StartsWith;
30
  /// Flag to determine if a directive lists follows.
31
  bool HasDirectiveList;
32
  /// Flag to determine if an expression follows.
33
  bool HasExpression;
34
};
35
 
36
/// All known assume clauses.
37
static constexpr AssumptionClauseMappingInfo AssumptionClauseMappings[] = {
38
#define OMP_ASSUME_CLAUSE(Identifier, StartsWith, HasDirectiveList,            \
39
                          HasExpression)                                       \
40
  {Identifier, StartsWith, HasDirectiveList, HasExpression},
41
#include "llvm/Frontend/OpenMP/OMPKinds.def"
42
};
43
 
44
inline std::string getAllAssumeClauseOptions() {
45
  std::string S;
46
  for (const AssumptionClauseMappingInfo &ACMI : AssumptionClauseMappings)
47
    S += (S.empty() ? "'" : "', '") + ACMI.Identifier.str();
48
  return S + "'";
49
}
50
 
51
} // namespace omp
52
 
53
} // namespace llvm
54
 
55
#endif // LLVM_FRONTEND_OPENMP_OMPASSUME_H