aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-05-02 18:17:02 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-05-02 18:17:02 +0200
commitd40790c8ac4f81026252a119e11a104ffd49701f (patch)
tree31e0a2f76e9cd3c79a5cc2a312aca0859da30ed4
parent00f357941db820bb038818b698d782d7b58f5432 (diff)
downloadgcc-d40790c8ac4f81026252a119e11a104ffd49701f.zip
gcc-d40790c8ac4f81026252a119e11a104ffd49701f.tar.gz
gcc-d40790c8ac4f81026252a119e11a104ffd49701f.tar.bz2
re PR rtl-optimization/70467 (Useless "and [esp],-1" emitted on AND with uint64_t variable)
PR rtl-optimization/70467 * ipa-pure-const.c (check_call): Handle internal calls even in ipa mode like in local mode. From-SVN: r235764
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-pure-const.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c979a06..5bf2ffa 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-05-02 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/70467
+ * ipa-pure-const.c (check_call): Handle internal calls even in
+ ipa mode like in local mode.
+
2016-05-02 Bernd Edlinger <bernd.edlinger@hotmail.de>
* doc/install.texi: Document supported in-tree gmp/mpfr/mpc versions.
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 7647a58..63fbf581 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -616,8 +616,10 @@ check_call (funct_state local, gcall *call, bool ipa)
/* Either callee is unknown or we are doing local analysis.
Look to see if there are any bits available for the callee (such as by
declaration or because it is builtin) and process solely on the basis of
- those bits. */
- else if (!ipa)
+ those bits. Handle internal calls always, those calls don't have
+ corresponding cgraph edges and thus aren't processed during
+ the propagation. */
+ else if (!ipa || gimple_call_internal_p (call))
{
enum pure_const_state_e call_state;
bool call_looping;