diff options
author | David Malcolm <dmalcolm@redhat.com> | 2017-11-06 16:31:04 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2017-11-06 16:31:04 +0000 |
commit | de4381a4e91a5d827dd3b1cf6b290bc656848400 (patch) | |
tree | f21368d55d3c905d850039a8f9827c3e69d4f16d /gcc | |
parent | 3e2927a1b05739384d2080f46cd0836980911822 (diff) | |
download | gcc-de4381a4e91a5d827dd3b1cf6b290bc656848400.zip gcc-de4381a4e91a5d827dd3b1cf6b290bc656848400.tar.gz gcc-de4381a4e91a5d827dd3b1cf6b290bc656848400.tar.bz2 |
ipa-fnsummary.c: fix use-after-free crash (PR jit/82826)
gcc/ChangeLog:
PR jit/82826
* ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function.
* ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl.
* toplev.c: Include "ipa-fnsummary.h".
(toplev::finalize): Call ipa_fnsummary_c_finalize.
From-SVN: r254458
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ipa-fnsummary.c | 9 | ||||
-rw-r--r-- | gcc/ipa-fnsummary.h | 2 | ||||
-rw-r--r-- | gcc/toplev.c | 2 |
4 files changed, 21 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7c04aa9..9c3961a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2017-11-06 David Malcolm <dmalcolm@redhat.com> + + PR jit/82826 + * ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function. + * ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl. + * toplev.c: Include "ipa-fnsummary.h". + (toplev::finalize): Call ipa_fnsummary_c_finalize. + 2017-11-06 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/82838 diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c index f684110..5168886 100644 --- a/gcc/ipa-fnsummary.c +++ b/gcc/ipa-fnsummary.c @@ -3619,3 +3619,12 @@ make_pass_ipa_fn_summary (gcc::context *ctxt) { return new pass_ipa_fn_summary (ctxt); } + +/* Reset all state within ipa-fnsummary.c so that we can rerun the compiler + within the same process. For use by toplev::finalize. */ + +void +ipa_fnsummary_c_finalize (void) +{ + ipa_free_fn_summary (); +} diff --git a/gcc/ipa-fnsummary.h b/gcc/ipa-fnsummary.h index a794bd0..b345bbc 100644 --- a/gcc/ipa-fnsummary.h +++ b/gcc/ipa-fnsummary.h @@ -266,4 +266,6 @@ void estimate_node_size_and_time (struct cgraph_node *node, vec<inline_param_summary> inline_param_summary); +void ipa_fnsummary_c_finalize (void); + #endif /* GCC_IPA_FNSUMMARY_H */ diff --git a/gcc/toplev.c b/gcc/toplev.c index 81a7cf6..eff1690 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -83,6 +83,7 @@ along with GCC; see the file COPYING3. If not see #include "edit-context.h" #include "tree-pass.h" #include "dumpfile.h" +#include "ipa-fnsummary.h" #if defined(DBX_DEBUGGING_INFO) || defined(XCOFF_DEBUGGING_INFO) #include "dbxout.h" @@ -2236,6 +2237,7 @@ toplev::finalize (void) /* Needs to be called before cgraph_c_finalize since it uses symtab. */ ipa_reference_c_finalize (); + ipa_fnsummary_c_finalize (); cgraph_c_finalize (); cgraphunit_c_finalize (); |