Ping
On Tue, May 20, 2025 at 09:22:55AM +0200, Stefan Schulze Frielinghaus wrote: > This is a follow-up to > https://gcc.gnu.org/pipermail/gcc-patches/2025-January/672941.html > with basically the only change of adding more tests like for aarch64 and > the y constraint or for i386 and constraints S,D,A. > > I just realized that in the second patch "Error handling for hard > register constraints" locs may be different, now. For example > > gcc.target/i386/pr79804.c: In function ‘foo’: > gcc.target/i386/pr79804.c:9:3: error: register for operand 0 is an internal > GCC implementation detail > > prior my patch the line number was 7 and not 9 as it is now. This is > due to how I iterate over an inline asm statement during gimplification > and error out over operands instead of erroring out for register asm > decls. I didn't dare to fix this right now since I already spend quite > some time on it over the course of more than a year and would rather > like to get some feedback whether the implementation of hard register > constraints is sensible at all or whether I should drop this patch. > > Cheers, > Stefan > > Stefan Schulze Frielinghaus (4): > Hard register constraints > Error handling for hard register constraints > genoutput: Verify hard register constraints > Rewrite register asm into hard register constraints > > gcc/cfgexpand.cc | 42 --- > gcc/common.opt | 4 + > gcc/config/cris/cris.cc | 6 +- > gcc/config/i386/i386.cc | 6 + > gcc/config/s390/s390.cc | 6 +- > gcc/doc/extend.texi | 178 +++++++++++ > gcc/doc/md.texi | 6 + > gcc/function.cc | 116 ++++++++ > gcc/genoutput.cc | 60 ++++ > gcc/genpreds.cc | 4 +- > gcc/gimplify.cc | 236 ++++++++++++++- > gcc/gimplify_reg_info.h | 169 +++++++++++ > gcc/ira.cc | 79 ++++- > gcc/lra-constraints.cc | 13 + > gcc/output.h | 2 + > gcc/recog.cc | 11 +- > gcc/stmt.cc | 278 +++++++++++++++++- > gcc/stmt.h | 9 +- > gcc/testsuite/gcc.dg/asm-hard-reg-1.c | 85 ++++++ > gcc/testsuite/gcc.dg/asm-hard-reg-2.c | 33 +++ > gcc/testsuite/gcc.dg/asm-hard-reg-3.c | 25 ++ > gcc/testsuite/gcc.dg/asm-hard-reg-4.c | 50 ++++ > gcc/testsuite/gcc.dg/asm-hard-reg-5.c | 36 +++ > gcc/testsuite/gcc.dg/asm-hard-reg-6.c | 60 ++++ > gcc/testsuite/gcc.dg/asm-hard-reg-7.c | 41 +++ > gcc/testsuite/gcc.dg/asm-hard-reg-8.c | 49 +++ > .../gcc.dg/asm-hard-reg-demotion-1.c | 19 ++ > .../gcc.dg/asm-hard-reg-demotion-2.c | 19 ++ > .../gcc.dg/asm-hard-reg-demotion-error-1.c | 29 ++ > gcc/testsuite/gcc.dg/asm-hard-reg-demotion.h | 52 ++++ > gcc/testsuite/gcc.dg/asm-hard-reg-error-1.c | 83 ++++++ > gcc/testsuite/gcc.dg/asm-hard-reg-error-2.c | 26 ++ > gcc/testsuite/gcc.dg/asm-hard-reg-error-3.c | 27 ++ > gcc/testsuite/gcc.dg/asm-hard-reg-error-4.c | 24 ++ > gcc/testsuite/gcc.dg/asm-hard-reg-error-5.c | 13 + > gcc/testsuite/gcc.dg/pr87600-2.c | 30 +- > gcc/testsuite/gcc.dg/pr87600-3.c | 35 +++ > .../gcc.target/aarch64/asm-hard-reg-1.c | 55 ++++ > .../gcc.target/i386/asm-hard-reg-1.c | 115 ++++++++ > .../gcc.target/s390/asm-hard-reg-1.c | 103 +++++++ > .../gcc.target/s390/asm-hard-reg-2.c | 43 +++ > .../gcc.target/s390/asm-hard-reg-3.c | 42 +++ > .../gcc.target/s390/asm-hard-reg-4.c | 6 + > .../gcc.target/s390/asm-hard-reg-5.c | 6 + > .../gcc.target/s390/asm-hard-reg-6.c | 152 ++++++++++ > .../gcc.target/s390/asm-hard-reg-longdouble.h | 18 ++ > gcc/testsuite/lib/scanasm.exp | 4 + > gcc/toplev.cc | 4 + > 48 files changed, 2409 insertions(+), 100 deletions(-) > create mode 100644 gcc/gimplify_reg_info.h > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-1.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-2.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-3.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-4.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-5.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-6.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-7.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-8.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-demotion-1.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-demotion-2.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-demotion-error-1.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-demotion.h > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-error-1.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-error-2.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-error-3.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-error-4.c > create mode 100644 gcc/testsuite/gcc.dg/asm-hard-reg-error-5.c > create mode 100644 gcc/testsuite/gcc.dg/pr87600-3.c > create mode 100644 gcc/testsuite/gcc.target/aarch64/asm-hard-reg-1.c > create mode 100644 gcc/testsuite/gcc.target/i386/asm-hard-reg-1.c > create mode 100644 gcc/testsuite/gcc.target/s390/asm-hard-reg-1.c > create mode 100644 gcc/testsuite/gcc.target/s390/asm-hard-reg-2.c > create mode 100644 gcc/testsuite/gcc.target/s390/asm-hard-reg-3.c > create mode 100644 gcc/testsuite/gcc.target/s390/asm-hard-reg-4.c > create mode 100644 gcc/testsuite/gcc.target/s390/asm-hard-reg-5.c > create mode 100644 gcc/testsuite/gcc.target/s390/asm-hard-reg-6.c > create mode 100644 gcc/testsuite/gcc.target/s390/asm-hard-reg-longdouble.h > > -- > 2.49.0 >