Discussion:
Need to know how to debug "match.pd" file
bala mani
2018-11-19 07:18:19 UTC
Permalink
Hi,



I am looking at this issue:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86628



For this issue, i want to debug "match.pd". I am a beginner for GCC. Could
you please guide me how to debug this file?



Thanks,

Bala
Martin Liška
2018-11-19 10:11:33 UTC
Permalink
Post by bala mani
Hi,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86628
Hi.

Good!
Post by bala mani
For this issue, i want to debug "match.pd". I am a beginner for GCC. Could
you please guide me how to debug this file?
So as you probably know, there are patterns defined in match.pd. Then we generate
objdir/gcc/gimple-match.c and objdir/gcc/generic-match.c files out of it.
If you know which pattern you want to debug, you can find a directive line
in the generated files, e.g. :

...
static bool
gimple_simplify_FLOOR_DIV_EXPR (gimple_match_op *res_op, gimple_seq *seq,
tree (*valueize)(tree) ATTRIBUTE_UNUSED,
code_helper ARG_UNUSED (code), tree ARG_UNUSED (type)
, tree op0, tree op1)
{
if (integer_onep (op1))
{
{
/* #line 252 "../../gcc/match.pd" */
tree captures[1] ATTRIBUTE_UNUSED = { op0 };
if (gimple_simplify_42 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR))
return true;
}
}
if (integer_zerop (op0))
...

as seen, 'line 252' comes from match.pd:252:

/* X * 1, X / 1 -> X. */
(for op (mult trunc_div ceil_div floor_div round_div exact_div)
(simplify
(op @0 integer_onep)
(non_lvalue @0)))

So you can either put a breakpoint on a line in generated files, or you can also
put a breakpoint on match.pd:252, as it's annotated in the generated file.

There's a nice tutorial how to debug GCC:
https://dmalcolm.fedorapeople.org/gcc/newbies-guide/debugging.html

Martin
Post by bala mani
Thanks,
Bala
Loading...