yaxunl added inline comments.
================ Comment at: clang/lib/CodeGen/TargetInfo.cpp:9436 + CGM.getModule(), Type, true, + llvm::GlobalValue::LinkageTypes::LinkOnceODRLinkage, + llvm::ConstantInt::get(Type, Value), Name, nullptr, ---------------- yaxunl wrote: > jhuber6 wrote: > > yaxunl wrote: > > > This does not support per-TU control variables. Probably should use > > > internal linkage. > > The AMDGPU device libraries use `linkone_odr` so I figured it was the most > > appropriate here. It should mean that we can have multiple identical > > definitions and they don't clash. There's also no requirement for these to > > be emitted as symbols AFAIK. > > The AMDGPU device libraries use `linkone_odr` so I figured it was the most > > appropriate here. It should mean that we can have multiple identical > > definitions and they don't clash. There's also no requirement for these to > > be emitted as symbols AFAIK. > > clang uses -mlink-builtin-bitcode to link these device libraries for HIP and > OpenCL. Then the linkage of these variables becomes internal linkage. That's > why it works for per-TU control. > > The AMDGPU device libraries use `linkone_odr` so I figured it was the most > > appropriate here. It should mean that we can have multiple identical > > definitions and they don't clash. There's also no requirement for these to > > be emitted as symbols AFAIK. > > clang uses -mlink-builtin-bitcode to link these device libraries for HIP and > OpenCL. Then the linkage of these variables becomes internal linkage. That's > why it works for per-TU control. You may let HIP and OpenCL use internal linkage and C/C++/OpenMP use linkonce_odr since only HIP and OpenCL toolchain use -mlink-builtin-bitcode to link these device libraries Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D130096/new/ https://reviews.llvm.org/D130096 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits