compare-debug: Don't print discriminators for -fdump-final-insns= [PR121045]
Given the discussions in the PR, seems it is intentional that debug
stmts are taken into account when assigning discriminators which is
something that is actually never emitted into generated code, only
into debug info, so for -g0 we might as well not try to compute them
at all.
But discriminators are printed in the dumps, including -fdump-final-insns=
dump which affect -fcompare-debug.
So, the following patch arranges not to print discriminators in that
dump (i.e. when TDF_COMPARE_DEBUG is set in flags).
I think we should also (but it can be handled incrementally) add
some new TDF_* flag and -fdump-{tree,rtl,ipa}-<pass> modifier which
will also disable printing discriminators (similar to nouid/TDF_NOUID)
so that people can use it e.g. in -fcompare-debug -fdump-tree-all-nodiscrim
and don't have to ignore discrim N changes in the dumps.
This patch fixes
-FAIL: c-c++-common/torture/pr116156-1.c -O1 (test for excess errors)
-FAIL: c-c++-common/torture/pr116156-1.c -O2 (test for excess errors)
-FAIL: c-c++-common/torture/pr116156-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors)
-FAIL: c-c++-common/torture/pr116156-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors)
-FAIL: c-c++-common/torture/pr116156-1.c -O3 -g (test for excess errors)
-FAIL: c-c++-common/torture/pr116156-1.c -Os (test for excess errors)
-FAIL: g++.dg/torture/pr58552.C -O1 (test for excess errors)
-FAIL: g++.dg/torture/pr58552.C -O2 (test for excess errors)
-FAIL: g++.dg/torture/pr58552.C -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors)
-FAIL: g++.dg/torture/pr58552.C -O3 -g (test for excess errors)
-FAIL: g++.dg/torture/pr58552.C -Os (test for excess errors)
so no testcase added for it.
2026-01-15 Jakub Jelinek <jakub@redhat.com>
PR debug/121045
* tree-pretty-print.h (dump_location): Add new dump_flags_t
argument defaulted to TDF_NONE.
* tree-pretty-print.cc (dump_location): Add flags argument. Don't
print discriminator if TDF_COMPARE_DEBUG bit is set in flags.
(dump_block_node, dump_generic_node): Pass through flags to
dump_location.
* gimple-pretty-print.cc (dump_gimple_phi, pp_gimple_stmt_1,
dump_implicit_edges): Likewise.
(gimple_dump_bb_as_sarif_properties): Pass dump_flags to
dump_location.
* print-rtl.cc (rtx_writer::print_rtx_operand_code_L): If dump_flags
has TDF_COMPARE_DEBUG bit set, don't print discriminators.