diff options
author | Martin Liska <mliska@suse.cz> | 2018-07-02 09:04:20 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-07-02 07:04:20 +0000 |
commit | 61c74e84bb802ab0c63cc23705b1202f65453337 (patch) | |
tree | 2783059ff103ea10fc51c1a6f1eb994ae302c7f5 /gcc | |
parent | b412559eaf51e1a6566dcbb16cca3ceba159343e (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa-pure-const.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ipa/pr86279.c | 25 |
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); +} |