diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3cbf6713e4f7676b6d9be4bf7d04aead7de8f5b9..de90646aef42996c96139b1e241f95af7219de97 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-10-02  Josef Zlomek  <zlomekj@suse.cz>
+
+	PR/12292
+	* combine.c (make_field_assignment): Check whether rtx's code
+	is CONST_INT before using INTVAL.
+
 2003-10-02  Josef Zlomek  <zlomekj@suse.cz>
 
 	* cgraph.c (cgraph_node): Use INSERT instead of 1 in
diff --git a/gcc/combine.c b/gcc/combine.c
index 3a3d9223d9fd15a6ddfca99c8dbb37d1758c9b86..5ad0a0fae6db9fa9758ba7d8d64277eb768707fc 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -7666,6 +7666,7 @@ make_field_assignment (rtx x)
 	   && (GET_MODE_SIZE (GET_MODE (XEXP (src, 0)))
 	       < GET_MODE_SIZE (GET_MODE (SUBREG_REG (XEXP (src, 0)))))
 	   && GET_CODE (SUBREG_REG (XEXP (src, 0))) == ROTATE
+	   && GET_CODE (XEXP (SUBREG_REG (XEXP (src, 0)), 0)) == CONST_INT
 	   && INTVAL (XEXP (SUBREG_REG (XEXP (src, 0)), 0)) == -2
 	   && rtx_equal_for_field_assignment_p (dest, XEXP (src, 1)))
     {