Summary: | [8 Regression] ICE on valid code in subbinfo_with_vtable_at_offset at ipa-devirt.c:2760 since r256685 | ||
---|---|---|---|
Product: | gcc | Reporter: | Martin Liška <marxin> |
Component: | lto | Assignee: | Richard Biener <rguenth> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | hubicka, rguenth |
Priority: | P3 | Keywords: | ice-on-valid-code |
Version: | 10.0 | ||
Target Milestone: | 8.4 | ||
Host: | Target: | ||
Build: | Known to work: | 10.0, 7.4.0, 8.3.1, 9.2.1 | |
Known to fail: | 8.3.0, 9.1.0, 9.2.0 | Last reconfirmed: | 2019-08-06 00:00:00 |
Description
Martin Liška
2019-08-06 08:19:12 UTC
I will have a look. TYPE_BINFO (DECL_CONTEXT (vtable)) is NULL. DECL_CONTEXT is BDS_Mesh here, from the -O0 compile where it is cleared here: static void free_lang_data_in_type (tree type, class free_lang_data_d *fld) { ... if (TYPE_BINFO (type)) { free_lang_data_in_binfo (TYPE_BINFO (type)); /* We need to preserve link to bases and virtual table for all polymorphic types to make devirtualization machinery working. */ if (!BINFO_VTABLE (TYPE_BINFO (type)) || !flag_devirtualize) TYPE_BINFO (type) = NULL; so I guess that flag_devirtualize is to blame since it may differ between CUs and type merging may chose the instance from a !flag_devirtualize one. A fix could be as simple as removing the !flag_devirtualize case. Honza?
>
> so I guess that flag_devirtualize is to blame since it may differ between
> CUs and type merging may chose the instance from a !flag_devirtualize one.
> A fix could be as simple as removing the !flag_devirtualize case.
Yes, the removal of '!flag_devirtualize' looks logical to me.
*** Bug 91387 has been marked as a duplicate of this bug. *** Author: rguenth Date: Mon Aug 12 11:02:21 2019 New Revision: 274310 URL: https://gcc.gnu.org/viewcvs?rev=274310&root=gcc&view=rev Log: 2019-08-12 Richard Biener <rguenther@suse.de> PR lto/91375 * tree.c (free_lang_data_in_type): Do not free TYPE_BINFO dependent on flag_devirtualize. Modified: trunk/gcc/ChangeLog trunk/gcc/tree.c Author: rguenth Date: Mon Aug 12 12:59:08 2019 New Revision: 274311 URL: https://gcc.gnu.org/viewcvs?rev=274311&root=gcc&view=rev Log: 2019-08-12 Richard Biener <rguenther@suse.de> Backport from mainline 2019-08-12 Richard Biener <rguenther@suse.de> PR lto/91375 * tree.c (free_lang_data_in_type): Do not free TYPE_BINFO dependent on flag_devirtualize. 2019-08-12 Richard Biener <rguenther@suse.de> PR driver/91130 * lto-wrapper.c (get_options_from_collect_gcc_options): Remove lang_mask option, always use CL_DRIVER. (find_and_merge_options): Adjust. (run_gcc): Likewise. 2019-08-07 Richard Earnshaw <rearnsha@arm.com> PR driver/91130 * lto-wrapper.c (find_and_merge_options): Use CL_DRIVER when processing COLLECT_GCC_OPTIONS. (run_gcc): Likewise. Modified: branches/gcc-9-branch/gcc/ChangeLog branches/gcc-9-branch/gcc/lto-wrapper.c branches/gcc-9-branch/gcc/tree.c Author: rguenth Date: Fri Aug 30 11:39:19 2019 New Revision: 275100 URL: https://gcc.gnu.org/viewcvs?rev=275100&root=gcc&view=rev Log: 2019-08-30 Richard Biener <rguenther@suse.de> Backport from mainline 2019-08-12 Richard Biener <rguenther@suse.de> PR lto/91375 * tree.c (free_lang_data_in_type): Do not free TYPE_BINFO dependent on flag_devirtualize. 2019-07-31 Richard Biener <rguenther@suse.de> PR tree-optimization/91293 * tree-vect-slp.c (vect_build_slp_tree_2): Do not swap operands of reduction stmts. * gcc.dg/vect/pr91293-1.c: New testcase. * gcc.dg/vect/pr91293-2.c: Likewise. * gcc.dg/vect/pr91293-3.c: Likewise. 2019-07-31 Richard Biener <rguenther@suse.de> PR tree-optimization/91280 * tree-ssa-structalias.c (get_constraint_for_component_ref): Decompose MEM_REF manually for offset handling. * g++.dg/torture/pr91280.C: New testcase. 2019-07-19 Richard Biener <rguenther@suse.de> PR tree-optimization/91200 * tree-ssa-phiopt.c (cond_store_replacement): Check we have no PHI nodes in middle-bb. * gcc.dg/torture/pr91200.c: New testcase. 2019-07-15 Richard Biener <rguenther@suse.de> PR middle-end/91162 * tree-cfg.c (move_block_to_fn): When releasing a virtual PHI node make sure to replace all uses with something valid. * gcc.dg/autopar/pr91162.c: New testcase. 2019-07-11 Richard Biener <rguenther@suse.de> PR middle-end/91131 * gimplify.c (gimplify_compound_literal_expr): Force a temporary when the object is volatile and we have not cleared it even though there are no nonzero elements. * gcc.target/i386/pr91131.c: New testcase. 2019-07-10 Richard Biener <rguenther@suse.de> PR tree-optimization/91126 * tree-ssa-sccvn.c (vn_reference_lookup_3): Adjust native encoding offset for BYTES_BIG_ENDIAN. * gcc.dg/torture/pr91126.c: New testcase. Added: branches/gcc-8-branch/gcc/testsuite/g++.dg/torture/pr91280.C branches/gcc-8-branch/gcc/testsuite/gcc.dg/autopar/pr91162.c branches/gcc-8-branch/gcc/testsuite/gcc.dg/torture/pr91126.c branches/gcc-8-branch/gcc/testsuite/gcc.dg/torture/pr91200.c branches/gcc-8-branch/gcc/testsuite/gcc.dg/vect/pr91293-1.c branches/gcc-8-branch/gcc/testsuite/gcc.dg/vect/pr91293-2.c branches/gcc-8-branch/gcc/testsuite/gcc.dg/vect/pr91293-3.c branches/gcc-8-branch/gcc/testsuite/gcc.target/i386/pr91131.c Modified: branches/gcc-8-branch/gcc/ChangeLog branches/gcc-8-branch/gcc/gimplify.c branches/gcc-8-branch/gcc/testsuite/ChangeLog branches/gcc-8-branch/gcc/tree-cfg.c branches/gcc-8-branch/gcc/tree-ssa-phiopt.c branches/gcc-8-branch/gcc/tree-ssa-sccvn.c branches/gcc-8-branch/gcc/tree-ssa-structalias.c branches/gcc-8-branch/gcc/tree-vect-slp.c branches/gcc-8-branch/gcc/tree.c Fixed. |