aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-11-27 12:02:02 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-11-27 12:02:02 +0100
commita7c7534348a4f6af27f5d17b83356619ad26f73c (patch)
tree3536513031953b792c1f0e763e8cbea57a554432
parent84593a48f6446a48ee86724972fdcdcae143f9cd (diff)
downloadgcc-a7c7534348a4f6af27f5d17b83356619ad26f73c.zip
gcc-a7c7534348a4f6af27f5d17b83356619ad26f73c.tar.gz
gcc-a7c7534348a4f6af27f5d17b83356619ad26f73c.tar.bz2
re PR lto/64025 (Several testsuite execution failures with -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects)
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/alias.c10
2 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 32e0bcb..b1ddd83 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/alias.c b/gcc/alias.c
index 22717ad..e8675c5 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -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