https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97953

--- Comment #16 from Martin Liška <marxin at gcc dot gnu.org> ---
Then you will see the following diff in optimized dump:

--- good        2020-11-25 16:27:16.795544128 +0100
+++ bad 2020-11-25 16:26:59.723620747 +0100
@@ -17022,7 +17022,6 @@

 ;; Function rewrite_use_nonlinear_expr
(_ZL26rewrite_use_nonlinear_exprP11ivopts_dataP6iv_useP7iv_cand,
funcdef_no=3488, decl_uid=138891, cgraph_uid=2628, symbol_order=2806)

-Removing basic block 55
 Removing basic block 56
 Removing basic block 57
 Removing basic block 58
@@ -17049,6 +17048,10 @@
 Removing basic block 79
 Removing basic block 80
 Removing basic block 81
+Removing basic block 82
+Removing basic block 83
+Removing basic block 84
+Removing basic block 85
 __attribute__((noipa, noinline, noclone, no_icf))
 rewrite_use_nonlinear_expr (struct ivopts_data * data, struct iv_use * use,
struct iv_cand * cand)
 {
@@ -17182,6 +17185,9 @@
   struct gimple * pretmp_236;
   unsigned char _237;
   struct gimple * _239;
+  unsigned char _265;
+  struct gimple * prephitmp_268;
+  unsigned char _269;
   struct gimple * prephitmp_270;
   struct gimple * pretmp_272;
   struct gimple * _287;
@@ -17252,7 +17258,7 @@
   if (_11 == _12)
     goto <bb 11>; [30.00%]
   else
-    goto <bb 28>; [70.00%]
+    goto <bb 55>; [70.00%]

   <bb 11> [local count: 109521665]:
   _118 = MEM[(const struct gassign *)_12].D.92331.op[0];
@@ -17364,19 +17370,19 @@
   <bb 27> [local count: 583887]:
   pretmp_236 = use_88(D)->stmt;

-  <bb 28> [local count: 972093934]:
-  # prephitmp_15 = PHI <pretmp_228(9), _12(10), pretmp_199(25),
pretmp_236(27), pretmp_19(23)>
+  <bb 28> [local count: 716543374]:
+  # prephitmp_15 = PHI <pretmp_228(9), pretmp_19(23), pretmp_199(25),
pretmp_236(27)>
   _184 = MEM[(const struct gimple *)prephitmp_15].code;
   if (_184 == 6)
-    goto <bb 36>; [44.98%]
+    goto <bb 36>; [25.49%]
   else
-    goto <bb 29>; [55.02%]
+    goto <bb 29>; [74.51%]

-  <bb 29> [local count: 972093934]:
+  <bb 29> [local count: 971122338]:
   if (_184 == 18)
-    goto <bb 30>; [99.90%]
+    goto <bb 30>; [100.00%]
   else
-    goto <bb 38>; [0.10%]
+    goto <bb 38>; [0.00%]

   <bb 30> [local count: 534347641]:
   _190 = MEM[(union tree_node * *)prephitmp_15 + 48B];
@@ -17431,17 +17437,19 @@
   goto <bb 39>; [100.00%]

   <bb 36> [local count: 437211681]:
-  pretmp_211 = MEM[(const struct gassign *)prephitmp_15].D.92331.op[0];
+  # prephitmp_268 = PHI <prephitmp_15(28), _12(55)>
+  pretmp_211 = MEM[(const struct gassign *)prephitmp_268].D.92331.op[0];

   <bb 37> [local count: 534347641]:
-  # _287 = PHI <prephitmp_15(36), _12(13), _12(15), _12(19), _12(20)>
+  # _287 = PHI <prephitmp_268(36), _12(13), _12(15), _12(19), _12(20)>
   # prephitmp_212 = PHI <pretmp_211(36), _118(13), _118(15), _118(19),
_118(20)>
   bsi = gsi_for_stmt (_287);
   pretmp_272 = use_88(D)->stmt;
   goto <bb 39>; [100.00%]

   <bb 38> [local count: 534606]:
-  retval.1249_113 = (int) _184;
+  # _265 = PHI <_184(29), _269(55)>
+  retval.1249_113 = (int) _265;
   internal_error ("XXXXXX, code==%d\n", retval.1249_113);

   <bb 39> [local count: 887017088]:
@@ -17607,6 +17615,13 @@
   _18 ={v} MEM[(struct gimple * *)0B];
   __builtin_trap ();

+  <bb 55> [local count: 255550560]:
+  _269 = MEM[(const struct gimple *)_12].code;
+  if (_269 == 6)
+    goto <bb 36>; [99.62%]
+  else
+    goto <bb 38>; [0.38%]
+
 }

Reply via email to