https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118992

--- Comment #6 from H.J. Lu <hjl.tools at gmail dot com> ---
This works for x86-64:

diff --git a/gcc/cse.cc b/gcc/cse.cc
index 70d5caac4ca..786624cd890 100644
--- a/gcc/cse.cc
+++ b/gcc/cse.cc
@@ -2287,6 +2287,10 @@ hash_rtx (const_rtx x, machine_mode mode,
         record = true;
       else if (GET_MODE_CLASS (GET_MODE (x)) == MODE_CC)
         record = true;
+      else if (REG_ATTRS (x)
+          && REG_EXPR (x)
+          && TREE_CODE (REG_EXPR (x)) == PARM_DECL)
+        record = true;
       else if (targetm.small_register_classes_for_mode_p (GET_MODE (x)))
         record = false;
       else if (targetm.class_likely_spilled_p (REGNO_REG_CLASS (regno)))

Reply via email to