diff options
author | John Hodge <tpg@mutabah.net> | 2017-01-05 17:37:41 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2017-01-05 17:37:41 +0800 |
commit | 3ccd59247367b3fec4a6834fca5480df2ca88ba2 (patch) | |
tree | ee50ccdda72183c41808887d065582d4789c8cfb | |
parent | 0f474b05a888b219f4a0f2d52a545a8e095006f8 (diff) | |
download | mrust-3ccd59247367b3fec4a6834fca5480df2ca88ba2.tar.gz |
Codegen C - type_name return type fix, INT64_MIN patch
-rw-r--r-- | src/trans/codegen_c.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp index cf881f39..c4878812 100644 --- a/src/trans/codegen_c.cpp +++ b/src/trans/codegen_c.cpp @@ -1047,7 +1047,10 @@ namespace { (Int, emit_lvalue(e.dst); m_of << " = "; - m_of << c; + if( c == INT64_MIN ) + m_of << "INT64_MIN"; + else + m_of << c; ), (Uint, ::HIR::TypeRef tmp; @@ -1738,7 +1741,9 @@ namespace { emit_lvalue(e.ret_val); m_of << " = (uintptr_t)&__typeid_" << Trans_Mangle(params.m_types.at(0)); } else if( name == "type_name" ) { - emit_lvalue(e.ret_val); m_of << " = \"" << params.m_types.at(0) << "\""; + auto s = FMT(params.m_types.at(0)); + emit_lvalue(e.ret_val); m_of << ".DATA = \"" << s << "\";\n\t"; + emit_lvalue(e.ret_val); m_of << ".META = " << s.size() << ""; } else if( name == "transmute" ) { m_of << "memcpy( &"; emit_lvalue(e.ret_val); m_of << ", &"; emit_lvalue(e.args.at(0)); m_of << ", sizeof("; emit_ctype(params.m_types.at(0)); m_of << "))"; |