[PATCH] D96835: [HIP] Support device sanitizer
Conanap added a comment. Hello, One of our PowerPC buildbots is failing because it is named `lld-multistage`, which matches with this CHECK-NOT in `clang/test/Driver/hip-sanitize-options.hip`: `;CHECK-NOT: {{"[^"]*lld[^"]*".* ".*hip.bc"}}`. I've created a patch and if you could review it that'd be great! https://reviews.llvm.org/D97423 Thank you! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96835/new/ https://reviews.llvm.org/D96835 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D96835: [HIP] Support device sanitizer
This revision was automatically updated to reflect the committed changes. yaxunl marked 3 inline comments as done. Closed by commit rG51ade31e6789: [HIP] Support device sanitizer (authored by yaxunl). Herald added a project: clang. Changed prior to commit: https://reviews.llvm.org/D96835?vs=324510=324868#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96835/new/ https://reviews.llvm.org/D96835 Files: clang/include/clang/Driver/Options.td clang/include/clang/Driver/ToolChain.h clang/lib/Driver/Driver.cpp clang/lib/Driver/SanitizerArgs.cpp clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/AMDGPU.cpp clang/lib/Driver/ToolChains/HIP.cpp clang/lib/Driver/ToolChains/HIP.h clang/lib/Driver/ToolChains/ROCm.h clang/test/Driver/Inputs/rocm-invalid/README clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/hip.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/ockl.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_correctly_rounded_sqrt_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_daz_opt_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_daz_opt_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_finite_only_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_finite_only_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_1010.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_1011.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_1012.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_803.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_900.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_908.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_unsafe_math_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_unsafe_math_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_wavefrontsize64_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_wavefrontsize64_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/ocml.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/opencl.bc clang/test/Driver/Inputs/rocm-invalid/bin/.hipVersion clang/test/Driver/Inputs/rocm-invalid/include/hip/hip_runtime.h clang/test/Driver/Inputs/rocm/amdgcn/bitcode/asanrtl.bc clang/test/Driver/hip-sanitize-options.hip Index: clang/test/Driver/hip-sanitize-options.hip === --- clang/test/Driver/hip-sanitize-options.hip +++ clang/test/Driver/hip-sanitize-options.hip @@ -1,9 +1,40 @@ // REQUIRES: clang-driver, x86-registered-target, amdgpu-registered-target -// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx906 \ +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ // RUN: -fsanitize=address \ -// RUN: -nogpuinc -nogpulib \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ // RUN: %s 2>&1 | FileCheck %s +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fno-gpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ +// RUN: %s 2>&1 | FileCheck %s + +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fgpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=NORDC %s + +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fgpu-sanitize -fgpu-rdc \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=RDC %s + +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fgpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm-invalid \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=FAIL %s + // CHECK-NOT: {{"[^"]*clang[^"]*".* "-fcuda-is-device".* "-fsanitize=address"}} +// CHECK-NOT: {{"[^"]*lld[^"]*".* ".*hip.bc"}} // CHECK: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address"}} + +// NORDC: {{"[^"]*clang[^"]*".* "-fcuda-is-device".* "-fsanitize=address".*}} "-o" "[[OUT:[^"]*.bc]]" +// NORDC: {{"[^"]*lld[^"]*".*}} "[[OUT]]" {{".*asanrtl.bc" ".*hip.bc"}} +// NORDC: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address"}} + +// RDC: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address"}} +// RDC: {{"[^"]*clang[^"]*".* "-emit-llvm-bc".* "-fcuda-is-device".* "-fsanitize=address".*}} "-o" "[[OUT:[^"]*.bc]]" +// RDC: {{"[^"]*lld[^"]*".*}} "[[OUT]]" {{".*asanrtl.bc" ".*hip.bc"}} + +// FAIL: AMDGPU address sanitizer runtime library (asanrtl) is
[PATCH] D96835: [HIP] Support device sanitizer
yaxunl marked 3 inline comments as done. yaxunl added inline comments. Comment at: clang/lib/Driver/ToolChain.cpp:1185 +ToolChain::getHIPDeviceLibs(const ArgList ) const { + return llvm::SmallVector(); +} tra wrote: > Nit: It could be just `return {}`; will do Comment at: clang/lib/Driver/ToolChains/HIP.cpp:376 + if (DriverArgs.hasArg(options::OPT_nogpulib)) +return BCLibs; + ArgStringList LibraryPaths; tra wrote: > I'd explicitly return `{}` to make it obvious that it's an empty list and > move `BClibs` down to where we use it first. will do Comment at: clang/test/Driver/hip-sanitize-options.hip:25 +// RUN: -fsanitize=address -fgpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm-invalid \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=FAIL %s tra wrote: > I'd add a comment describing what exactly is invalid about `rocm-invalid`. > Maybe add it to a README in the directory. > > Or, If the purpose is very specific, rename the directory to reflect it. E.g. > if it just to test handling of installations w/o asan bitcode, call it > `rocm-noasan`. I will add a README to the directory explaining what is invalid, since we may reuse this directory for other invalid usages later. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96835/new/ https://reviews.llvm.org/D96835 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D96835: [HIP] Support device sanitizer
tra accepted this revision. tra added a comment. This revision is now accepted and ready to land. Nice. LGTM with few minor nits. Comment at: clang/lib/Driver/ToolChain.cpp:1185 +ToolChain::getHIPDeviceLibs(const ArgList ) const { + return llvm::SmallVector(); +} Nit: It could be just `return {}`; Comment at: clang/lib/Driver/ToolChains/HIP.cpp:376 + if (DriverArgs.hasArg(options::OPT_nogpulib)) +return BCLibs; + ArgStringList LibraryPaths; I'd explicitly return `{}` to make it obvious that it's an empty list and move `BClibs` down to where we use it first. Comment at: clang/test/Driver/hip-sanitize-options.hip:25 +// RUN: -fsanitize=address -fgpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm-invalid \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=FAIL %s I'd add a comment describing what exactly is invalid about `rocm-invalid`. Maybe add it to a README in the directory. Or, If the purpose is very specific, rename the directory to reflect it. E.g. if it just to test handling of installations w/o asan bitcode, call it `rocm-noasan`. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96835/new/ https://reviews.llvm.org/D96835 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D96835: [HIP] Support device sanitizer
yaxunl updated this revision to Diff 324510. yaxunl marked 2 inline comments as done. yaxunl added a comment. revised by Artem's comments CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96835/new/ https://reviews.llvm.org/D96835 Files: clang/include/clang/Driver/Options.td clang/include/clang/Driver/ToolChain.h clang/lib/Driver/Driver.cpp clang/lib/Driver/SanitizerArgs.cpp clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/AMDGPU.cpp clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp clang/lib/Driver/ToolChains/HIP.cpp clang/lib/Driver/ToolChains/HIP.h clang/lib/Driver/ToolChains/ROCm.h clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/hip.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/ockl.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_correctly_rounded_sqrt_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_daz_opt_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_daz_opt_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_finite_only_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_finite_only_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_1010.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_1011.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_1012.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_803.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_900.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_908.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_unsafe_math_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_unsafe_math_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_wavefrontsize64_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_wavefrontsize64_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/ocml.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/opencl.bc clang/test/Driver/Inputs/rocm-invalid/bin/.hipVersion clang/test/Driver/Inputs/rocm-invalid/include/hip/hip_runtime.h clang/test/Driver/Inputs/rocm/amdgcn/bitcode/asanrtl.bc clang/test/Driver/hip-sanitize-options.hip Index: clang/test/Driver/hip-sanitize-options.hip === --- clang/test/Driver/hip-sanitize-options.hip +++ clang/test/Driver/hip-sanitize-options.hip @@ -1,9 +1,40 @@ // REQUIRES: clang-driver, x86-registered-target, amdgpu-registered-target -// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx906 \ +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ // RUN: -fsanitize=address \ -// RUN: -nogpuinc -nogpulib \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ // RUN: %s 2>&1 | FileCheck %s +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fno-gpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ +// RUN: %s 2>&1 | FileCheck %s + +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fgpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=NORDC %s + +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fgpu-sanitize -fgpu-rdc \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=RDC %s + +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fgpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm-invalid \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=FAIL %s + // CHECK-NOT: {{"[^"]*clang[^"]*".* "-fcuda-is-device".* "-fsanitize=address"}} +// CHECK-NOT: {{"[^"]*lld[^"]*".* ".*hip.bc"}} // CHECK: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address"}} + +// NORDC: {{"[^"]*clang[^"]*".* "-fcuda-is-device".* "-fsanitize=address".*}} "-o" "[[OUT:[^"]*.bc]]" +// NORDC: {{"[^"]*lld[^"]*".*}} "[[OUT]]" {{".*asanrtl.bc" ".*hip.bc"}} +// NORDC: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address"}} + +// RDC: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address"}} +// RDC: {{"[^"]*clang[^"]*".* "-emit-llvm-bc".* "-fcuda-is-device".* "-fsanitize=address".*}} "-o" "[[OUT:[^"]*.bc]]" +// RDC: {{"[^"]*lld[^"]*".*}} "[[OUT]]" {{".*asanrtl.bc" ".*hip.bc"}} + +// FAIL: AMDGPU address sanitizer runtime library (asanrtl) is not found. Please install ROCm device library which supports address sanitizer Index: clang/test/Driver/Inputs/rocm-invalid/bin/.hipVersion === ---
[PATCH] D96835: [HIP] Support device sanitizer
yaxunl marked 2 inline comments as done. yaxunl added inline comments. Comment at: clang/include/clang/Driver/Options.td:939 "__cyg_profile_func_enter and __cyg_profile_func_exit">; +def fgpu_sanitize : Flag<["-"], "fgpu-sanitize">, + HelpText<"Enable sanitizer for AMDGPU target.">; tra wrote: > We do have `BoolFOption` for `-fsomething`/`-fno-something` options. done Comment at: clang/lib/Driver/ToolChains/HIP.cpp:117 + false)) +TC.addHIPDeviceLibArgs(Args, LldArgs, /*UseMLinkOpt=*/false); + tra wrote: > I'd pass the library prefix argument as a string, instead of a boolean flag. > Makes it easier to tell what's going on without having to annotate it as a > comment. > > Also, maybe consider separating "get the list of bitcode files" from > "construct aguments for tool X for the given list of bitcode files". Right > now `addHIPDeviceLibArgs` does both and has to plumb the `UseMLinkOpt`through > multiple function calls. Adding the prefix argument can be done at the > `constructLldCommand`/`addClangTargetOptions`. Will refactor to get the list of bitcode files. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96835/new/ https://reviews.llvm.org/D96835 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D96835: [HIP] Support device sanitizer
tra added inline comments. Comment at: clang/include/clang/Driver/Options.td:939 "__cyg_profile_func_enter and __cyg_profile_func_exit">; +def fgpu_sanitize : Flag<["-"], "fgpu-sanitize">, + HelpText<"Enable sanitizer for AMDGPU target.">; We do have `BoolFOption` for `-fsomething`/`-fno-something` options. Comment at: clang/lib/Driver/ToolChains/HIP.cpp:117 + false)) +TC.addHIPDeviceLibArgs(Args, LldArgs, /*UseMLinkOpt=*/false); + I'd pass the library prefix argument as a string, instead of a boolean flag. Makes it easier to tell what's going on without having to annotate it as a comment. Also, maybe consider separating "get the list of bitcode files" from "construct aguments for tool X for the given list of bitcode files". Right now `addHIPDeviceLibArgs` does both and has to plumb the `UseMLinkOpt`through multiple function calls. Adding the prefix argument can be done at the `constructLldCommand`/`addClangTargetOptions`. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96835/new/ https://reviews.llvm.org/D96835 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D96835: [HIP] Support device sanitizer
yaxunl created this revision. yaxunl added a reviewer: tra. Herald added subscribers: jansvoboda11, dang, kerbowa, tpr, nhaehnle, jvesely. yaxunl requested review of this revision. Add option -fgpu-sanitize to enable sanitizer for AMDGPU target. Since it is experimental, it is off by default. https://reviews.llvm.org/D96835 Files: clang/include/clang/Driver/Options.td clang/include/clang/Driver/ToolChain.h clang/lib/Driver/Driver.cpp clang/lib/Driver/SanitizerArgs.cpp clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/AMDGPU.cpp clang/lib/Driver/ToolChains/HIP.cpp clang/lib/Driver/ToolChains/HIP.h clang/lib/Driver/ToolChains/ROCm.h clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/hip.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/ockl.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_correctly_rounded_sqrt_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_daz_opt_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_daz_opt_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_finite_only_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_finite_only_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_1010.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_1011.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_1012.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_803.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_900.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_isa_version_908.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_unsafe_math_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_unsafe_math_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_wavefrontsize64_off.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/oclc_wavefrontsize64_on.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/ocml.bc clang/test/Driver/Inputs/rocm-invalid/amdgcn/bitcode/opencl.bc clang/test/Driver/Inputs/rocm-invalid/bin/.hipVersion clang/test/Driver/Inputs/rocm-invalid/include/hip/hip_runtime.h clang/test/Driver/Inputs/rocm/amdgcn/bitcode/asanrtl.bc clang/test/Driver/hip-sanitize-options.hip Index: clang/test/Driver/hip-sanitize-options.hip === --- clang/test/Driver/hip-sanitize-options.hip +++ clang/test/Driver/hip-sanitize-options.hip @@ -1,9 +1,40 @@ // REQUIRES: clang-driver, x86-registered-target, amdgpu-registered-target -// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx906 \ +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ // RUN: -fsanitize=address \ -// RUN: -nogpuinc -nogpulib \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ // RUN: %s 2>&1 | FileCheck %s +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fno-gpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ +// RUN: %s 2>&1 | FileCheck %s + +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fgpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=NORDC %s + +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fgpu-sanitize -fgpu-rdc \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=RDC %s + +// RUN: %clang -### -target x86_64-unknown-linux-gnu --offload-arch=gfx900 \ +// RUN: -fsanitize=address -fgpu-sanitize \ +// RUN: -nogpuinc --rocm-path=%S/Inputs/rocm-invalid \ +// RUN: %s 2>&1 | FileCheck -check-prefixes=FAIL %s + // CHECK-NOT: {{"[^"]*clang[^"]*".* "-fcuda-is-device".* "-fsanitize=address"}} +// CHECK-NOT: {{"[^"]*lld[^"]*".* ".*hip.bc"}} // CHECK: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address"}} + +// NORDC: {{"[^"]*clang[^"]*".* "-fcuda-is-device".* "-fsanitize=address".*}} "-o" "[[OUT:[^"]*.bc]]" +// NORDC: {{"[^"]*lld[^"]*".*}} "[[OUT]]" {{".*asanrtl.bc" ".*hip.bc"}} +// NORDC: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address"}} + +// RDC: {{"[^"]*clang[^"]*".* "-triple" "x86_64-unknown-linux-gnu".* "-fsanitize=address"}} +// RDC: {{"[^"]*clang[^"]*".* "-emit-llvm-bc".* "-fcuda-is-device".* "-fsanitize=address".*}} "-o" "[[OUT:[^"]*.bc]]" +// RDC: {{"[^"]*lld[^"]*".*}} "[[OUT]]" {{".*asanrtl.bc" ".*hip.bc"}} + +// FAIL: AMDGPU address sanitizer runtime library (asanrtl) is not found. Please install ROCm device library which supports address sanitizer Index: clang/test/Driver/Inputs/rocm-invalid/bin/.hipVersion