--- /dev/null
+--- gcc-3.3.4/gcc/emit-rtl.c.orig 2003-12-10 18:37:18.000000000 +0100
++++ gcc-3.3.4/gcc/emit-rtl.c 2004-06-08 14:44:21.000000000 +0200
+@@ -925,7 +925,7 @@
+ if (base_regno >= FIRST_PSEUDO_REGISTER)
+ abort ();
+ if (check_mode && ! HARD_REGNO_MODE_OK (base_regno, GET_MODE (reg)))
+- abort ();
++ { fprintf(stderr, "bad mode: %d\n", GET_MODE (reg)); abort (); }
+ #ifdef ENABLE_CHECKING
+ if (!subreg_offset_representable_p (REGNO (reg), GET_MODE (reg),
+ SUBREG_BYTE (x), mode))
+--- gcc-3.3.4/gcc/config/alpha/alpha.h.orig 2004-05-28 02:02:03.000000000 +0200
++++ gcc-3.3.4/gcc/config/alpha/alpha.h 2004-06-08 15:08:17.000000000 +0200
+@@ -646,7 +646,7 @@
+
+ #define HARD_REGNO_MODE_OK(REGNO, MODE) \
+ ((REGNO) >= 32 && (REGNO) <= 62 \
+- ? (MODE) == SFmode || (MODE) == DFmode || (MODE) == DImode \
++ ? (MODE) == SFmode || (MODE) == DFmode || (MODE) == DImode || (MODE) == SCmode \
+ : 1)
+
+ /* Value is 1 if MODE is a supported vector mode. */