Hello Paolo, It seems to me that this piece of your r149032 change ...
* expr.c (expand_expr_real_1): Just use do_store_flag. --- expr.c (revision 149031) +++ expr.c (revision 149032) @@ -9109,50 +9109,9 @@ temp = do_store_flag (exp, modifier != EXPAND_STACK_PARM ? target : NULL_RTX, tmode != VOIDmode ? tmode : mode); - if (temp != 0) - return temp; + gcc_assert (temp); + return temp; causes bootstrap to fail on pa-hpux. The first level visible behavior is a stop at the beginning of stage2 .../libiberty/sigsetmask.c:28:1: error: conflicting types for 'sigsetmask' /usr/include/sys/signal.h:256:18: note: previous declaration ... This is caused by configure missing the existing declaration because configure:6773: checking for sigsetmask ... conftest.c: In function 'main': conftest.c:76:1: <ice>: in expand_expr_real_1, at expr.c:9112 This reproduces on the tiny case below: /* err.c */ extern char asprintf (); char (*f) () = asprintf; int main () { return f != asprintf; } $ ./prev-gcc/cc1 err.c err.c: In function 'main': err.c:7:3: internal compiler error: in expand_expr_real_1, at expr.c:9112 we hit the newly introduced assert with do_store_flag returning 0 out of /* We won't bother with store-flag operations involving function pointers when function pointers must be canonicalized before comparisons. */ #ifdef HAVE_canonicalize_funcptr_for_compare if (HAVE_canonicalize_funcptr_for_compare && ((TREE_CODE (TREE_TYPE (TREE_OPERAND (exp, 0))) == POINTER_TYPE && (TREE_CODE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0)))) == FUNCTION_TYPE)) || (TREE_CODE (TREE_TYPE (TREE_OPERAND (exp, 1))) == POINTER_TYPE && (TREE_CODE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 1)))) == FUNCTION_TYPE)))) return 0; #endif Could you please have a look ? Thanks in advance, Olivier