On Tue, May 06, 2014 at 03:34:37PM +0100, Nicholas Clifton wrote: > --- gcc/except.c (revision 210096) > +++ gcc/except.c (working copy) > @@ -286,8 +286,8 @@ > tmp = size_int (FIRST_PSEUDO_REGISTER + 2 - 1); > #endif > #else > - /* builtin_setjmp takes a pointer to 5 words. */ > - tmp = size_int (5 * BITS_PER_WORD / POINTER_SIZE - 1); > + /* builtin_setjmp uses a buffer big enough to hold 5 pointers. */ > + tmp = size_int (5 * POINTER_SIZE / BITS_PER_WORD - 1);
But what will this do on targets where POINTER_SIZE is smaller than BITS_PER_WORD? E.g. I think some options on s390 or ppc. If you want it to be always 5 pointers, then you want tmp = size_int (4); and not something else, otherwise it really depends on how exactly it is used, perhaps it can be 5 * MAX (BITS_PER_WORD / POINTER_SIZE, 1) - 1 or whatever else, but 5 * POINTER_SIZE / BITS_PER_WORD is definitely wrong. > #endif > tmp = build_index_type (tmp); > tmp = build_array_type (ptr_type_node, tmp); Jakub