// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --function-signature --include-generated-funcs --replace-value-regex "__omp_offloading_[0-9a-z]+_[0-9a-z]+" "reduction_size[.].+[.]" "pl_cond[.].+[.|,]" --prefix-filecheck-ir-name _
// RUN: %clang_cc1 -verify -triple x86_64-pc-linux-gnu -fopenmp -emit-llvm %s -o - | FileCheck %s
// expected-no-diagnostics

#ifndef HEADER
#define HEADER

struct Iter {
  const int *Ptr;

  bool operator!=(const Iter &Other) const { return Ptr != Other.Ptr; }
  void operator++() { ++Ptr; }

  const int &operator*() const { return *Ptr; }

  long operator-(const Iter &Other) const { return Ptr - Other.Ptr; }

  void operator+=(long N) { Ptr += N; }
};

struct Range {
  int Data[4];
};


Iter begin(const Range &R) { return {R.Data}; }

Iter end(const Range &R) { return {R.Data + 4}; }

template <typename T>
void foo() {
  Range R;

  auto lambda = [R]() {
#pragma omp for
    for (auto x : R)
      ;
  };

  lambda();
}

template void foo<int>();
#endif
// CHECK-LABEL: define {{[^@]+}}@_Z5beginRK5Range
// CHECK-SAME: (ptr noundef nonnull align 4 dereferenceable(16) [[R:%.*]]) #[[ATTR0:[0-9]+]] {
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_ITER:%.*]], align 8
// CHECK-NEXT:    [[R_ADDR:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    store ptr [[R]], ptr [[R_ADDR]], align 8
// CHECK-NEXT:    [[PTR:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[RETVAL]], i32 0, i32 0
// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[R_ADDR]], align 8, !nonnull [[META3:![0-9]+]], !align [[META4:![0-9]+]]
// CHECK-NEXT:    [[DATA:%.*]] = getelementptr inbounds nuw [[STRUCT_RANGE:%.*]], ptr [[TMP0]], i32 0, i32 0
// CHECK-NEXT:    [[ARRAYDECAY:%.*]] = getelementptr inbounds [4 x i32], ptr [[DATA]], i64 0, i64 0
// CHECK-NEXT:    store ptr [[ARRAYDECAY]], ptr [[PTR]], align 8
// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[RETVAL]], i32 0, i32 0
// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr [[COERCE_DIVE]], align 8
// CHECK-NEXT:    ret ptr [[TMP1]]
//
//
// CHECK-LABEL: define {{[^@]+}}@_Z3endRK5Range
// CHECK-SAME: (ptr noundef nonnull align 4 dereferenceable(16) [[R:%.*]]) #[[ATTR0]] {
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_ITER:%.*]], align 8
// CHECK-NEXT:    [[R_ADDR:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    store ptr [[R]], ptr [[R_ADDR]], align 8
// CHECK-NEXT:    [[PTR:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[RETVAL]], i32 0, i32 0
// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[R_ADDR]], align 8, !nonnull [[META3]], !align [[META4]]
// CHECK-NEXT:    [[DATA:%.*]] = getelementptr inbounds nuw [[STRUCT_RANGE:%.*]], ptr [[TMP0]], i32 0, i32 0
// CHECK-NEXT:    [[ARRAYDECAY:%.*]] = getelementptr inbounds [4 x i32], ptr [[DATA]], i64 0, i64 0
// CHECK-NEXT:    [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr [[ARRAYDECAY]], i64 4
// CHECK-NEXT:    store ptr [[ADD_PTR]], ptr [[PTR]], align 8
// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[RETVAL]], i32 0, i32 0
// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr [[COERCE_DIVE]], align 8
// CHECK-NEXT:    ret ptr [[TMP1]]
//
//
// CHECK-LABEL: define {{[^@]+}}@_Z3fooIiEvv
// CHECK-SAME: () #[[ATTR0]] comdat {
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[R:%.*]] = alloca [[STRUCT_RANGE:%.*]], align 4
// CHECK-NEXT:    [[LAMBDA:%.*]] = alloca [[CLASS_ANON:%.*]], align 4
// CHECK-NEXT:    [[TMP0:%.*]] = getelementptr inbounds nuw [[CLASS_ANON]], ptr [[LAMBDA]], i32 0, i32 0
// CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[TMP0]], ptr align 4 [[R]], i64 16, i1 false)
// CHECK-NEXT:    call void @_ZZ3fooIiEvvENKUlvE_clEv(ptr noundef nonnull align 4 dereferenceable(16) [[LAMBDA]])
// CHECK-NEXT:    ret void
//
//
// CHECK-LABEL: define {{[^@]+}}@_ZZ3fooIiEvvENKUlvE_clEv
// CHECK-SAME: (ptr noundef nonnull align 4 dereferenceable(16) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[THIS_ADDR:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    [[DOTOMP_IV:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[__RANGE3:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    [[__BEGIN3:%.*]] = alloca [[STRUCT_ITER:%.*]], align 8
// CHECK-NEXT:    [[__END3:%.*]] = alloca [[STRUCT_ITER]], align 8
// CHECK-NEXT:    [[TMP:%.*]] = alloca [[STRUCT_ITER]], align 8
// CHECK-NEXT:    [[DOTCAPTURE_EXPR_:%.*]] = alloca [[STRUCT_ITER]], align 8
// CHECK-NEXT:    [[DOTCAPTURE_EXPR_6:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    [[DOTCAPTURE_EXPR_7:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[__BEGIN310:%.*]] = alloca [[STRUCT_ITER]], align 8
// CHECK-NEXT:    [[DOTOMP_LB:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[DOTOMP_UB:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[DOTOMP_STRIDE:%.*]] = alloca i64, align 8
// CHECK-NEXT:    [[DOTOMP_IS_LAST:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[__BEGIN312:%.*]] = alloca [[STRUCT_ITER]], align 8
// CHECK-NEXT:    [[X:%.*]] = alloca i32, align 4
// CHECK-NEXT:    [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB2:[0-9]+]])
// CHECK-NEXT:    store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
// CHECK-NEXT:    [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
// CHECK-NEXT:    [[TMP1:%.*]] = getelementptr inbounds nuw [[CLASS_ANON:%.*]], ptr [[THIS1]], i32 0, i32 0
// CHECK-NEXT:    store ptr [[TMP1]], ptr [[__RANGE3]], align 8
// CHECK-NEXT:    [[TMP2:%.*]] = load ptr, ptr [[__RANGE3]], align 8, !nonnull [[META3]], !align [[META4]]
// CHECK-NEXT:    [[CALL:%.*]] = call ptr @_Z5beginRK5Range(ptr noundef nonnull align 4 dereferenceable(16) [[TMP2]])
// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[__BEGIN3]], i32 0, i32 0
// CHECK-NEXT:    store ptr [[CALL]], ptr [[COERCE_DIVE]], align 8
// CHECK-NEXT:    [[TMP3:%.*]] = load ptr, ptr [[__RANGE3]], align 8, !nonnull [[META3]], !align [[META4]]
// CHECK-NEXT:    [[CALL2:%.*]] = call ptr @_Z3endRK5Range(ptr noundef nonnull align 4 dereferenceable(16) [[TMP3]])
// CHECK-NEXT:    [[COERCE_DIVE3:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[__END3]], i32 0, i32 0
// CHECK-NEXT:    store ptr [[CALL2]], ptr [[COERCE_DIVE3]], align 8
// CHECK-NEXT:    [[TMP4:%.*]] = load ptr, ptr [[__RANGE3]], align 8, !nonnull [[META3]], !align [[META4]]
// CHECK-NEXT:    [[CALL4:%.*]] = call ptr @_Z5beginRK5Range(ptr noundef nonnull align 4 dereferenceable(16) [[TMP4]])
// CHECK-NEXT:    [[COERCE_DIVE5:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[DOTCAPTURE_EXPR_]], i32 0, i32 0
// CHECK-NEXT:    store ptr [[CALL4]], ptr [[COERCE_DIVE5]], align 8
// CHECK-NEXT:    store ptr [[__END3]], ptr [[DOTCAPTURE_EXPR_6]], align 8
// CHECK-NEXT:    [[TMP5:%.*]] = load ptr, ptr [[DOTCAPTURE_EXPR_6]], align 8, !nonnull [[META3]], !align [[META5:![0-9]+]]
// CHECK-NEXT:    [[CALL8:%.*]] = call noundef i64 @_ZNK4ItermiERKS_(ptr noundef nonnull align 8 dereferenceable(8) [[TMP5]], ptr noundef nonnull align 8 dereferenceable(8) [[DOTCAPTURE_EXPR_]])
// CHECK-NEXT:    [[SUB:%.*]] = sub nsw i64 [[CALL8]], 1
// CHECK-NEXT:    [[ADD:%.*]] = add nsw i64 [[SUB]], 1
// CHECK-NEXT:    [[DIV:%.*]] = sdiv i64 [[ADD]], 1
// CHECK-NEXT:    [[SUB9:%.*]] = sub nsw i64 [[DIV]], 1
// CHECK-NEXT:    store i64 [[SUB9]], ptr [[DOTCAPTURE_EXPR_7]], align 8
// CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[__BEGIN310]], ptr align 8 [[DOTCAPTURE_EXPR_]], i64 8, i1 false)
// CHECK-NEXT:    [[CALL11:%.*]] = call noundef zeroext i1 @_ZNK4IterneERKS_(ptr noundef nonnull align 8 dereferenceable(8) [[__BEGIN3]], ptr noundef nonnull align 8 dereferenceable(8) [[__END3]])
// CHECK-NEXT:    br i1 [[CALL11]], label [[OMP_PRECOND_THEN:%.*]], label [[OMP_PRECOND_END:%.*]]
// CHECK:       omp.precond.then:
// CHECK-NEXT:    store i64 0, ptr [[DOTOMP_LB]], align 8
// CHECK-NEXT:    [[TMP6:%.*]] = load i64, ptr [[DOTCAPTURE_EXPR_7]], align 8
// CHECK-NEXT:    store i64 [[TMP6]], ptr [[DOTOMP_UB]], align 8
// CHECK-NEXT:    store i64 1, ptr [[DOTOMP_STRIDE]], align 8
// CHECK-NEXT:    store i32 0, ptr [[DOTOMP_IS_LAST]], align 4
// CHECK-NEXT:    call void @__kmpc_for_static_init_8(ptr @[[GLOB1:[0-9]+]], i32 [[TMP0]], i32 34, ptr [[DOTOMP_IS_LAST]], ptr [[DOTOMP_LB]], ptr [[DOTOMP_UB]], ptr [[DOTOMP_STRIDE]], i64 1, i64 1)
// CHECK-NEXT:    [[TMP7:%.*]] = load i64, ptr [[DOTOMP_UB]], align 8
// CHECK-NEXT:    [[TMP8:%.*]] = load i64, ptr [[DOTCAPTURE_EXPR_7]], align 8
// CHECK-NEXT:    [[CMP:%.*]] = icmp sgt i64 [[TMP7]], [[TMP8]]
// CHECK-NEXT:    br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
// CHECK:       cond.true:
// CHECK-NEXT:    [[TMP9:%.*]] = load i64, ptr [[DOTCAPTURE_EXPR_7]], align 8
// CHECK-NEXT:    br label [[COND_END:%.*]]
// CHECK:       cond.false:
// CHECK-NEXT:    [[TMP10:%.*]] = load i64, ptr [[DOTOMP_UB]], align 8
// CHECK-NEXT:    br label [[COND_END]]
// CHECK:       cond.end:
// CHECK-NEXT:    [[COND:%.*]] = phi i64 [ [[TMP9]], [[COND_TRUE]] ], [ [[TMP10]], [[COND_FALSE]] ]
// CHECK-NEXT:    store i64 [[COND]], ptr [[DOTOMP_UB]], align 8
// CHECK-NEXT:    [[TMP11:%.*]] = load i64, ptr [[DOTOMP_LB]], align 8
// CHECK-NEXT:    store i64 [[TMP11]], ptr [[DOTOMP_IV]], align 8
// CHECK-NEXT:    br label [[OMP_INNER_FOR_COND:%.*]]
// CHECK:       omp.inner.for.cond:
// CHECK-NEXT:    [[TMP12:%.*]] = load i64, ptr [[DOTOMP_IV]], align 8
// CHECK-NEXT:    [[TMP13:%.*]] = load i64, ptr [[DOTOMP_UB]], align 8
// CHECK-NEXT:    [[CMP13:%.*]] = icmp sle i64 [[TMP12]], [[TMP13]]
// CHECK-NEXT:    br i1 [[CMP13]], label [[OMP_INNER_FOR_BODY:%.*]], label [[OMP_INNER_FOR_END:%.*]]
// CHECK:       omp.inner.for.body:
// CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[__BEGIN312]], ptr align 8 [[DOTCAPTURE_EXPR_]], i64 8, i1 false)
// CHECK-NEXT:    [[TMP14:%.*]] = load i64, ptr [[DOTOMP_IV]], align 8
// CHECK-NEXT:    [[MUL:%.*]] = mul nsw i64 [[TMP14]], 1
// CHECK-NEXT:    call void @_ZN4IterpLEl(ptr noundef nonnull align 8 dereferenceable(8) [[__BEGIN312]], i64 noundef [[MUL]])
// CHECK-NEXT:    [[CALL14:%.*]] = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK4IterdeEv(ptr noundef nonnull align 8 dereferenceable(8) [[__BEGIN312]])
// CHECK-NEXT:    [[TMP15:%.*]] = load i32, ptr [[CALL14]], align 4
// CHECK-NEXT:    store i32 [[TMP15]], ptr [[X]], align 4
// CHECK-NEXT:    br label [[OMP_BODY_CONTINUE:%.*]]
// CHECK:       omp.body.continue:
// CHECK-NEXT:    br label [[OMP_INNER_FOR_INC:%.*]]
// CHECK:       omp.inner.for.inc:
// CHECK-NEXT:    [[TMP16:%.*]] = load i64, ptr [[DOTOMP_IV]], align 8
// CHECK-NEXT:    [[ADD15:%.*]] = add nsw i64 [[TMP16]], 1
// CHECK-NEXT:    store i64 [[ADD15]], ptr [[DOTOMP_IV]], align 8
// CHECK-NEXT:    br label [[OMP_INNER_FOR_COND]]
// CHECK:       omp.inner.for.end:
// CHECK-NEXT:    br label [[OMP_LOOP_EXIT:%.*]]
// CHECK:       omp.loop.exit:
// CHECK-NEXT:    call void @__kmpc_for_static_fini(ptr @[[GLOB1]], i32 [[TMP0]])
// CHECK-NEXT:    br label [[OMP_PRECOND_END]]
// CHECK:       omp.precond.end:
// CHECK-NEXT:    call void @__kmpc_barrier(ptr @[[GLOB3:[0-9]+]], i32 [[TMP0]])
// CHECK-NEXT:    ret void
//
//
// CHECK-LABEL: define {{[^@]+}}@_ZNK4ItermiERKS_
// CHECK-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[OTHER:%.*]]) #[[ATTR0]] comdat align 2 {
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[THIS_ADDR:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    [[OTHER_ADDR:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
// CHECK-NEXT:    store ptr [[OTHER]], ptr [[OTHER_ADDR]], align 8
// CHECK-NEXT:    [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
// CHECK-NEXT:    [[PTR:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER:%.*]], ptr [[THIS1]], i32 0, i32 0
// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 8
// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr [[OTHER_ADDR]], align 8, !nonnull [[META3]], !align [[META5]]
// CHECK-NEXT:    [[PTR2:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[TMP1]], i32 0, i32 0
// CHECK-NEXT:    [[TMP2:%.*]] = load ptr, ptr [[PTR2]], align 8
// CHECK-NEXT:    [[SUB_PTR_LHS_CAST:%.*]] = ptrtoint ptr [[TMP0]] to i64
// CHECK-NEXT:    [[SUB_PTR_RHS_CAST:%.*]] = ptrtoint ptr [[TMP2]] to i64
// CHECK-NEXT:    [[SUB_PTR_SUB:%.*]] = sub i64 [[SUB_PTR_LHS_CAST]], [[SUB_PTR_RHS_CAST]]
// CHECK-NEXT:    [[SUB_PTR_DIV:%.*]] = sdiv exact i64 [[SUB_PTR_SUB]], 4
// CHECK-NEXT:    ret i64 [[SUB_PTR_DIV]]
//
//
// CHECK-LABEL: define {{[^@]+}}@_ZNK4IterneERKS_
// CHECK-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[THIS:%.*]], ptr noundef nonnull align 8 dereferenceable(8) [[OTHER:%.*]]) #[[ATTR0]] comdat align 2 {
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[THIS_ADDR:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    [[OTHER_ADDR:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
// CHECK-NEXT:    store ptr [[OTHER]], ptr [[OTHER_ADDR]], align 8
// CHECK-NEXT:    [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
// CHECK-NEXT:    [[PTR:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER:%.*]], ptr [[THIS1]], i32 0, i32 0
// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 8
// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr [[OTHER_ADDR]], align 8, !nonnull [[META3]], !align [[META5]]
// CHECK-NEXT:    [[PTR2:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER]], ptr [[TMP1]], i32 0, i32 0
// CHECK-NEXT:    [[TMP2:%.*]] = load ptr, ptr [[PTR2]], align 8
// CHECK-NEXT:    [[CMP:%.*]] = icmp ne ptr [[TMP0]], [[TMP2]]
// CHECK-NEXT:    ret i1 [[CMP]]
//
//
// CHECK-LABEL: define {{[^@]+}}@_ZN4IterpLEl
// CHECK-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[THIS:%.*]], i64 noundef [[N:%.*]]) #[[ATTR0]] comdat align 2 {
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[THIS_ADDR:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    [[N_ADDR:%.*]] = alloca i64, align 8
// CHECK-NEXT:    store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
// CHECK-NEXT:    store i64 [[N]], ptr [[N_ADDR]], align 8
// CHECK-NEXT:    [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
// CHECK-NEXT:    [[TMP0:%.*]] = load i64, ptr [[N_ADDR]], align 8
// CHECK-NEXT:    [[PTR:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER:%.*]], ptr [[THIS1]], i32 0, i32 0
// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr [[PTR]], align 8
// CHECK-NEXT:    [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i64 [[TMP0]]
// CHECK-NEXT:    store ptr [[ADD_PTR]], ptr [[PTR]], align 8
// CHECK-NEXT:    ret void
//
//
// CHECK-LABEL: define {{[^@]+}}@_ZNK4IterdeEv
// CHECK-SAME: (ptr noundef nonnull align 8 dereferenceable(8) [[THIS:%.*]]) #[[ATTR0]] comdat align 2 {
// CHECK-NEXT:  entry:
// CHECK-NEXT:    [[THIS_ADDR:%.*]] = alloca ptr, align 8
// CHECK-NEXT:    store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
// CHECK-NEXT:    [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
// CHECK-NEXT:    [[PTR:%.*]] = getelementptr inbounds nuw [[STRUCT_ITER:%.*]], ptr [[THIS1]], i32 0, i32 0
// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[PTR]], align 8
// CHECK-NEXT:    ret ptr [[TMP0]]
//
