Skip to content

Commit c183996

Browse files
committed
Pass message handler on to compilet
GOTO conversion must honour the message handler set up by the chosen goto-cc mode. Thus the message handler set up in the specific mode has to be handed on to compilet. As a language_uit this requires a ui_message_handlert. Consequently make console_message_handlert, gcc_message_handlert ui_message_handlert in PLAIN ui mode (which is consistent).
1 parent 9e25eb4 commit c183996

File tree

13 files changed

+36
-20
lines changed

13 files changed

+36
-20
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
int main()
2+
{
3+
goto bla;
4+
5+
for(int i=0; i<5; ++i)
6+
{
7+
bla: i=10;
8+
}
9+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CORE
2+
main.c
3+
--verbosity 2
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
encountered goto `bla' that enters one or more lexical blocks

src/goto-cc/armcc_mode.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ int armcc_modet::doit()
4646

4747
unsigned int verbosity=1;
4848

49-
compilet compiler(cmdline, cmdline.isset("diag_error="));
49+
compilet compiler(cmdline, message_handler, cmdline.isset("diag_error="));
5050

5151
#if 0
5252
bool act_as_ld=

src/goto-cc/as_mode.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,7 @@ int as_modet::doit()
159159
config.set(cmdline);
160160

161161
// determine actions to be undertaken
162-
compilet compiler(cmdline, cmdline.isset("fatal-warnings"));
163-
compiler.ui_message_handler.set_verbosity(verbosity);
162+
compilet compiler(cmdline, message_handler, cmdline.isset("fatal-warnings"));
164163

165164
if(cmdline.isset('b')) // as86 only
166165
{

src/goto-cc/compile.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ bool compilet::link()
415415
symbol_table.remove(goto_functionst::entry_point());
416416
compiled_functions.function_map.erase(goto_functionst::entry_point());
417417

418-
if(ansi_c_entry_point(symbol_table, "main", ui_message_handler))
418+
if(ansi_c_entry_point(symbol_table, "main", get_message_handler()))
419419
return true;
420420

421421
// entry_point may (should) add some more functions.
@@ -758,9 +758,8 @@ Function: compilet::compilet
758758
759759
\*******************************************************************/
760760

761-
compilet::compilet(cmdlinet &_cmdline, bool Werror):
762-
language_uit(_cmdline, ui_message_handler),
763-
ui_message_handler(_cmdline, "goto-cc " CBMC_VERSION),
761+
compilet::compilet(cmdlinet &_cmdline, ui_message_handlert &mh, bool Werror):
762+
language_uit(_cmdline, mh),
764763
ns(symbol_table),
765764
cmdline(_cmdline),
766765
warning_is_fatal(Werror)
@@ -849,7 +848,7 @@ Function: compilet::convert_symbols
849848

850849
void compilet::convert_symbols(goto_functionst &dest)
851850
{
852-
goto_convert_functionst converter(symbol_table, dest, ui_message_handler);
851+
goto_convert_functionst converter(symbol_table, dest, get_message_handler());
853852

854853
// the compilation may add symbols!
855854

src/goto-cc/compile.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ Date: June 2006
2020
class compilet:public language_uit
2121
{
2222
public:
23-
ui_message_handlert ui_message_handler;
2423
namespacet ns;
2524
goto_functionst compiled_functions;
2625
bool echo_file_name;
@@ -45,7 +44,7 @@ class compilet:public language_uit
4544
std::string object_file_extension;
4645
std::string output_file_object, output_file_executable;
4746

48-
compilet(cmdlinet &_cmdline, bool Werror);
47+
compilet(cmdlinet &_cmdline, ui_message_handlert &mh, bool Werror);
4948

5049
~compilet();
5150

src/goto-cc/cw_mode.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ int cw_modet::doit()
4646

4747
unsigned int verbosity=1;
4848

49-
compilet compiler(cmdline, cmdline.isset("Werror"));
49+
compilet compiler(cmdline, message_handler, cmdline.isset("Werror"));
5050

5151
#if 0
5252
bool act_as_ld=

src/goto-cc/gcc_mode.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,10 +304,10 @@ int gcc_modet::doit()
304304

305305
// determine actions to be undertaken
306306
compilet compiler(cmdline,
307+
gcc_message_handler,
307308
cmdline.isset("Werror") &&
308309
cmdline.isset("Wextra") &&
309310
!cmdline.isset("Wno-error"));
310-
compiler.set_message_handler(get_message_handler());
311311

312312
if(act_as_ld)
313313
compiler.mode=compilet::LINK_LIBRARY;

src/goto-cc/ms_cl_mode.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ int ms_cl_modet::doit()
5959

6060
unsigned int verbosity=1;
6161

62-
compilet compiler(cmdline, cmdline.isset("WX"));
62+
compilet compiler(cmdline, message_handler, cmdline.isset("WX"));
6363

6464
#if 0
6565
bool act_as_ld=

src/langapi/language_ui.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ Function: language_uit::language_uit
3333
language_uit::language_uit(
3434
const cmdlinet &cmdline,
3535
ui_message_handlert &_ui_message_handler):
36-
ui_message_handler(_ui_message_handler),
37-
_cmdline(cmdline)
36+
_cmdline(cmdline),
37+
ui_message_handler(_ui_message_handler)
3838
{
3939
set_message_handler(ui_message_handler);
4040
}

src/langapi/language_ui.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,9 @@ class language_uit:public messaget
4848
return ui_message_handler.get_ui();
4949
}
5050

51-
ui_message_handlert &ui_message_handler;
52-
5351
protected:
5452
const cmdlinet &_cmdline;
53+
ui_message_handlert &ui_message_handler;
5554
};
5655

5756
#endif // CPROVER_LANGAPI_LANGUAGE_UI_H

src/util/cout_message.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Author: Daniel Kroening, [email protected]
99
#ifndef CPROVER_UTIL_COUT_MESSAGE_H
1010
#define CPROVER_UTIL_COUT_MESSAGE_H
1111

12-
#include "message.h"
12+
#include "ui_message.h"
1313

1414
class cout_message_handlert:public stream_message_handlert
1515
{
@@ -25,7 +25,7 @@ class cerr_message_handlert:public stream_message_handlert
2525
cerr_message_handlert();
2626
};
2727

28-
class console_message_handlert:public message_handlert
28+
class console_message_handlert:public ui_message_handlert
2929
{
3030
public:
3131
// level 4 and upwards go to cout, level 1-3 to cerr
@@ -36,7 +36,7 @@ class console_message_handlert:public message_handlert
3636
virtual void flush(unsigned level) override;
3737
};
3838

39-
class gcc_message_handlert:public message_handlert
39+
class gcc_message_handlert:public ui_message_handlert
4040
{
4141
public:
4242
// aims to imitate the messages gcc prints

src/util/ui_message.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ class ui_message_handlert:public message_handlert
1818

1919
ui_message_handlert(uit, const std::string &program);
2020
ui_message_handlert(const class cmdlinet &, const std::string &program);
21+
ui_message_handlert():
22+
_ui(uit::PLAIN)
23+
{
24+
}
2125

2226
virtual ~ui_message_handlert();
2327

0 commit comments

Comments
 (0)