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




Reply via email to