Skip to content

Commit 7d96d8b

Browse files
Merge pull request diffblue#145 from diffblue/nathan/feature/use-new-sss
Update for merge of master
2 parents 085913e + bc4f734 commit 7d96d8b

7 files changed

+26
-24
lines changed

cbmc

Submodule cbmc updated 1108 files

src/driver/sec_driver_parse_options.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,13 +199,9 @@ int sec_driver_parse_optionst::doit()
199199
register_languages();
200200
register_evs_pretty_printer();
201201

202-
goto_model.set_message_handler(get_message_handler());
203-
204202
// Prevent generation of _start, which isn't necessary for our analysis
205203
// and can be costly:
206-
goto_model.generate_start_function = false;
207-
208-
if(goto_model(cmdline))
204+
if(initialize_goto_model(goto_model, cmdline, false, get_message_handler()))
209205
return 6;
210206

211207
if(process_goto_program(options))

src/driver/sec_driver_parse_options.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Author: Chris Smowton, [email protected]
1414

1515
#include <langapi/language_ui.h>
1616

17-
#include <goto-programs/get_goto_model.h>
17+
#include <goto-programs/initialize_goto_model.h>
1818

1919
class bmct;
2020
class goto_functionst;
@@ -57,7 +57,7 @@ class sec_driver_parse_optionst final:
5757

5858
private:
5959
ui_message_handlert ui_message_handler;
60-
get_goto_modelt goto_model;
60+
goto_modelt goto_model;
6161

6262
void register_languages();
6363

src/taint-analysis/taint_summary.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,8 +1510,7 @@ void taint_algorithm_computing_summary_of_functiont::
15101510
it!=itend;
15111511
++it)
15121512
{
1513-
goto_programt::const_targetst succs;
1514-
fn_to_summarise.body.get_successors(it,succs);
1513+
goto_programt::const_targetst succs=fn_to_summarise.body.get_successors(it);
15151514
for(auto succit : succs)
15161515
inst_predecessors[succit].push_back(it);
15171516
}
@@ -1558,8 +1557,8 @@ void taint_algorithm_computing_summary_of_functiont::
15581557
lvsa,
15591558
summary->transition_props);
15601559

1561-
goto_programt::const_targetst successors;
1562-
fn_to_summarise.body.get_successors(src_instr_it, successors);
1560+
goto_programt::const_targetst successors=
1561+
fn_to_summarise.body.get_successors(src_instr_it);
15631562
for(auto succ_it = successors.begin();
15641563
succ_it != successors.end();
15651564
++succ_it)

src/taint-analysis/taint_trace_recogniser.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -277,10 +277,10 @@ static void taint_collect_successors_inside_function(
277277
goto_model.goto_functions.function_map.at(
278278
elem.get_name_of_function()
279279
);
280-
goto_programt::const_targetst succ_targets;
281-
fn.body.get_successors(elem.get_instruction_iterator(),succ_targets);
282-
std::unordered_set<std::size_t> processed_locations;
283-
for (goto_programt::const_targett succ_target : succ_targets)
280+
goto_programt::const_targetst succ_targets=
281+
fn.body.get_successors(elem.get_instruction_iterator());
282+
std::unordered_set<std::size_t> processed_locations;
283+
for(goto_programt::const_targett succ_target : succ_targets)
284284
{
285285
if (0UL == trace.count(elem.get_name_of_function(),succ_target) &&
286286
0UL == processed_locations.count(succ_target->location_number))
@@ -378,8 +378,7 @@ static void populate_local_distances_to_taint_sink(
378378
std::map<instruction_iteratort, std::list<instruction_iteratort> > preds;
379379
for(auto it=prog.instructions.begin(),itend=prog.instructions.end(); it!=itend; ++it)
380380
{
381-
std::list<instruction_iteratort> succs;
382-
prog.get_successors(it,succs);
381+
std::list<instruction_iteratort> succs=prog.get_successors(it);
383382
for(auto succ : succs)
384383
preds[succ].push_back(it);
385384
}

src/taint-slicer/instrumenter.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,10 @@ taint_instrumentert::taint_instrumentert(
122122
for(const auto &loc : props.get_location_props())
123123
{
124124
const auto &id=loc.get_function_id();
125-
const auto fnit_true=instrumented_functions.function_map.insert({
126-
id, program->get_functions().function_map.at(id)});
125+
goto_functionst::goto_functiont f;
126+
f.copy_from(program->get_functions().function_map.at(id));
127+
const auto fnit_true=instrumented_functions.function_map.insert(
128+
std::make_pair(id, std::move(f)));
127129
for(auto &instr : fnit_true.first->second.body.instructions)
128130
if(instr.type==ASSERT)
129131
instr.type=ASSUME;

src/taint-slicer/slicing_tasks_builder.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,14 +113,19 @@ std::pair<taint_slicing_taskt,std::string> build_slicing_task(
113113
for(const auto &fname_fn :
114114
instrumenter.get_instrumented_functions().function_map)
115115
{
116-
goto_functions.function_map.insert(fname_fn);
116+
goto_functionst::goto_functiont f;
117+
f.copy_from(fname_fn.second);
118+
goto_functions.function_map.insert(
119+
std::make_pair(fname_fn.first, std::move(f)));
117120
}
118121
for(const auto &fid : props.get_functions())
119122
{
120123
if(goto_functions.function_map.count(fid)==0UL)
121124
{
122-
const auto fnit_true=goto_functions.function_map.insert({
123-
fid, program->get_functions().function_map.at(fid)});
125+
goto_functionst::goto_functiont f;
126+
f.copy_from(program->get_functions().function_map.at(fid));
127+
const auto fnit_true=goto_functions.function_map.insert(
128+
std::make_pair(fid, std::move(f)));
124129
// We immediatelly substitute all ASSERT statements in the
125130
// cloned functions into ASSUME statements with the same condition.
126131
// This is used for to suppress generation of error traces for these
@@ -144,7 +149,8 @@ std::pair<taint_slicing_taskt,std::string> build_slicing_task(
144149
symbol_table.lookup(fid).value=exprt(ID_nil);
145150
goto_functionst::goto_functiont empty_fn;
146151
empty_fn.type=program->get_functions().function_map.at(fid).type;
147-
goto_functions.function_map.insert({fid, empty_fn});
152+
goto_functions.function_map.insert(
153+
std::make_pair(fid, std::move(empty_fn)));
148154
if(symbol_table.has_symbol(fid+RETURN_VALUE_SUFFIX))
149155
for(auto &fid_fn : goto_functions.function_map)
150156
if(fid_fn.second.body_available())

0 commit comments

Comments
 (0)