On 2022-05-05 02:52, Alexandre Oliva wrote:

Regstrapped on x86_64-linux-gnu and ppc64le-linux-gnu, also tested
targeting ppc- and ppc64-vx7r2.  Ok to install?

I am ok with the modified version of the patch.  It looks reasonable for me and I support its commit.

But I think I can not approve the patch formally as emit-rtl.cc is out of my jurisdiction and validate_subreg is used in many places besides RA.

Sorry, Alex, some global reviewer should do this.

for  gcc/ChangeLog

        PR target/100106
        * emit-rtl.c (validate_subreg): Reject a SUBREG of a MEM that
        requires stricter alignment than MEM's.

for  gcc/testsuite/ChangeLog

        PR target/100106
        * gcc.target/powerpc/pr100106-sa.c: New.
---
  gcc/emit-rtl.cc                                |    3 +++
  gcc/testsuite/gcc.target/powerpc/pr100106-sa.c |    4 ++++
  2 files changed, 7 insertions(+)
  create mode 100644 gcc/testsuite/gcc.target/powerpc/pr100106-sa.c

diff --git a/gcc/emit-rtl.cc b/gcc/emit-rtl.cc
index 1e02ae254d012..642e47eada0d7 100644
--- a/gcc/emit-rtl.cc
+++ b/gcc/emit-rtl.cc
@@ -982,6 +982,9 @@ validate_subreg (machine_mode omode, machine_mode imode,
return subreg_offset_representable_p (regno, imode, offset, omode);
      }
+  else if (reg && MEM_P (reg)
+          && STRICT_ALIGNMENT && MEM_ALIGN (reg) < GET_MODE_ALIGNMENT (omode))
+    return false;
/* The outer size must be ordered wrt the register size, otherwise
       we wouldn't know at compile time how many registers the outer
diff --git a/gcc/testsuite/gcc.target/powerpc/pr100106-sa.c 
b/gcc/testsuite/gcc.target/powerpc/pr100106-sa.c
new file mode 100644
index 0000000000000..6cc29595c8b25
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr100106-sa.c
@@ -0,0 +1,4 @@
+/* { dg-do compile { target { ilp32 } } } */
+/* { dg-options "-mcpu=604 -O -mstrict-align" } */
+
+#include "../../gcc.c-torture/compile/pr100106.c"



Reply via email to