On Jun 26, 2012, at 1:55 AM, Steven Bosscher wrote: > On Mon, Jun 25, 2012 at 10:46 AM, Eric Botcazou > <ebotca...@libertysurf.fr> wrote: >> It looks like DONT_USE_BUILTIN_SETJMP was invented for the IA-64, probably >> because of the Register Stack Engine. But SPARC also has register windows, >> albeit less sophisticated, and can do without it. Morever, the Ada compiler >> uses __builtin_setjmp/__builtin_longjmp internally on the host (EH is used >> for >> error recovery) and is known to work fine on IA-64/Linux, HP-UX and VMS. >> >> In the end, it would appear that DONT_USE_BUILTIN_SETJMP was a quick trick to >> solve specific issues that could very likely have been solved otherwise. We >> should probably keep it for the sake of IA-64 and get rid of it for all other >> architectures, documenting that it isn't to be used in normal circumstances. > > ia64 is now the only remaining architecture that defines > DONT_USE_BUILTIN_SETJMP and JMP_BUF_SIZE. > > If __builtin_setjmp actually does work for ia64, why should we keep > DONT_USE_BUILTIN_SETJMP? Could it break user code somehow?
History is not kind: http://gcc.gnu.org/ml/gcc-patches/2002-04/msg00124.html :-) It seems everyone else has seen the error of their ways and fixed it. :-) It got moved to ia64.h, only because a few people mistakingly used it once. Though, history isn't kinda to me either: svn log -c13969 :-( I'd say, remove it, and deprecate the bit and after 2 releases, remove the whole lot. 15 years late... Sorry for the mess.