Go to the documentation of this file.
29 io.mapRequired(
"Name", RemarkName);
30 io.mapOptional(
"DebugLoc", RL);
31 io.mapRequired(
"Function", FunctionName);
32 io.mapOptional(
"Hotness", Hotness);
33 io.mapOptional(
"Args",
Args);
41 assert(io.outputting() &&
"input not yet implemented");
49 else if (io.mapTag(
"!AnalysisFPCommute",
52 else if (io.mapTag(
"!AnalysisAliasing",
60 if (
auto *Serializer = dyn_cast<YAMLStrTabRemarkSerializer>(
62 assert(Serializer->StrTab.hasValue() &&
63 "YAMLStrTabSerializer with no StrTab.");
79 assert(io.outputting() &&
"input not yet implemented");
85 if (
auto *Serializer = dyn_cast<YAMLStrTabRemarkSerializer>(
87 assert(Serializer->StrTab.hasValue() &&
88 "YAMLStrTabSerializer with no StrTab.");
90 unsigned FileID = StrTab.
add(File).first;
91 io.mapRequired(
"File", FileID);
93 io.mapRequired(
"File", File);
96 io.mapRequired(
"Line", Line);
97 io.mapRequired(
"Column", Col);
100 static const bool flow =
true;
126 template <
typename T>
struct SequenceTraits<
ArrayRef<
T>> {
129 assert(io.outputting() &&
"input not yet implemented");
138 assert(io.outputting() &&
"input not yet implemented");
140 if (
auto *Serializer = dyn_cast<YAMLStrTabRemarkSerializer>(
142 assert(Serializer->StrTab.hasValue() &&
143 "YAMLStrTabSerializer with no StrTab.");
145 auto ValueID = StrTab.
add(A.Val).first;
146 io.mapRequired(A.Key.data(), ValueID);
149 io.mapRequired(A.Key.data(),
S);
151 io.mapRequired(A.Key.data(), A.Val);
153 io.mapOptional(
"DebugLoc", A.Loc);
170 YAMLOutput(OS, reinterpret_cast<void *>(
this)) {
181 std::unique_ptr<MetaSerializer>
184 return std::make_unique<YAMLMetaSerializer>(
OS, ExternalFilename);
204 return std::make_unique<YAMLStrTabMetaSerializer>(
OS, ExternalFilename,
228 std::array<char, 8> StrTabSizeBuf;
230 OS.
write(StrTabSizeBuf.data(), StrTabSizeBuf.size());
232 (*StrTab)->serialize(OS);
239 assert(!FilenameBuf.empty() &&
"The filename can't be empty.");
240 OS.
write(FilenameBuf.data(), FilenameBuf.size());
This class represents an incoming formal argument to a Function.
This is an optimization pass for GlobalISel generic memory operations.
LLVM_NODISCARD size_t count(char C) const
Return the number of occurrences of C in the string.
static StringRef input(StringRef Scalar, void *Ctx, StringBlockVal &S)
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
auto seq(T Begin, T End)
Iterate over an integral type from Begin up to - but not including - End.
raw_ostream & write(unsigned char C)
This class implements an extremely fast bulk output stream that can only output to a stream.
The initial backend is deliberately restricted to z10 We should add support for later architectures at some point If an asm ties an i32 r result to an i64 input
static size_t size(IO &io, ArrayRef< T > &seq)
compiles ldr LCPI1_0 ldr ldr mov lsr tst moveq r1 ldr LCPI1_1 and r0 bx lr It would be better to do something like to fold the shift into the conditional move
static void output(const StringBlockVal &S, void *Ctx, raw_ostream &OS)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
void make_absolute(const Twine ¤t_directory, SmallVectorImpl< char > &path)
Make path an absolute path.
Helper struct for multiline string block literals.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
StringRef - Represent a constant reference to a string, i.e.
Analysis the ScalarEvolution expression for r is this
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
static Argument & element(IO &io, ArrayRef< T > &seq, size_t index)
StringBlockVal(StringRef R)
void write64le(void *P, uint64_t V)
constexpr char Args[]
Key for Kernel::Metadata::mArgs.
static void mapping(IO &io, Argument &A)
LLVM Value Representation.
static const char PassName[]