From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id DC57F3858C50; Wed, 8 Feb 2023 08:55:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DC57F3858C50 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1675846533; bh=5XC887CEj9uGi9z0dKczIEyR6TUIv+yQ14CfvcwZ3L0=; h=From:To:Subject:Date:From; b=p85zEGbQtCGVUxJXL04iHJkHk1vz1PBaQRYGcMnje0Fb1ubGNkMCyNBgwHDmxrO8G n3IVFT/N9o2ftrCn5IvGUtvKvQC+TQEeZUBlOBSLRqS2aMAD21z7TLRF+GO2OkwnEb Lhi2su+m5QcLxjIvWN6VTdg1NDSY3+t2ceLWy/FE= From: "tschwinge at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/108713] New: ICE during RTL pass: into_cfglayout for x86_64-pc-linux-gnu '-m32', C++ 'libgomp.c-c++-common/for-11.c' Date: Wed, 08 Feb 2023 08:55:30 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: rtl-optimization X-Bugzilla-Version: 13.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: tschwinge at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status keywords bug_severity priority component assigned_to reporter cc target_milestone Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D108713 Bug ID: 108713 Summary: ICE during RTL pass: into_cfglayout for x86_64-pc-linux-gnu '-m32', C++ 'libgomp.c-c++-common/for-11.c' Product: gcc Version: 13.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: tschwinge at gcc dot gnu.org CC: jakub at gcc dot gnu.org Target Milestone: --- With GCC sources based on 2023-01-27 commit 84eb39556cc8449e04b5f48bd5c131941a7a2529, with a bunch of local OMP changes= on top (but those shouldn't be touching the relevant area of code), standard bootstrap build, I've observed an ICE as follows on our x86_64-pc-linux-gnu testing system amd_ryzen1, in routine libgomp testing for '-m32': [...] spawn -ignore SIGHUP gcc -x c++ ../source-gcc/libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-11.c -m32 -foffload-options=3Damdgcn-amdhsa=3D-march=3Dgfx900 -I../source-gcc/libgomp/testsuite/../../include -I../source-gcc/libgomp/testsuite/.. -fmessage-length=3D0 -fno-diagnostics-show-caret -fdiagnostics-color=3Dnever -fopenmp -O2 -lstdc= ++ -lm -o ./for-11.exe during RTL pass: into_cfglayout In file included from ../source-gcc/libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-1.h= :13, from ../source-gcc/libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-5.c= :114, from ../source-gcc/libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-11.= c:4: =20=20=20 ../source-gcc/libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-2.h= : In function 'f34_ttdpfs_ds128_auto() [clone ._omp_fn.1]': =20=20=20 ../source-gcc/libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-2.h= :520:17: internal compiler error: Segmentation fault 0x16a482f crash_signal [...]/source-gcc/gcc/toplev.cc:314 0x268a3e2 compact_blocks() [...]/source-gcc/gcc/cfg.cc:182 0x26951cf cleanup_cfg(int) [...]/source-gcc/gcc/cfgcleanup.cc:3131 0x11b682a execute [...]/source-gcc/gcc/cfgrtl.cc:3703 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See for instructions. compiler exited with status 1 FAIL: libgomp.c++/../libgomp.c-c++-common/for-11.c (internal compiler error: Segmentation fault) [...] Nothing interesting in 'dmesg', as far as I can tell. 'gcc/cfgrtl.cc': 3693 class pass_into_cfg_layout_mode : public rtl_opt_pass 3694 { 3695 public: 3696 pass_into_cfg_layout_mode (gcc::context *ctxt) 3697 : rtl_opt_pass (pass_data_into_cfg_layout_mode, ctxt) 3698 {} 3699=20 3700 /* opt_pass methods: */ 3701 unsigned int execute (function *) final override 3702 { 3703 cfg_layout_initialize (0); 'gcc/cfgcleanup.cc': 3109 bool 3110 cleanup_cfg (int mode) 3111 { [...] 3131 compact_blocks (); 'gcc/cfg.cc': 167 void 168 compact_blocks (void) 169 { 170 int i; 171=20 172 SET_BASIC_BLOCK_FOR_FN (cfun, ENTRY_BLOCK, ENTRY_BLOCK_PTR_FOR_FN (cfun)); 173 SET_BASIC_BLOCK_FOR_FN (cfun, EXIT_BLOCK, EXIT_BLOCK_PTR_FOR_FN (cfun)); 174=20 175 if (df) 176 df_compact_blocks (); 177 else 178 { 179 basic_block bb; 180=20 181 i =3D NUM_FIXED_BLOCKS; 182 FOR_EACH_BB_FN (bb, cfun) 183 { 184 SET_BASIC_BLOCK_FOR_FN (cfun, i, bb); 185 bb->index =3D i; 186 i++; 187 } This is the first/only time I've seen this; the ICE doesn't reproduce now f= or a few manual re-invocations. Maybe just "cosmic rays"... A run with '-wrapper valgrind' did find a lot of stuff in IRA and LRA, but = it's a GCC build without '--enable-valgrind-annotations', so I'm not sure what t= hat means. [...] =3D=3D24856=3D=3D Conditional jump or move depends on uninitialised val= ue(s) =3D=3D24856=3D=3D at 0x14B18E5: mark_pseudo_regno_live(int) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14B3260: process_bb_node_lives(ira_loop_tree_= node*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x1491F28: ira_traverse_loop_tree(bool, ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*)) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14B45BF: ira_create_allocno_live_ranges() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x1496424: ira_build() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x148DB0E: (anonymous namespace)::pass_ira::execute(function*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A332A: execute_one_pass(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C1F: execute_pass_list_1(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C31: execute_pass_list_1(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C58: execute_pass_list(function*, opt_pas= s*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x11D87D5: cgraph_node::expand() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x11D9E9A: symbol_table::compile() [clone .part= .0] (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D=20 =3D=3D24856=3D=3D Conditional jump or move depends on uninitialised val= ue(s) =3D=3D24856=3D=3D at 0x14B17F8: make_object_live(ira_object*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14B1901: mark_pseudo_regno_live(int) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14B3260: process_bb_node_lives(ira_loop_tree_= node*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x1491F28: ira_traverse_loop_tree(bool, ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*)) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14B45BF: ira_create_allocno_live_ranges() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x1496424: ira_build() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x148DB0E: (anonymous namespace)::pass_ira::execute(function*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A332A: execute_one_pass(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C1F: execute_pass_list_1(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C31: execute_pass_list_1(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C58: execute_pass_list(function*, opt_pas= s*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x11D87D5: cgraph_node::expand() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D=20 =3D=3D24856=3D=3D Use of uninitialised value of size 8 =3D=3D24856=3D=3D at 0x14B18EA: mark_pseudo_regno_live(int) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14B3260: process_bb_node_lives(ira_loop_tree_= node*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x1491F28: ira_traverse_loop_tree(bool, ira_loop_tree_node*, void (*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*)) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14B45BF: ira_create_allocno_live_ranges() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x1496424: ira_build() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x148DB0E: (anonymous namespace)::pass_ira::execute(function*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A332A: execute_one_pass(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C1F: execute_pass_list_1(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C31: execute_pass_list_1(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C58: execute_pass_list(function*, opt_pas= s*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x11D87D5: cgraph_node::expand() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x11D9E9A: symbol_table::compile() [clone .part= .0] (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) [...] =3D=3D24856=3D=3D Use of uninitialised value of size 8 =3D=3D24856=3D=3D at 0x149F1DB: ira_build_conflicts() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x1496A74: ira_build() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x148DB0E: (anonymous namespace)::pass_ira::execute(function*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A332A: execute_one_pass(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C1F: execute_pass_list_1(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C31: execute_pass_list_1(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C58: execute_pass_list(function*, opt_pas= s*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x11D87D5: cgraph_node::expand() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x11D9E9A: symbol_table::compile() [clone .part= .0] (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x11DC8B7: symbol_table::finalize_compilation_u= nit() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x16A4AEF: compile_file() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0xE07081: toplev::main(int, char**) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D=20 =3D=3D24856=3D=3D Conditional jump or move depends on uninitialised val= ue(s) =3D=3D24856=3D=3D at 0x14F3B2D: update_pseudo_point(int, int, point_= type) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14F440D: process_bb_lives(basic_block_def*, i= nt&, bool) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14F659A: lra_create_live_ranges_1(bool, bool)= (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14F713F: lra_create_live_ranges(bool, bool) (= in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14D4BEF: lra(_IO_FILE*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x14867F9: (anonymous namespace)::pass_reload::execute(function*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A332A: execute_one_pass(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C1F: execute_pass_list_1(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C31: execute_pass_list_1(opt_pass*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x15A3C58: execute_pass_list(function*, opt_pas= s*) (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x11D87D5: cgraph_node::expand() (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) =3D=3D24856=3D=3D by 0x11D9E9A: symbol_table::compile() [clone .part= .0] (in [...]/install/libexec/gcc/x86_64-pc-linux-gnu/13.0.1/cc1plus) [...] =3D=3D24856=3D=3D More than 100 errors detected. Subsequent errors =3D=3D24856=3D=3D will still be recorded, but in less detail than befor= e. [...] There are no missing commits for 'gcc/cfg*' files, and for 'gcc/ira* gcc/lr= a*' only PR103541 commit r13-5730-gf661c0bb6371f355966a67b5ce71398e80792948 "RA: Implement reuse of equivalent memory for caller saves optimization", which doesn't immediately look relevant. Do you think this is worth chasing down, or let it be, and only re-open sho= uld I run into this again?=