From 86bee3bd0fea88b3396c47f6f302f11ce84b5166 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 9 Jul 2017 15:16:26 +0800 Subject: Codegen C - Fix use of removed (empty) variants --- src/trans/codegen_c.cpp | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp index 401b9e8d..c89cb38d 100644 --- a/src/trans/codegen_c.cpp +++ b/src/trans/codegen_c.cpp @@ -1065,14 +1065,20 @@ namespace { } else { - m_of << "\tstruct e_" << Trans_Mangle(p) << " rv = { .TAG = " << var_idx << ", .DATA = {.var_" << var_idx << " = {"; - for(unsigned int i = 0; i < e.size(); i ++) - { - if(i != 0) - m_of << ","; - m_of << "\n\t\t_" << i; - } - m_of << "\n\t\t}}};\n"; + m_of << "\tstruct e_" << Trans_Mangle(p) << " rv = { .TAG = " << var_idx; + + if( ! e.empty() ) + { + m_of << ", .DATA = { .var_" << var_idx << " = {"; + for(unsigned int i = 0; i < e.size(); i ++) + { + if(i != 0) + m_of << ","; + m_of << "\n\t\t_" << i; + } + m_of << "\n\t\t}"; + } + m_of << " }};\n"; } m_of << "\treturn rv;\n"; m_of << "}\n"; @@ -1294,13 +1300,18 @@ namespace { } else { - m_of << "{" << e.idx << ", { .var_" << e.idx << " = {"; - for(unsigned int i = 0; i < e.vals.size(); i ++) { - if(i != 0) m_of << ","; - m_of << " "; - emit_literal(get_inner_type(e.idx, i), e.vals[i], params); + m_of << "{" << e.idx << ", { "; + if( !e.vals.empty() ) + { + m_of << ".var_" << e.idx << " = {"; + for(unsigned int i = 0; i < e.vals.size(); i ++) { + if(i != 0) m_of << ","; + m_of << " "; + emit_literal(get_inner_type(e.idx, i), e.vals[i], params); + } + m_of << "} "; } - m_of << " }}}"; + m_of << "}}"; } ), (Integer, -- cgit v1.2.3