diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4f292420f3d773e98d25fb68d3bdbb497711a888..fc8ce5c39ccd9decda7a08bf7624f2ffe5225f4d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2002-01-29  Jakub Jelinek  <jakub@redhat.com>
+
+	* config/i386/i386.h (LIMIT_RELOAD_CLASS): Handle LEGACY_REGS
+	and INDEX_REGS the same as GENERAL_REGS.
+	(SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
+
 2002-01-29  Neil Booth  <neil@daikokuya.demon.co.uk>
 
         * tree.c (build_nonstandard_integer_type): Correct prototype.
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 25705e6420ce4c483815dff5196999ef7ea5861b..58f65c11908fd45516391127f4c83f3e1a0ce6a4 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -1456,7 +1456,8 @@ enum reg_class
 
 #define LIMIT_RELOAD_CLASS(MODE, CLASS) 			\
   ((MODE) == QImode && !TARGET_64BIT				\
-   && ((CLASS) == ALL_REGS || (CLASS) == GENERAL_REGS) 		\
+   && ((CLASS) == ALL_REGS || (CLASS) == GENERAL_REGS		\
+       || (CLASS) == LEGACY_REGS || (CLASS) == INDEX_REGS)	\
    ? Q_REGS : (CLASS))
 
 /* Given an rtx X being reloaded into a reg required to be
@@ -1485,7 +1486,8 @@ enum reg_class
    pseudo.  */
 
 #define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, OUT)			\
-  ((CLASS) == GENERAL_REGS && !TARGET_64BIT && (MODE) == QImode		\
+  (((CLASS) == GENERAL_REGS || (CLASS) == LEGACY_REGS			\
+    || (CLASS) == INDEX_REGS) && !TARGET_64BIT && (MODE) == QImode	\
    ? Q_REGS : NO_REGS)
 
 /* Return the maximum number of consecutive registers