diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 250812cb8b8e3c06db2260ecc79591e40fafdad6..aea1239b2dabb7c4082cb76ca21407b3434629eb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-06-26  Kazu Hirata  <kazu@cs.umass.edu>
+
+	* config/h8300/h8300.c (compute_a_rotate_length): Fix the
+	references to the amount of a rotation.
+
 2003-06-26  Nathanael Nerode  <neroden@gcc.gnu.org>
 
 	* config/sh/coff.h: Don't include dbxcoff.h.
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 54703c2452c4650dcab9d934ac929a38f6edbb3f..88a739cd9c256be82a4496227f0e67032c6c90dc 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -3990,14 +3990,15 @@ unsigned int
 compute_a_rotate_length (rtx *operands)
 {
   rtx src = operands[1];
+  rtx amount_rtx = operands[2];
   enum machine_mode mode = GET_MODE (src);
   int amount;
   unsigned int length = 0;
 
-  if (GET_CODE (XEXP (src, 1)) != CONST_INT)
-    return 0;
+  if (GET_CODE (amount_rtx) != CONST_INT)
+    abort ();
 
-  amount = INTVAL (XEXP (src, 1));
+  amount = INTVAL (amount_rtx);
 
   /* Clean up AMOUNT.  */
   if (amount < 0)