diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-11-27 12:02:02 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-11-27 12:02:02 +0100 |
commit | a7c7534348a4f6af27f5d17b83356619ad26f73c (patch) | |
tree | 3536513031953b792c1f0e763e8cbea57a554432 /gcc/alias.c | |
parent | 84593a48f6446a48ee86724972fdcdcae143f9cd (diff) | |
download | gcc-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.c | 10 |
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 |