// We use 'auto' without a function return type, so specify dialect here // { dg-additional-options "-std=c++14 -fdump-tree-gimple" } // { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } #include <cstdlib> #define N 10 int main (void) { int X, Y; #pragma omp target map(from: X, Y) { int x = 0, y = 0; for (int i = 0; i < N; i++) [&] (int v) { x += v; } (i); auto yinc = [&y] { y++; }; for (int i = 0; i < N; i++) yinc (); X = x; Y = y; } int Xs = 0; for (int i = 0; i < N; i++) Xs += i; if (X != Xs) abort (); if (Y != N) abort (); } /* Make sure lambda objects do NOT appear in target maps. */ /* { dg-final { scan-tree-dump {(?n)#pragma omp target num_teams.* map\(from:Y \[len: [0-9]+\]\) map\(from:X \[len: [0-9]+\]\)$} "gimple" } } */