https://gcc.gnu.org/g:0312d11be3f666a6b71461dc8a09e7aac64853eb

commit r15-7634-g0312d11be3f666a6b71461dc8a09e7aac64853eb
Author: H.J. Lu <hjl.to...@gmail.com>
Date:   Thu Feb 20 15:23:05 2025 +0800

    Revert "i386: Simplify PARALLEL RTX scan in ix86_find_all_reg_use"
    
    This reverts commit 565d4e755498ad2b5ed55e368ef61eb9511cda3a.

Diff:
---
 gcc/config/i386/i386.cc | 28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index 560e6525b56b..fafd4a511a3c 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -8538,9 +8538,31 @@ ix86_find_all_reg_use (HARD_REG_SET &stack_slot_access,
       for (int i = 0; i < XVECLEN (pat, 0); i++)
        {
          rtx exp = XVECEXP (pat, 0, i);
-
-         if (GET_CODE (exp) == SET)
-           ix86_find_all_reg_use_1 (exp, stack_slot_access, worklist);
+         switch (GET_CODE (exp))
+           {
+           case ASM_OPERANDS:
+           case CLOBBER:
+           case PREFETCH:
+           case USE:
+             break;
+           case UNSPEC:
+           case UNSPEC_VOLATILE:
+             for (int j = XVECLEN (exp, 0) - 1; j >= 0; j--)
+               {
+                 rtx x = XVECEXP (exp, 0, j);
+                 if (GET_CODE (x) == SET)
+                   ix86_find_all_reg_use_1 (x, stack_slot_access,
+                                            worklist);
+               }
+             break;
+           case SET:
+             ix86_find_all_reg_use_1 (exp, stack_slot_access,
+                                      worklist);
+             break;
+           default:
+             gcc_unreachable ();
+             break;
+           }
        }
     }
 }

Reply via email to