Module Name:    src
Committed By:   christos
Date:           Thu May 19 20:27:36 UTC 2016

Modified Files:
        src/external/gpl3/gcc/dist/gcc: alias.c var-tracking.c

Log Message:
Fix infinite recursion when building i386 -fPIE in
src/external/mit/xorg/lib/libxcb/xkb.

https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=231599

PR debug/67355
* var-tracking.c (reverse_op): Don't add dummy zero to reverse
  ops that simplify back to the original value.
* alias.c (refs_newer_value_p): Cut off recursion for
  expressions containing the original value.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.5 -r1.2 src/external/gpl3/gcc/dist/gcc/alias.c \
    src/external/gpl3/gcc/dist/gcc/var-tracking.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/gcc/dist/gcc/alias.c
diff -u src/external/gpl3/gcc/dist/gcc/alias.c:1.1.1.5 src/external/gpl3/gcc/dist/gcc/alias.c:1.2
--- src/external/gpl3/gcc/dist/gcc/alias.c:1.1.1.5	Sun Jan 24 01:06:09 2016
+++ src/external/gpl3/gcc/dist/gcc/alias.c	Thu May 19 16:27:36 2016
@@ -1880,7 +1880,7 @@ base_alias_check (rtx x, rtx x_base, rtx
 }
 
 /* Return TRUE if EXPR refers to a VALUE whose uid is greater than
-   that of V.  */
+   (or equal to) that of V.  */
 
 static bool
 refs_newer_value_p (const_rtx expr, rtx v)
@@ -1888,7 +1888,7 @@ refs_newer_value_p (const_rtx expr, rtx 
   int minuid = CSELIB_VAL_PTR (v)->uid;
   subrtx_iterator::array_type array;
   FOR_EACH_SUBRTX (iter, array, expr, NONCONST)
-    if (GET_CODE (*iter) == VALUE && CSELIB_VAL_PTR (*iter)->uid > minuid)
+    if (GET_CODE (*iter) == VALUE && CSELIB_VAL_PTR (*iter)->uid >= minuid)
       return true;
   return false;
 }
Index: src/external/gpl3/gcc/dist/gcc/var-tracking.c
diff -u src/external/gpl3/gcc/dist/gcc/var-tracking.c:1.1.1.5 src/external/gpl3/gcc/dist/gcc/var-tracking.c:1.2
--- src/external/gpl3/gcc/dist/gcc/var-tracking.c:1.1.1.5	Sun Jan 24 01:06:10 2016
+++ src/external/gpl3/gcc/dist/gcc/var-tracking.c	Thu May 19 16:27:36 2016
@@ -5833,11 +5833,6 @@ reverse_op (rtx val, const_rtx expr, rtx
 	    return;
 	}
       ret = simplify_gen_binary (code, GET_MODE (val), val, arg);
-      if (ret == val)
-	/* Ensure ret isn't VALUE itself (which can happen e.g. for
-	   (plus (reg1) (reg2)) when reg2 is known to be 0), as that
-	   breaks a lot of routines during var-tracking.  */
-	ret = gen_rtx_fmt_ee (PLUS, GET_MODE (val), val, const0_rtx);
       break;
     default:
       gcc_unreachable ();

Reply via email to