re PR lto/64025 (Several testsuite execution failures with -O2 -flto -fuse-linker...
authorJakub Jelinek <jakub@redhat.com>
Thu, 27 Nov 2014 11:02:02 +0000 (12:02 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 27 Nov 2014 11:02:02 +0000 (12:02 +0100)
PR lto/64025
* alias.c (find_base_term): Use std::swap.  Prefer tmp2
if it is CONSTANT_P other than CONST_INT.

From-SVN: r218119

gcc/ChangeLog
gcc/alias.c

index 32e0bcb01f004a918e0cfee7583af685c6b66f79..b1ddd83e3f352bf8f547d6d9a181ddcf2bb8f95e 100644 (file)
@@ -1,3 +1,9 @@
+2014-11-27  Jakub Jelinek  <jakub@redhat.com>
+
+       PR lto/64025
+       * alias.c (find_base_term): Use std::swap.  Prefer tmp2
+       if it is CONSTANT_P other than CONST_INT.
+
 2014-11-27  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
        PR target/59593
index 22717ad0fd716fe24bba88bbd19429e1c9b4731d..e8675c5d0fd1fc422af16dac7f408ad6b619caef 100644 (file)
@@ -1748,11 +1748,11 @@ find_base_term (rtx x)
        if (REG_P (tmp1) && REG_POINTER (tmp1))
          ;
        else if (REG_P (tmp2) && REG_POINTER (tmp2))
-         {
-           rtx tem = tmp1;
-           tmp1 = tmp2;
-           tmp2 = tem;
-         }
+         std::swap (tmp1, tmp2);
+       /* If second argument is constant which has base term, prefer it
+          over variable tmp1.  See PR64025.  */
+       else if (CONSTANT_P (tmp2) && !CONST_INT_P (tmp2))
+         std::swap (tmp1, tmp2);
 
        /* Go ahead and find the base term for both operands.  If either base
           term is from a pointer or is a named object or a special address