xref: /llvm-project/clang/test/OpenMP/assume_lambda.cpp (revision a42e515e3a9f3bb4e44389c097b89104d95b9b29)
1*a42e515eSJulian Brown // RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -ast-print %s | FileCheck %s
2*a42e515eSJulian Brown // expected-no-diagnostics
3*a42e515eSJulian Brown 
4*a42e515eSJulian Brown extern int bar(int);
5*a42e515eSJulian Brown 
6*a42e515eSJulian Brown int foo(int arg)
7*a42e515eSJulian Brown {
8*a42e515eSJulian Brown   #pragma omp assume no_openmp_routines
9*a42e515eSJulian Brown   {
10*a42e515eSJulian Brown     auto fn = [](int x) { return bar(x); };
11*a42e515eSJulian Brown // CHECK: auto fn = [](int x) {
12*a42e515eSJulian Brown     return fn(5);
13*a42e515eSJulian Brown   }
14*a42e515eSJulian Brown }
15*a42e515eSJulian Brown 
16*a42e515eSJulian Brown class C {
17*a42e515eSJulian Brown public:
18*a42e515eSJulian Brown   int foo(int a);
19*a42e515eSJulian Brown };
20*a42e515eSJulian Brown 
21*a42e515eSJulian Brown // We're really just checking that this parses.  All the assumptions are thrown
22*a42e515eSJulian Brown // away immediately for now.
23*a42e515eSJulian Brown int C::foo(int a)
24*a42e515eSJulian Brown {
25*a42e515eSJulian Brown   #pragma omp assume holds(sizeof(void*) == 8) absent(parallel)
26*a42e515eSJulian Brown   {
27*a42e515eSJulian Brown     auto fn = [](int x) { return bar(x); };
28*a42e515eSJulian Brown // CHECK: auto fn = [](int x) {
29*a42e515eSJulian Brown     return fn(5);
30*a42e515eSJulian Brown   }
31*a42e515eSJulian Brown }
32