void ansi_c_convertt::convert_expr(exprt &expr) { if(expr.id()==ID_sideeffect) { const irep_idt &statement=expr.get(ID_statement); if(statement==ID_statement_expression) { assert(expr.operands().size()==1); convert_code(to_code(expr.op0())); return; // done } } Forall_operands(it, expr) convert_expr(*it); if(expr.id()==ID_symbol) { expr.remove(ID_C_id_class); expr.remove(ID_C_base_name); } else if(expr.id()==ID_sizeof) { if(expr.operands().size()==0) { typet &type=static_cast<typet &>(expr.add(ID_type_arg)); convert_type(type); } } else if(expr.id()==ID_designated_initializer) { exprt &designator=static_cast<exprt &>(expr.add(ID_designator)); convert_expr(designator); } else if(expr.id()==ID_alignof) { if(expr.operands().size()==0) { typet &type=static_cast<typet &>(expr.add(ID_type_arg)); convert_type(type); } } else if(expr.id()==ID_gcc_builtin_va_arg) { convert_type(expr.type()); } else if(expr.id()==ID_generic_selection) { assert(expr.operands().size()==1); irept::subt &generic_associations= expr.add(ID_generic_associations).get_sub(); Forall_irep(it, generic_associations) { convert_expr(static_cast<exprt &>(it->add(ID_value))); convert_type(static_cast<typet &>(it->add(ID_type_arg))); }