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

#include <core/extern.h>

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

Public Member Functions

 Extern (const std::string_view name, Visibility visibility=Visibility::GLOBAL_DEFAULT)
 
 Extern (const std::string_view name, const std::string_view section, Visibility visibility=Visibility::GLOBAL_DEFAULT)
 
 ~Extern () override
 
ProggetParent ()
 Returns the parent node.
 
void removeFromParent () override
 Removes an extern from the parent.
 
void eraseFromParent () override
 Erases the extern from the parent, deleting it.
 
std::optional< llvm::Align > GetAlignment () const override
 Externs have no known alignment.
 
void SetValue (Ref< Value > g)
 Maps the extern to an alias.
 
Ref< ValueGetValue ()
 Returns the alias, if it exists.
 
ConstRef< ValueGetValue () const
 Returns the alias, if it exists.
 
bool HasValue () const
 Checks if the extern is a weak alias to another symbol.
 
ProggetProg () override
 Returns the program to which the extern belongs.
 
void SetSection (const std::string_view section)
 Sets the section of the extern.
 
std::optional< const std::string_view > GetSection () const
 Returns the section.
 
void dump (llvm::raw_ostream &os=llvm::errs()) const override
 Dumps the representation of the function.
 
- 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::EXTERN
 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< Extern >
 

Additional Inherited Members

- 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 >
 
- 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

External symbol.

Constructor & Destructor Documentation

◆ Extern() [1/2]

Extern::Extern ( const std::string_view  name,
Visibility  visibility = Visibility::GLOBAL_DEFAULT 
)

Creates a new extern.

◆ Extern() [2/2]

Extern::Extern ( const std::string_view  name,
const std::string_view  section,
Visibility  visibility = Visibility::GLOBAL_DEFAULT 
)

Creates a new extern in a section.

◆ ~Extern()

Extern::~Extern ( )
override

Frees the symbol.


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