[Bug rtl-optimization/88593] internal compiler error: in verify_dominators, at dominance.c:1184

2018-12-25 Thread amonakov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88593

--- Comment #4 from Alexander Monakov  ---
It seems to avoid this sort of gotchas cleanup_cfg should

  gcc_checking_assert (!dom_info_available_p (CDI_DOMINATORS));
  gcc_checking_assert (!dom_info_available_p (CDI_POST_DOMINATORS));

but maybe there's a deeper reason it's not done already — I cannot be sure.

[Bug rtl-optimization/88593] internal compiler error: in verify_dominators, at dominance.c:1184

2018-12-25 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88593

--- Comment #3 from H.J. Lu  ---
(In reply to Alexander Monakov from comment #2)
> cleanup_cfg may change the cfg and thus make cached dominance info stale,
> but it doesn't free/invalidate it.

Shouldn't cleanup_cfg be fixed?

[Bug rtl-optimization/88593] internal compiler error: in verify_dominators, at dominance.c:1184

2018-12-25 Thread amonakov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88593

Alexander Monakov  changed:

   What|Removed |Added

 CC||amonakov at gcc dot gnu.org

--- Comment #2 from Alexander Monakov  ---
cleanup_cfg may change the cfg and thus make cached dominance info stale, but
it doesn't free/invalidate it.

[Bug rtl-optimization/88593] internal compiler error: in verify_dominators, at dominance.c:1184

2018-12-25 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88593

H.J. Lu  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-12-25
   Target Milestone|--- |9.0
 Ever confirmed|0   |1

--- Comment #1 from H.J. Lu  ---
This patch:

diff --git a/gcc/mode-switching.c b/gcc/mode-switching.c
index 589fbeb0742..7c82d7a4b6f 100644
--- a/gcc/mode-switching.c
+++ b/gcc/mode-switching.c
@@ -509,6 +509,10 @@ optimize_mode_switching (void)
   basic_block pre_exit = 0;
   struct edge_list *edge_list = 0;

+  /* Mode switching doesn't use dominane info but can invalidate it in
+ different ways.  For simplicity, free dominance info here.  */
+  free_dominance_info (CDI_DOMINATORS);
+
   /* These bitmaps are used for the LCM algorithm.  */
   sbitmap *kill, *del, *insert, *antic, *transp, *comp;
   sbitmap *avin, *avout;

fixes ICE.