summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2018-02-04 19:53:27 +0800
committerJohn Hodge <tpg@mutabah.net>2018-02-04 19:53:27 +0800
commita8f95ea32bb024751087caf5a5568788e107abbf (patch)
tree40baf16dd0f103893e7e0735d96574c96a0244b8 /src
parent143135bdc9f14c3318384543e110bcfcf1e93718 (diff)
downloadmrust-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.cpp11
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);