This is separated from https://reviews.llvm.org/D80858
For -fgpu-rdc mode, static device vars in different TU's may have the same name.
To support accessing file-scope static device variables in host code, we need to give them
a distinct name and external linkage. This can be done by postfixing each static device variable with
a distinct CUID (Compilation Unit ID) hash.
Since the static device variables have different name across compilation units, now we let
them have external linkage so that they can be looked up by the runtime.
!(getLangOpts().GPURelocatableDeviceCode && getLangOpts().CUID.empty()).
Maybe this should be broken down into something easier to read.