A store instruction is of the form *s1.f1...fn = s2. Field selectors are optional and only appear if ALLOW_OFFSETS is enabled. More...
#include <Store.h>
Public Member Functions | |
Store (Symbol *v1, Symbol *v2, int offset, string name, il::node *original, int line) | |
virtual string | to_string () const |
virtual string | to_string (bool pretty_print) const |
Symbol * | get_rhs () |
Symbol * | get_lhs () |
int | get_offset () |
string & | get_field_name () |
virtual bool | is_removable () |
Friends | |
class | boost::serialization::access |
A store instruction is of the form *s1.f1...fn = s2. Field selectors are optional and only appear if ALLOW_OFFSETS is enabled.
The field selectors in this instruction are optional; if ALLOW_OFFSETS in Function.cpp is set to false, SAIL generates only Store instructions with no field selectors. Note that disabling ALLOW_OFFSETS will cause stores with offsets to generate instructions that involve pointer arithmetic.
bool sail::Store::is_removable | ( | ) | [virtual] |
An instruction is removable if it's not present in the original source code, but introduced in the translation from the high-level language to the low-level language. For instance, if **x is an expression used in the original code, the low-level language will introduce a temporary t=*x; such instructions are "removable" for printing purposes.
Implements sail::Instruction.