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)))