http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55142
--- Comment #19 from H.J. Lu <hjl.tools at gmail dot com> 2012-11-03 02:51:26
UTC ---
This patch:
[hjl@gnu-tools-1 tmp]$ cat /tmp/x
diff --git a/gcc/expr.c b/gcc/expr.c
index 3e8e004..da35488 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8115,7 +8115,7 @@ expand_expr_real_2 (sepops ops, rtx target, enum
machine_mode tmode,
And force_operand won't know whether to sign-extend or
zero-extend. */
if ((modifier != EXPAND_SUM && modifier != EXPAND_INITIALIZER)
- || mode != ptr_mode)
+ || mode != Pmode)
{
expand_operands (treeop0, treeop1,
subtarget, &op0, &op1, EXPAND_NORMAL);
[hjl@gnu-tools-1 tmp]$
removes most of glibc failures. Does it make any senses? If it
does, there is another place in expand_expr_real_2:
[hjl@gnu-tools-1 tmp]$ cat /tmp/y
diff --git a/gcc/expr.c b/gcc/expr.c
index 3e8e004..816fdb8 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8157,7 +8157,7 @@ expand_expr_real_2 (sepops ops, rtx target, enum
machine_mode tmode,
And force_operand won't know whether to sign-extend or
zero-extend. */
if ((modifier != EXPAND_SUM && modifier != EXPAND_INITIALIZER)
- || mode != ptr_mode)
+ || mode != Pmode)
goto binop;
expand_operands (treeop0, treeop1,
[hjl@gnu-tools-1 tmp]$