mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-20 11:54:02 +00:00
Estimated hours taken: 3 Branches: main and 0.12 Make the I/O tabling transformation respect :- pragma no_inline directives by creating a copy of the predicate to be transformed and calling the copy, instead of duplicating the body, if :- pragma no_inline is given. This is necessary to avoid duplicate label errors from the C compiler when the I/O tabled foreign proc uses labels. compiler/hlds_pred.m: Add a new functor to the pred_creation type to indicate that a pred was created by the I/O tabling transformation. Fix some formatting. compiler/table_gen.m: If the predicate to be I/O tabled has a no_inline pragma attached to it, then create a copy of the predicate and call the new predicate in the transformed version. compiler/trace_params.m: Do not trace the copy of the I/O tabled predicate. doc/reference_manual.texi Document the tabled_for_io attribute. tests/debugger/Mercury.options: tests/debugger/Mmakefile: tests/debugger/io_tab_goto.data: tests/debugger/io_tab_goto.exp: tests/debugger/io_tab_goto.inp: tests/debugger/io_tab_goto.m: Test that foreign C code with labels is I/O tabled correctly. tests/debugger/declarative/Mmakefile: tests/debugger/declarative/tabled_read_decl_goto.data: tests/debugger/declarative/tabled_read_decl_goto.exp: tests/debugger/declarative/tabled_read_decl_goto.inp: tests/debugger/declarative/tabled_read_decl_goto.m: Test declarative debugging of I/O tabled foreign predicates with gotos.
23 lines
245 B
Plaintext
23 lines
245 B
Plaintext
echo on
|
|
register --quiet
|
|
context none
|
|
table_io allow
|
|
table_io
|
|
break io_tab_goto__test
|
|
table_io start
|
|
continue
|
|
finish -n
|
|
print *
|
|
retry -o -a
|
|
print *
|
|
finish -n
|
|
print *
|
|
table_io end
|
|
continue
|
|
finish -n
|
|
print *
|
|
retry -f
|
|
finish -n
|
|
print *
|
|
continue -S
|