llir-opt  0.0.1
Low-Level Post-Link Optimiser for OCaml and C
Public Types | Public Member Functions | Static Public Attributes | Friends | List of all members
Atom Class Reference

#include <core/atom.h>

Inheritance diagram for Atom:
Inheritance graph
[legend]
Collaboration diagram for Atom:
Collaboration graph
[legend]

Public Types

using ItemListType = llvm::ilist< Item >
 Type of the item list.
 
typedef ItemListType::iterator iterator
 
typedef ItemListType::const_iterator const_iterator
 
- Public Types inherited from Global
enum  Kind { EXTERN, FUNC, BLOCK, ATOM }
 Enumeration of global kinds.
 
- Public Types inherited from User
using op_iterator = Use *
 
using const_op_iterator = const Use *
 
using op_range = llvm::iterator_range< op_iterator >
 
using const_op_range = llvm::iterator_range< const_op_iterator >
 
using value_op_range = llvm::iterator_range< value_op_iterator >
 
using const_value_op_range = llvm::iterator_range< const_value_op_iterator >
 
template<typename T >
using conv_op_range = llvm::iterator_range< conv_op_iterator< T > >
 
template<typename T >
using const_conv_op_range = llvm::iterator_range< const_conv_op_iterator< T > >
 
template<typename T >
using unref_range = llvm::iterator_range< unref_iterator< T > >
 
template<typename T >
using const_unref_range = llvm::iterator_range< const_unref_iterator< T > >
 
- Public Types inherited from Value
enum  Kind { INST, GLOBAL, EXPR, CONST }
 Enumeration of value types.
 
template<typename T >
using forward_it = std::iterator< std::forward_iterator_tag, T >
 
using use_iterator = use_iterator_impl< Use >
 
using const_use_iterator = use_iterator_impl< const Use >
 
using user_iterator = user_iterator_impl< User >
 
using const_user_iterator = user_iterator_impl< const User >
 

Public Member Functions

 Atom (const std::string_view name, Visibility visibility=Visibility::LOCAL, std::optional< llvm::Align > align=std::nullopt)
 Creates a new parent.
 
 ~Atom () override
 Deletes the parent.
 
void removeFromParent () override
 Removes an atom from the data section.
 
void eraseFromParent () override
 Removes an parent from the data section, erasing it.
 
ObjectgetParent () const
 Returns a pointer to the parent section.
 
void remove (iterator it)
 Removes an atom.
 
void erase (iterator it)
 Erases an atom.
 
void AddItem (Item *atom, Item *before=nullptr)
 Adds an atom to the atom.
 
bool empty () const
 
size_t size () const
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
void clear ()
 Clears all items.
 
size_t GetByteSize () const
 Returns the size of the atom in bytes.
 
void SetAlignment (llvm::Align align)
 Changes the parent alignment.
 
std::optional< llvm::Align > GetAlignment () const override
 Returns the parent alignment.
 
ProggetProg () override
 Returns the program to which the atom belongs.
 
void dump (llvm::raw_ostream &os=llvm::errs()) const
 Dump the object.
 
- Public Member Functions inherited from Global
 Global (Kind kind, const std::string_view name, Visibility visibility=Visibility::LOCAL, unsigned numOps=0)
 
Kind GetKind () const
 Returns the kind of the global.
 
bool Is (Kind kind) const
 Checks if the global is of a specific kind.
 
const std::string_view GetName () const
 Returns the name of the global.
 
llvm::StringRef getName () const
 Returns the name of the basic block for LLVM.
 
void SetVisibility (Visibility visibility)
 Sets the visibilty of the global.
 
Visibility GetVisibility () const
 Returns the visibilty of a global.
 
bool IsRoot () const
 Checks if the symbol can be externally referenced.
 
bool IsLocal () const
 Checks if the global is hidden in the compilation unit.
 
bool IsWeak () const
 Checks if a symbol is weak.
 
- Public Member Functions inherited from User
 User (Kind kind, unsigned numOps)
 Creates a new user.
 
virtual ~User ()
 Cleans up after the use.
 
size_t size () const
 
op_iterator op_begin ()
 
op_iterator op_end ()
 
op_range operands ()
 
const_op_iterator op_begin () const
 
const_op_iterator op_end () const
 
const_op_range operands () const
 
value_op_iterator value_op_begin ()
 
value_op_iterator value_op_end ()
 
value_op_range operand_values ()
 
const_value_op_iterator value_op_begin () const
 
const_value_op_iterator value_op_end () const
 
const_value_op_range operand_values () const
 
- Public Member Functions inherited from Value
 Value (Kind kind)
 Constructs a new value.
 
 Value (const Value &)=delete
 Do not allow copying.
 
 Value (Value &&)=delete
 Do not allow moving.
 
virtual ~Value ()
 Destroy the value.
 
Kind GetKind () const
 Returns the value kind.
 
bool Is (Kind kind) const
 Checks if the value is of a specific kind.
 
bool IsConstant () const
 Checks whether the value is a compile-time constant.
 
virtual void replaceAllUsesWith (Value *v)
 Replaces all uses of this value.
 
virtual void replaceAllUsesWith (Ref< Value > v)
 Replaces all uses of this with a refernce.
 
size_t use_size () const
 
bool use_empty () const
 
use_iterator use_begin ()
 
const_use_iterator use_begin () const
 
use_iterator use_end ()
 
const_use_iterator use_end () const
 
llvm::iterator_range< use_iteratoruses ()
 
llvm::iterator_range< const_use_iteratoruses () const
 
bool user_empty () const
 
user_iterator user_begin ()
 
const_user_iterator user_begin () const
 
user_iterator user_end ()
 
const_user_iterator user_end () const
 
llvm::iterator_range< user_iteratorusers ()
 
llvm::iterator_range< const_user_iteratorusers () const
 
void operator= (const Value &)=delete
 Do not allow assignments.
 
void operator= (Value &&)=delete
 Do not allow move assignments.
 

Static Public Attributes

static constexpr Global::Kind kGlobalKind = Global::Kind::ATOM
 Kind of the global.
 
- Static Public Attributes inherited from Global
static constexpr Value::Kind kValueKind = Value::Kind::GLOBAL
 Kind of the global.
 

Friends

struct SymbolTableListTraits< Atom >
 
struct llvm::ilist_traits< Item >
 

Additional Inherited Members

- Protected Member Functions inherited from User
template<int I>
void Set (Ref< Value > val)
 Setter for an operand.
 
void Set (int i, Ref< Value > val)
 Setter for an operand.
 
template<int I>
Ref< ValueGet ()
 Accessor for an operand.
 
Ref< ValueGet (int i)
 Accessor for an operand.
 
template<int I>
ConstRef< ValueGet () const
 Accessor for an operand.
 
ConstRef< ValueGet (int i) const
 Accessor for an operand.
 
void resizeUses (unsigned n)
 Grows the operand list.
 
- Protected Attributes inherited from User
unsigned numOps_
 Number of operands.
 
Useuses_
 Head of the use list.
 

Detailed Description

A symbol followed by data items.


The documentation for this class was generated from the following files: