Go to the documentation of this file.
23 Expected<std::vector<NewArchiveMember>>
25 std::vector<NewArchiveMember> NewArchiveMembers;
48 Member->Buf = std::make_unique<SmallVectorMemoryBuffer>(
50 Member->MemberName = Member->Buf->getBufferIdentifier();
51 NewArchiveMembers.push_back(
std::move(*Member));
64 bool Deterministic,
bool Thin) {
89 std::copy(Member.Buf->getBufferStart(), Member.Buf->getBufferEnd(),
90 (*FB)->getBufferStart());
91 if (
Error E = (*FB)->commit())
101 if (!NewArchiveMembersOrErr)
102 return NewArchiveMembersOrErr.
takeError();
This is an optimization pass for GlobalISel generic memory operations.
iterator_range< child_iterator > children(Error &Err, bool SkipInternal=true) const
static ErrorSuccess success()
Create a success value.
Error executeObjcopyOnBinary(const MultiFormatConfig &Config, object::Binary &In, raw_ostream &Out)
Applies the transformations described by Config to In and writes the result into Out.
@ F_executable
Set the 'x' bit on the resulting file.
Tagged union holding either a T or a Error.
bool empty() const
empty - Check if the array is empty.
Error createFileError(const Twine &F, Error E)
Concatenate a source file path and/or name with an Error.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
Error writeArchive(StringRef ArcName, ArrayRef< NewArchiveMember > NewMembers, bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, std::unique_ptr< MemoryBuffer > OldArchiveBuf=nullptr)
bool DeterministicArchives
Expected< std::vector< NewArchiveMember > > createNewArchiveMembers(const MultiFormatConfig &Config, const Archive &Ar)
Applies the transformations described by Config to each member in archive Ar.
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
bool hasSymbolTable() const
Error executeObjcopyOnArchive(const MultiFormatConfig &Config, const object::Archive &Ar)
Applies the transformations described by Config to each member in archive Ar.
static Error deepWriteArchive(StringRef ArcName, ArrayRef< NewArchiveMember > NewMembers, bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin)
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.
reference get()
Returns a reference to the stored T value.
static Expected< std::unique_ptr< FileOutputBuffer > > create(StringRef FilePath, size_t Size, unsigned Flags=0)
Factory method to create an OutputBuffer object which manages a read/write buffer of the specified si...
const T & front() const
front - Get the first element.
Lightweight error class with error context and mandatory checking.
Error takeError()
Take ownership of the stored error.
StringRef getFileName() const
A raw_ostream that writes to an SmallVector or SmallString.
we should consider alternate ways to model stack dependencies Lots of things could be done in WebAssemblyTargetTransformInfo cpp there are numerous optimization related hooks that can be overridden in WebAssemblyTargetLowering Instead of the OptimizeReturned which should consider preserving the returned attribute through to MachineInstrs and extending the MemIntrinsicResults pass to do this optimization on calls too That would also let the WebAssemblyPeephole pass clean up dead defs for such as it does for stores Consider implementing and or getMachineCombinerPatterns Find a clean way to fix the problem which leads to the Shrink Wrapping pass being run after the WebAssembly PEI pass When setting multiple variables to the same we currently get code like const It could be done with a smaller encoding like local tee $pop5 local copy
static Expected< NewArchiveMember > getOldMember(const object::Archive::Child &OldMember, bool Deterministic)