[Bug rtl-optimization/115877] [15 Regression] wrong code at -Os (missing zero extension)
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jul 22 16:13:48 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115877
--- Comment #12 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jeff Law <law@gcc.gnu.org>:
https://gcc.gnu.org/g:ab7c0aed52054976d0b5e12c52e82239d4277b98
commit r15-2203-gab7c0aed52054976d0b5e12c52e82239d4277b98
Author: Jeff Law <jlaw@ventanamicro.com>
Date: Mon Jul 22 10:11:57 2024 -0600
[4/n][PR rtl-optimization/115877] Correct SUBREG handling in a destination
If we encounter something during SET handling that we can not handle, the
safe
thing to do is to ignore the destination and continue the loop.
We've actually been trying to do slightly better with SUBREG destinations
by
iterating into SUBREG_REG. It turns out that wasn't working as expected.
The problem is once we "continue" we lose the state that we were inside the
SET
and thus we ended up ignoring the destination completely rather than
tracking
the SUBREG_REG object. This could be fixed by restarting SET processing,
but I
just don't see this as all that important to handle. So rather than leave
the
code as-is, not working per design, I'm twiddling it to use the common
'skip
subrtxs and continue' idiom used elsewhere.
This is a prerequisite for another patch in this series. Specifically I
have a
patch that explicitly tracks if we skipped a destination rather than trying
to
imply it from the state of LIVE_TMP. So this is probably NFC right now,
but
that's a short-lived NFC.
Bootstrapped and regression tested on x86 and also run as part of a larger
kit
on the crosses in my tester.
PR rtl-optimization/115877
gcc/
* ext-dce.cc (ext_dce_process_sets): More correctly handle SUBREG
destinations.
More information about the Gcc-bugs
mailing list