This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
pa-hpux bootstrap failure after "post-cond-optab improvements"
- From: Olivier Hainque <hainque at adacore dot com>
- To: bonzini at gnu dot org
- Cc: hainque at adacore dot com, gcc at gcc dot gnu dot org
- Date: Wed, 1 Jul 2009 13:03:33 +0200
- Subject: pa-hpux bootstrap failure after "post-cond-optab improvements"
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