aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-07-02 09:04:20 +0200
committerMartin Liska <marxin@gcc.gnu.org>2018-07-02 07:04:20 +0000
commit61c74e84bb802ab0c63cc23705b1202f65453337 (patch)
tree2783059ff103ea10fc51c1a6f1eb994ae302c7f5 /gcc
parentb412559eaf51e1a6566dcbb16cca3ceba159343e (diff)
downloadgcc-61c74e84bb802ab0c63cc23705b1202f65453337.zip
gcc-61c74e84bb802ab0c63cc23705b1202f65453337.tar.gz
gcc-61c74e84bb802ab0c63cc23705b1202f65453337.tar.bz2
Revert 2 ::get to ::get_create for IPA summaries (PR ipa/86279).
2018-07-02 Martin Liska <mliska@suse.cz> PR ipa/86279 * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get. (propagate_nothrow): Likewise. 2018-07-02 Martin Liska <mliska@suse.cz> PR ipa/86279 * gcc.dg/ipa/pr86279.c: New test. From-SVN: r262298
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-pure-const.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/ipa/pr86279.c25
4 files changed, 38 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bc9edec..5c1b097 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2018-07-02 Martin Liska <mliska@suse.cz>
+ PR ipa/86279
+ * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
+ (propagate_nothrow): Likewise.
+
+2018-07-02 Martin Liska <mliska@suse.cz>
+
PR ipa/86323
* ipa-inline.c (early_inliner): Revert wrongly added ::get call.
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 714239f..dede783 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -923,8 +923,7 @@ malloc_candidate_p (function *fun, bool ipa)
cgraph_edge *cs = node->get_edge (call_stmt);
if (cs)
{
- ipa_call_summary *es = ipa_call_summaries->get (cs);
- gcc_assert (es);
+ ipa_call_summary *es = ipa_call_summaries->get_create (cs);
es->is_return_callee_uncaptured = true;
}
}
@@ -1803,7 +1802,7 @@ propagate_nothrow (void)
w = node;
while (w)
{
- funct_state w_l = funct_state_summaries->get (w);
+ funct_state w_l = funct_state_summaries->get_create (w);
if (!can_throw && !TREE_NOTHROW (w->decl))
{
/* Inline clones share declaration with their offline copies;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 967956f..a043fff 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2018-07-02 Martin Liska <mliska@suse.cz>
+ PR ipa/86279
+ * gcc.dg/ipa/pr86279.c: New test.
+
+2018-07-02 Martin Liska <mliska@suse.cz>
+
PR ipa/86323
* g++.dg/ipa/pr86323.C: New test.
diff --git a/gcc/testsuite/gcc.dg/ipa/pr86279.c b/gcc/testsuite/gcc.dg/ipa/pr86279.c
new file mode 100644
index 0000000..a936021
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ipa/pr86279.c
@@ -0,0 +1,25 @@
+/* PR ipa/86279 */
+/* { dg-do compile } */
+/* { dg-options "-fipa-pure-const" } */
+
+typedef __SIZE_TYPE__ size_t;
+extern inline __attribute__ ((__always_inline__))
+void *
+memset (void *x, int y, size_t z)
+{
+ return __builtin___memset_chk (x, y, z, __builtin_object_size (x, 0));
+}
+
+void
+foo (unsigned char *x, unsigned char *y, unsigned char *z,
+ unsigned char *w, unsigned int v, int u, int t)
+{
+ int i;
+ for (i = 0; i < t; i++)
+ {
+ memset (z, x[0], v);
+ memset (w, y[0], v);
+ x += u;
+ }
+ __builtin_memcpy (z, x, u);
+}