aboutsummaryrefslogtreecommitdiff
path: root/gcc/alias.c
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 /gcc/alias.c
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
Diffstat (limited to 'gcc/alias.c')
-rw-r--r--gcc/alias.c10
1 files changed, 5 insertions, 5 deletions
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