This is a quick hack to avoid the ICEs reported for many C++ applications. It trivially avoids the ICE by skipping the sweep of string variables that sweep_string_variable doesn't understand. If those variables _should_ have been swept, then overflows on these variables may corrupt other scalar data; however if this works it's better than switching off SSP completely. Kevin F. Quinn 21 Dec 2005 --- gcc/protector.c.orig 2005-12-21 07:52:40.000000000 +0100 +++ gcc/protector.c 2005-12-21 07:55:36.000000000 +0100 @@ -1145,6 +1145,13 @@ switch (GET_CODE (sweep_var)) { + case REG: + warning ("sweep string type RET (%d) ignored - rtl:\n", + GET_CODE(sweep_var)); + print_rtl(stderr, sweep_var); + fputs("\n",stderr); + return; + break; case MEM: if (GET_CODE (XEXP (sweep_var, 0)) == ADDRESSOF && GET_CODE (XEXP (XEXP (sweep_var, 0), 0)) == REG) @@ -1155,6 +1162,10 @@ sweep_offset = INTVAL (sweep_var); break; default: + warning ("sweep string type %d unexpected - rtl:\n", + GET_CODE(sweep_var)); + print_rtl(stderr, sweep_var); + fputs("\n",stderr); abort (); }