public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin @ 2023-08-19 14:16 fxcoudert at gcc dot gnu.org 2023-08-19 14:17 ` [Bug c++/111075] " fxcoudert at gcc dot gnu.org ` (8 more replies) 0 siblings, 9 replies; 10+ messages in thread From: fxcoudert at gcc dot gnu.org @ 2023-08-19 14:16 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111075 Bug ID: 111075 Summary: ICE on g++.dg/torture/tail-padding1.C on darwin Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: fxcoudert at gcc dot gnu.org Target Milestone: --- ICE on valid C++ code, reduced from the test failure of g++.dg/torture/tail-padding1.C observed on x86_64-apple-darwin20 (see for example at https://gcc.gnu.org/pipermail/gcc-testresults/2023-August/793205.html): $ cat z.C struct X { ~X() {} int n; char d; }; struct Y { Y(); char c[3]; }; struct Z : X, virtual Y { Z(); }; X f() { X nrvo; __builtin_memset(&nrvo, 0, sizeof(X)); return nrvo; } Z::Z() : Y(), X(f()) {} $ /tmp/irun/bin/g++ -Os z.C z.C: In copy constructor ‘constexpr X::X(const X&)’: z.C:1:8: internal compiler error: in cxx_eval_call_expression, at cp/constexpr.cc:2918 1 | struct X { ~X() {} int n; char d; }; | ^ ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/111075] ICE on g++.dg/torture/tail-padding1.C on darwin 2023-08-19 14:16 [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin fxcoudert at gcc dot gnu.org @ 2023-08-19 14:17 ` fxcoudert at gcc dot gnu.org 2023-09-08 20:52 ` fxcoudert at gcc dot gnu.org ` (7 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: fxcoudert at gcc dot gnu.org @ 2023-08-19 14:17 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111075 Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target| |x86_64-apple-darwin20 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2023-08-19 Build| |x86_64-apple-darwin20 Keywords| |ice-on-valid-code Known to fail| |14.0 Host| |x86_64-apple-darwin20 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/111075] ICE on g++.dg/torture/tail-padding1.C on darwin 2023-08-19 14:16 [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin fxcoudert at gcc dot gnu.org 2023-08-19 14:17 ` [Bug c++/111075] " fxcoudert at gcc dot gnu.org @ 2023-09-08 20:52 ` fxcoudert at gcc dot gnu.org 2024-03-04 13:01 ` [Bug c++/111075] [14 Regression] " rguenth at gcc dot gnu.org ` (6 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: fxcoudert at gcc dot gnu.org @ 2023-09-08 20:52 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111075 --- Comment #1 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> --- Preprocessed source: % cat a-tail-padding1.ii # 0 "/Users/fx/gcc-upstream/gcc/testsuite/g++.dg/torture/tail-padding1.C" # 0 "<built-in>" # 0 "<command-line>" # 1 "/Users/fx/gcc-upstream/gcc/testsuite/g++.dg/torture/tail-padding1.C" struct X { ~X() {} int n; char d; }; struct Y { Y(); char c[3]; }; struct Z : X, virtual Y { Z(); }; X f() { X nrvo; __builtin_memset(&nrvo, 0, sizeof(X)); return nrvo; } Z::Z() : Y(), X(f()) {} Y::Y() { c[0] = 1; } int main() { Z z; if (z.c[0] != 1) __builtin_abort (); } Backtrace of the ICE: * frame #0: 0x0000000101b76378 cc1plus`internal_error(char const*, ...) [inlined] auto_diagnostic_group::auto_diagnostic_group(this=<unavailable>) at diagnostic.cc:2320:14 frame #1: 0x0000000101b76378 cc1plus`internal_error(gmsgid="in %s, at %s:%d") frame #2: 0x0000000101f92296 cc1plus`fancy_abort(file="/Users/fx/gcc-upstream/gcc/cp/constexpr.cc", line=2918, function="cxx_eval_call_expression") at diagnostic.cc:2311:18 frame #3: 0x0000000101c8254e cc1plus`::__second_sect_of_cxx_eval_call_expression() at constexpr.cc:2918:3 frame #4: 0x0000000100054f3b cc1plus`::cxx_eval_constant_expression(ctx=0x00007ff7bfefe500, t=<unavailable>, lval=vc_prvalue, non_constant_p=0x00007ff7bfefe4ee, overflow_p=0x00007ff7bfefe4ef, jump_target=0x0000000000000000) at constexpr.cc:7257:36 frame #5: 0x0000000100060156 cc1plus`::cxx_eval_outermost_constant_expr(t=0x00000001045b9880, allow_non_constant=true, strict=<unavailable>, manifestly_const_eval=mce_false, constexpr_dtor=false, object=0x0000000000000000) at constexpr.cc:8500:36 frame #6: 0x000000010006601c cc1plus`maybe_constant_value(t=<unavailable>, decl=0x0000000000000000, manifestly_const_eval=mce_false) at constexpr.cc:8788:45 frame #7: 0x0000000100091cf1 cc1plus`::cp_fold(x=<unavailable>, flags=<unavailable>) at cp-gimplify.cc:3052:31 frame #8: 0x0000000100091f46 cc1plus`::cp_fold_r(stmt_p=0x00000001045a3ca0, walk_subtrees=0x00007ff7bfefe8dc, data_=0x00007ff7bfefe9a0) at cp-gimplify.cc:1077:28 frame #9: 0x0000000101952268 cc1plus`walk_tree_1(tp=<unavailable>, func=<unavailable>, data=0x00007ff7bfefe9a0, pset=<unavailable>, lh=(cc1plus`cp_walk_subtrees(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*) at tree.cc:5453:1))(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) at tree.cc:11398:25 frame #10: 0x0000000101952f0a cc1plus`walk_tree_1(tp=<unavailable>, func=<unavailable>, data=0x00007ff7bfefe9a0, pset=<unavailable>, lh=(cc1plus`cp_walk_subtrees(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*) at tree.cc:5453:1))(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) at tree.cc:11514:4 frame #11: 0x0000000100087c18 cc1plus`cp_fold_function(fndecl=0x00000001045be000) at cp-gimplify.cc:1199:3 frame #12: 0x00000001000dc0b9 cc1plus`finish_function(inline_p=<unavailable>) at decl.cc:18345:22 frame #13: 0x00000001001938bf cc1plus`::maybe_thunk_body(fn=0x00000001045b4e00, force=<unavailable>) at optimize.cc:445:26 frame #14: 0x000000010019443a cc1plus`maybe_clone_body(fn=0x00000001045b4e00) at optimize.cc:557:38 frame #15: 0x0000000100278978 cc1plus`expand_or_defer_fn_1(fn=0x00000001045b4e00) at semantics.cc:4901:24 frame #16: 0x0000000100278c5e cc1plus`expand_or_defer_fn(fn=0x00000001045b4e00) at semantics.cc:4932:28 frame #17: 0x000000010013c6d8 cc1plus`synthesize_method(fndecl=<unavailable>) at method.cc:1842:24 frame #18: 0x00000001000ee7c2 cc1plus`mark_used(decl=0x00000001045be000, complain=<unavailable>) at decl2.cc:5855:25 frame #19: 0x000000010002016b cc1plus`::build_over_call(cand=<unavailable>, flags=<unavailable>, complain=3) at call.cc:10403:21 frame #20: 0x000000010001d900 cc1plus`build_new_method_call(instance=0x00000001044305d0, fns=0x0000000104591f20, args=<unavailable>, conversion_path=<unavailable>, flags=1, fn_p=0x0000000000000000, complain=3) at call.cc:11710:31 frame #21: 0x000000010001eac0 cc1plus`build_special_member_call(instance=<unavailable>, name=0x0000000104422100, args=0x00007ff7bfeff110, binfo=<unavailable>, flags=1, complain=3) at call.cc:11190:31 frame #22: 0x000000010010fc1d cc1plus`::expand_aggr_init_1(tree, tree, tree, tree, int, tsubst_flags_t) at init.cc:2203:40 frame #23: 0x000000010010fb34 cc1plus`::expand_aggr_init_1(binfo=0x00000001045b02a0, true_exp=0x0000000000000000, exp=0x00000001044305d0, init=<unavailable>, flags=1, complain=3) frame #24: 0x0000000100117964 cc1plus`emit_mem_initializers(mem_inits=<unavailable>) at init.cc:1562:23 frame #25: 0x00000001001ebec0 cc1plus`::cp_parser_ctor_initializer_opt_and_function_body(parser=0x00000001045ac150, in_function_try_block=false) at parser.cc:17188:29 frame #26: 0x00000001001ed6e0 cc1plus`::cp_parser_function_definition_after_declarator(parser=0x00000001045ac150, inline_p=false) at parser.cc:32243:7 frame #27: 0x00000001001eecbe cc1plus`::cp_parser_init_declarator(parser=0x00000001045ac150, flags=<unavailable>, decl_specifiers=0x00007ff7bfeff4b0, checks=0x0000000000000000, function_definition_allowed_p=<unavailable>, member_p=false, declares_class_or_enum=0, function_definition_p=0x00007ff7bfeff550, maybe_range_for_decl=0x0000000000000000, init_loc=0x00007ff7bfeff474, auto_result=0x00007ff7bfeff5f0) at parser.cc:32160:59 frame #28: 0x00000001001bcf23 cc1plus`::cp_parser_simple_declaration(parser=0x00000001045ac150, function_definition_allowed_p=<unavailable>, maybe_range_for_decl=0x0000000000000000) at parser.cc:15607:40 frame #29: 0x00000001001f63ed cc1plus`::cp_parser_declaration(parser=0x00000001045ac150, prefix_attrs=0x0000000000000000) at parser.cc:15293:33 frame #30: 0x00000001001f8bf4 cc1plus`c_parse_file() at parser.cc:15314:27 frame #31: 0x000000010034fede cc1plus`c_common_parse_file() at c-opts.cc:1257:20 frame #32: 0x00000001015b5ce4 cc1plus`::compile_file() at toplev.cc:444:25 frame #33: 0x0000000101f96942 cc1plus`toplev::main(this=0x00007ff7bfeff92e, argc=<unavailable>, argv=<unavailable>) at toplev.cc:2126:24 frame #34: 0x0000000101f9712e cc1plus`main(argc=6, argv=0x00007ff7bfeffa78) at main.cc:39:23 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/111075] [14 Regression] ICE on g++.dg/torture/tail-padding1.C on darwin 2023-08-19 14:16 [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin fxcoudert at gcc dot gnu.org 2023-08-19 14:17 ` [Bug c++/111075] " fxcoudert at gcc dot gnu.org 2023-09-08 20:52 ` fxcoudert at gcc dot gnu.org @ 2024-03-04 13:01 ` rguenth at gcc dot gnu.org 2024-03-07 23:24 ` law at gcc dot gnu.org ` (5 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: rguenth at gcc dot gnu.org @ 2024-03-04 13:01 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111075 Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |14.0 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/111075] [14 Regression] ICE on g++.dg/torture/tail-padding1.C on darwin 2023-08-19 14:16 [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin fxcoudert at gcc dot gnu.org ` (2 preceding siblings ...) 2024-03-04 13:01 ` [Bug c++/111075] [14 Regression] " rguenth at gcc dot gnu.org @ 2024-03-07 23:24 ` law at gcc dot gnu.org 2024-03-13 13:26 ` mpolacek at gcc dot gnu.org ` (4 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: law at gcc dot gnu.org @ 2024-03-07 23:24 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111075 Jeffrey A. Law <law at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P1 CC| |law at gcc dot gnu.org ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/111075] [14 Regression] ICE on g++.dg/torture/tail-padding1.C on darwin 2023-08-19 14:16 [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin fxcoudert at gcc dot gnu.org ` (3 preceding siblings ...) 2024-03-07 23:24 ` law at gcc dot gnu.org @ 2024-03-13 13:26 ` mpolacek at gcc dot gnu.org 2024-03-27 15:30 ` jakub at gcc dot gnu.org ` (3 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: mpolacek at gcc dot gnu.org @ 2024-03-13 13:26 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111075 Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P1 |P2 CC| |mpolacek at gcc dot gnu.org --- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- darwin -> probably not P1. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/111075] [14 Regression] ICE on g++.dg/torture/tail-padding1.C on darwin 2023-08-19 14:16 [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin fxcoudert at gcc dot gnu.org ` (4 preceding siblings ...) 2024-03-13 13:26 ` mpolacek at gcc dot gnu.org @ 2024-03-27 15:30 ` jakub at gcc dot gnu.org 2024-03-27 16:30 ` [Bug c++/111075] [13/14 " jakub at gcc dot gnu.org ` (2 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: jakub at gcc dot gnu.org @ 2024-03-27 15:30 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111075 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I can reproduce with a cross, doesn't ICE with -Os -fno-elide-constructors, on x86_64-linux doesn't ICE with/without -Os -f{,no-}elide-constructors. The ICE is on 3025 /* We used to shortcut trivial constructor/op= here, but nowadays 3026 we can only get a trivial function here with -fno-elide-constructors. */ 3027 gcc_checking_assert (!trivial_fn_p (fun) 3028 || !flag_elide_constructors 3029 /* We don't elide constructors when processing 3030 a noexcept-expression. */ 3031 || cp_noexcept_operand); where fun is X::X(X const&) and is trivial. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/111075] [13/14 Regression] ICE on g++.dg/torture/tail-padding1.C on darwin 2023-08-19 14:16 [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin fxcoudert at gcc dot gnu.org ` (5 preceding siblings ...) 2024-03-27 15:30 ` jakub at gcc dot gnu.org @ 2024-03-27 16:30 ` jakub at gcc dot gnu.org 2024-03-27 17:36 ` jakub at gcc dot gnu.org 2024-05-21 9:16 ` [Bug c++/111075] [13/14/15 " jakub at gcc dot gnu.org 8 siblings, 0 replies; 10+ messages in thread From: jakub at gcc dot gnu.org @ 2024-03-27 16:30 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111075 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[14 Regression] ICE on |[13/14 Regression] ICE on |g++.dg/torture/tail-padding |g++.dg/torture/tail-padding |1.C on darwin |1.C on darwin Target Milestone|14.0 |13.3 --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Actually, it doesn't seem to be a regression from 13.x, if one builds 13 branch with --enable-checking=yes rather than --enable-checking=release, it ICEs too. 12 branch doesn't ICE though. So P2 is right. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/111075] [13/14 Regression] ICE on g++.dg/torture/tail-padding1.C on darwin 2023-08-19 14:16 [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin fxcoudert at gcc dot gnu.org ` (6 preceding siblings ...) 2024-03-27 16:30 ` [Bug c++/111075] [13/14 " jakub at gcc dot gnu.org @ 2024-03-27 17:36 ` jakub at gcc dot gnu.org 2024-05-21 9:16 ` [Bug c++/111075] [13/14/15 " jakub at gcc dot gnu.org 8 siblings, 0 replies; 10+ messages in thread From: jakub at gcc dot gnu.org @ 2024-03-27 17:36 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111075 --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Started with r13-6145-gb2287a4d9a640fdc2caef6a067830ea65044deb7 I must say I have no idea what is different from this POV on Darwin vs. Linux. ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug c++/111075] [13/14/15 Regression] ICE on g++.dg/torture/tail-padding1.C on darwin 2023-08-19 14:16 [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin fxcoudert at gcc dot gnu.org ` (7 preceding siblings ...) 2024-03-27 17:36 ` jakub at gcc dot gnu.org @ 2024-05-21 9:16 ` jakub at gcc dot gnu.org 8 siblings, 0 replies; 10+ messages in thread From: jakub at gcc dot gnu.org @ 2024-05-21 9:16 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111075 Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|13.3 |13.4 --- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- GCC 13.3 is being released, retargeting bugs to GCC 13.4. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-05-21 9:16 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-08-19 14:16 [Bug c++/111075] New: ICE on g++.dg/torture/tail-padding1.C on darwin fxcoudert at gcc dot gnu.org 2023-08-19 14:17 ` [Bug c++/111075] " fxcoudert at gcc dot gnu.org 2023-09-08 20:52 ` fxcoudert at gcc dot gnu.org 2024-03-04 13:01 ` [Bug c++/111075] [14 Regression] " rguenth at gcc dot gnu.org 2024-03-07 23:24 ` law at gcc dot gnu.org 2024-03-13 13:26 ` mpolacek at gcc dot gnu.org 2024-03-27 15:30 ` jakub at gcc dot gnu.org 2024-03-27 16:30 ` [Bug c++/111075] [13/14 " jakub at gcc dot gnu.org 2024-03-27 17:36 ` jakub at gcc dot gnu.org 2024-05-21 9:16 ` [Bug c++/111075] [13/14/15 " jakub at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).