[Bug fortran/103039] [12 Regression] Segfault with openmp block within a select type block since r12-1016-g0e3b3b77e13cac76

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Mar 9 14:27:49 GMT 2022


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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2022-03-09
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
           Keywords|                            |wrong-code
           Priority|P3                          |P1

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
in .ompexp I see

void MAIN__._omp_fn.0 (struct .omp_data_s.9 & restrict .omp_data_i)
{
...
  <bb 6> :
  s = 0;
  D.4352 = .omp_data_i->__tmp_class_a;
  __tmp_class_a.10 = __tmp_class_a;
  D.4355 = D.4352->_vptr;
  __tmp_class_a.10->_vptr = D.4355;
  D.4356 = .omp_data_i->__tmp_class_a;
  D.4357 = D.4356->_vptr;
  D.4358 = D.4357->_size;
  D.4359 = (unsigned long) D.4358;
  __tmp_class_a.11 = __tmp_class_a;
  D.4361 = __builtin_malloc (D.4359);
  __tmp_class_a.11->_data = D.4361;
  D.4362 = .omp_data_i->__tmp_class_a;
  D.4363 = D.4362->_vptr;
  D.4364 = D.4363->_copy;
  __tmp_class_a.12 = __tmp_class_a;
  D.4366 = .omp_data_i->__tmp_class_a;
  D.4367 = D.4366->_data;
  D.4364 (D.4367, __tmp_class_a.12);

so .omp_data_i->__tmp_class_a is accessed but then the local __tmp_class_a
is used in the end.  So sth is amiss here.

I suspect the unshare_expr is playing havoc with some later lookups.


More information about the Gcc-bugs mailing list