summaryrefslogtreecommitdiff
path: root/src/trans/codegen_mmir.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/trans/codegen_mmir.cpp')
-rw-r--r--src/trans/codegen_mmir.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/trans/codegen_mmir.cpp b/src/trans/codegen_mmir.cpp
index d4b9f799..eab53d37 100644
--- a/src/trans/codegen_mmir.cpp
+++ b/src/trans/codegen_mmir.cpp
@@ -548,11 +548,14 @@ namespace
putb(v >> 24);
};
auto putsize = [&](uint64_t v) {
- if( true ) {
+ if( Target_GetCurSpec().m_arch.m_pointer_bits == 64 ) {
putu32(v );
putu32(v >> 32);
}
- else {
+ else if( Target_GetCurSpec().m_arch.m_pointer_bits == 64 ) {
+ putu32(v );
+ }
+ else {
putu32(v );
}
};
@@ -680,6 +683,10 @@ namespace
}
auto v = ::HIR::Literal::make_Integer(le.idx);
emit_literal_as_bytes(v, repr->fields[ve->field.index].ty, out_relocations, base_ofs + cur_ofs);
+
+ size_t size;
+ assert(Target_GetSizeOf(sp, m_resolve, repr->fields[ve->field.index].ty, size));
+ cur_ofs += size;
}
// TODO: Nonzero?
while(cur_ofs < repr->size)