1//===--- LoopHint.h - Types for LoopHint ------------------------*- 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
9#ifndef LLVM_CLANG_PARSE_LOOPHINT_H
10#define LLVM_CLANG_PARSE_LOOPHINT_H
11
12#include "clang/Basic/SourceLocation.h"
13
14namespace clang {
15
16class Expr;
17struct IdentifierLoc;
18
19/// Loop optimization hint for loop and unroll pragmas.
20struct LoopHint {
21 // Source range of the directive.
22 SourceRange Range;
23 // Identifier corresponding to the name of the pragma. "loop" for
24 // "#pragma clang loop" directives and "unroll" for "#pragma unroll"
25 // hints.
26 IdentifierLoc *PragmaNameLoc = nullptr;
27 // Name of the loop hint. Examples: "unroll", "vectorize". In the
28 // "#pragma unroll" and "#pragma nounroll" cases, this is identical to
29 // PragmaNameLoc.
30 IdentifierLoc *OptionLoc = nullptr;
31 // Identifier for the hint state argument. If null, then the state is
32 // default value such as for "#pragma unroll".
33 IdentifierLoc *StateLoc = nullptr;
34 // Expression for the hint argument if it exists, null otherwise.
35 Expr *ValueExpr = nullptr;
36
37 LoopHint() = default;
38};
39
40} // end namespace clang
41
42#endif // LLVM_CLANG_PARSE_LOOPHINT_H
43

source code of clang/include/clang/Parse/LoopHint.h