MLIR
18.0.0git
include
mlir
Support
LLVM.h
Go to the documentation of this file.
1
//===- LLVM.h - Import and forward declare core LLVM types ------*- 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
// This file forward declares and imports various common LLVM datatypes that
10
// MLIR wants to use unqualified.
11
//
12
// Note that most of these are forward declared and then imported into the MLIR
13
// namespace with using decls, rather than being #included. This is because we
14
// want clients to explicitly #include the files they need.
15
//
16
//===----------------------------------------------------------------------===//
17
18
#ifndef MLIR_SUPPORT_LLVM_H
19
#define MLIR_SUPPORT_LLVM_H
20
21
// We include this header because it cannot be practically forward
22
// declared, and are effectively language features.
23
#include "llvm/Support/Casting.h"
24
#include <vector>
25
26
// Workaround for clang-5 (PR41549)
27
#if defined(__clang_major__)
28
#if __clang_major__ <= 5
29
#include "llvm/ADT/DenseMapInfo.h"
30
#include "llvm/ADT/SmallVector.h"
31
#endif
32
#endif
33
34
// Forward declarations.
35
namespace
llvm
{
36
// String types
37
template
<
unsigned
N>
38
class
SmallString
;
39
class
StringRef;
40
class
StringLiteral;
41
class
Twine;
42
43
// Containers.
44
template
<
typename
T>
45
class
ArrayRef
;
46
class
BitVector;
47
namespace
detail {
48
template
<
typename
KeyT,
typename
ValueT>
49
struct
DenseMapPair
;
50
}
// namespace detail
51
template
<
typename
KeyT,
typename
ValueT,
typename
KeyInfoT,
typename
BucketT>
52
class
DenseMap
;
53
template
<
typename
T,
typename
Enable>
54
struct
DenseMapInfo
;
55
template
<
typename
ValueT,
typename
ValueInfoT>
56
class
DenseSet
;
57
class
MallocAllocator;
58
template
<
typename
T>
59
class
MutableArrayRef
;
60
template
<
typename
... PT>
61
class
PointerUnion
;
62
template
<
typename
T,
typename
Vector,
typename
Set,
unsigned
N>
63
class
SetVector
;
64
template
<
typename
T,
unsigned
N>
65
class
SmallPtrSet
;
66
template
<
typename
T>
67
class
SmallPtrSetImpl
;
68
template
<
typename
T,
unsigned
N>
69
class
SmallVector
;
70
template
<
typename
T>
71
class
SmallVectorImpl
;
72
template
<
typename
AllocatorTy>
73
class
StringSet
;
74
template
<
typename
T,
typename
R>
75
class
StringSwitch
;
76
template
<
typename
T>
77
class
TinyPtrVector
;
78
template
<
typename
T,
typename
ResultT>
79
class
TypeSwitch
;
80
81
// Other common classes.
82
class
APInt;
83
class
APSInt;
84
class
APFloat;
85
template
<
typename
Fn>
86
class
function_ref
;
87
template
<
typename
IteratorT>
88
class
iterator_range
;
89
class
raw_ostream;
90
class
SMLoc;
91
class
SMRange;
92
}
// namespace llvm
93
94
namespace
mlir
{
95
// Casting operators.
96
using
llvm::cast;
97
using
llvm::cast_if_present;
98
using
llvm::cast_or_null;
99
using
llvm::dyn_cast;
100
using
llvm::dyn_cast_if_present;
101
using
llvm::dyn_cast_or_null;
102
using
llvm::isa;
103
using
llvm::isa_and_nonnull;
104
using
llvm::isa_and_present;
105
106
// String types
107
using
llvm::SmallString
;
108
using
llvm::StringLiteral;
109
using
llvm::StringRef;
110
using
llvm::Twine;
111
112
// Container Related types
113
//
114
// Containers.
115
using
llvm::ArrayRef
;
116
using
llvm::BitVector;
117
template
<
typename
T,
typename
Enable =
void
>
118
using
DenseMapInfo
=
llvm::DenseMapInfo<T, Enable>
;
119
template
<
typename
KeyT,
typename
ValueT,
120
typename
KeyInfoT =
DenseMapInfo<KeyT>
,
121
typename
BucketT =
llvm::detail::DenseMapPair<KeyT, ValueT>
>
122
using
DenseMap
=
llvm::DenseMap<KeyT, ValueT, KeyInfoT, BucketT>
;
123
template
<
typename
ValueT,
typename
ValueInfoT = DenseMapInfo<ValueT>>
124
using
DenseSet
=
llvm::DenseSet<ValueT, ValueInfoT>
;
125
template
<
typename
T,
typename
Vector = llvm::SmallVector<T, 0>,
126
typename
Set = DenseSet<T>,
unsigned
N = 0>
127
using
SetVector
=
llvm::SetVector<T, Vector, Set, N>
;
128
template
<
typename
AllocatorTy = llvm::MallocAllocator>
129
using
StringSet
=
llvm::StringSet<AllocatorTy>
;
130
using
llvm::MutableArrayRef
;
131
using
llvm::PointerUnion
;
132
using
llvm::SmallPtrSet
;
133
using
llvm::SmallPtrSetImpl
;
134
using
llvm::SmallVector
;
135
using
llvm::SmallVectorImpl
;
136
template
<
typename
T,
typename
R = T>
137
using
StringSwitch
=
llvm::StringSwitch<T, R>
;
138
using
llvm::TinyPtrVector
;
139
template
<
typename
T,
typename
ResultT =
void
>
140
using
TypeSwitch
=
llvm::TypeSwitch<T, ResultT>
;
141
142
// Other common classes.
143
using
llvm::APFloat;
144
using
llvm::APInt;
145
using
llvm::APSInt;
146
template
<
typename
Fn>
147
using
function_ref
=
llvm::function_ref<Fn>
;
148
using
llvm::iterator_range
;
149
using
llvm::raw_ostream;
150
using
llvm::SMLoc;
151
using
llvm::SMRange;
152
}
// namespace mlir
153
154
#endif
// MLIR_SUPPORT_LLVM_H
llvm::ArrayRef
Definition:
LLVM.h:45
llvm::DenseMap
Definition:
LLVM.h:52
llvm::DenseSet
Definition:
LLVM.h:56
llvm::MutableArrayRef
Definition:
LLVM.h:59
llvm::PointerUnion
Definition:
LLVM.h:61
llvm::SetVector
Definition:
LLVM.h:63
llvm::SmallPtrSetImpl
Definition:
LLVM.h:67
llvm::SmallPtrSet
Definition:
LLVM.h:65
llvm::SmallString
Definition:
LLVM.h:38
llvm::SmallVectorImpl
Definition:
LLVM.h:71
llvm::SmallVector
Definition:
LLVM.h:69
llvm::StringSet
Definition:
LLVM.h:73
llvm::StringSwitch
Definition:
LLVM.h:75
llvm::TinyPtrVector
Definition:
LLVM.h:77
llvm::TypeSwitch
Definition:
LLVM.h:79
llvm::function_ref
Definition:
LLVM.h:86
llvm::iterator_range
Definition:
LLVM.h:88
llvm
Include the generated interface declarations.
Definition:
CallGraph.h:229
mlir
Include the generated interface declarations.
Definition:
LocalAliasAnalysis.h:20
llvm::DenseMapInfo
Definition:
LLVM.h:54
llvm::detail::DenseMapPair
Definition:
LLVM.h:49
Generated on Thu Dec 7 2023 00:33:59 for MLIR by
1.9.1