sched1: Fix -fcompare-debug issue in schedule_region [PR105586]
authorSurya Kumari Jangala <jskumari@linux.ibm.com>
Wed, 3 Aug 2022 04:00:03 +0000 (23:00 -0500)
committerSurya Kumari Jangala <jskumari@linux.ibm.com>
Wed, 7 Sep 2022 15:22:35 +0000 (10:22 -0500)
commitbec35caafae8db0278e1d037a7ba00c3e6899bbd
treef1da05c5fb744751d006f6dd4f0f1039046c779f
parenta961ad1b13b9c294d4565344912b8e35ba71b369
sched1: Fix -fcompare-debug issue in schedule_region [PR105586]

In schedule_region(), a basic block that does not contain any real insns
is not scheduled and the dfa state at the entry of the bb is not copied
to the fallthru basic block. However a DEBUG insn is treated as a real
insn, and if a bb contains non-real insns and a DEBUG insn, it's dfa
state is copied to the fallthru bb. This was resulting in
-fcompare-debug failure as the incoming dfa state of the fallthru block
is different with -g. We should always copy the dfa state of a bb to
it's fallthru bb even if the bb does not contain real insns.

2022-08-22  Surya Kumari Jangala  <jskumari@linux.ibm.com>

gcc/
PR rtl-optimization/105586
* sched-rgn.cc (save_state_for_fallthru_edge): New function.
(schedule_region): Use it for all blocks.

gcc/testsuite/
PR rtl-optimization/105586
* gcc.target/powerpc/pr105586.c: New test.
gcc/sched-rgn.cc
gcc/testsuite/gcc.target/powerpc/pr105586.c [new file with mode: 0644]