LLVM 22.0.0git
AsmParserContext.h
Go to the documentation of this file.
1//===----------------------------------------------------------------------===//
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_ASMPARSER_ASMPARSERCONTEXT_H
10#define LLVM_ASMPARSER_ASMPARSERCONTEXT_H
11
12#include "llvm/ADT/DenseMap.h"
14#include "llvm/IR/Value.h"
15#include <optional>
16
17namespace llvm {
18
19/// Registry of file location information for LLVM IR constructs.
20///
21/// This class provides access to the file location information
22/// for various LLVM IR constructs. Currently, it supports Function,
23/// BasicBlock and Instruction locations.
24///
25/// When available, it can answer queries about what is at a given
26/// file location, as well as where in a file a given IR construct
27/// is.
28///
29/// This information is optionally emitted by the LLParser while
30/// it reads LLVM textual IR.
35
36public:
37 LLVM_ABI std::optional<FileLocRange>
38 getFunctionLocation(const Function *) const;
39 LLVM_ABI std::optional<FileLocRange>
40 getBlockLocation(const BasicBlock *) const;
41 LLVM_ABI std::optional<FileLocRange>
43 /// Get the function at the requested location range.
44 /// If no single function occupies the queried range, or the record is
45 /// missing, a nullptr is returned.
47 /// Get the function at the requested location.
48 /// If no function occupies the queried location, or the record is missing, a
49 /// nullptr is returned.
51 /// Get the block at the requested location range.
52 /// If no single block occupies the queried range, or the record is missing, a
53 /// nullptr is returned.
55 /// Get the block at the requested location.
56 /// If no block occupies the queried location, or the record is missing, a
57 /// nullptr is returned.
59 /// Get the instruction at the requested location range.
60 /// If no single instruction occupies the queried range, or the record is
61 /// missing, a nullptr is returned.
63 /// Get the instruction at the requested location.
64 /// If no instruction occupies the queried location, or the record is missing,
65 /// a nullptr is returned.
70};
71} // namespace llvm
72
73#endif
#define LLVM_ABI
Definition Compiler.h:213
This file defines the DenseMap class.
Registry of file location information for LLVM IR constructs.
BasicBlock * getBlockAtLocation(const FileLocRange &) const
Get the block at the requested location range.
bool addInstructionLocation(Instruction *, const FileLocRange &)
bool addBlockLocation(BasicBlock *, const FileLocRange &)
LLVM_ABI std::optional< FileLocRange > getFunctionLocation(const Function *) const
Function * getFunctionAtLocation(const FileLocRange &) const
Get the function at the requested location range.
LLVM_ABI std::optional< FileLocRange > getInstructionLocation(const Instruction *) const
Instruction * getInstructionAtLocation(const FileLocRange &) const
Get the instruction at the requested location range.
LLVM_ABI std::optional< FileLocRange > getBlockLocation(const BasicBlock *) const
bool addFunctionLocation(Function *, const FileLocRange &)
LLVM Basic Block Representation.
Definition BasicBlock.h:62
This is an optimization pass for GlobalISel generic memory operations.
Struct holding a semiopen range [Start; End)
Definition FileLoc.h:37
Struct holding Line:Column location.
Definition FileLoc.h:18