John David Anglin <dave.ang...@bell.net> writes:
> On 2023-11-16 4:52 p.m., Jeff Law wrote: >> >> >> On 11/16/23 10:54, John David Anglin wrote: >>> Tested on hppa-unknown-linux-gnu and hppa64-hp-hpux11.11. Committed >>> to trunk. >>> >>> This patch works around problem compiling python3.11 by improving >>> REG+D address handling. The change results in smaller code and >>> reduced register pressure. >>> >>> Dave >>> --- >>> >>> hppa: Revise REG+D address support to allow long displacements before reload >>> >>> In analyzing PR rtl-optimization/112415, I realized that restricting >>> REG+D offsets to 5-bits before reload results in very poor code and >>> complexities in optimizing these instructions after reload. The >>> general problem is long displacements are not allowed for floating >>> point accesses when generating PA 1.1 code. Even with PA 2.0, there >>> is a ELF linker bug that prevents using long displacements for >>> floating point loads and stores. >>> >>> In the past, enabling long displacements before reload caused issues >>> in reload. However, there have been fixes in the handling of reloads >>> for floating-point accesses. This change allows long displacements >>> before reload and corrects a couple of issues in the constraint >>> handling for integer and floating-point accesses. >>> >>> 2023-11-16 John David Anglin <dang...@gcc.gnu.org> >>> >>> gcc/ChangeLog: >>> >>> PR rtl-optimization/112415 >>> * config/pa/pa.cc (pa_legitimate_address_p): Allow 14-bit >>> displacements before reload. Simplify logic flow. Revise >>> comments. >>> * config/pa/pa.h (TARGET_ELF64): New define. >>> (INT14_OK_STRICT): Update define and comment. >>> * config/pa/pa64-linux.h (TARGET_ELF64): Define. >>> * config/pa/predicates.md (base14_operand): Don't check >>> alignment of short displacements. >>> (integer_store_memory_operand): Don't return true when >>> reload_in_progress is true. Remove INT_5_BITS check. >>> (floating_point_store_memory_operand): Don't return true when >>> reload_in_progress is true. Use INT14_OK_STRICT to check >>> whether long displacements are always okay. >> I strongly suspect this is going to cause problems in the end. >> >> I've already done what you're trying to do. It'll likely look fine >> for an extended period of time, but it will almost certainly break >> one day. Jeff, I don't suppose you could dig out the old bugs/commits just out of interest? > I could happen. If it happens and can't be fixed, it's easy enough to return > false in > pa_legitimate_address_p before reload. Maybe we could add an optimization > option for this. > > As it stands, the code improvement for python is significant. I don't think > f-m-o can fix things after reload. >a > Hopefully, Sam will test the change with various package builds on gentoo. > Debian is still on gcc-13. Yeah, happy to do that. We haven't got GCC 14 deployed in the wild, but we have it available for people who want to test and opt-in to it. Fingers crossed it's calm. I'll let you know if it isn't ;) > I'm not seeing any obvious problems in the gcc testsuite. It needs testing > on packages that do extensive > floating point calculations. OK, I'll focus on those. > > Dave