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 std::optional<FileLocRange> getFunctionLocation(const Function *) const;
38 std::optional<FileLocRange> getBlockLocation(const BasicBlock *) const;
39 std::optional<FileLocRange> getInstructionLocation(const Instruction *) const;
40 /// Get the function at the requested location range.
41 /// If no single function occupies the queried range, or the record is
42 /// missing, a nullptr is returned.
44 /// Get the function at the requested location.
45 /// If no function occupies the queried location, or the record is missing, a
46 /// nullptr is returned.
48 /// Get the block at the requested location range.
49 /// If no single block occupies the queried range, or the record is missing, a
50 /// nullptr is returned.
52 /// Get the block at the requested location.
53 /// If no block occupies the queried location, or the record is missing, a
54 /// nullptr is returned.
56 /// Get the instruction at the requested location range.
57 /// If no single instruction occupies the queried range, or the record is
58 /// missing, a nullptr is returned.
60 /// Get the instruction at the requested location.
61 /// If no instruction occupies the queried location, or the record is missing,
62 /// a nullptr is returned.
67};
68} // namespace llvm
69
70#endif
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 &)
std::optional< FileLocRange > getFunctionLocation(const Function *) const
Function * getFunctionAtLocation(const FileLocRange &) const
Get the function at the requested location range.
std::optional< FileLocRange > getInstructionLocation(const Instruction *) const
Instruction * getInstructionAtLocation(const FileLocRange &) const
Get the instruction at the requested location range.
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