summaryrefslogtreecommitdiff
path: root/gcc/ipa-pure-const.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2016-05-02 16:17:02 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2016-05-02 16:17:02 +0000
commit621733d8bfd176458ac8a1682910dae00d0e3215 (patch)
tree31e0a2f76e9cd3c79a5cc2a312aca0859da30ed4 /gcc/ipa-pure-const.c
parent4b2246ef8ab1687ade4dfeaa82b1da3934e74213 (diff)
downloadgcc-621733d8bfd176458ac8a1682910dae00d0e3215.tar.gz
PR rtl-optimization/70467
* ipa-pure-const.c (check_call): Handle internal calls even in ipa mode like in local mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235764 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa-pure-const.c')
-rw-r--r--gcc/ipa-pure-const.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 7647a58fb26..63fbf581c71 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;