1 #ifndef ROSE_ABISTUFF_H
2 #define ROSE_ABISTUFF_H
19 size_t sz_alignof_bool;
21 size_t sz_alignof_char;
23 size_t sz_alignof_int;
25 size_t sz_alignof_short;
27 size_t sz_alignof_long;
29 size_t sz_alignof_longlong;
31 size_t sz_alignof_float;
33 size_t sz_alignof_double;
35 size_t sz_alignof_longdouble;
37 size_t sz_alignof_pointer;
39 size_t sz_alignof_reference;
43 size_t sz_alignof_void_ptr;
45 size_t sz_alignof_ptrdiff_t;
47 size_t sz_alignof_size_t;
49 size_t sz_alignof_wchar;
53 size_t sz_alignof_shared_ptr;
54 size_t sz_pshared_ptr;
55 size_t sz_alignof_pshared_ptr;
57 size_t sz_alignof_mem_handle;
59 size_t sz_alignof_reg_handle;
61 size_t sz_alignof_dbl_1st;
62 size_t sz_alignof_int64_1st;
63 size_t sz_alignof_sharedptr_1st ;
64 size_t sz_alignof_psharedptr_1st ;
65 size_t sz_alignof_dbl_innerstruct;
66 size_t sz_alignof_int64_innerstruct;
67 size_t sz_alignof_sharedptr_innerstruct ;
68 size_t sz_alignof_psharedptr_innerstruct;
89 StructLayoutEntry(
SgNode* decl,
size_t byteOffset,
size_t fieldSize,
size_t bitFieldContainerSize = 0,
size_t bitOffset = 0):
90 decl(decl), byteOffset(byteOffset), fieldSize(fieldSize), bitFieldContainerSize(bitFieldContainerSize), bitOffset(bitOffset) {}
99 std::vector<StructLayoutEntry>
fields;
118 : next(NULL), beginning(NULL), custom_sizes(sizes)
125 : next(NULL), beginning(
this), custom_sizes(sizes)
134 if (nx) nx->setBeginningRecursively(this->beginning);
137 this->beginning = bg;
138 if (this->next) this->next->setBeginningRecursively(bg);
214 #endif // ROSE_ABISTUFF_H
This class represents the base class for all types.
Slight modification for Visual Studio – long is 4 bytes, not 8.
Slight modification for Visual Studio – doubles are 8-byte aligned.
size_t byteOffset
The byte offset of this field (or its containing word for bit fields) in the structure.
Layout generator for the native system (uses sizeof)
std::vector< StructLayoutEntry > fields
Fields, empty for non-compound types.
size_t fieldSize
The size of the field or padding.
Layout generator for customized primitive types, mostly for UPC relying on Berkeley runtime library n...
size_t alignment
Alignment of this struct or union in bytes.
This class represents the base class for all IR nodes within Sage III.
size_t bitFieldContainerSize
The size of the containing element for this bit field (in bytes)
size_t size
Size of this struct or union in bytes.
Support for cross compilation or extended UPC support.
Basic type layout engine – handles bookkeeping, plus handing typedefs and.
Layout generator for i386 ABI-like struct layout.
Layout generator for i386 primitive types.
size_t bitOffset
Offset of LSB of bit field within element of size bitFieldContainerSize starting at position byteOffs...
SgNode * decl
If a SgInitializedName, the field represented by this entry If a SgClassDeclaration, the anonymous union represented by this entry If a SgBaseClass, the base class represented by this entry If NULL, this entry is padding.
Layout generator for x86-64 primitive types.