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.