diff options
author | John Hodge <tpg@ucc.asn.au> | 2018-12-15 14:47:08 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2018-12-15 14:47:08 +0800 |
commit | f6209dce15ce863e15dc3063d78e43eeb0db25ee (patch) | |
tree | 9b041d4b32fc6907867412203db18d8c06fcf674 /src/trans/codegen_c.cpp | |
parent | 539ecb375c8b86bb0b3c2d64d73dfa6d5b56c2b9 (diff) | |
download | mrust-f6209dce15ce863e15dc3063d78e43eeb0db25ee.tar.gz |
Targets - Add alignment to the target specs, along with a saveback test.
Diffstat (limited to 'src/trans/codegen_c.cpp')
-rw-r--r-- | src/trans/codegen_c.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp index 55b3ea1a..84a538d5 100644 --- a/src/trans/codegen_c.cpp +++ b/src/trans/codegen_c.cpp @@ -205,20 +205,23 @@ namespace { m_outfile_path_c(outfile + ".c"), m_of(m_outfile_path_c) { + m_options.emulated_i128 = Target_GetCurSpec().m_backend_c.m_emulated_i128; switch(Target_GetCurSpec().m_backend_c.m_codegen_mode) { case CodegenMode::Gnu11: m_compiler = Compiler::Gcc; - m_options.emulated_i128 = false; - if( Target_GetCurSpec().m_arch.m_pointer_bits < 64 ) + if( Target_GetCurSpec().m_arch.m_pointer_bits < 64 && !m_options.emulated_i128 ) { - m_options.emulated_i128 = true; + WARNING(Span(), W0000, "Potentially misconfigured target, 32-bit targets require i128 emulation"); } m_options.disallow_empty_structs = true; break; case CodegenMode::Msvc: m_compiler = Compiler::Msvc; - m_options.emulated_i128 = true; + if( !m_options.emulated_i128 ) + { + WARNING(Span(), W0000, "Potentially misconfigured target, MSVC requires i128 emulation"); + } m_options.disallow_empty_structs = true; break; } |