}
SanitizerMask CudaToolChain::getSupportedSanitizers() const {
- // The CudaToolChain only supports address sanitization in the sense that it
- // allows ASAN arguments on the command line. It must not error out on these
- // command line arguments because the host code compilation supports them.
- // However, it doesn't actually do any address sanitization for device code;
- // instead, it just ignores any ASAN command line arguments it sees.
- return SanitizerKind::Address;
+ // The CudaToolChain only supports sanitizers in the sense that it allows
+ // sanitizer arguments on the command line if they are supported by the host
+ // toolchain. The CudaToolChain will actually ignore any command line
+ // arguments for any of these "supported" sanitizers. That means that no
+ // sanitization of device code is actually supported at this time.
+ //
+ // This behavior is necessary because the host and device toolchains
+ // invocations often share the command line, so the device toolchain must
+ // tolerate flags meant only for the host toolchain.
+ return HostTC.getSupportedSanitizers();
}
/// XCore tool chain