diff options
author | John Hodge <tpg@mutabah.net> | 2018-02-04 19:53:27 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2018-02-04 19:53:27 +0800 |
commit | a8f95ea32bb024751087caf5a5568788e107abbf (patch) | |
tree | 40baf16dd0f103893e7e0735d96574c96a0244b8 /src | |
parent | 143135bdc9f14c3318384543e110bcfcf1e93718 (diff) | |
download | mrust-a8f95ea32bb024751087caf5a5568788e107abbf.tar.gz |
Codegen C - Avoid ICE with gcc 5.4.0 (ubuntu), clean up some warnings
Diffstat (limited to 'src')
-rw-r--r-- | src/trans/codegen_c.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp index 724b40cd..1bf2d923 100644 --- a/src/trans/codegen_c.cpp +++ b/src/trans/codegen_c.cpp @@ -877,15 +877,15 @@ namespace { fields.push_back(fields.size()); } ::std::sort(fields.begin(), fields.end(), [&](auto a, auto b){ return repr->fields[a].offset < repr->fields[b].offset; }); - for(const auto fld : fields) + for(unsigned fld : fields) { m_of << "\t"; const auto& ty = repr->fields[fld].ty; - TU_IFLET(::HIR::TypeRef::Data, ty.m_data, Slice, te, - emit_ctype( *te.inner, FMT_CB(ss, ss << "_" << fld << "[0]";) ); + if( const auto* te = ty.m_data.opt_Slice() ) { + emit_ctype( *te->inner, FMT_CB(ss, ss << "_" << fld << "[0]";) ); has_unsized = true; - ) + } else TU_IFLET(::HIR::TypeRef::Data, ty.m_data, TraitObject, te, m_of << "unsigned char _" << fld << "[0]"; has_unsized = true; @@ -924,6 +924,7 @@ namespace { { m_of << ";\n"; } + (void)has_unsized; auto struct_ty = ::HIR::TypeRef(p.clone(), &item); auto drop_glue_path = ::HIR::Path(struct_ty.clone(), "#drop_glue"); @@ -1195,7 +1196,7 @@ namespace { auto p = path.clone(); p.m_path.m_components.pop_back(); - const auto* repr = Target_GetTypeRepr(sp, m_resolve, ::HIR::TypeRef::new_path(p.clone(), &item)); + //const auto* repr = Target_GetTypeRepr(sp, m_resolve, ::HIR::TypeRef::new_path(p.clone(), &item)); ASSERT_BUG(sp, item.m_data.is_Data(), ""); const auto& var = item.m_data.as_Data().at(var_idx); |