https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114085
--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jeff Law <l...@gcc.gnu.org>: https://gcc.gnu.org/g:235215323c67d8ce021a00df0f42e2c1713c7959 commit r15-7242-g235215323c67d8ce021a00df0f42e2c1713c7959 Author: Jeff Law <j...@ventanamicro.com> Date: Mon Jan 27 21:25:39 2025 -0700 [PR target/114085] Fix H8 constraint issue which led to ICE Nowhere near the top of my list, but a quick looksie Sunday led to an easy to fix backend bug. It's not a regression, but given its the H8 backend I think we've safely got a degree of freedom here. The H8 has a constraint "U" which allowed both a subset of MEMs and REGs, so it wasn't marked as a memory constraint. LRA doesn't really handle this well -- a pseudo which didn't get a hard reg was replaced by its MEM. The stack slot doesn't fit the limited addressing forms available and LRA didn't know it just needed to reload the address into a reg. Fixed by removing REG from the "U" constraint, turning "U" into a memory constraint and adjusting a few patterns to allow "rU" instead of "U". We don't really support C++ on the H8 and as a result libstdc++ won't build. Interestingly enough that also keeps the C++ tests from working, even for a compile-only test. So no testcase. Though I did check the reduced and original test manually and ran it through my tester without any regressions. PR target/114085 gcc/ * config/h8300/constraints.md (U): No longer accept REGs. * config/h8300/logical.md (andqi3_2): Use "rU" rather than "U". (andqi3_2_clobber_flags, andqi3_1, <code>qi3_1): Likewise. * config/h8300/testcompare.md (tst_extzv_1_n): Likewise.