[Bug target/89650] [9 Regression] ICE in pre_and_rev_post_order_compute, at cfganal.c:1055 since r269119

2019-03-15 Thread hjl.tools at gmail dot com
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

2019-03-14 Thread hjl at gcc dot gnu.org
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

2019-03-11 Thread hjl.tools at gmail dot com
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

2019-03-11 Thread crazylht at gmail dot com
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

2019-03-11 Thread rguenth at gcc dot gnu.org
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

2019-03-10 Thread marxin at gcc dot gnu.org
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