Skip to content

Remove gen_zero/gen_one #447

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Jan 31, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions regression/cbmc-java/Makefile
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
default: tests.log

test:
@../test.pl -c ../../../src/cbmc/cbmc
@if ! ../test.pl -c ../../../src/cbmc/cbmc ; then \
../failed-tests-printer.pl ; \
exit 1 ; \
fi

tests.log: ../test.pl
@../test.pl -c ../../../src/cbmc/cbmc
@if ! ../test.pl -c ../../../src/cbmc/cbmc ; then \
../failed-tests-printer.pl ; \
exit 1 ; \
fi

show:
@for dir in *; do \
Expand Down
5 changes: 2 additions & 3 deletions src/aa-path-symex/path_symex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ Author: Daniel Kroening, [email protected]
#include <util/simplify_expr.h>
#include <util/byte_operators.h>
#include <util/pointer_offset_size.h>
#include <util/expr_util.h>
#include <util/base_type.h>

#include <ansi-c/c_types.h>
Expand Down Expand Up @@ -353,7 +352,7 @@ void path_symext::symex_malloc(
rhs.type()=pointer_typet(value_symbol.type.subtype());
index_exprt index_expr(value_symbol.type.subtype());
index_expr.array()=value_symbol.symbol_expr();
index_expr.index()=gen_zero(index_type());
index_expr.index()=from_integer(0, index_type());
rhs.op0()=index_expr;
}
else
Expand Down Expand Up @@ -486,7 +485,7 @@ void path_symext::assign_rec(
else if(compound_type.id()==ID_union)
{
// rewrite into byte_extract, and do again
exprt offset=gen_zero(index_type());
exprt offset=from_integer(0, index_type());

byte_extract_exprt
new_lhs(byte_update_id(), struct_op, offset, ssa_rhs.type());
Expand Down
1 change: 0 additions & 1 deletion src/aa-path-symex/path_symex_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ Author: Daniel Kroening, [email protected]

#include <util/simplify_expr.h>
#include <util/arith_tools.h>
#include <util/expr_util.h>
#include <util/decision_procedure.h>

#include <ansi-c/c_types.h>
Expand Down
1 change: 0 additions & 1 deletion src/analyses/ai.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ Author: Daniel Kroening, [email protected]

#include <util/std_expr.h>
#include <util/std_code.h>
#include <util/expr_util.h>

#include "is_threaded.h"

Expand Down
1 change: 0 additions & 1 deletion src/analyses/flow_insensitive_analysis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ Author: Daniel Kroening, [email protected]

#include <util/std_expr.h>
#include <util/std_code.h>
#include <util/expr_util.h>

#include "flow_insensitive_analysis.h"

Expand Down
33 changes: 20 additions & 13 deletions src/analyses/goto_check.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ void goto_checkt::div_by_zero_check(

// add divison by zero subgoal

exprt zero=gen_zero(expr.op1().type());
exprt zero=from_integer(0, expr.op1().type());

if(zero.is_nil())
throw "no zero of argument type of operator "+expr.id_string();
Expand Down Expand Up @@ -233,7 +233,7 @@ void goto_checkt::undefined_shift_check(
if(distance_type.id()==ID_signedbv)
{
binary_relation_exprt inequality(
expr.distance(), ID_ge, gen_zero(distance_type));
expr.distance(), ID_ge, from_integer(0, distance_type));

add_guarded_claim(
inequality,
Expand Down Expand Up @@ -289,7 +289,7 @@ void goto_checkt::mod_by_zero_check(

// add divison by zero subgoal

exprt zero=gen_zero(expr.op1().type());
exprt zero=from_integer(0, expr.op1().type());

if(zero.is_nil())
throw "no zero of argument type of operator "+expr.id_string();
Expand Down Expand Up @@ -802,8 +802,8 @@ void goto_checkt::nan_check(
// 0/0 = NaN and x/inf = NaN
// (note that x/0 = +-inf for x!=0 and x!=inf)
exprt zero_div_zero=and_exprt(
ieee_float_equal_exprt(expr.op0(), gen_zero(expr.op0().type())),
ieee_float_equal_exprt(expr.op1(), gen_zero(expr.op1().type())));
ieee_float_equal_exprt(expr.op0(), from_integer(0, expr.op0().type())),
ieee_float_equal_exprt(expr.op1(), from_integer(0, expr.op1().type())));

exprt div_inf=unary_exprt(ID_isinf, expr.op1(), bool_typet());

Expand All @@ -819,10 +819,10 @@ void goto_checkt::nan_check(
// Inf * 0 is NaN
exprt inf_times_zero=and_exprt(
unary_exprt(ID_isinf, expr.op0(), bool_typet()),
ieee_float_equal_exprt(expr.op1(), gen_zero(expr.op1().type())));
ieee_float_equal_exprt(expr.op1(), from_integer(0, expr.op1().type())));

exprt zero_times_inf=and_exprt(
ieee_float_equal_exprt(expr.op1(), gen_zero(expr.op1().type())),
ieee_float_equal_exprt(expr.op1(), from_integer(0, expr.op1().type())),
unary_exprt(ID_isinf, expr.op0(), bool_typet()));

isnan=or_exprt(inf_times_zero, zero_times_inf);
Expand Down Expand Up @@ -972,7 +972,8 @@ void goto_checkt::pointer_validity_check(
return;

const exprt &pointer=expr.op0();
const typet &pointer_type=to_pointer_type(ns.follow(pointer.type()));
const pointer_typet &pointer_type=
to_pointer_type(ns.follow(pointer.type()));

assert(base_type_eq(pointer_type.subtype(), expr.type(), ns));

Expand All @@ -986,7 +987,7 @@ void goto_checkt::pointer_validity_check(
{
if(flags.is_unknown() || flags.is_null())
{
notequal_exprt not_eq_null(pointer, gen_zero(pointer.type()));
notequal_exprt not_eq_null(pointer, null_pointer_exprt(pointer_type));

add_guarded_claim(
not_eq_null,
Expand Down Expand Up @@ -1175,7 +1176,7 @@ void goto_checkt::bounds_check(
effective_offset=plus_exprt(p_offset, effective_offset);
}

exprt zero=gen_zero(ode.offset().type());
exprt zero=from_integer(0, ode.offset().type());
assert(zero.is_not_nil());

// the final offset must not be negative
Expand Down Expand Up @@ -1612,7 +1613,9 @@ void goto_checkt::goto_check(goto_functiont &goto_function)

if(flags.is_unknown() || flags.is_null())
{
notequal_exprt not_eq_null(pointer, gen_zero(pointer.type()));
notequal_exprt not_eq_null(
pointer,
null_pointer_exprt(to_pointer_type(pointer.type())));

add_guarded_claim(
not_eq_null,
Expand Down Expand Up @@ -1651,7 +1654,9 @@ void goto_checkt::goto_check(goto_functiont &goto_function)

if(pointer.type().subtype().get(ID_identifier)!="java::java.lang.AssertionError")
{
notequal_exprt not_eq_null(pointer, gen_zero(pointer.type()));
notequal_exprt not_eq_null(
pointer,
null_pointer_exprt(to_pointer_type(pointer.type())));

add_guarded_claim(
not_eq_null,
Expand Down Expand Up @@ -1718,7 +1723,9 @@ void goto_checkt::goto_check(goto_functiont &goto_function)
source_locationt source_location;
source_location.set_function(i.function);

equal_exprt eq(leak_expr, gen_zero(ns.follow(leak.type)));
equal_exprt eq(
leak_expr,
null_pointer_exprt(to_pointer_type(leak.type)));
add_guarded_claim(
eq,
"dynamically allocated memory never freed",
Expand Down
1 change: 0 additions & 1 deletion src/analyses/invariant_propagation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ Author: Daniel Kroening, [email protected]

\*******************************************************************/

#include <util/expr_util.h>
#include <util/simplify_expr.h>
#include <util/base_type.h>
#include <util/symbol_table.h>
Expand Down
3 changes: 1 addition & 2 deletions src/analyses/invariant_set.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ Author: Daniel Kroening, [email protected]

#include <util/symbol_table.h>
#include <util/namespace.h>
#include <util/expr_util.h>
#include <util/arith_tools.h>
#include <util/std_expr.h>
#include <util/simplify_expr.h>
Expand Down Expand Up @@ -992,7 +991,7 @@ void invariant_sett::nnf(exprt &expr, bool negate)
{
equal_exprt tmp;
tmp.lhs()=expr.op0();
tmp.rhs()=gen_zero(expr.op0().type());
tmp.rhs()=from_integer(0, expr.op0().type());
nnf(tmp, !negate);
expr.swap(tmp);
}
Expand Down
5 changes: 3 additions & 2 deletions src/analyses/local_may_alias.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Author: Daniel Kroening, [email protected]
#include <iterator>
#include <algorithm>

#include <util/arith_tools.h>
#include <util/std_expr.h>
#include <util/std_code.h>
#include <util/expr_util.h>
Expand Down Expand Up @@ -272,7 +273,7 @@ void local_may_aliast::get_rec(
if(index_expr.array().id()==ID_symbol)
{
index_exprt tmp1=index_expr;
tmp1.index()=gen_zero(index_type());
tmp1.index()=from_integer(0, index_type());
address_of_exprt tmp2(tmp1);
unsigned object_nr=objects.number(tmp2);
dest.insert(object_nr);
Expand All @@ -284,7 +285,7 @@ void local_may_aliast::get_rec(
else if(index_expr.array().id()==ID_string_constant)
{
index_exprt tmp1=index_expr;
tmp1.index()=gen_zero(index_type());
tmp1.index()=from_integer(0, index_type());
address_of_exprt tmp2(tmp1);
unsigned object_nr=objects.number(tmp2);
dest.insert(object_nr);
Expand Down
1 change: 0 additions & 1 deletion src/analyses/static_analysis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ Author: Daniel Kroening, [email protected]

#include <util/std_expr.h>
#include <util/std_code.h>
#include <util/expr_util.h>

#include "is_threaded.h"

Expand Down
27 changes: 15 additions & 12 deletions src/ansi-c/ansi_c_entry_point.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ Author: Daniel Kroening, [email protected]
#include <cstdlib>

#include <util/namespace.h>
#include <util/expr_util.h>
#include <util/std_expr.h>
#include <util/arith_tools.h>
#include <util/std_code.h>
Expand Down Expand Up @@ -90,7 +89,7 @@ exprt::operandst build_function_environment(

// record as an input
input.op0()=address_of_exprt(
index_exprt(string_constantt(base_name), gen_zero(index_type())));
index_exprt(string_constantt(base_name), from_integer(0, index_type())));
input.op1()=symbol_expr;
input.add_source_location()=p.source_location();

Expand Down Expand Up @@ -131,9 +130,11 @@ void record_function_outputs(

const symbolt &return_symbol=symbol_table.lookup("return'");

output.op0()=address_of_exprt(
index_exprt(string_constantt(return_symbol.base_name),
gen_zero(index_type())));
output.op0()=
address_of_exprt(
index_exprt(
string_constantt(return_symbol.base_name),
from_integer(0, index_type())));

output.op1()=return_symbol.symbol_expr();
output.add_source_location()=function.location;
Expand All @@ -158,9 +159,11 @@ void record_function_outputs(
codet output(ID_output);
output.operands().resize(2);

output.op0()=address_of_exprt(
index_exprt(string_constantt(symbol.base_name),
gen_zero(index_type())));
output.op0()=
address_of_exprt(
index_exprt(
string_constantt(symbol.base_name),
from_integer(0, index_type())));
output.op1()=symbol.symbol_expr();
output.add_source_location()=p.source_location();

Expand Down Expand Up @@ -350,7 +353,7 @@ bool ansi_c_entry_point(
codet input(ID_input);
input.operands().resize(2);
input.op0()=address_of_exprt(
index_exprt(string_constantt("argc"), gen_zero(index_type())));
index_exprt(string_constantt("argc"), from_integer(0, index_type())));
input.op1()=argc_symbol.symbol_expr();
init_code.move_to_operands(input);
}
Expand Down Expand Up @@ -392,7 +395,7 @@ bool ansi_c_entry_point(
zero_string.type().subtype()=char_type();
zero_string.type().set(ID_size, "infinity");
exprt index(ID_index, char_type());
index.copy_to_operands(zero_string, gen_zero(uint_type()));
index.copy_to_operands(zero_string, from_integer(0, uint_type()));
exprt address_of("address_of", pointer_typet());
address_of.type().subtype()=char_type();
address_of.copy_to_operands(index);
Expand Down Expand Up @@ -470,7 +473,7 @@ bool ansi_c_entry_point(
exprt index_expr(ID_index, arg1.type().subtype());
index_expr.copy_to_operands(
argv_symbol.symbol_expr(),
gen_zero(index_type()));
from_integer(0, index_type()));

// disable bounds check on that one
index_expr.set("bounds_check", false);
Expand All @@ -489,7 +492,7 @@ bool ansi_c_entry_point(

exprt index_expr(ID_index, arg2.type().subtype());
index_expr.copy_to_operands(
envp_symbol.symbol_expr(), gen_zero(index_type()));
envp_symbol.symbol_expr(), from_integer(0, index_type()));

op2=exprt(ID_address_of, arg2.type());
op2.move_to_operands(index_expr);
Expand Down
1 change: 0 additions & 1 deletion src/ansi-c/ansi_c_language.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ Author: Daniel Kroening, [email protected]
#include <sstream>
#include <fstream>

#include <util/expr_util.h>
#include <util/config.h>
#include <util/get_base_name.h>

Expand Down
3 changes: 2 additions & 1 deletion src/ansi-c/c_typecast.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Author: Daniel Kroening, [email protected]

#include <cassert>

#include <util/arith_tools.h>
#include <util/config.h>
#include <util/expr_util.h>
#include <util/std_expr.h>
Expand Down Expand Up @@ -853,7 +854,7 @@ void c_typecastt::do_typecast(exprt &expr, const typet &dest_type)
{
index_exprt index;
index.array()=expr;
index.index()=gen_zero(index_type());
index.index()=from_integer(0, index_type());
index.type()=src_type.subtype();
expr=address_of_exprt(index);
if(ns.follow(expr.type())!=ns.follow(dest_type))
Expand Down
1 change: 0 additions & 1 deletion src/ansi-c/c_typecheck_argc_argv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ Author: Daniel Kroening, [email protected]
\*******************************************************************/

#include <util/arith_tools.h>
#include <util/expr_util.h>

#include "c_typecheck_base.h"

Expand Down
9 changes: 4 additions & 5 deletions src/ansi-c/c_typecheck_expr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ Author: Daniel Kroening, [email protected]
#include <util/arith_tools.h>
#include <util/config.h>
#include <util/std_types.h>
#include <util/expr_util.h>
#include <util/prefix.h>
#include <util/cprover_prefix.h>
#include <util/simplify_expr.h>
Expand Down Expand Up @@ -100,7 +99,7 @@ void c_typecheck_baset::add_rounding_mode(exprt &expr)
else
assert(false);

expr.op2()=gen_zero(unsigned_int_type());
expr.op2()=from_integer(0, unsigned_int_type());
}
}
}
Expand Down Expand Up @@ -604,7 +603,7 @@ void c_typecheck_baset::typecheck_expr_builtin_offsetof(exprt &expr)

exprt &member=static_cast<exprt &>(expr.add(ID_designator));

exprt result=gen_zero(size_type());
exprt result=from_integer(0, size_type());

forall_operands(m_it, member)
{
Expand Down Expand Up @@ -1286,7 +1285,7 @@ void c_typecheck_baset::typecheck_expr_typecast(exprt &expr)
{
index_exprt index;
index.array()=op;
index.index()=gen_zero(index_type());
index.index()=from_integer(0, index_type());
index.type()=op_type.subtype();
op=address_of_exprt(index);
}
Expand Down Expand Up @@ -2031,7 +2030,7 @@ void c_typecheck_baset::typecheck_expr_dereference(exprt &expr)
// *a is the same as a[0]
expr.id(ID_index);
expr.type()=op_type.subtype();
expr.copy_to_operands(gen_zero(index_type()));
expr.copy_to_operands(from_integer(0, index_type()));
assert(expr.operands().size()==2);
}
else if(op_type.id()==ID_pointer)
Expand Down
Loading