g++-9.0.0-alpha20190407 snapshot (r270192) ICEs when compiling the following testcase at any optimization level (except -Og) and w/ -g: struct cb { int yr; }; void * operator new (__SIZE_TYPE__, void *nq) { return nq; } void af (int xn) { new (&xn) cb { }; } % g++-9.0.0-alpha20190407 -O1 -g -c vquxpovp.cc <constructor 0x7fd5336356d8 type <record_type 0x7fd53360e690 cb asm_written type_5 type_6 SI size <integer_cst 0x7fd5334d9078 constant 32> unit-size <integer_cst 0x7fd5334d9090 constant 4> align:32 warn_if_not_align:0 symtab:860696976 alias-set 1 canonical-type 0x7fd53360e690 fields <function_decl 0x7fd533613f00 __dt type <method_type 0x7fd533628738> public abstract external autoinline decl_3 QI vquxpovp.cc:1:8 align:16 warn_if_not_align:0 context <record_type 0x7fd53360e690 cb> full-name "cb::~cb() noexcept (<uninstantiated>)" not-really-extern chain <function_decl 0x7fd533629100 __dt_base >> context <translation_unit_decl 0x7fd5334c4168 vquxpovp.cc> full-name "struct cb" X() X(constX&) this=(X&) n_parents=0 use_template=0 interface-unknown pointer_to_this <pointer_type 0x7fd53360ebd0> reference_to_this <reference_type 0x7fd5336282a0> chain <type_decl 0x7fd5335da688 cb>> constant static tree_0 length:0> during RTL pass: expand vquxpovp.cc: In function 'void af(int)': vquxpovp.cc:12:1: internal compiler error: in expand_debug_expr, at cfgexpand.c:5244 12 | af (int xn) | ^~ 0xb29d93 expand_debug_expr /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190407/work/gcc-9-20190407/gcc/cfgexpand.c:5244 0xb2a044 expand_debug_expr /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190407/work/gcc-9-20190407/gcc/cfgexpand.c:4560 0xb359e3 expand_debug_locations /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190407/work/gcc-9-20190407/gcc/cfgexpand.c:5442 0xb359e3 execute /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20190407/work/gcc-9-20190407/gcc/cfgexpand.c:6512 g++ 8.3, 7.4, 6.3 fail differently: % g++-8.3.0 -O1 -fchecking -g -c vquxpovp.cc vquxpovp.cc: In function 'void af(int)': vquxpovp.cc:12:1: error: invalid reference prefix af (int xn) ^~ {} vquxpovp.cc:14:3: note: in statement new (&xn) cb { }; ^~~~~~~~~~~~~~~~ xn_5 = VIEW_CONVERT_EXPR<int>({}); vquxpovp.cc:12: confused by earlier errors, bailing out
Confirmed. update-address-taken does, after CCP: af (int xn) { void * D.2359; - void * _2; <bb 2> [local count: 1073741824]: # DEBUG BEGIN_STMT # DEBUG D.2357 => 4 # DEBUG nq => &xn # DEBUG BEGIN_STMT - _4 = &xn; # DEBUG D.2357 => NULL # DEBUG nq => NULL - _2 = _4; - MEM[(struct cb *)_2] = {}; + xn_5 = VIEW_CONVERT_EXPR<int>({}); + # DEBUG xn => xn_5 return; which failed to "fold" the V_C_E. It does reach rhs = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (lhs), rhs); but this does nothing.
Mine.
Fixed on trunk sofar.
Author: rguenth Date: Thu Apr 25 11:15:35 2019 New Revision: 270569 URL: https://gcc.gnu.org/viewcvs?rev=270569&root=gcc&view=rev Log: 2019-04-25 Richard Biener <rguenther@suse.de> PR middle-end/90194 * match.pd: Add pattern to simplify view-conversion of an empty constructor. * g++.dg/torture/pr90194.C: New testcase. Added: trunk/gcc/testsuite/g++.dg/torture/pr90194.C Modified: trunk/gcc/ChangeLog trunk/gcc/match.pd trunk/gcc/testsuite/ChangeLog
Author: rguenth Date: Fri Aug 30 11:43:33 2019 New Revision: 275103 URL: https://gcc.gnu.org/viewcvs?rev=275103&root=gcc&view=rev Log: 2019-08-30 Richard Biener <rguenther@suse.de> Backport from mainline 2019-06-18 Richard Biener <rguenther@suse.de> PR debug/90900 * cfgexpand.c (expand_debug_expr): Treat NOTE_P DECL_RTL as if optimized away. * gcc.dg/gomp/pr90900.c: New testcase. 2019-05-15 Richard Biener <rguenther@suse.de> PR c/90474 * c-common.c (c_common_mark_addressable_vec): Also mark a COMPOUND_LITERAL_EXPR_DECL addressable similar to c_mark_addressable. 2019-04-29 Richard Biener <rguenther@suse.de> PR tree-optimization/90278 * tree-ssa-forwprop.c (pass_forwprop::execute): Transfer/clean EH on comparison simplification. * gcc.dg/torture/pr90278.c: New testcase. 2019-04-25 Richard Biener <rguenther@suse.de> PR middle-end/90194 * match.pd: Add pattern to simplify view-conversion of an empty constructor. * g++.dg/torture/pr90194.C: New testcase. Added: branches/gcc-8-branch/gcc/testsuite/g++.dg/torture/pr90194.C branches/gcc-8-branch/gcc/testsuite/gcc.dg/gomp/pr90900.c branches/gcc-8-branch/gcc/testsuite/gcc.dg/torture/pr90278.c Modified: branches/gcc-8-branch/gcc/ChangeLog branches/gcc-8-branch/gcc/c-family/ChangeLog branches/gcc-8-branch/gcc/c-family/c-common.c branches/gcc-8-branch/gcc/cfgexpand.c branches/gcc-8-branch/gcc/match.pd branches/gcc-8-branch/gcc/testsuite/ChangeLog branches/gcc-8-branch/gcc/tree-ssa-forwprop.c
Author: rguenth Date: Fri Aug 30 16:44:17 2019 New Revision: 275208 URL: https://gcc.gnu.org/viewcvs?rev=275208&root=gcc&view=rev Log: 2019-08-30 Richard Biener <rguenther@suse.de> Backport from mainline 2019-05-27 Richard Biener <rguenther@suse.de> PR tree-optimization/90637 * tree-ssa-sink.c (statement_sink_location): Honor the computed sink location for single-uses. * gcc.dg/gomp/pr90637.c: New testcase. 2019-06-21 Richard Biener <rguenther@suse.de> PR tree-optimization/90930 * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Set visited flag on new stmts to avoid re-processing them. 2019-05-15 Richard Biener <rguenther@suse.de> PR c/90474 * c-common.c (c_common_mark_addressable_vec): Also mark a COMPOUND_LITERAL_EXPR_DECL addressable similar to c_mark_addressable. 2019-04-25 Richard Biener <rguenther@suse.de> PR middle-end/90194 * match.pd: Add pattern to simplify view-conversion of an empty constructor. * g++.dg/torture/pr90194.C: New testcase. 2019-04-24 Richard Biener <rguenther@suse.de> PR middle-end/90213 * gimple-fold.c (fold_const_aggregate_ref_1): Do multiplication by size and BITS_PER_UNIT on poly-wide-ints. 2019-04-15 Richard Biener <rguenther@suse.de> PR tree-optimization/90071 * tree-ssa-reassoc.c (init_range_entry): Do not pick up abnormal operands from def stmts. * gcc.dg/torture/pr90071.c: New testcase. 2019-03-13 Richard Biener <rguenther@suse.de> PR middle-end/89677 * tree-scalar-evolution.c (simplify_peeled_chrec): Do not throw FP expressions at tree-affine. * gcc.dg/torture/pr89677.c: New testcase. Added: branches/gcc-7-branch/gcc/testsuite/g++.dg/torture/pr90194.C branches/gcc-7-branch/gcc/testsuite/gcc.dg/torture/pr89677.c branches/gcc-7-branch/gcc/testsuite/gcc.dg/torture/pr90071.c Modified: branches/gcc-7-branch/gcc/ChangeLog branches/gcc-7-branch/gcc/c-family/ChangeLog branches/gcc-7-branch/gcc/c-family/c-common.c branches/gcc-7-branch/gcc/gimple-fold.c branches/gcc-7-branch/gcc/match.pd branches/gcc-7-branch/gcc/testsuite/ChangeLog branches/gcc-7-branch/gcc/tree-scalar-evolution.c branches/gcc-7-branch/gcc/tree-ssa-reassoc.c branches/gcc-7-branch/gcc/tree-ssa-sink.c
Fixed.