Go to the documentation of this file.
13 #ifndef LLVM_OBJECT_SYMBOLICFILE_H
14 #define LLVM_OBJECT_SYMBOLICFILE_H
46 template <
typename OStream>
48 OS <<
"(" <<
format(
"0x%08" PRIxPTR,
D.p) <<
" (" <<
format(
"0x%08x",
D.d.a)
49 <<
", " <<
format(
"0x%08x",
D.d.b) <<
"))";
81 const content_type *
operator->()
const {
return &Current; }
83 const content_type &
operator*()
const {
return Current; }
86 return Current == other.Current;
90 return !(*
this == other);
186 : SymbolPimpl(SymbolP), OwningObject(Owner) {}
189 return SymbolPimpl ==
Other.SymbolPimpl;
193 return SymbolPimpl <
Other.SymbolPimpl;
219 #endif // LLVM_OBJECT_SYMBOLICFILE_H
@ unknown
Unrecognized file.
This is an optimization pass for GlobalISel generic memory operations.
file_magic - An "enum class" enumeration of file types based on magic (the first N bytes of the file)...
bool operator==(const content_iterator &other) const
bool operator!=(const content_iterator &other) const
virtual Error printSymbolName(raw_ostream &OS, DataRefImpl Symb) const =0
Merge contiguous icmps into a memcmp
The instances of the Type class are immutable: once they are created, they are never changed.
virtual void moveSymbolNext(DataRefImpl &Symb) const =0
Tagged union holding either a T or a Error.
Error printName(raw_ostream &OS) const
=0.0 ? 0.0 :(a > 0.0 ? 1.0 :-1.0) a
virtual basic_symbol_iterator symbol_end() const =0
virtual Expected< uint32_t > getSymbolFlags(DataRefImpl Symb) const =0
DataRefImpl getRawDataRefImpl() const
This is a value type class that represents a single symbol in the list of symbols in the object file.
the resulting code requires compare and branches when and if the revised code is with conditional branches instead of More there is a byte word extend before each where there should be only and the condition codes are not remembered when the same two values are compared twice More LSR enhancements i8 and i32 load store addressing modes are identical int b
const content_type & operator*() const
This class implements an extremely fast bulk output stream that can only output to a stream.
basic_symbol_iterator_range symbols() const
const SymbolicFile * getObject() const
static bool isSymbolicFile(file_magic Type, const LLVMContext *Context)
raw_ostream & operator<<(raw_ostream &OS, const SectionedAddress &Addr)
bar al al movzbl eax ret Missed when stored in a memory object
Expected< uint32_t > getFlags() const
Get symbol flags (bitwise OR of SymbolRef::Flags)
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
This is an important class for using LLVM in a threaded context.
iterator_range< basic_symbol_iterator > basic_symbol_iterator_range
std::forward_iterator_tag iterator_category
static Expected< std::unique_ptr< SymbolicFile > > createSymbolicFile(MemoryBufferRef Object)
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
const content_type * operator->() const
bool operator<(const BasicSymbolRef &Other) const
bool operator!=(const DataRefImpl &a, const DataRefImpl &b)
virtual basic_symbol_iterator symbol_begin() const =0
SymbolicFile(unsigned int Type, MemoryBufferRef Source)
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
bool operator<(const SectionedAddress &LHS, const SectionedAddress &RHS)
content_iterator & operator++()
struct llvm::object::DataRefImpl::@331 d
Lightweight error class with error context and mandatory checking.
static Expected< std::unique_ptr< SymbolicFile > > createSymbolicFile(MemoryBufferRef Object, llvm::file_magic Type, LLVMContext *Context, bool InitContent=true)
bool operator==(const SectionedAddress &LHS, const SectionedAddress &RHS)
A range adaptor for a pair of iterators.
std::ptrdiff_t difference_type
content_iterator(content_type symb)
static bool classof(const Binary *v)
bool operator==(const BasicSymbolRef &Other) const
Optional< std::vector< StOtherPiece > > Other