[Bug libgomp/69555] libgomp.c++/target-6.C fails because of undefined behaviour
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jan 29 15:22:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69555
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
It is well defined.
Anyway, most likely the bug is already during gimplification.
I see in the omplower dump:
int[0:(sizetype) D.2477] & c;
...
D.2477 = D.2476 + -1;
...
#pragma omp target num_teams(1) thread_limit(0) map(from:err [len: 4])
firstprivate(d) firstprivate(t) firstprivate(v) firstprivate(y) priv
ate(i) private(c) private(s) private(u) private(x) [child fn:
_Z3fooRiS_R1SS1_RdS2_._omp_fn.0 (.omp_data_arr.7, .omp_data_sizes.8,
.omp_data_kinds.
9)]
{
try
{
...
D.2689 = (sizetype) D.2477;
D.2690 = D.2689 + 1;
D.2691 = D.2690 * 4;
D.2692 = __builtin_alloca_with_align (D.2691, 32);
c = D.2692;
Accessing an automatic variable from the caller inside of target region is
wrong, it should have been made firstprivate during gimplification, which would
allow it to work.
More information about the Gcc-bugs
mailing list