]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Verify destination[source] of a load[store] instruction is a register.
authorPat Haugen <pthaugen@linux.ibm.com>
Mon, 9 Aug 2021 15:05:49 +0000 (10:05 -0500)
committerPat Haugen <pthaugen@linux.ibm.com>
Mon, 9 Aug 2021 15:05:49 +0000 (10:05 -0500)
gcc/ChangeLog:

* config/rs6000/rs6000.c (is_load_insn1): Verify destination is a
register.
(is_store_insn1): Verify source is a register.

gcc/config/rs6000/rs6000.c

index 5b1c06b09fc0ac7154c3e0c1c549c069a24ee288..60f406a4ff6dce3158f97ff32875e7e917f800ef 100644 (file)
@@ -18363,7 +18363,12 @@ is_load_insn1 (rtx pat, rtx *load_mem)
     return false;
 
   if (GET_CODE (pat) == SET)
-    return find_mem_ref (SET_SRC (pat), load_mem);
+    {
+      if (REG_P (SET_DEST (pat)))
+       return find_mem_ref (SET_SRC (pat), load_mem);
+      else
+       return false;
+    }
 
   if (GET_CODE (pat) == PARALLEL)
     {
@@ -18400,7 +18405,12 @@ is_store_insn1 (rtx pat, rtx *str_mem)
     return false;
 
   if (GET_CODE (pat) == SET)
-    return find_mem_ref (SET_DEST (pat), str_mem);
+    {
+      if (REG_P (SET_SRC (pat)) || SUBREG_P (SET_SRC (pat)))
+       return find_mem_ref (SET_DEST (pat), str_mem);
+      else
+       return false;
+    }
 
   if (GET_CODE (pat) == PARALLEL)
     {