diff options
author | John Hodge <tpg@mutabah.net> | 2018-02-11 22:18:20 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2018-02-11 22:18:20 +0800 |
commit | a45a1f378f1bb2f4bbab4480a1cb80bf04724ec1 (patch) | |
tree | 289317dc64057c2a8426fd01739a56616fcff0d3 /src/trans/codegen_mmir.cpp | |
parent | a3a0c6437302c60bd6f521fc11e30c0a16bd79fc (diff) | |
download | mrust-a45a1f378f1bb2f4bbab4480a1cb80bf04724ec1.tar.gz |
Codegen MMIR - Fix some minor architecture issues
Diffstat (limited to 'src/trans/codegen_mmir.cpp')
-rw-r--r-- | src/trans/codegen_mmir.cpp | 11 |
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) |