On 12/07/2017 09:53 AM, Tom de Vries wrote:
Hi,
I'm currently debugging a problem in lra, and got a bit lost in the
20k+ lines dump file.
I observed that:
- the lra dump file is one of the biggest ones
- lra itself consists of a looping of sub-passes.
So, I've:
- written a dump infrastructure addition that can be used within a pass
to mark the end of the current (sub)dump file and start a next
subdump file.
- used that infrastructure to instrument lra to dump info from
different subpasses into separate files.
Using this patch I managed to split the reload dump file into smaller
bits:
...
$ wc -l *.reload.*
3 no-scevccp-outer-10.c.276r.reload
0 no-scevccp-outer-10.c.276r.reload.001.lra_start
3 no-scevccp-outer-10.c.276r.reload.002.remove_scratches
2335 no-scevccp-outer-10.c.276r.reload.003.lra_constraints
1781 no-scevccp-outer-10.c.276r.reload.004.lra_create_live_ranges
460 no-scevccp-outer-10.c.276r.reload.005.lra_inheritance
920 no-scevccp-outer-10.c.276r.reload.006.lra_create_live_ranges
563 no-scevccp-outer-10.c.276r.reload.007.lra_assign
184 no-scevccp-outer-10.c.276r.reload.008.lra_undo_inheritance
830 no-scevccp-outer-10.c.276r.reload.009.lra_create_live_ranges
3 no-scevccp-outer-10.c.276r.reload.010.lra_coalesce
165 no-scevccp-outer-10.c.276r.reload.011.lra_constraints
844 no-scevccp-outer-10.c.276r.reload.012.lra_create_live_ranges
110 no-scevccp-outer-10.c.276r.reload.013.lra_inheritance
879 no-scevccp-outer-10.c.276r.reload.014.lra_create_live_ranges
22 no-scevccp-outer-10.c.276r.reload.015.lra_assign
74 no-scevccp-outer-10.c.276r.reload.016.lra_undo_inheritance
19 no-scevccp-outer-10.c.276r.reload.017.lra_constraints
845 no-scevccp-outer-10.c.276r.reload.018.lra_create_live_ranges
80 no-scevccp-outer-10.c.276r.reload.019.lra_remat
27 no-scevccp-outer-10.c.276r.reload.020.lra_spill
866 no-scevccp-outer-10.c.276r.reload.021.lra_constraints
830 no-scevccp-outer-10.c.276r.reload.022.lra_create_live_ranges
0 no-scevccp-outer-10.c.276r.reload.023.lra_inheritance
830 no-scevccp-outer-10.c.276r.reload.024.lra_create_live_ranges
53 no-scevccp-outer-10.c.276r.reload.025.lra_assign
5 no-scevccp-outer-10.c.276r.reload.026.lra_constraints
370 no-scevccp-outer-10.c.276r.reload.027.lra_finishing
4137 no-scevccp-outer-10.c.276r.reload.028.lra_end
0 no-scevccp-outer-10.c.276r.reload.029.lra_start
27 no-scevccp-outer-10.c.276r.reload.030.remove_scratches
553 no-scevccp-outer-10.c.276r.reload.031.lra_constraints
188 no-scevccp-outer-10.c.276r.reload.032.lra_create_live_ranges
8 no-scevccp-outer-10.c.276r.reload.033.lra_inheritance
188 no-scevccp-outer-10.c.276r.reload.034.lra_create_live_ranges
21 no-scevccp-outer-10.c.276r.reload.035.lra_assign
3 no-scevccp-outer-10.c.276r.reload.036.lra_undo_inheritance
5 no-scevccp-outer-10.c.276r.reload.037.lra_constraints
99 no-scevccp-outer-10.c.276r.reload.038.lra_finishing
515 no-scevccp-outer-10.c.276r.reload.039.lra_end
...
Notes:
- dump info from different functions is not put together
- this is on by default atm. We probably want to enable this only
using a switch fsplit-dump or some such.
- the lra_end dump files ends with ";; Function ...", which should be in
the next lra_start dump file. Once we enable this using a switch we
can probably do better.
Any comments?
Personally for me the size of LRA dump file is not a problem. What is
inconvenient is that sometimes I need to see RTL after each subpass.
Currently I do it by calling debug_rtx_range in gdb after the subpass in
question.
So this approach would be useful at least for me in some cases. But I
think it should be not a default approach because in many other cases
the current LRA dump file is enough. Moreover I even prefer to have one
file for IRA and LRA and frequently use -fira-verbose=1<a digit> which
output both IRA and LRA dumps into stderr.