14 #ifndef MLIR_IR_LOCATION_H 15 #define MLIR_IR_LOCATION_H 27 struct CallSiteLocationStorage;
28 struct FileLineColLocationStorage;
29 struct FusedLocationStorage;
30 struct LocationStorage;
31 struct NameLocationStorage;
32 struct OpaqueLocationStorage;
33 struct UnknownLocationStorage;
55 assert(loc &&
"location should never be null.");
63 template <
typename U>
bool isa()
const {
return impl.isa<U>(); }
64 template <
typename U> U
dyn_cast()
const {
return impl.dyn_cast<U>(); }
65 template <
typename U> U
cast()
const {
return impl.cast<U>(); }
72 void print(raw_ostream &os)
const { impl.print(os); }
73 void dump()
const { impl.dump(); }
80 return LocationAttr(reinterpret_cast<const AttributeStorage *>(pointer));
99 detail::CallSiteLocationStorage> {
128 detail::FileLineColLocationStorage> {
135 static Location get(StringRef filename,
unsigned line,
unsigned column,
138 StringRef getFilename()
const;
140 unsigned getLine()
const;
141 unsigned getColumn()
const;
152 detail::FusedLocationStorage> {
179 detail::NameLocationStorage> {
224 detail::OpaqueLocationStorage> {
230 template <
typename T>
232 return get(
reinterpret_cast<uintptr_t
>(underlyingLocation),
238 template <
typename T>
240 return get(
reinterpret_cast<uintptr_t
>(underlyingLocation),
241 ClassID::getID<T>(), fallbackLocation);
246 assert(isa<T>(location));
247 return reinterpret_cast<T
>(
254 template <
typename T>
256 return isa<T>(location)
257 ? reinterpret_cast<T>(
266 return opaque_loc && opaque_loc.
getClassId() == ClassID::getID<T>();
270 uintptr_t getUnderlyingLocation()
const;
276 Location getFallbackLocation()
const;
316 template <>
struct PointerLikeTypeTraits<
mlir::Location> {
325 NumLowBitsAvailable =
326 PointerLikeTypeTraits<mlir::Attribute>::NumLowBitsAvailable
Definition: InferTypeOpInterface.cpp:20
U cast() const
Definition: Location.h:65
static void * getAsVoidPointer(mlir::Location I)
Definition: Location.h:318
Definition: Location.h:151
Definition: STLExtras.h:95
Definition: PassRegistry.cpp:413
const void * getAsOpaquePointer() const
Methods for supporting PointerLikeTypeTraits.
Definition: Location.h:78
Represents an identity name attached to a child location.
Definition: Location.h:178
Definition: Location.h:223
static bool kindof(unsigned kind)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: Location.h:197
Definition: Identifier.h:26
Definition: Location.h:39
ClassID * getClassId() const
Returns a ClassID* that represents the underlying objects c++ type.
Definition: Location.cpp:133
static unsigned getHashValue(mlir::Location val)
Definition: Location.h:307
static mlir::Location getEmptyKey()
Definition: Location.h:299
static T getUnderlyingLocation(Location location)
Returns a pointer to some data structure that opaque location stores.
Definition: Location.h:245
Definition: Location.h:52
static T getUnderlyingLocationOrNull(Location location)
Definition: Location.h:255
Definition: Attributes.h:153
Definition: Attributes.h:155
bool isa() const
Type casting utilities on the underlying location.
Definition: Location.h:63
LocationAttr * operator->() const
Definition: Location.h:60
Definition: Attributes.h:166
static bool kindof(unsigned kind)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: Location.h:212
bool operator!=(Location rhs) const
Definition: Location.h:69
Definition: Attributes.h:53
static mlir::Location getTombstoneKey()
Definition: Location.h:303
Definition: Location.h:204
Definition: Attributes.h:152
void dump() const
Definition: Location.h:73
static bool isEqual(mlir::Location LHS, mlir::Location RHS)
Definition: Location.h:310
static Location getFromOpaquePointer(const void *pointer)
Definition: Location.h:79
Attribute()
Definition: Attributes.h:72
static bool classof(Attribute attr)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: Location.h:44
inline ::llvm::hash_code hash_value(AffineExpr arg)
Make AffineExpr hashable.
Definition: AffineExpr.h:201
void print(raw_ostream &os) const
Print the location.
Definition: Location.h:72
U dyn_cast() const
Definition: Location.h:64
static mlir::Location getFromVoidPointer(void *P)
Definition: Location.h:321
Definition: Attributes.h:154
bool operator==(Location rhs) const
Comparison operators.
Definition: Location.h:68
Definition: Attributes.h:167
Definition: Location.h:97
Definition: Location.h:126
Definition: StorageUniquerSupport.h:30
Definition: MLIRContext.h:34
static bool kindof(unsigned kind)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: Location.h:172
static bool isa(Location location)
Definition: Location.h:264
static bool kindof(unsigned kind)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: Location.h:144
static bool kindof(unsigned kind)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: Location.h:279
raw_ostream & operator<<(raw_ostream &os, SubViewOp::Range &range)
Definition: Ops.cpp:2759
Location(LocationAttr loc)
Definition: Location.h:54
static Location get(MLIRContext *context)
Get an instance of the UnknownLoc.
Definition: MLIRContext.cpp:559
Definition: Attributes.h:151
unsigned getKind() const
Return the classification for this attribute.
Definition: Attributes.h:94
Locations.
Definition: Attributes.h:150
LocationAttr impl
The internal backing location attribute.
Definition: Location.h:85
static bool kindof(unsigned kind)
Methods for support type inquiry through isa, cast, and dyn_cast.
Definition: Location.h:118