reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp
 1274     (void)CGM.GetAddrOfGlobal(NewGD);
 1275   StringRef NewMangledName = CGM.getMangledName(NewGD);
 1276   llvm::GlobalValue *Addr = CGM.GetGlobalValue(NewMangledName);
 1279     const CGFunctionInfo &FI = CGM.getTypes().arrangeGlobalDeclaration(OldGD);
 1280     llvm::Type *DeclTy = CGM.getTypes().GetFunctionType(FI);
 1284     llvm::GlobalValue::LinkageTypes LT = CGM.getFunctionLinkage(OldGD);
 1288         llvm::GlobalAlias::create(DeclTy, 0, LT, "", Addr, &CGM.getModule());
 1298       GA->setName(CGM.getMangledName(OldGD));
 1307     CGM.SetCommonAttributes(OldGD, GA);
 1328     StringRef MangledName = CGM.getMangledName(Pair.second.second);
 1329     llvm::GlobalValue *Addr = CGM.GetGlobalValue(MangledName);
 1409       CGM, D->getType(), D->getCombiner(),
 1416         CGM, D->getType(),
 1474       CGM, D, CS, ThreadIDVar, InnermostKind, getOutlinedHelperName(), CodeGen);
 1482       CGM, D, CS, ThreadIDVar, InnermostKind, getOutlinedHelperName(), CodeGen);
 1511   CodeGenFunction CGF(CGM, true);
 1568   CharUnits Align = CGM.getContext().getTypeAlignInChars(IdentQTy);
 1579           CGM.GetAddrOfConstantCString(";unknown;unknown;0;0;;").getPointer();
 1581           llvm::ConstantExpr::getBitCast(DefaultOpenMPPSource, CGM.Int8PtrTy);
 1585         llvm::ConstantInt::getNullValue(CGM.Int32Ty),
 1586         llvm::ConstantInt::get(CGM.Int32Ty, Flags),
 1587         llvm::ConstantInt::get(CGM.Int32Ty, Reserved2Flags),
 1588         llvm::ConstantInt::getNullValue(CGM.Int32Ty), DefaultOpenMPPSource};
 1590         createGlobalStruct(CGM, IdentQTy, isDefaultLocationConstant(), Data, "",
 1630   if (CGM.getCodeGenOpts().getDebugInfo() == codegenoptions::NoDebugInfo ||
 1636   CharUnits Align = CGM.getContext().getTypeAlignInChars(IdentQTy);
 1768     llvm::Type *MicroParams[] = {llvm::PointerType::getUnqual(CGM.Int32Ty),
 1769                                  llvm::PointerType::getUnqual(CGM.Int32Ty)};
 1770     Kmpc_MicroTy = llvm::FunctionType::get(CGM.VoidTy, MicroParams, true);
 1781     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 1784         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ true);
 1785     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_fork_call");
 1808         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 1809     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_global_thread_num");
 1815     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 1816                                 CGM.VoidPtrTy, CGM.SizeTy,
 1816                                 CGM.VoidPtrTy, CGM.SizeTy,
 1817                                 CGM.VoidPtrTy->getPointerTo()->getPointerTo()};
 1819         llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg*/ false);
 1820     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_threadprivate_cached");
 1827         getIdentTyPointerTy(), CGM.Int32Ty,
 1830         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1831     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_critical");
 1837     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 1839                                 CGM.IntPtrTy};
 1841         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1842     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_critical_with_hint");
 1850         llvm::FunctionType::get(CGM.VoidPtrTy, CGM.VoidPtrTy,
 1850         llvm::FunctionType::get(CGM.VoidPtrTy, CGM.VoidPtrTy,
 1853     llvm::Type *KmpcCopyCtorTyArgs[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
 1853     llvm::Type *KmpcCopyCtorTyArgs[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
 1855         llvm::FunctionType::get(CGM.VoidPtrTy, KmpcCopyCtorTyArgs,
 1860         llvm::FunctionType::get(CGM.VoidTy, CGM.VoidPtrTy, /*isVarArg*/ false)
 1860         llvm::FunctionType::get(CGM.VoidTy, CGM.VoidPtrTy, /*isVarArg*/ false)
 1862     llvm::Type *FnTyArgs[] = {getIdentTyPointerTy(), CGM.VoidPtrTy, KmpcCtorTy,
 1864     auto *FnTy = llvm::FunctionType::get(CGM.VoidTy, FnTyArgs,
 1866     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_threadprivate_register");
 1873         getIdentTyPointerTy(), CGM.Int32Ty,
 1876         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1877     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_critical");
 1883     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1885         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 1886     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name*/ "__kmpc_cancel_barrier");
 1891     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1893         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1894     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name*/ "__kmpc_barrier");
 1899     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1901         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1902     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_for_static_fini");
 1908     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 1909                                 CGM.Int32Ty};
 1911         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1912     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_push_num_threads");
 1918     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1920         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1921     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_serialized_parallel");
 1927     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1929         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1930     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_serialized_parallel");
 1937         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1938     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_flush");
 1943     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1945         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
 1946     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_master");
 1951     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1953         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 1954     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_end_master");
 1960     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
 1960     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
 1962         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
 1963     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_taskyield");
 1968     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1970         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
 1971     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_single");
 1976     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1978         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 1979     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_end_single");
 1988     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
 1988     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
 1989                                 CGM.SizeTy, CGM.SizeTy, KmpRoutineEntryPtrTy};
 1989                                 CGM.SizeTy, CGM.SizeTy, KmpRoutineEntryPtrTy};
 1992         llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
 1993     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_task_alloc");
 2002     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
 2002     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
 2003                                 CGM.SizeTy, CGM.SizeTy, KmpRoutineEntryPtrTy,
 2003                                 CGM.SizeTy, CGM.SizeTy, KmpRoutineEntryPtrTy,
 2004                                 CGM.Int64Ty};
 2007         llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
 2008     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_target_task_alloc");
 2014     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 2015                                 CGM.VoidPtrTy};
 2017         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
 2018     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_task");
 2025     llvm::Type *CpyTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
 2025     llvm::Type *CpyTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
 2027         llvm::FunctionType::get(CGM.VoidTy, CpyTypeParams, /*isVarArg=*/false);
 2028     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.SizeTy,
 2028     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.SizeTy,
 2029                                 CGM.VoidPtrTy, CpyFnTy->getPointerTo(),
 2030                                 CGM.Int32Ty};
 2032         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2033     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_copyprivate");
 2040     llvm::Type *ReduceTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
 2040     llvm::Type *ReduceTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
 2041     auto *ReduceFnTy = llvm::FunctionType::get(CGM.VoidTy, ReduceTypeParams,
 2044         getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
 2044         getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
 2044         getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
 2045         CGM.VoidPtrTy, ReduceFnTy->getPointerTo(),
 2048         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
 2049     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_reduce");
 2057     llvm::Type *ReduceTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
 2057     llvm::Type *ReduceTypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
 2058     auto *ReduceFnTy = llvm::FunctionType::get(CGM.VoidTy, ReduceTypeParams,
 2061         getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
 2061         getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
 2061         getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty, CGM.SizeTy,
 2062         CGM.VoidPtrTy, ReduceFnTy->getPointerTo(),
 2065         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
 2066     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_reduce_nowait");
 2073         getIdentTyPointerTy(), CGM.Int32Ty,
 2076         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2077     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_end_reduce");
 2084         getIdentTyPointerTy(), CGM.Int32Ty,
 2087         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2089         CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_end_reduce_nowait");
 2095     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 2096                                 CGM.VoidPtrTy};
 2098         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2100         CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_task_begin_if0");
 2106     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 2107                                 CGM.VoidPtrTy};
 2109         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2110     RTLFn = CGM.CreateRuntimeFunction(FnTy,
 2116     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 2118         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2119     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_ordered");
 2124     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 2126         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2127     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_ordered");
 2132     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 2134         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
 2135     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_omp_taskwait");
 2140     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 2142         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2143     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_taskgroup");
 2148     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 2150         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2151     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_taskgroup");
 2157     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
 2157     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
 2159         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 2160     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_push_proc_bind");
 2168         getIdentTyPointerTy(), CGM.Int32Ty, CGM.VoidPtrTy, CGM.Int32Ty,
 2168         getIdentTyPointerTy(), CGM.Int32Ty, CGM.VoidPtrTy, CGM.Int32Ty,
 2168         getIdentTyPointerTy(), CGM.Int32Ty, CGM.VoidPtrTy, CGM.Int32Ty,
 2169         CGM.VoidPtrTy,         CGM.Int32Ty, CGM.VoidPtrTy};
 2169         CGM.VoidPtrTy,         CGM.Int32Ty, CGM.VoidPtrTy};
 2169         CGM.VoidPtrTy,         CGM.Int32Ty, CGM.VoidPtrTy};
 2171         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
 2173         CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_task_with_deps");
 2180     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 2181                                 CGM.Int32Ty,           CGM.VoidPtrTy,
 2181                                 CGM.Int32Ty,           CGM.VoidPtrTy,
 2182                                 CGM.Int32Ty,           CGM.VoidPtrTy};
 2182                                 CGM.Int32Ty,           CGM.VoidPtrTy};
 2184         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2185     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_omp_wait_deps");
 2191     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
 2191     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
 2193         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 2194     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_cancellationpoint");
 2200     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
 2200     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.IntTy};
 2202         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 2203     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_cancel");
 2209     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
 2209     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty, CGM.Int32Ty,
 2210         CGM.Int32Ty};
 2212         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 2213     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_push_num_teams");
 2219     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 2222         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ true);
 2223     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_fork_teams");
 2247                                 CGM.IntTy,
 2248                                 CGM.VoidPtrTy,
 2249                                 CGM.IntTy,
 2250                                 CGM.Int64Ty->getPointerTo(),
 2251                                 CGM.Int64Ty->getPointerTo(),
 2252                                 CGM.Int64Ty,
 2253                                 CGM.IntTy,
 2254                                 CGM.IntTy,
 2255                                 CGM.Int64Ty,
 2256                                 CGM.VoidPtrTy};
 2258         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2259     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_taskloop");
 2266                                 CGM.Int32Ty,
 2267                                 CGM.Int32Ty,
 2268                                 CGM.VoidPtrTy};
 2270         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2271     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_doacross_init");
 2276     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 2278         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2279     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_doacross_fini");
 2285     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 2286                                 CGM.Int64Ty->getPointerTo()};
 2288         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2289     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_doacross_post");
 2295     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty,
 2296                                 CGM.Int64Ty->getPointerTo()};
 2298         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2299     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_doacross_wait");
 2305     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.IntTy, CGM.VoidPtrTy};
 2305     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.IntTy, CGM.VoidPtrTy};
 2305     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.IntTy, CGM.VoidPtrTy};
 2307         llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
 2309         CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_task_reduction_init");
 2315     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
 2315     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
 2315     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
 2317         llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
 2318     RTLFn = CGM.CreateRuntimeFunction(
 2325     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.SizeTy, CGM.VoidPtrTy};
 2325     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.SizeTy, CGM.VoidPtrTy};
 2325     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.SizeTy, CGM.VoidPtrTy};
 2327         llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
 2328     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_alloc");
 2334     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
 2334     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
 2334     llvm::Type *TypeParams[] = {CGM.IntTy, CGM.VoidPtrTy, CGM.VoidPtrTy};
 2336         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2337     RTLFn = CGM.CreateRuntimeFunction(FnTy, /*Name=*/"__kmpc_free");
 2343     llvm::Type *TypeParams[] = {CGM.Int64Ty, CGM.Int64Ty};
 2343     llvm::Type *TypeParams[] = {CGM.Int64Ty, CGM.Int64Ty};
 2345         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2346     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_push_target_tripcount");
 2353     llvm::Type *TypeParams[] = {CGM.Int64Ty,
 2354                                 CGM.VoidPtrTy,
 2355                                 CGM.Int32Ty,
 2356                                 CGM.VoidPtrPtrTy,
 2357                                 CGM.VoidPtrPtrTy,
 2358                                 CGM.Int64Ty->getPointerTo(),
 2359                                 CGM.Int64Ty->getPointerTo()};
 2361         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 2362     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target");
 2369     llvm::Type *TypeParams[] = {CGM.Int64Ty,
 2370                                 CGM.VoidPtrTy,
 2371                                 CGM.Int32Ty,
 2372                                 CGM.VoidPtrPtrTy,
 2373                                 CGM.VoidPtrPtrTy,
 2374                                 CGM.Int64Ty->getPointerTo(),
 2375                                 CGM.Int64Ty->getPointerTo()};
 2377         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 2378     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_nowait");
 2385     llvm::Type *TypeParams[] = {CGM.Int64Ty,
 2386                                 CGM.VoidPtrTy,
 2387                                 CGM.Int32Ty,
 2388                                 CGM.VoidPtrPtrTy,
 2389                                 CGM.VoidPtrPtrTy,
 2390                                 CGM.Int64Ty->getPointerTo(),
 2391                                 CGM.Int64Ty->getPointerTo(),
 2392                                 CGM.Int32Ty,
 2393                                 CGM.Int32Ty};
 2395         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 2396     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_teams");
 2403     llvm::Type *TypeParams[] = {CGM.Int64Ty,
 2404                                 CGM.VoidPtrTy,
 2405                                 CGM.Int32Ty,
 2406                                 CGM.VoidPtrPtrTy,
 2407                                 CGM.VoidPtrPtrTy,
 2408                                 CGM.Int64Ty->getPointerTo(),
 2409                                 CGM.Int64Ty->getPointerTo(),
 2410                                 CGM.Int32Ty,
 2411                                 CGM.Int32Ty};
 2413         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 2414     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_teams_nowait");
 2419     llvm::Type *TypeParams[] = {CGM.Int64Ty};
 2421         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 2422     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_register_requires");
 2428         CGM.getContext().getPointerType(getTgtBinaryDescriptorQTy());
 2429     llvm::Type *TypeParams[] = {CGM.getTypes().ConvertTypeForMem(ParamTy)};
 2431         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 2432     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_register_lib");
 2438         CGM.getContext().getPointerType(getTgtBinaryDescriptorQTy());
 2439     llvm::Type *TypeParams[] = {CGM.getTypes().ConvertTypeForMem(ParamTy)};
 2441         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 2442     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_unregister_lib");
 2448     llvm::Type *TypeParams[] = {CGM.Int64Ty,
 2449                                 CGM.Int32Ty,
 2450                                 CGM.VoidPtrPtrTy,
 2451                                 CGM.VoidPtrPtrTy,
 2452                                 CGM.Int64Ty->getPointerTo(),
 2453                                 CGM.Int64Ty->getPointerTo()};
 2455         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 2456     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_begin");
 2463     llvm::Type *TypeParams[] = {CGM.Int64Ty,
 2464                                 CGM.Int32Ty,
 2465                                 CGM.VoidPtrPtrTy,
 2466                                 CGM.VoidPtrPtrTy,
 2467                                 CGM.Int64Ty->getPointerTo(),
 2468                                 CGM.Int64Ty->getPointerTo()};
 2470         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2471     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_begin_nowait");
 2477     llvm::Type *TypeParams[] = {CGM.Int64Ty,
 2478                                 CGM.Int32Ty,
 2479                                 CGM.VoidPtrPtrTy,
 2480                                 CGM.VoidPtrPtrTy,
 2481                                 CGM.Int64Ty->getPointerTo(),
 2482                                 CGM.Int64Ty->getPointerTo()};
 2484         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 2485     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_end");
 2492     llvm::Type *TypeParams[] = {CGM.Int64Ty,
 2493                                 CGM.Int32Ty,
 2494                                 CGM.VoidPtrPtrTy,
 2495                                 CGM.VoidPtrPtrTy,
 2496                                 CGM.Int64Ty->getPointerTo(),
 2497                                 CGM.Int64Ty->getPointerTo()};
 2499         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2500     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_end_nowait");
 2506     llvm::Type *TypeParams[] = {CGM.Int64Ty,
 2507                                 CGM.Int32Ty,
 2508                                 CGM.VoidPtrPtrTy,
 2509                                 CGM.VoidPtrPtrTy,
 2510                                 CGM.Int64Ty->getPointerTo(),
 2511                                 CGM.Int64Ty->getPointerTo()};
 2513         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 2514     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_update");
 2521     llvm::Type *TypeParams[] = {CGM.Int64Ty,
 2522                                 CGM.Int32Ty,
 2523                                 CGM.VoidPtrPtrTy,
 2524                                 CGM.VoidPtrPtrTy,
 2525                                 CGM.Int64Ty->getPointerTo(),
 2526                                 CGM.Int64Ty->getPointerTo()};
 2528         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2529     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_target_data_update_nowait");
 2534     llvm::Type *TypeParams[] = {CGM.VoidPtrTy};
 2536         llvm::FunctionType::get(CGM.Int64Ty, TypeParams, /*isVarArg*/ false);
 2537     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_mapper_num_components");
 2543     llvm::Type *TypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy, CGM.VoidPtrTy,
 2543     llvm::Type *TypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy, CGM.VoidPtrTy,
 2543     llvm::Type *TypeParams[] = {CGM.VoidPtrTy, CGM.VoidPtrTy, CGM.VoidPtrTy,
 2544                                 CGM.Int64Ty, CGM.Int64Ty};
 2544                                 CGM.Int64Ty, CGM.Int64Ty};
 2546         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 2547     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__tgt_push_mapper_component");
 2563   llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
 2563   llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
 2567     CGM.Int32Ty,                               // tid
 2568     CGM.Int32Ty,                               // schedtype
 2569     llvm::PointerType::getUnqual(CGM.Int32Ty), // p_lastiter
 2577       llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 2578   return CGM.CreateRuntimeFunction(FnTy, Name);
 2589   llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
 2589   llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
 2591                                CGM.Int32Ty,           // tid
 2592                                CGM.Int32Ty,           // schedtype
 2599       llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 2600   return CGM.CreateRuntimeFunction(FnTy, Name);
 2613       CGM.Int32Ty,           // tid
 2616       llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 2617   return CGM.CreateRuntimeFunction(FnTy, Name);
 2628   llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
 2628   llvm::Type *ITy = IVSize == 32 ? CGM.Int32Ty : CGM.Int64Ty;
 2632     CGM.Int32Ty,                               // tid
 2633     llvm::PointerType::getUnqual(CGM.Int32Ty), // p_lastiter
 2639       llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 2640   return CGM.CreateRuntimeFunction(FnTy, Name);
 2670   if (CGM.getLangOpts().OpenMPSimd)
 2680       OS << CGM.getMangledName(GlobalDecl(VD));
 2683         getTargetEntryUniqueInfo(CGM.getContext(),
 2690     llvm::Value *Ptr = CGM.getModule().getNamedValue(PtrName);
 2692       QualType PtrTy = CGM.getContext().getPointerType(VD->getType());
 2693       Ptr = getOrCreateInternalVariable(CGM.getTypes().ConvertTypeForMem(PtrTy),
 2699       if (!CGM.getLangOpts().OpenMPIsDevice)
 2700         GV->setInitializer(CGM.GetAddrOfGlobal(VD));
 2703     return Address(Ptr, CGM.getContext().getDeclAlign(VD));
 2710   assert(!CGM.getLangOpts().OpenMPUseTLS ||
 2711          !CGM.getContext().getTargetInfo().isTLSSupported());
 2715       CGM.Int8PtrPtrTy, Twine(CGM.getMangledName(VD)).concat(Suffix));
 2715       CGM.Int8PtrPtrTy, Twine(CGM.getMangledName(VD)).concat(Suffix));
 2722   if (CGM.getLangOpts().OpenMPUseTLS &&
 2723       CGM.getContext().getTargetInfo().isTLSSupported())
 2729                                                        CGM.Int8PtrTy),
 2730                          CGM.getSize(CGM.GetTargetTypeStoreSize(VarTy)),
 2730                          CGM.getSize(CGM.GetTargetTypeStoreSize(VarTy)),
 2748       OMPLoc, CGF.Builder.CreatePointerCast(VDAddr.getPointer(), CGM.VoidPtrTy),
 2757   if (CGM.getLangOpts().OpenMPUseTLS &&
 2758       CGM.getContext().getTargetInfo().isTLSSupported())
 2761   VD = VD->getDefinition(CGM.getContext());
 2762   if (VD && ThreadPrivateWithDefinition.insert(CGM.getMangledName(VD)).second) {
 2767     if (CGM.getLangOpts().CPlusPlus && PerformInit) {
 2770       CodeGenFunction CtorCGF(CGM);
 2772       ImplicitParamDecl Dst(CGM.getContext(), /*DC=*/nullptr, Loc,
 2773                             /*Id=*/nullptr, CGM.getContext().VoidPtrTy,
 2777       const auto &FI = CGM.getTypes().arrangeBuiltinFunctionDeclaration(
 2778           CGM.getContext().VoidPtrTy, Args);
 2779       llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
 2782           CGM.CreateGlobalInitOrDestructFunction(FTy, Name, FI, Loc);
 2783       CtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidPtrTy, Fn, FI,
 2787           CGM.getContext().VoidPtrTy, Dst.getLocation());
 2795           CGM.getContext().VoidPtrTy, Dst.getLocation());
 2803       CodeGenFunction DtorCGF(CGM);
 2805       ImplicitParamDecl Dst(CGM.getContext(), /*DC=*/nullptr, Loc,
 2806                             /*Id=*/nullptr, CGM.getContext().VoidPtrTy,
 2810       const auto &FI = CGM.getTypes().arrangeBuiltinFunctionDeclaration(
 2811           CGM.getContext().VoidTy, Args);
 2812       llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
 2815           CGM.CreateGlobalInitOrDestructFunction(FTy, Name, FI, Loc);
 2817       DtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, Fn, FI, Args,
 2823           /*Volatile=*/false, CGM.getContext().VoidPtrTy, Dst.getLocation());
 2834     llvm::Type *CopyCtorTyArgs[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
 2834     llvm::Type *CopyCtorTyArgs[] = {CGM.VoidPtrTy, CGM.VoidPtrTy};
 2835     auto *CopyCtorTy = llvm::FunctionType::get(CGM.VoidPtrTy, CopyCtorTyArgs,
 2843       auto *CtorTy = llvm::FunctionType::get(CGM.VoidPtrTy, CGM.VoidPtrTy,
 2843       auto *CtorTy = llvm::FunctionType::get(CGM.VoidPtrTy, CGM.VoidPtrTy,
 2849       auto *DtorTy = llvm::FunctionType::get(CGM.VoidTy, CGM.VoidPtrTy,
 2849       auto *DtorTy = llvm::FunctionType::get(CGM.VoidTy, CGM.VoidPtrTy,
 2856           llvm::FunctionType::get(CGM.VoidTy, /*isVarArg*/ false);
 2858       llvm::Function *InitFunction = CGM.CreateGlobalInitOrDestructFunction(
 2859           InitFunctionTy, Name, CGM.getTypes().arrangeNullaryFunction());
 2860       CodeGenFunction InitCGF(CGM);
 2862       InitCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, InitFunction,
 2863                             CGM.getTypes().arrangeNullaryFunction(), ArgList,
 2877   if (CGM.getLangOpts().OMPTargetTriples.empty() &&
 2878       !CGM.getLangOpts().OpenMPIsDevice)
 2885     return CGM.getLangOpts().OpenMPIsDevice;
 2886   VD = VD->getDefinition(CGM.getContext());
 2887   if (VD && !DeclareTargetWithDefinition.insert(CGM.getMangledName(VD)).second)
 2888     return CGM.getLangOpts().OpenMPIsDevice;
 2899   getTargetEntryUniqueInfo(CGM.getContext(), Loc, DeviceID, FileID, Line);
 2908   if (CGM.getLangOpts().CPlusPlus && PerformInit) {
 2911     if (CGM.getLangOpts().OpenMPIsDevice) {
 2914       CodeGenFunction CtorCGF(CGM);
 2916       const CGFunctionInfo &FI = CGM.getTypes().arrangeNullaryFunction();
 2917       llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
 2918       llvm::Function *Fn = CGM.CreateGlobalInitOrDestructFunction(
 2921       CtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, Fn, FI,
 2925                                Address(Addr, CGM.getContext().getDeclAlign(VD)),
 2930       ID = llvm::ConstantExpr::getBitCast(Fn, CGM.Int8PtrTy);
 2931       CGM.addUsedGlobal(cast<llvm::GlobalValue>(Ctor));
 2934           CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
 2934           CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
 2936           llvm::Constant::getNullValue(CGM.Int8Ty), Twine(Buffer, "_ctor"));
 2949     if (CGM.getLangOpts().OpenMPIsDevice) {
 2952       CodeGenFunction DtorCGF(CGM);
 2954       const CGFunctionInfo &FI = CGM.getTypes().arrangeNullaryFunction();
 2955       llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
 2956       llvm::Function *Fn = CGM.CreateGlobalInitOrDestructFunction(
 2959       DtorCGF.StartFunction(GlobalDecl(), CGM.getContext().VoidTy, Fn, FI,
 2964       DtorCGF.emitDestroy(Address(Addr, CGM.getContext().getDeclAlign(VD)),
 2969       ID = llvm::ConstantExpr::getBitCast(Fn, CGM.Int8PtrTy);
 2970       CGM.addUsedGlobal(cast<llvm::GlobalValue>(Dtor));
 2973           CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
 2973           CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
 2975           llvm::Constant::getNullValue(CGM.Int8Ty), Twine(Buffer, "_dtor"));
 2984   return CGM.getLangOpts().OpenMPIsDevice;
 2998       CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(GAddr, CGM.VoidPtrTy),
 2999       CGF.Builder.CreateIntCast(CGF.getTypeSize(VarType), CGM.SizeTy,
 3002           CGM.VoidPtrPtrTy, Twine(Name).concat(Suffix).concat(CacheSuffix))};
 3008       CGM.getPointerAlign());
 3147              CGM.getModule(), Ty, /*IsConstant*/ false,
 3214         CGF.EmitScalarExpr(Hint), CGM.IntPtrTy, /*isSigned=*/false));
 3250       llvm::ConstantInt::get(CGM.IntTy, /*V=*/0, /*isSigned=*/true)};
 3353   ASTContext &C = CGM.getContext();
 3403         CGM, CGF.ConvertTypeForMem(CopyprivateArrayTy)->getPointerTo(),
 3649           CGM, Schedule, ScheduleKind.M1, ScheduleKind.M2)), // Schedule type
 3840       llvm::ConstantInt::get(CGM.IntTy, RuntimeProcBind, /*isSigned=*/true)};
 4020   llvm::Module &M = CGM.getModule();
 4032   llvm::Constant *Data[] = {llvm::ConstantExpr::getBitCast(ID, CGM.VoidPtrTy),
 4033                             llvm::ConstantExpr::getBitCast(Str, CGM.Int8PtrTy),
 4034                             llvm::ConstantInt::get(CGM.SizeTy, Size),
 4035                             llvm::ConstantInt::get(CGM.Int32Ty, Flags),
 4036                             llvm::ConstantInt::get(CGM.Int32Ty, 0)};
 4039       CGM, getTgtOffloadEntryQTy(), /*IsConstant=*/true, Data,
 4058   if (CGM.getLangOpts().OpenMPSimd || OffloadEntriesInfoManager.empty())
 4061   llvm::Module &M = CGM.getModule();
 4073         llvm::ConstantInt::get(CGM.Int32Ty, V));
 4103         for (auto I = CGM.getContext().getSourceManager().fileinfo_begin(),
 4104                   E = CGM.getContext().getSourceManager().fileinfo_end();
 4108             Loc = CGM.getContext().getSourceManager().translateFileLineCol(
 4160         if (!CGM.GetGlobalValue(FnName))
 4162         unsigned DiagID = CGM.getDiags().getCustomDiagID(
 4166         CGM.getDiags().Report(std::get<1>(E), DiagID) << FnName;
 4179         if (CGM.getLangOpts().OpenMPIsDevice &&
 4180             CGM.getOpenMPRuntime().hasRequiresUnifiedSharedMemory())
 4183           unsigned DiagID = CGM.getDiags().getCustomDiagID(
 4187           CGM.getDiags().Report(std::get<1>(E), DiagID) << std::get<2>(E);
 4196         assert(((CGM.getLangOpts().OpenMPIsDevice && !CE->getAddress()) ||
 4197                 (!CGM.getLangOpts().OpenMPIsDevice && CE->getAddress())) &&
 4199         if (CGM.getLangOpts().OpenMPIsDevice)
 4202           unsigned DiagID = CGM.getDiags().getCustomDiagID(
 4206           CGM.getDiags().Report(DiagID);
 4226   if (!CGM.getLangOpts().OpenMPIsDevice)
 4229   if (CGM.getLangOpts().OMPHostIRFile.empty())
 4232   auto Buf = llvm::MemoryBuffer::getFile(CGM.getLangOpts().OMPHostIRFile);
 4234     CGM.getDiags().Report(diag::err_cannot_open_file)
 4235         << CGM.getLangOpts().OMPHostIRFile << EC.message();
 4244     unsigned DiagID = CGM.getDiags().getCustomDiagID(
 4246     CGM.getDiags().Report(DiagID)
 4247         << CGM.getLangOpts().OMPHostIRFile << EC.message();
 4292     ASTContext &C = CGM.getContext();
 4297     KmpRoutineEntryPtrTy = CGM.getTypes().ConvertType(KmpRoutineEntryPtrQTy);
 4313     ASTContext &C = CGM.getContext();
 4343     ASTContext &C = CGM.getContext();
 4367     ASTContext &C = CGM.getContext();
 4966   ASTContext &C = CGM.getContext();
 5009           CGM, D.getDirectiveKind(), KmpInt32Ty, KmpRoutineEntryPtrQTy));
 5019           CGM, D.getDirectiveKind(), KmpInt32Ty, KmpRoutineEntryPtrQTy));
 5026       createKmpTaskTWithPrivatesRecordDecl(CGM, KmpTaskTQTy, Privates);
 5044         CGM, Loc, Data.PrivateVars, Data.FirstprivateVars, Data.LastprivateVars,
 5055       CGM, Loc, D.getDirectiveKind(), KmpInt32Ty, KmpTaskTWithPrivatesPtrQTy,
 5087   llvm::Value *SharedsSize = CGM.getSize(C.getTypeSizeInChars(SharedsTy));
 5143           CGM, Loc, D, KmpTaskTWithPrivatesPtrQTy, KmpTaskTWithPrivatesQTyRD,
 5156         CGM, Loc, KmpInt32Ty, KmpTaskTWithPrivatesPtrQTy,
 5197   ASTContext &C = CGM.getContext();
 5239             CGF.Builder.CreatePtrToInt(Addr.getPointer(), CGM.SizeTy);
 5240         llvm::Value *UpIntPtr = CGF.Builder.CreatePtrToInt(UpAddr, CGM.SizeTy);
 5562   ASTContext &C = CGM.getContext();
 5573       CGM.getTypes().arrangeBuiltinFunctionDeclaration(C.VoidTy, Args);
 5575   auto *Fn = llvm::Function::Create(CGM.getTypes().GetFunctionType(CGFI),
 5577                                     &CGM.getModule());
 5578   CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, CGFI);
 5580   CodeGenFunction CGF(CGM);
 5717   ASTContext &C = CGM.getContext();
 6201   ASTContext &C = CGM.getContext();
 6223     llvm::Value *Idxs[] = {llvm::ConstantInt::get(CGM.SizeTy, /*V=*/0),
 6224                            llvm::ConstantInt::get(CGM.SizeTy, Cnt)};
 6247     SizeValInChars = CGF.Builder.CreateIntCast(SizeValInChars, CGM.SizeTy,
 6254         CGF.EmitCastToVoidPtr(emitReduceInitFunction(CGM, Loc, RCG, Cnt));
 6259     llvm::Value *Fini = emitReduceFiniFunction(CGM, Loc, RCG, Cnt);
 6262                                 : llvm::ConstantPointerNull::get(CGM.VoidPtrTy);
 6267         CGM, Loc, RCG, Cnt, Data.ReductionOps[Cnt], LHSExprs[Cnt],
 6274           llvm::ConstantInt::get(CGM.Int32Ty, /*V=*/1, /*isSigned=*/true),
 6282       CGF.Builder.CreateIntCast(getThreadID(CGF, Loc), CGM.IntTy,
 6284       llvm::ConstantInt::get(CGM.IntTy, Size, /*isSigned=*/true),
 6286                                                       CGM.VoidPtrTy)};
 6299     llvm::Value *SizeVal = CGF.Builder.CreateIntCast(Sizes.second, CGM.SizeTy,
 6302         CGF, CGM.getContext().getSizeType(),
 6303         generateUniqueName(CGM, "reduction_size", RCG.getRefExpr(N)));
 6309         CGF, CGM.getContext().VoidPtrTy,
 6310         generateUniqueName(CGM, "reduction", RCG.getRefExpr(N)));
 6313             RCG.getSharedLValue(N).getPointer(), CGM.VoidPtrTy),
 6325       CGF.Builder.CreateIntCast(getThreadID(CGF, Loc), CGM.IntTy,
 6329                                                       CGM.VoidPtrTy)};
 6487   getTargetEntryUniqueInfo(CGM.getContext(), D.getBeginLoc(), DeviceID, FileID,
 6498   CodeGenFunction CGF(CGM, true);
 6520   if (CGM.getLangOpts().OpenMPIsDevice) {
 6521     OutlinedFnID = llvm::ConstantExpr::getBitCast(OutlinedFn, CGM.Int8PtrTy);
 6527         CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
 6527         CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true,
 6529         llvm::Constant::getNullValue(CGM.Int8Ty), Name);
 8835   ASTContext &C = CGM.getContext();
 8862       CGM.getTypes().arrangeBuiltinFunctionDeclaration(C.VoidTy, Args);
 8863   llvm::FunctionType *FnTy = CGM.getTypes().GetFunctionType(FnInfo);
 8866   CGM.getCXXABI().getMangleContext().mangleTypeName(Ty, Out);
 8869                                     Name, &CGM.getModule());
 8870   CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FnInfo);
 8873   CodeGenFunction MapperCGF(CGM);
 8881       CGM.getTypes().ConvertTypeForMem(C.getPointerType(PtrTy)));
 8953         *BasePointers[I], CGM.getTypes().ConvertTypeForMem(C.VoidPtrTy));
 8955         Pointers[I], CGM.getTypes().ConvertTypeForMem(C.VoidPtrTy));
 8978         MapperCGF.Builder.CreatePHI(CGM.Int64Ty, 4, "omp.membermaptype");
 9038         MapperCGF.Builder.CreatePHI(CGM.Int64Ty, 4, "omp.maptype");
 9144     TD = getNestedDistributeDirective(CGM.getContext(), D);
 9399         Address(Info.BasePointersArray, CGM.getPointerAlign());
 9401         Address(Info.PointersArray, CGM.getPointerAlign());
 9402     InputInfo.SizesArray = Address(Info.SizesArray, CGM.getPointerAlign());
 9453     getTargetEntryUniqueInfo(CGM.getContext(), E.getBeginLoc(), DeviceID,
 9464       CodeGenFunction::EmitOMPTargetDeviceFunction(CGM, ParentName,
 9469           CGM, ParentName, cast<OMPTargetParallelDirective>(E));
 9473           CGM, ParentName, cast<OMPTargetTeamsDirective>(E));
 9477           CGM, ParentName, cast<OMPTargetTeamsDistributeDirective>(E));
 9481           CGM, ParentName, cast<OMPTargetTeamsDistributeSimdDirective>(E));
 9485           CGM, ParentName, cast<OMPTargetParallelForDirective>(E));
 9489           CGM, ParentName, cast<OMPTargetParallelForSimdDirective>(E));
 9493           CGM, ParentName, cast<OMPTargetSimdDirective>(E));
 9497           CGM, ParentName,
 9503               CGM, ParentName,
 9582   if (!CGM.getLangOpts().OpenMPIsDevice) {
 9594   StringRef Name = CGM.getMangledName(GD);
 9611   if (!CGM.getLangOpts().OpenMPIsDevice)
 9621           CGM.getMangledName(GlobalDecl(Ctor, Ctor_Complete));
 9626           CGM.getMangledName(GlobalDecl(Dtor, Dtor_Complete));
 9647   assert(VD->getType().isConstant(CGM.getContext()) &&
 9658     getTargetEntryUniqueInfo(CGM.getContext(), VD->getLocation(), DeviceID,
 9667       getOrCreateInternalVariable(CGM.getTypes().ConvertTypeForMem(Ty), VarName,
 9670   CharUnits VarSize = CGM.getContext().getTypeSizeInChars(Ty);
 9671   CGM.addCompilerUsedGlobal(cast<llvm::GlobalValue>(Addr));
 9680   if (CGM.getLangOpts().OMPTargetTriples.empty() &&
 9681       !CGM.getLangOpts().OpenMPIsDevice)
 9686     if (CGM.getLangOpts().OpenMPIsDevice) {
 9689       StringRef VarName = CGM.getMangledName(VD);
 9703     VarName = CGM.getMangledName(VD);
 9704     if (VD->hasDefinition(CGM.getContext()) != VarDecl::DeclarationOnly) {
 9705       VarSize = CGM.getContext().getTypeSizeInChars(VD->getType());
 9710     Linkage = CGM.getLLVMLinkageVarDefinition(VD, /*IsConstant=*/false);
 9712     if (CGM.getLangOpts().OpenMPIsDevice && !VD->isExternallyVisible()) {
 9714       if (!CGM.GetGlobalValue(RefName)) {
 9721         CGM.addCompilerUsedGlobal(GVAddrRef);
 9734     if (CGM.getLangOpts().OpenMPIsDevice) {
 9741     VarSize = CGM.getPointerSize();
 9765       CGM.EmitGlobal(VD);
 9771       (void)CGM.getOpenMPRuntime().getAddrOfDeclareTargetVar(VD);
 9835   if (!CGM.getLangOpts().OpenMPIsDevice || !ShouldMarkAsGlobal)
 9838   StringRef Name = CGM.getMangledName(GD);
 9844       if (auto *F = dyn_cast_or_null<llvm::Function>(CGM.GetGlobalValue(Name)))
 9857   if (CGM.getLangOpts().OMPTargetTriples.empty() ||
 9858       CGM.getLangOpts().OpenMPSimd || CGM.getLangOpts().OpenMPIsDevice ||
 9858       CGM.getLangOpts().OpenMPSimd || CGM.getLangOpts().OpenMPIsDevice ||
 9865   ASTContext &C = CGM.getContext();
 9869     CodeGenFunction CGF(CGM);
 9870     const auto &FI = CGM.getTypes().arrangeNullaryFunction();
 9871     llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
 9873     RequiresRegFn = CGM.CreateGlobalInitOrDestructFunction(FTy, ReqName, FI);
 9889         llvm::ConstantInt::get(CGM.Int64Ty, Flags));
10210         Address(Info.BasePointersArray, CGM.getPointerAlign());
10212         Address(Info.PointersArray, CGM.getPointerAlign());
10214         Address(Info.SizesArray, CGM.getPointerAlign());
10671   ASTContext &C = CGM.getContext();
10762       if (CGM.getTriple().getArch() == llvm::Triple::x86 ||
10763           CGM.getTriple().getArch() == llvm::Triple::x86_64) {
10765       } else if (CGM.getTriple().getArch() == llvm::Triple::aarch64) {
10768         if (CGM.getTarget().hasFeature("sve"))
10769           emitAArch64DeclareSimdFunction(CGM, FD, VLEN, ParamAttrs, State,
10771         if (CGM.getTarget().hasFeature("neon"))
10772           emitAArch64DeclareSimdFunction(CGM, FD, VLEN, ParamAttrs, State,
10811   ASTContext &C = CGM.getContext();
10852     CGF.EmitStoreOfScalar(llvm::ConstantInt::getSigned(CGM.Int64Ty, /*V=*/1),
10861       llvm::ConstantInt::getSigned(CGM.Int32Ty, NumIterations.size()),
10864           CGM.VoidPtrTy)};
10880       CGM.getContext().getIntTypeForBitwidth(/*DestWidth=*/64, /*Signed=*/1);
10882   QualType ArrayTy = CGM.getContext().getConstantArrayType(
10980   CharUnits Align = CGM.getContext().getDeclAlign(CVD);
10985         Size, CGM.getSize(Align - CharUnits::fromQuantity(1)));
10986     Size = CGF.Builder.CreateUDiv(Size, CGM.getSize(Align));
10987     Size = CGF.Builder.CreateNUWMul(Size, CGM.getSize(Align));
10989     CharUnits Sz = CGM.getContext().getTypeSizeInChars(CVD->getType());
10990     Size = CGM.getSize(Sz.alignTo(Align));
10999     Allocator = CGF.Builder.CreateIntToPtr(Allocator, CGM.VoidPtrTy);
11002                                                                 CGM.VoidPtrTy);
11016       CGF.ConvertTypeForMem(CGM.getContext().getPointerType(CVD->getType())),
11128   StringRef MangledName = CGM.getMangledName(GD);
11129   llvm::GlobalValue *Orig = CGM.GetGlobalValue(MangledName);
11132   const FunctionDecl *NewFD = getDeclareVariantFunction(CGM.getContext(), D);
tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
 1146   WorkerFunctionState WST(CGM, D.getBeginLoc());
 1179         CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/false,
 1179         CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/false,
 1181         llvm::ConstantPointerNull::get(CGM.VoidPtrTy),
 1184         CGM.getContext().getTargetAddressSpace(LangAS::cuda_shared));
 1278       CGM.getLangOpts().OpenMPCUDAForceFullRuntime ||
 1279           !supportsLightweightRuntime(CGM.getContext(), D));
 1309         CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/false,
 1309         CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/false,
 1311         llvm::ConstantPointerNull::get(CGM.VoidPtrTy),
 1314         CGM.getContext().getTargetAddressSpace(LangAS::cuda_shared));
 1392   ASTContext &Ctx = CGM.getContext();
 1394   CodeGenFunction CGF(CGM, /*suppressNewContext=*/true);
 1461     llvm::Value *ID = Bld.CreatePointerBitCastOrAddrSpaceCast(W, CGM.Int8PtrTy);
 1489       llvm::FunctionType::get(CGM.VoidTy, {CGM.Int16Ty, CGM.Int32Ty},
 1489       llvm::FunctionType::get(CGM.VoidTy, {CGM.Int16Ty, CGM.Int32Ty},
 1489       llvm::FunctionType::get(CGM.VoidTy, {CGM.Int16Ty, CGM.Int32Ty},
 1532     llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty};
 1532     llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty};
 1534         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1535     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_kernel_init");
 1540     llvm::Type *TypeParams[] = {CGM.Int16Ty};
 1542         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1543     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_kernel_deinit");
 1549     llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
 1549     llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
 1549     llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
 1551         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1552     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_spmd_kernel_init");
 1557     llvm::Type *TypeParams[] = {CGM.Int16Ty};
 1559         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1560     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_spmd_kernel_deinit_v2");
 1566     llvm::Type *TypeParams[] = {CGM.Int8PtrTy, CGM.Int16Ty};
 1566     llvm::Type *TypeParams[] = {CGM.Int8PtrTy, CGM.Int16Ty};
 1568         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1569     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_kernel_prepare_parallel");
 1575     llvm::Type *TypeParams[] = {CGM.Int8PtrPtrTy, CGM.Int16Ty};
 1575     llvm::Type *TypeParams[] = {CGM.Int8PtrPtrTy, CGM.Int16Ty};
 1576     llvm::Type *RetTy = CGM.getTypes().ConvertType(CGM.getContext().BoolTy);
 1576     llvm::Type *RetTy = CGM.getTypes().ConvertType(CGM.getContext().BoolTy);
 1579     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_kernel_parallel");
 1585         llvm::FunctionType::get(CGM.VoidTy, llvm::None, /*isVarArg*/ false);
 1586     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_kernel_end_parallel");
 1592     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1594         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1595     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_serialized_parallel");
 1601     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1603         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1604     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_serialized_parallel");
 1610     llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
 1610     llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
 1610     llvm::Type *TypeParams[] = {CGM.Int32Ty, CGM.Int16Ty, CGM.Int16Ty};
 1612         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg*/ false);
 1613     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_shuffle_int32");
 1619     llvm::Type *TypeParams[] = {CGM.Int64Ty, CGM.Int16Ty, CGM.Int16Ty};
 1619     llvm::Type *TypeParams[] = {CGM.Int64Ty, CGM.Int16Ty, CGM.Int16Ty};
 1619     llvm::Type *TypeParams[] = {CGM.Int64Ty, CGM.Int16Ty, CGM.Int16Ty};
 1621         llvm::FunctionType::get(CGM.Int64Ty, TypeParams, /*isVarArg*/ false);
 1622     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_shuffle_int64");
 1631     llvm::Type *ShuffleReduceTypeParams[] = {CGM.VoidPtrTy, CGM.Int16Ty,
 1631     llvm::Type *ShuffleReduceTypeParams[] = {CGM.VoidPtrTy, CGM.Int16Ty,
 1632                                              CGM.Int16Ty, CGM.Int16Ty};
 1632                                              CGM.Int16Ty, CGM.Int16Ty};
 1634         llvm::FunctionType::get(CGM.VoidTy, ShuffleReduceTypeParams,
 1636     llvm::Type *InterWarpCopyTypeParams[] = {CGM.VoidPtrTy, CGM.Int32Ty};
 1636     llvm::Type *InterWarpCopyTypeParams[] = {CGM.VoidPtrTy, CGM.Int32Ty};
 1638         llvm::FunctionType::get(CGM.VoidTy, InterWarpCopyTypeParams,
 1641                                 CGM.Int32Ty,
 1642                                 CGM.Int32Ty,
 1643                                 CGM.SizeTy,
 1644                                 CGM.VoidPtrTy,
 1648         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
 1649     RTLFn = CGM.CreateRuntimeFunction(
 1655     llvm::Type *TypeParams[] = {CGM.Int32Ty};
 1657         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 1658     RTLFn = CGM.CreateRuntimeFunction(
 1674     llvm::Type *ShuffleReduceTypeParams[] = {CGM.VoidPtrTy, CGM.Int16Ty,
 1674     llvm::Type *ShuffleReduceTypeParams[] = {CGM.VoidPtrTy, CGM.Int16Ty,
 1675                                              CGM.Int16Ty, CGM.Int16Ty};
 1675                                              CGM.Int16Ty, CGM.Int16Ty};
 1677         llvm::FunctionType::get(CGM.VoidTy, ShuffleReduceTypeParams,
 1679     llvm::Type *InterWarpCopyTypeParams[] = {CGM.VoidPtrTy, CGM.Int32Ty};
 1679     llvm::Type *InterWarpCopyTypeParams[] = {CGM.VoidPtrTy, CGM.Int32Ty};
 1681         llvm::FunctionType::get(CGM.VoidTy, InterWarpCopyTypeParams,
 1683     llvm::Type *GlobalListTypeParams[] = {CGM.VoidPtrTy, CGM.IntTy,
 1683     llvm::Type *GlobalListTypeParams[] = {CGM.VoidPtrTy, CGM.IntTy,
 1684                                           CGM.VoidPtrTy};
 1686         llvm::FunctionType::get(CGM.VoidTy, GlobalListTypeParams,
 1689                                 CGM.Int32Ty,
 1690                                 CGM.VoidPtrTy,
 1691                                 CGM.Int32Ty,
 1692                                 CGM.VoidPtrTy,
 1700         llvm::FunctionType::get(CGM.Int32Ty, TypeParams, /*isVarArg=*/false);
 1701     RTLFn = CGM.CreateRuntimeFunction(
 1708         llvm::FunctionType::get(CGM.VoidTy, llvm::None, /*isVarArg*/ false);
 1709     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_data_sharing_init_stack");
 1715         llvm::FunctionType::get(CGM.VoidTy, llvm::None, /*isVarArg*/ false);
 1717         CGM.CreateRuntimeFunction(FnTy, "__kmpc_data_sharing_init_stack_spmd");
 1723     llvm::Type *TypeParams[] = {CGM.SizeTy, CGM.Int16Ty};
 1723     llvm::Type *TypeParams[] = {CGM.SizeTy, CGM.Int16Ty};
 1725         llvm::FunctionType::get(CGM.VoidPtrTy, TypeParams, /*isVarArg=*/false);
 1726     RTLFn = CGM.CreateRuntimeFunction(
 1732     llvm::Type *TypeParams[] = {CGM.VoidPtrTy};
 1734         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 1735     RTLFn = CGM.CreateRuntimeFunction(FnTy,
 1742     llvm::Type *TypeParams[] = {CGM.Int8PtrPtrTy->getPointerTo(), CGM.SizeTy};
 1742     llvm::Type *TypeParams[] = {CGM.Int8PtrPtrTy->getPointerTo(), CGM.SizeTy};
 1744         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1745     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_begin_sharing_variables");
 1751         llvm::FunctionType::get(CGM.VoidTy, llvm::None, /*isVarArg*/ false);
 1752     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_end_sharing_variables");
 1757     llvm::Type *TypeParams[] = {CGM.Int8PtrPtrTy->getPointerTo()};
 1759         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1760     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_get_shared_variables");
 1765     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1767         llvm::FunctionType::get(CGM.Int16Ty, TypeParams, /*isVarArg*/ false);
 1768     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_parallel_level");
 1773     auto *FnTy = llvm::FunctionType::get(CGM.Int8Ty, /*isVarArg=*/false);
 1774     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_is_spmd_exec_mode");
 1780     llvm::Type *TypeParams[] = {CGM.Int16Ty, CGM.VoidPtrTy, CGM.SizeTy,
 1780     llvm::Type *TypeParams[] = {CGM.Int16Ty, CGM.VoidPtrTy, CGM.SizeTy,
 1780     llvm::Type *TypeParams[] = {CGM.Int16Ty, CGM.VoidPtrTy, CGM.SizeTy,
 1781                                 CGM.Int16Ty, CGM.VoidPtrPtrTy};
 1781                                 CGM.Int16Ty, CGM.VoidPtrPtrTy};
 1783         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1784     RTLFn = CGM.CreateRuntimeFunction(FnTy, "__kmpc_get_team_static_memory");
 1790     llvm::Type *TypeParams[] = {CGM.Int16Ty, CGM.Int16Ty};
 1790     llvm::Type *TypeParams[] = {CGM.Int16Ty, CGM.Int16Ty};
 1792         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg=*/false);
 1794         CGM.CreateRuntimeFunction(FnTy, "__kmpc_restore_team_static_memory");
 1799     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1801         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1803         CGM.CreateConvergentRuntimeFunction(FnTy, /*Name*/ "__kmpc_barrier");
 1809     llvm::Type *TypeParams[] = {getIdentTyPointerTy(), CGM.Int32Ty};
 1811         llvm::FunctionType::get(CGM.VoidTy, TypeParams, /*isVarArg*/ false);
 1812     RTLFn = CGM.CreateConvergentRuntimeFunction(
 1819         llvm::FunctionType::get(CGM.Int32Ty, llvm::None, /*isVarArg=*/false);
 1820     RTLFn = CGM.CreateConvergentRuntimeFunction(FnTy, "__kmpc_warp_active_thread_mask");
 1826         llvm::FunctionType::get(CGM.VoidTy, CGM.Int32Ty, /*isVarArg=*/false);
 1826         llvm::FunctionType::get(CGM.VoidTy, CGM.Int32Ty, /*isVarArg=*/false);
 1827     RTLFn = CGM.CreateConvergentRuntimeFunction(FnTy, "__kmpc_syncwarp");
 1842   llvm::Module &M = CGM.getModule();
 1843   llvm::LLVMContext &Ctx = CGM.getLLVMContext();
 1865   bool Mode = supportsSPMDExecutionMode(CGM.getContext(), D);
 1873   setPropertyExecutionMode(CGM, OutlinedFn->getName(), Mode);
 1914     CGM.emitOpenMPDeviceFunctionRedefinition(OldGD, NewGD, OrigAddr);
 1978   if (CGM.getLangOpts().Optimize) {
 2043     getTeamsReductionVars(CGM.getContext(), D, LastPrivatesReductions);
 2045     getDistributeLastprivateVars(CGM.getContext(), D, LastPrivatesReductions);
 2048           CGM.getContext(), llvm::None, LastPrivatesReductions,
 2099   if (CGM.getLangOpts().Optimize) {
 2111   if (getDataSharingMode(CGM) != CGOpenMPRuntimeNVPTX::Generic &&
 2121     QualType GlobalRecTy = CGM.getContext().getRecordType(GlobalizedVarsRecord);
 2129         CGM.getContext().getTypeAlignInChars(GlobalRecTy).getQuantity();
 2131         CGM.getContext().getTypeSizeInChars(GlobalRecTy).getQuantity();
 2164       llvm::Value *Size = llvm::ConstantInt::get(CGM.SizeTy, GlobalRecordSize);
 2168             CGM.getContext().getRecordType(SecGlobalizedVarsRecord);
 2175             CGM.getContext().getTypeAlignInChars(SecGlobalRecTy).getQuantity();
 2177             CGM.getContext().getTypeSizeInChars(SecGlobalRecTy).getQuantity();
 2180             IsTTD, llvm::ConstantInt::get(CGM.SizeTy, GlobalRecordSize), Size);
 2206         QualType RDTy = CGM.getContext().getRecordType(RD);
 2208             CGM.getContext().getTypeAlignInChars(RDTy).getQuantity();
 2209         unsigned Size = CGM.getContext().getTypeSizeInChars(RDTy).getQuantity();
 2214           CGM.getContext().getTypeAlignInChars(GlobalRecTy).getQuantity();
 2222             CGM.getModule(), CGM.Int16Ty, /*isConstant=*/true,
 2222             CGM.getModule(), CGM.Int16Ty, /*isConstant=*/true,
 2226         QualType Int16Ty = CGM.getContext().getIntTypeForBitwidth(
 2230                     CGM.getContext().getTypeAlignInChars(Int16Ty)),
 2233             CGM.getModule(), CGM.Int8Ty, /*isConstant=*/false,
 2233             CGM.getModule(), CGM.Int8Ty, /*isConstant=*/false,
 2236             CGM.getModule(), CGM.SizeTy, /*isConstant=*/true,
 2236             CGM.getModule(), CGM.SizeTy, /*isConstant=*/true,
 2241             Address(RecSize, CGM.getSizeAlign()), /*Volatile=*/false,
 2242             CGM.getContext().getSizeType(), Loc);
 2244             KernelStaticGlobalized, CGM.VoidPtrPtrTy);
 2247                 CGM.Int16Ty,
 2260           Address(KernelStaticGlobalized, CGM.getPointerAlign()),
 2261           CGM.getContext()
 2262               .getPointerType(CGM.getContext().VoidPtrTy)
 2274           llvm::ConstantInt::get(CGM.SizeTy, GlobalRecordSize),
 2322             Address(Ptr, CGM.getContext().getDeclAlign(Rec.first)), VarTy,
 2364     CharUnits Align = CGM.getContext().getDeclAlign(VD);
 2382                                      CGM.getContext().getDeclAlign(VD),
 2393   if (getDataSharingMode(CGM) != CGOpenMPRuntimeNVPTX::Generic &&
 2430           QualType Int16Ty = CGM.getContext().getIntTypeForBitwidth(
 2434                       CGM.getContext().getTypeAlignInChars(Int16Ty)),
 2438                   CGM.Int16Ty,
 2534     llvm::Value *ID = Bld.CreateBitOrPointerCast(WFn, CGM.Int8PtrTy);
 2555           llvm::ConstantInt::get(CGM.SizeTy, CapturedVars.size())};
 2767   CGF.EmitStoreOfScalar(llvm::Constant::getNullValue(CGM.Int32Ty), CounterLVal,
 4288   ASTContext &C = CGM.getContext();
 4332       CGM, Privates, ReductionArrayTy, ReductionFn, Loc);
 4334       emitInterWarpCopyFunction(CGM, Privates, ReductionArrayTy, Loc);
 4359         CGM.getContext(), PrivatesReductions, llvm::None, VarFieldMap,
 4364           CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/true,
 4364           CGM.getModule(), CGM.VoidPtrTy, /*isConstant=*/true,
 4369         Address(KernelTeamsReductionPtr, CGM.getPointerAlign()),
 4372         CGM, Privates, ReductionArrayTy, Loc, TeamReductionRec, VarFieldMap);
 4374         CGM, Privates, ReductionArrayTy, Loc, TeamReductionRec, VarFieldMap,
 4377         CGM, Privates, ReductionArrayTy, Loc, TeamReductionRec, VarFieldMap);
 4379         CGM, Privates, ReductionArrayTy, Loc, TeamReductionRec, VarFieldMap,
 4405       Res, llvm::ConstantInt::get(CGM.Int32Ty, /*V=*/1));
 4452       PointeeTy = CGM.getContext().getAddrSpaceQualType(PointeeTy,
 4455                PointeeTy.isConstant(CGM.getContext())) {
 4456       PointeeTy = CGM.getContext().getAddrSpaceQualType(PointeeTy,
 4460   ArgType = CGM.getContext().getPointerType(PointeeTy);
 4464   ArgType = QC.apply(CGM.getContext(), ArgType);
 4467         CGM.getContext(), /*DC=*/nullptr, NativeParam->getLocation(),
 4470       CGM.getContext(),
 4540   ASTContext &Ctx = CGM.getContext();
 4559       CGM.getTypes().arrangeBuiltinFunctionDeclaration(Ctx.VoidTy, WrapperArgs);
 4562       CGM.getTypes().GetFunctionType(CGFI), llvm::GlobalValue::InternalLinkage,
 4563       Twine(OutlinedParallelFn->getName(), "_wrapper"), &CGM.getModule());
 4564   CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, CGFI);
 4568   CodeGenFunction CGF(CGM, /*suppressNewContext=*/true);
 4658   if (getDataSharingMode(CGM) != CGOpenMPRuntimeNVPTX::Generic)
 4753           CGM.getModule(), VarTy, /*isConstant=*/false,
 4757           CGM.getContext().getTargetAddressSpace(LangAS::cuda_constant));
 4758       CharUnits Align = CGM.getContext().getDeclAlign(VD);
 4765           CGM.getModule(), VarTy, /*isConstant=*/false,
 4769           CGM.getContext().getTargetAddressSpace(LangAS::cuda_shared));
 4770       CharUnits Align = CGM.getContext().getDeclAlign(VD);
 4778           CGM.getModule(), VarTy, /*isConstant=*/false,
 4781       CharUnits Align = CGM.getContext().getDeclAlign(VD);
 4788   if (getDataSharingMode(CGM) != CGOpenMPRuntimeNVPTX::Generic)
 4898   return CGM.getContext().getTargetAddressSpace(LangAS::cuda_constant);
 4953       switch (getCudaArch(CGM)) {
 4966         CGM.Error(Clause->getBeginLoc(),
 5060     ASTContext &C = CGM.getContext();
 5101       Records.RecSize->setInitializer(llvm::ConstantInt::get(CGM.SizeTy, Size));
 5103           llvm::ConstantInt::get(CGM.Int16Ty, UseSharedMemory ? 1 : 0));
 5124       llvm::Type *LLVMStaticTy = CGM.getTypes().ConvertTypeForMem(StaticTy);
 5126           CGM.getModule(), LLVMStaticTy,
 5133           GV, CGM.VoidPtrTy);
 5142       std::pair<unsigned, unsigned> SMsBlockPerSM = getSMsBlocksPerSM(CGM);
 5151       llvm::Type *LLVMArr2Ty = CGM.getTypes().ConvertTypeForMem(Arr2Ty);
 5156           CGM.getModule(), LLVMArr2Ty,
 5161           GV, CGM.VoidPtrTy);
 5169     ASTContext &C = CGM.getContext();
 5186         CGM.getTypes().ConvertTypeForMem(StaticTy);
 5191         CGM.getModule(), LLVMReductionsBufferTy,
 5197                                                              CGM.VoidPtrTy));