[Alignment][NFC] Convert StoreInst to MaybeAlign
[llvm-complete.git] / include / llvm / AsmParser / Parser.h
blobb0c6034978055e12fb0f87b972e96c387a113fc2
1 //===-- Parser.h - Parser for LLVM IR text assembly files -------*- 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 // These classes are implemented by the lib/AsmParser library.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_ASMPARSER_PARSER_H
14 #define LLVM_ASMPARSER_PARSER_H
16 #include "llvm/Support/MemoryBuffer.h"
18 namespace llvm {
20 class Constant;
21 class LLVMContext;
22 class Module;
23 class ModuleSummaryIndex;
24 struct SlotMapping;
25 class SMDiagnostic;
26 class Type;
28 /// This function is a main interface to the LLVM Assembly Parser. It parses
29 /// an ASCII file that (presumably) contains LLVM Assembly code. It returns a
30 /// Module (intermediate representation) with the corresponding features. Note
31 /// that this does not verify that the generated Module is valid, so you should
32 /// run the verifier after parsing the file to check that it is okay.
33 /// Parse LLVM Assembly from a file
34 /// \param Filename The name of the file to parse
35 /// \param Err Error result info.
36 /// \param Context Context in which to allocate globals info.
37 /// \param Slots The optional slot mapping that will be initialized during
38 /// parsing.
39 /// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
40 /// This option should only be set to false by llvm-as
41 /// for use inside the LLVM testuite!
42 /// \param DataLayoutString Override datalayout in the llvm assembly.
43 std::unique_ptr<Module>
44 parseAssemblyFile(StringRef Filename, SMDiagnostic &Err, LLVMContext &Context,
45 SlotMapping *Slots = nullptr, bool UpgradeDebugInfo = true,
46 StringRef DataLayoutString = "");
48 /// The function is a secondary interface to the LLVM Assembly Parser. It parses
49 /// an ASCII string that (presumably) contains LLVM Assembly code. It returns a
50 /// Module (intermediate representation) with the corresponding features. Note
51 /// that this does not verify that the generated Module is valid, so you should
52 /// run the verifier after parsing the file to check that it is okay.
53 /// Parse LLVM Assembly from a string
54 /// \param AsmString The string containing assembly
55 /// \param Err Error result info.
56 /// \param Context Context in which to allocate globals info.
57 /// \param Slots The optional slot mapping that will be initialized during
58 /// parsing.
59 /// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
60 /// This option should only be set to false by llvm-as
61 /// for use inside the LLVM testuite!
62 /// \param DataLayoutString Override datalayout in the llvm assembly.
63 std::unique_ptr<Module> parseAssemblyString(StringRef AsmString,
64 SMDiagnostic &Err,
65 LLVMContext &Context,
66 SlotMapping *Slots = nullptr,
67 bool UpgradeDebugInfo = true,
68 StringRef DataLayoutString = "");
70 /// Holds the Module and ModuleSummaryIndex returned by the interfaces
71 /// that parse both.
72 struct ParsedModuleAndIndex {
73 std::unique_ptr<Module> Mod;
74 std::unique_ptr<ModuleSummaryIndex> Index;
77 /// This function is a main interface to the LLVM Assembly Parser. It parses
78 /// an ASCII file that (presumably) contains LLVM Assembly code, including
79 /// a module summary. It returns a Module (intermediate representation) and
80 /// a ModuleSummaryIndex with the corresponding features. Note that this does
81 /// not verify that the generated Module or Index are valid, so you should
82 /// run the verifier after parsing the file to check that they are okay.
83 /// Parse LLVM Assembly from a file
84 /// \param Filename The name of the file to parse
85 /// \param Err Error result info.
86 /// \param Context Context in which to allocate globals info.
87 /// \param Slots The optional slot mapping that will be initialized during
88 /// parsing.
89 /// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
90 /// This option should only be set to false by llvm-as
91 /// for use inside the LLVM testuite!
92 /// \param DataLayoutString Override datalayout in the llvm assembly.
93 ParsedModuleAndIndex
94 parseAssemblyFileWithIndex(StringRef Filename, SMDiagnostic &Err,
95 LLVMContext &Context, SlotMapping *Slots = nullptr,
96 bool UpgradeDebugInfo = true,
97 StringRef DataLayoutString = "");
99 /// This function is a main interface to the LLVM Assembly Parser. It parses
100 /// an ASCII file that (presumably) contains LLVM Assembly code for a module
101 /// summary. It returns a a ModuleSummaryIndex with the corresponding features.
102 /// Note that this does not verify that the generated Index is valid, so you
103 /// should run the verifier after parsing the file to check that it is okay.
104 /// Parse LLVM Assembly Index from a file
105 /// \param Filename The name of the file to parse
106 /// \param Err Error result info.
107 std::unique_ptr<ModuleSummaryIndex>
108 parseSummaryIndexAssemblyFile(StringRef Filename, SMDiagnostic &Err);
110 /// parseAssemblyFile and parseAssemblyString are wrappers around this function.
111 /// Parse LLVM Assembly from a MemoryBuffer.
112 /// \param F The MemoryBuffer containing assembly
113 /// \param Err Error result info.
114 /// \param Slots The optional slot mapping that will be initialized during
115 /// parsing.
116 /// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
117 /// This option should only be set to false by llvm-as
118 /// for use inside the LLVM testuite!
119 /// \param DataLayoutString Override datalayout in the llvm assembly.
120 std::unique_ptr<Module> parseAssembly(MemoryBufferRef F, SMDiagnostic &Err,
121 LLVMContext &Context,
122 SlotMapping *Slots = nullptr,
123 bool UpgradeDebugInfo = true,
124 StringRef DataLayoutString = "");
126 /// Parse LLVM Assembly including the summary index from a MemoryBuffer.
128 /// \param F The MemoryBuffer containing assembly with summary
129 /// \param Err Error result info.
130 /// \param Slots The optional slot mapping that will be initialized during
131 /// parsing.
132 /// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
133 /// This option should only be set to false by llvm-as
134 /// for use inside the LLVM testuite!
135 /// \param DataLayoutString Override datalayout in the llvm assembly.
137 /// parseAssemblyFileWithIndex is a wrapper around this function.
138 ParsedModuleAndIndex parseAssemblyWithIndex(MemoryBufferRef F,
139 SMDiagnostic &Err,
140 LLVMContext &Context,
141 SlotMapping *Slots = nullptr,
142 bool UpgradeDebugInfo = true,
143 StringRef DataLayoutString = "");
145 /// Parse LLVM Assembly for summary index from a MemoryBuffer.
147 /// \param F The MemoryBuffer containing assembly with summary
148 /// \param Err Error result info.
150 /// parseSummaryIndexAssemblyFile is a wrapper around this function.
151 std::unique_ptr<ModuleSummaryIndex>
152 parseSummaryIndexAssembly(MemoryBufferRef F, SMDiagnostic &Err);
154 /// This function is the low-level interface to the LLVM Assembly Parser.
155 /// This is kept as an independent function instead of being inlined into
156 /// parseAssembly for the convenience of interactive users that want to add
157 /// recently parsed bits to an existing module.
159 /// \param F The MemoryBuffer containing assembly
160 /// \param M The module to add data to.
161 /// \param Index The index to add data to.
162 /// \param Err Error result info.
163 /// \param Slots The optional slot mapping that will be initialized during
164 /// parsing.
165 /// \return true on error.
166 /// \param UpgradeDebugInfo Run UpgradeDebugInfo, which runs the Verifier.
167 /// This option should only be set to false by llvm-as
168 /// for use inside the LLVM testuite!
169 /// \param DataLayoutString Override datalayout in the llvm assembly.
170 bool parseAssemblyInto(MemoryBufferRef F, Module *M, ModuleSummaryIndex *Index,
171 SMDiagnostic &Err, SlotMapping *Slots = nullptr,
172 bool UpgradeDebugInfo = true,
173 StringRef DataLayoutString = "");
175 /// Parse a type and a constant value in the given string.
177 /// The constant value can be any LLVM constant, including a constant
178 /// expression.
180 /// \param Slots The optional slot mapping that will restore the parsing state
181 /// of the module.
182 /// \return null on error.
183 Constant *parseConstantValue(StringRef Asm, SMDiagnostic &Err, const Module &M,
184 const SlotMapping *Slots = nullptr);
186 /// Parse a type in the given string.
188 /// \param Slots The optional slot mapping that will restore the parsing state
189 /// of the module.
190 /// \return null on error.
191 Type *parseType(StringRef Asm, SMDiagnostic &Err, const Module &M,
192 const SlotMapping *Slots = nullptr);
194 /// Parse a string \p Asm that starts with a type.
195 /// \p Read[out] gives the number of characters that have been read to parse
196 /// the type in \p Asm.
198 /// \param Slots The optional slot mapping that will restore the parsing state
199 /// of the module.
200 /// \return null on error.
201 Type *parseTypeAtBeginning(StringRef Asm, unsigned &Read, SMDiagnostic &Err,
202 const Module &M, const SlotMapping *Slots = nullptr);
204 } // End llvm namespace
206 #endif