re PR rtl-optimization/70467 (Useless "and [esp],-1" emitted on AND with uint64_t...
authorJakub Jelinek <jakub@redhat.com>
Mon, 2 May 2016 16:17:02 +0000 (18:17 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 2 May 2016 16:17:02 +0000 (18:17 +0200)
PR rtl-optimization/70467
* ipa-pure-const.c (check_call): Handle internal calls even in
ipa mode like in local mode.

From-SVN: r235764

gcc/ChangeLog
gcc/ipa-pure-const.c

index c979a06c5e9989905e647b7733e81b3bf4bab5f4..5bf2ffa7c35e954170b953c890f3a2bed4984eef 100644 (file)
@@ -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.
index 7647a58fb26ede457aa54b4bf5a9396da711df3f..63fbf581c71e41cce6ea7879c542ae5d506b55fb 100644 (file)
@@ -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;