This patch reverts gcc 3.3.4 change which triggers ICE on code using "complex" type - but generated code is _probably wrong_. Proper fix is included in gcc 3.4.0, but it changes ABI. This patch is meant only to provide gcc 3.3.4 on alpha, suitable to bootstrap gcc 3.4.0. --- 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. */