[Bug target/89650] [9 Regression] ICE in pre_and_rev_post_order_compute, at cfganal.c:1055 since r269119
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89650 H.J. Lu changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #5 from H.J. Lu --- Fixed
[Bug target/89650] [9 Regression] ICE in pre_and_rev_post_order_compute, at cfganal.c:1055 since r269119
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89650 --- Comment #4 from hjl at gcc dot gnu.org --- Author: hjl Date: Thu Mar 14 20:38:52 2019 New Revision: 269694 URL: https://gcc.gnu.org/viewcvs?rev=269694&root=gcc&view=rev Log: i386: Handle REG_EH_REGION note When we split: (insn 18 17 76 2 (set (reg:SF 88 [ _19 ]) (float:SF (mem/c:SI (symbol_ref:DI ("d") [flags 0x2] ) [1 d+0 S4 A32]))) "x.ii":4:20 170 {*floatsisf2} (expr_list:REG_EH_REGION (const_int 2 [0x2]) (nil))) to (insn 94 17 18 2 (set (reg:V4SF 115) (vec_merge:V4SF (vec_duplicate:V4SF (float:SF (mem/c:SI (symbol_ref:DI ("d") [flags 0x2] ) [1 d+0 S4 A32]))) (reg:V4SF 114) (const_int 1 [0x1]))) "x.ii":4:20 -1 (nil)) (insn 18 94 76 2 (set (reg:SF 88 [ _19 ]) (subreg:SF (reg:V4SF 115) 0)) "x.ii":4:20 112 {*movsf_internal} (expr_list:REG_EH_REGION (const_int 2 [0x2]) (nil))) we must copy the REG_EH_REGION note to the first insn and split the block after the newly added insn. The REG_EH_REGION on the second insn will be removed later since it no longer traps. gcc/ PR target/89650 * config/i386/i386.c (remove_partial_avx_dependency): Handle REG_EH_REGION note. gcc/testsuite/ PR target/89650 * g++.target/i386/pr89650.C: New test. Added: trunk/gcc/testsuite/g++.target/i386/pr89650.C Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/i386.c trunk/gcc/testsuite/ChangeLog
[Bug target/89650] [9 Regression] ICE in pre_and_rev_post_order_compute, at cfganal.c:1055 since r269119
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89650 H.J. Lu changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed|2019-03-10 00:00:00 |2019-03-12 CC||hubicka at ucw dot cz Ever confirmed|0 |1 --- Comment #3 from H.J. Lu --- A patch is posted at https://gcc.gnu.org/ml/gcc-patches/2019-03/msg00534.html
[Bug target/89650] [9 Regression] ICE in pre_and_rev_post_order_compute, at cfganal.c:1055 since r269119
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89650 --- Comment #2 from 刘袋鼠 --- (In reply to Richard Biener from comment #1) > There are unreachable blocks which are not allowed for > pre_and_rev_post_order_compute. Somebody forgets to call cfg-cleanup here. Yes, pass_split1 strip off REG_EH_REGION before spilt1: (insn 18 94 102 2 (set (reg:SF 88 [ _19 ]) (subreg:SF (reg:V4SF 115) 0)) "../partial.i":4:20 112 {*movsf_internal} (expr_list:REG_EH_REGION (const_int 2 [0x2]) (nil))) after split1: (insn 18 94 102 2 (set (reg:SF 88 [ _19 ]) (subreg:SF (reg:V4SF 115) 0)) "../partial.i":4:20 112 {*movsf_internal} (nil)) but didn't cleanup_cfg, It's said in recog.c: 3017 default_rtl_profile (); 3018 if (changed) 3019{ 3020 find_many_sub_basic_blocks (blocks); 3021 3022 /* Splitting could drop an REG_EH_REGION if it potentially 3023 trapped in its original form, but does not in its split 3024 form. Consider a FLOAT_TRUNCATE which splits into a memory 3025 store/load pair and -fnon-call-exceptions. */ 3026=>if (need_cfg_cleanup) 3027cleanup_cfg (0); 3028} 3029 3030 checking_verify_flow_info (); 3031}
[Bug target/89650] [9 Regression] ICE in pre_and_rev_post_order_compute, at cfganal.c:1055 since r269119
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89650 --- Comment #1 from Richard Biener --- There are unreachable blocks which are not allowed for pre_and_rev_post_order_compute. Somebody forgets to call cfg-cleanup here.
[Bug target/89650] [9 Regression] ICE in pre_and_rev_post_order_compute, at cfganal.c:1055 since r269119
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89650 Martin Liška changed: What|Removed |Added Last reconfirmed||2019-3-10 CC||hjl at gcc dot gnu.org Known to work||8.3.0 Target Milestone|--- |9.0 Known to fail||9.0