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]$

Reply via email to