@@ -25,15 +25,22 @@ Date: December 2014
25
25
class remove_asmt
26
26
{
27
27
public:
28
- explicit remove_asmt (symbol_tablet &_symbol_table)
29
- : symbol_table(_symbol_table)
28
+ remove_asmt (symbol_tablet &_symbol_table, goto_functionst &_goto_functions )
29
+ : symbol_table(_symbol_table), goto_functions(_goto_functions)
30
30
{
31
31
}
32
32
33
- void process_function (goto_functionst::goto_functiont &);
33
+ void operator ()()
34
+ {
35
+ for (auto &f : goto_functions.function_map )
36
+ process_function (f.second );
37
+ }
34
38
35
39
protected:
36
40
symbol_tablet &symbol_table;
41
+ goto_functionst &goto_functions;
42
+
43
+ void process_function (goto_functionst::goto_functiont &);
37
44
38
45
void process_instruction (
39
46
goto_programt::instructiont &instruction,
@@ -102,6 +109,14 @@ void remove_asmt::gcc_asm_function_call(
102
109
103
110
symbol_table.add (symbol);
104
111
}
112
+
113
+ if (
114
+ goto_functions.function_map .find (function_identifier) ==
115
+ goto_functions.function_map .end ())
116
+ {
117
+ auto &f = goto_functions.function_map [function_identifier];
118
+ f.type = fkt_type;
119
+ }
105
120
}
106
121
107
122
// / removes assembler
@@ -303,21 +318,11 @@ void remove_asmt::process_function(
303
318
remove_skip (goto_function.body );
304
319
}
305
320
306
- // / removes assembler
307
- void remove_asm (
308
- goto_functionst::goto_functiont &goto_function,
309
- symbol_tablet &symbol_table)
310
- {
311
- remove_asmt rem (symbol_table);
312
- rem.process_function (goto_function);
313
- }
314
-
315
321
// / removes assembler
316
322
void remove_asm (goto_functionst &goto_functions, symbol_tablet &symbol_table)
317
323
{
318
- remove_asmt rem (symbol_table);
319
- for (auto &f : goto_functions.function_map )
320
- rem.process_function (f.second );
324
+ remove_asmt rem (symbol_table, goto_functions);
325
+ rem ();
321
326
}
322
327
323
328
// / removes assembler
0 commit comments