aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/tree.cc
diff options
context:
space:
mode:
authorJeff Law <jlaw@ventanamicro.com>2024-07-22 21:48:28 -0600
committerThomas Koenig <tkoenig@gcc.gnu.org>2024-07-28 19:05:46 +0200
commitaa6cfa75bcdd8637f270d1a91ae8ee382e4bf0b8 (patch)
treeab31f4265bc6d4909ab3bcbc54a1cdc94a5c8633 /gcc/cp/tree.cc
parent5b224c1d75382064c98da0ee73af741c4f96d275 (diff)
downloadgcc-aa6cfa75bcdd8637f270d1a91ae8ee382e4bf0b8.zip
gcc-aa6cfa75bcdd8637f270d1a91ae8ee382e4bf0b8.tar.gz
gcc-aa6cfa75bcdd8637f270d1a91ae8ee382e4bf0b8.tar.bz2
[5/n][PR rtl-optimization/115877] Fix handling of input/output operands
So in this patch we're correcting a failure to mark objects live in scenarios like (set (dest) (plus (dest) (src)) When handling set pseudos, we transfer the liveness information from LIVENOW into LIVE_TMP. LIVE_TMP is subsequently used to narrow what bit groups are live for the inputs. The first time we process the block we may not have DEST in the LIVENOW set (it may be live across the loop, but not live after the loop). Thus we can totally miss making certain objects live, resulting in incorrect code. The fix is pretty simple. If LIVE_TMP is empty, then we should go ahead and mark all the bit groups for the set object in LIVE_TMP. This also removes an invalid gcc_assert on the state of the liveness bitmaps. This showed up on pru, rl78 and/or msp430 in the testsuite. So no new test. Bootstrapped and regression tested on x86_64 and also run through my tester on all the cross platforms. Pushing to the trunk. PR rtl-optimization/115877 gcc/ * ext-dce.cc (ext_dce_process_sets): Reasonably handle input/output operands. (ext_dce_rd_transfer_n): Drop bogus assertion.
Diffstat (limited to 'gcc/cp/tree.cc')
0 files changed, 0 insertions, 0 deletions