[Bug fortran/97652] New: New pdt14 failure after g:617695cdc2b3d950f1e4deb5ea85d5cc302943f4

hubicka at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Oct 31 08:05:31 GMT 2020


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

            Bug ID: 97652
           Summary: New pdt14 failure after
                    g:617695cdc2b3d950f1e4deb5ea85d5cc302943f4
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hubicka at gcc dot gnu.org
  Target Milestone: ---

pdt14 is miscompiled with -fipa-modref.  This is triggered by handling fnspec,
but it seems to only trigger latent problem.

The only disambiguations are:
ipa-modref: call stmt push_8 (&root, &C.4105);
ipa-modref: call to push_8/6 does not clobber ref:
__vtab_link_module_Pdtlink_8._deallocate alias sets: 12->11
ipa-modref: call stmt push_8 (&root, &C.4104);
ipa-modref: call to push_8/6 does not clobber ref:
__vtab_link_module_Pdtlink_8._deallocate alias sets: 12->11
ipa-modref: call stmt push_8 (&root, &C.4103);
ipa-modref: call to push_8/6 does not clobber ref:
__vtab_link_module_Pdtlink_8._deallocate alias sets: 12->11
ipa-modref: call stmt push_8 (&root, &C.4105);
ipa-modref: call to push_8/6 does not clobber ref:
__vtab_link_module_Pdtlink_8._deallocate alias sets: 12->11
ipa-modref: call stmt push_8 (&root, &C.4104);
ipa-modref: call to push_8/6 does not clobber ref:
__vtab_link_module_Pdtlink_8._deallocate alias sets: 12->11
ipa-modref: call stmt push_8 (&root, &C.4103);
ipa-modref: call to push_8/6 does not clobber ref:
__vtab_link_module_Pdtlink_8._deallocate alias sets: 12->11

these ought to be safe since __vtab_link_module_Pdtlink_8 is readonly in the
testcase. With LTO we detect that variable as such (and the testcase stil work
without modref and fails different with modref).

fre3 does quite a lot of additional changes and I am not sure what gets wrong
here:

 __attribute__((externally_visible))
 main (integer(kind=4) argc, character(kind=1) * * argv)
 {
+  struct array01_unknown cdesc.10;
+  struct array01_unknown cdesc.9;
+  real(kind=8) res;
+  struct Pdtlink_8 * previous;
+  struct Pdtlink_8 * current;
+  real(kind=8) res;
   struct pdtlink_8 * root;
   static integer(kind=4) options.11[7] = {2150, 4095, 1, 1, 1, 0, 31};
-  real(kind=8) _7;
-  integer(kind=4) _8;
-  real(kind=8) _9;
-  integer(kind=4) _10;
-  real(kind=8) _11;
-  integer(kind=4) _12;
-  real(kind=8) _13;
-  integer(kind=4) _14;
+  struct Pdtlink_8 * _15;
+  struct Pdtlink_8 * _17;
+  struct Pdtlink_8 * _21;
+  struct Pdtlink_8 * _22;
+  void (*<T5d4>) () _23;
+  struct Pdtlink_8 * _25;
+  void (*<T5d4>) () _26;

   <bb 2> [local count: 1073741824]:
   _gfortran_set_args (argc_2(D), argv_3(D));
@@ -1972,52 +2120,75 @@
   push_8 (&root, &C.4103);
   push_8 (&root, &C.4104);
   push_8 (&root, &C.4105);
-  _7 = pop_8 (&root);
-  _8 = (integer(kind=4)) _7;
-  if (_8 != 3)
-    goto <bb 3>; [0.04%]
+  _15 = MEM[(struct Pdtlink_8 * &)&root];
+  if (_15 != 0B)
+    goto <bb 3>; [70.00%]
   else
-    goto <bb 4>; [99.96%]
+    goto <bb 11>; [30.00%]

-  <bb 3> [local count: 429496]:
-  _gfortran_stop_numeric (1, 0);
-
-  <bb 4> [local count: 1073312329]:
-  _9 = pop_8 (&root);
-  _10 = (integer(kind=4)) _9;
-  if (_10 != 2)
-    goto <bb 5>; [0.04%]
+  <bb 3> [local count: 75913541732]:
+  # current_16 = PHI <_15(2), _17(3)>
+  # previous_29 = PHI <_15(2), current_16(3)>
+  _17 = current_16->next;
+  if (_17 == 0B)
+    goto <bb 4>; [0.00%]
   else
-    goto <bb 6>; [99.96%]
-
-  <bb 5> [local count: 429324]:
-  _gfortran_stop_numeric (2, 0);
+    goto <bb 3>; [100.00%]

-  <bb 6> [local count: 1072883005]:
-  _11 = pop_8 (&root);
-  _12 = (integer(kind=4)) _11;
-  if (_12 != 1)
-    goto <bb 7>; [0.04%]
+  <bb 4> [count: 0]:
+  res_19 = current_16->n;
+  _21 = previous_29->next;
+  if (_21 == 0B)
+    goto <bb 5>; [30.00%]
   else
-    goto <bb 8>; [99.96%]
+    goto <bb 8>; [70.00%]

-  <bb 7> [local count: 429152]:
-  _gfortran_stop_numeric (3, 0);
+  <bb 5> [count: 0]:
+  _22 = _15->next;
+  if (_22 != 0B)
+    goto <bb 6>; [70.00%]
+  else
+    goto <bb 7>; [30.00%]

-  <bb 8> [local count: 1072453853]:
-  _13 = pop_8 (&root);
-  _14 = (integer(kind=4)) _13;
-  if (_14 != 0)
-    goto <bb 9>; [0.04%]
+  <bb 6> [count: 0]:
+  MEM <c_char[8]> [(struct dtype_type *)&cdesc.9 + 24B] = {};
+  cdesc.9.dtype.elem_len = 24;
+  cdesc.9.dtype.rank = 1;
+  cdesc.9.dtype.type = 11;
+  cdesc.9.dim[0].lbound = 1;
+  cdesc.9.dim[0].stride = 1;
+  cdesc.9.dim[0].ubound = 1;
+  cdesc.9.data = _22;
+  _23 = __vtab_link_module_Pdtlink_8._deallocate;
+  __builtin_unreachable ();
+
+  <bb 7> [count: 0]:
+  __builtin_unreachable ();
+
+  <bb 8> [count: 0]:
+  _25 = _21->next;
+  if (_25 != 0B)
+    goto <bb 9>; [70.00%]
   else
-    goto <bb 10>; [99.96%]
+    goto <bb 10>; [30.00%]
+
+  <bb 9> [count: 0]:
+  MEM <c_char[8]> [(struct dtype_type *)&cdesc.10 + 24B] = {};
+  cdesc.10.dtype.elem_len = 24;
+  cdesc.10.dtype.rank = 1;
+  cdesc.10.dtype.type = 11;
+  cdesc.10.dim[0].lbound = 1;
+  cdesc.10.dim[0].stride = 1;
+  cdesc.10.dim[0].ubound = 1;
+  cdesc.10.data = _25;
+  _26 = __vtab_link_module_Pdtlink_8._deallocate;
+  __builtin_unreachable ();

-  <bb 9> [local count: 428981]:
-  _gfortran_stop_numeric (4, 0);
+  <bb 10> [count: 0]:
+  __builtin_unreachable ();

-  <bb 10> [local count: 1072024872]:
-  root ={v} {CLOBBER};
-  return 0;
+  <bb 11> [local count: 128815]:
+  _gfortran_stop_numeric (1, 0);


More information about the Gcc-bugs mailing list