From d4ec352674af3999c415c2ebe86e6451d6a8b465 Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Fri, 11 Jan 2019 11:22:00 +0000 Subject: [PATCH] Remove unnecessary use of ns.follow in goto-programs/ Only structs, unions, enums can be hidden behind tags. --- src/goto-programs/builtin_functions.cpp | 4 ++-- src/goto-programs/goto_convert_side_effect.cpp | 6 +++--- src/goto-programs/goto_inline_class.cpp | 6 +++--- src/goto-programs/goto_trace.cpp | 2 +- src/goto-programs/graphml_witness.cpp | 3 +-- src/goto-programs/interpreter.cpp | 4 +++- src/goto-programs/remove_function_pointers.cpp | 6 ++---- src/goto-programs/string_abstraction.cpp | 2 +- src/goto-programs/string_abstraction.h | 3 --- src/goto-programs/vcd_goto_trace.cpp | 2 +- 10 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/goto-programs/builtin_functions.cpp b/src/goto-programs/builtin_functions.cpp index a638c1d094e..0d8ee377c94 100644 --- a/src/goto-programs/builtin_functions.cpp +++ b/src/goto-programs/builtin_functions.cpp @@ -576,7 +576,7 @@ exprt goto_convertt::get_array_argument(const exprt &src) assert(src.op0().operands().size()==2); - if(ns.follow(src.op0().op0().type()).id()!=ID_array) + if(src.op0().op0().type().id() != ID_array) { error().source_location=src.find_source_location(); error() << "expected array as argument" << eom; @@ -1188,7 +1188,7 @@ void goto_convertt::do_function_call_symbol( } // our __builtin_va_list is a pointer - if(ns.follow(dest_expr.type()).id()==ID_pointer) + if(dest_expr.type().id() == ID_pointer) { goto_programt::targett t=dest.add_instruction(ASSIGN); t->source_location=function.source_location(); diff --git a/src/goto-programs/goto_convert_side_effect.cpp b/src/goto-programs/goto_convert_side_effect.cpp index 6c8e4950aba..244369932d2 100644 --- a/src/goto-programs/goto_convert_side_effect.cpp +++ b/src/goto-programs/goto_convert_side_effect.cpp @@ -96,7 +96,7 @@ void goto_convertt::remove_assignment( exprt rhs; - const typet &op0_type=ns.follow(expr.op0().type()); + const typet &op0_type = expr.op0().type(); if(op0_type.id()==ID_c_bool) { @@ -168,7 +168,7 @@ void goto_convertt::remove_pre( else rhs.id(ID_minus); - const typet &op_type=ns.follow(expr.op0().type()); + const typet &op_type = expr.op0().type(); if(op_type.id()==ID_bool) { @@ -257,7 +257,7 @@ void goto_convertt::remove_post( else rhs.id(ID_minus); - const typet &op_type=ns.follow(expr.op0().type()); + const typet &op_type = expr.op0().type(); if(op_type.id()==ID_bool) { diff --git a/src/goto-programs/goto_inline_class.cpp b/src/goto-programs/goto_inline_class.cpp index 64247b69b84..a7c342a0d5c 100644 --- a/src/goto-programs/goto_inline_class.cpp +++ b/src/goto-programs/goto_inline_class.cpp @@ -50,7 +50,7 @@ void goto_inlinet::parameter_assignments( for(const auto ¶meter : parameter_types) { // this is the type the n-th argument should be - const typet &par_type=ns.follow(parameter.type()); + const typet &par_type = parameter.type(); const irep_idt &identifier=parameter.get_identifier(); @@ -95,8 +95,8 @@ void goto_inlinet::parameter_assignments( // subject to some exceptions if(!base_type_eq(par_type, actual.type(), ns)) { - const typet &f_partype=ns.follow(par_type); - const typet &f_acttype=ns.follow(actual.type()); + const typet &f_partype = par_type; + const typet &f_acttype = actual.type(); // we are willing to do some conversion if((f_partype.id()==ID_pointer && diff --git a/src/goto-programs/goto_trace.cpp b/src/goto-programs/goto_trace.cpp index 629a9aa0fab..47f52e02e98 100644 --- a/src/goto-programs/goto_trace.cpp +++ b/src/goto-programs/goto_trace.cpp @@ -183,7 +183,7 @@ std::string trace_numeric_value( const namespacet &ns, const trace_optionst &options) { - const typet &type=ns.follow(expr.type()); + const typet &type = expr.type(); if(expr.id()==ID_constant) { diff --git a/src/goto-programs/graphml_witness.cpp b/src/goto-programs/graphml_witness.cpp index 9b362b00ff9..157a6485409 100644 --- a/src/goto-programs/graphml_witness.cpp +++ b/src/goto-programs/graphml_witness.cpp @@ -56,8 +56,7 @@ std::string graphml_witnesst::convert_assign_rec( if(assign.rhs().id()==ID_array) { - const array_typet &type= - to_array_type(ns.follow(assign.rhs().type())); + const array_typet &type = to_array_type(assign.rhs().type()); unsigned i=0; forall_operands(it, assign.rhs()) diff --git a/src/goto-programs/interpreter.cpp b/src/goto-programs/interpreter.cpp index 29e4d49c4f8..300c0f865e3 100644 --- a/src/goto-programs/interpreter.cpp +++ b/src/goto-programs/interpreter.cpp @@ -618,7 +618,9 @@ exprt interpretert::get_value( if(offset_from_address == 0) return address_of_exprt(symbol_expr); - if(ns.follow(type_from_identifier).id() == ID_struct) + if( + type_from_identifier.id() == ID_struct || + type_from_identifier.id() == ID_struct_tag) { const auto c = get_component(identifier, offset_from_address); member_exprt member_expr(symbol_expr, c); diff --git a/src/goto-programs/remove_function_pointers.cpp b/src/goto-programs/remove_function_pointers.cpp index 004d868b448..7a170b9eeba 100644 --- a/src/goto-programs/remove_function_pointers.cpp +++ b/src/goto-programs/remove_function_pointers.cpp @@ -202,8 +202,7 @@ bool remove_function_pointerst::is_type_compatible( void remove_function_pointerst::fix_argument_types( code_function_callt &function_call) { - const code_typet &code_type= - to_code_type(ns.follow(function_call.function().type())); + const code_typet &code_type = to_code_type(function_call.function().type()); const code_typet::parameterst &function_parameters= code_type.parameters(); @@ -232,8 +231,7 @@ void remove_function_pointerst::fix_return_type( if(function_call.lhs().is_nil()) return; - const code_typet &code_type= - to_code_type(ns.follow(function_call.function().type())); + const code_typet &code_type = to_code_type(function_call.function().type()); // type already ok? if(type_eq( diff --git a/src/goto-programs/string_abstraction.cpp b/src/goto-programs/string_abstraction.cpp index 0b0c55349fc..8aefccd17ae 100644 --- a/src/goto-programs/string_abstraction.cpp +++ b/src/goto-programs/string_abstraction.cpp @@ -523,7 +523,7 @@ goto_programt::targett string_abstractiont::abstract_assign( if(has_string_macros(rhs)) replace_string_macros(rhs, false, target->source_location); - const typet &type=ns.follow(lhs.type()); + const typet &type = lhs.type(); if(type.id()==ID_pointer || type.id()==ID_array) return abstract_pointer_assign(dest, target); else if(is_char_type(type)) diff --git a/src/goto-programs/string_abstraction.h b/src/goto-programs/string_abstraction.h index 220e5465359..ec025846c5b 100644 --- a/src/goto-programs/string_abstraction.h +++ b/src/goto-programs/string_abstraction.h @@ -52,9 +52,6 @@ class string_abstractiont:public messaget bool is_char_type(const typet &type) const { - if(type.id() == ID_struct_tag) - return is_char_type(ns.follow(type)); - if(type.id()!=ID_signedbv && type.id()!=ID_unsignedbv) return false; diff --git a/src/goto-programs/vcd_goto_trace.cpp b/src/goto-programs/vcd_goto_trace.cpp index ad89cf30c51..7bc890309c0 100644 --- a/src/goto-programs/vcd_goto_trace.cpp +++ b/src/goto-programs/vcd_goto_trace.cpp @@ -23,7 +23,7 @@ std::string as_vcd_binary( const exprt &expr, const namespacet &ns) { - const typet &type=ns.follow(expr.type()); + const typet &type = expr.type(); if(expr.id()==ID_constant) {