[PATCH] D109688: [AMDGPU] ASan Patches for OpenMP

2022-03-30 Thread Amit Kumar Pandey via Phabricator via cfe-commits
ampandey-AMD abandoned this revision.
ampandey-AMD added a comment.
Herald added a subscriber: MaskRay.
Herald added a project: All.

The changes proposed here require hostrpc to be upstreamed first which may not 
be available for the time begin.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109688/new/

https://reviews.llvm.org/D109688

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D122781: This patch aims to conform AMDGPUOpenMP driver sanitizer changes w.r.t HIPAMD toolchain.

2022-03-30 Thread Amit Kumar Pandey via Phabricator via cfe-commits
ampandey-AMD created this revision.
Herald added subscribers: kerbowa, guansong, t-tye, tpr, dstuttard, yaxunl, 
jvesely, kzhuravl.
Herald added a project: All.
ampandey-AMD requested review of this revision.
Herald added subscribers: cfe-commits, sstefan1, MaskRay, wdng.
Herald added a reviewer: jdoerfert.
Herald added a project: clang.

Signed-off-by: Amit Pandey 


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D122781

Files:
  clang/include/clang/Basic/DiagnosticDriverKinds.td
  clang/lib/Driver/ToolChains/AMDGPU.cpp
  clang/lib/Driver/ToolChains/AMDGPU.h
  clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
  clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
  clang/lib/Driver/ToolChains/HIPAMD.cpp
  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
@@ -62,7 +62,7 @@
 // RDC: {{"[^"]*clang[^"]*".* "-emit-llvm-bc".* "-fcuda-is-device".* "-mlink-bitcode-file" ".*asanrtl.bc".* "-mlink-builtin-bitcode" ".*hip.bc".* "-fsanitize=address".*}} "-o" "[[OUT:[^"]*.bc]]"
 // RDC-NOT: {{"[^"]*lld(\.exe){0,1}".*}} "[[OUT]]" {{".*asanrtl.bc" ".*hip.bc"}}
 
-// FAIL: AMDGPU address sanitizer runtime library (asanrtl) is not found. Please install ROCm device library which supports address sanitizer
+// FAIL: error: AMDGPU address sanitizer runtime library (asanrtl) is not found. Please install ROCm device library which supports address sanitizer
 
 // XNACK-DAG: warning: ignoring '-fsanitize=leak' option as it is not currently supported for target 'amdgcn-amd-amdhsa'
 // XNACK-DAG: warning: ignoring '-fsanitize=address' option as it is not currently supported for offload arch 'gfx900:xnack-'. Use it with an offload arch containing 'xnack+' instead
Index: clang/lib/Driver/ToolChains/HIPAMD.cpp
===
--- clang/lib/Driver/ToolChains/HIPAMD.cpp
+++ clang/lib/Driver/ToolChains/HIPAMD.cpp
@@ -337,12 +337,7 @@
 getSanitizerArgs(DriverArgs).needsAsanRt()) {
   auto AsanRTL = RocmInstallation.getAsanRTLPath();
   if (AsanRTL.empty()) {
-unsigned DiagID = getDriver().getDiags().getCustomDiagID(
-DiagnosticsEngine::Error,
-"AMDGPU address sanitizer runtime library (asanrtl) is not found. "
-"Please install ROCm device library which supports address "
-"sanitizer");
-getDriver().Diag(DiagID);
+unsigned DiagID = getDriver().Diag(diag::err_drv_no_asan_rt_lib);
 return {};
   } else
 BCLibs.push_back({AsanRTL.str(), /*ShouldInternalize=*/false});
Index: clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
===
--- clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
+++ clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
@@ -93,6 +93,10 @@
 
   SanitizerMask getSupportedSanitizers() const override;
 
+  RocmInstallationDetector getRocmInstallationLoc() const {
+return RocmInstallation;
+  }
+
   VersionTuple
   computeMSVCVersion(const Driver *D,
  const llvm::opt::ArgList &Args) const override;
Index: clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
===
--- clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
+++ clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
@@ -16,6 +16,7 @@
 #include "clang/Driver/DriverDiagnostic.h"
 #include "clang/Driver/InputInfo.h"
 #include "clang/Driver/Options.h"
+#include "clang/Driver/SanitizerArgs.h"
 #include "clang/Driver/Tool.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/Support/FileSystem.h"
@@ -304,7 +305,8 @@
 
   if (DeviceOffloadKind == Action::OFK_OpenMP) {
 for (Arg *A : Args)
-  if (!llvm::is_contained(*DAL, A))
+  if (!shouldSkipSanitizeOption(*this, Args, BoundArch, A) &&
+  !llvm::is_contained(*DAL, A))
 DAL->append(A);
 
 std::string Arch = DAL->getLastArgValue(options::OPT_march_EQ).str();
Index: clang/lib/Driver/ToolChains/AMDGPU.h
===
--- clang/lib/Driver/ToolChains/AMDGPU.h
+++ clang/lib/Driver/ToolChains/AMDGPU.h
@@ -99,6 +99,12 @@
   /// Needed for translating LTO options.
   const char *getDefaultLinker() const override { return "ld.lld"; }
 
+  /// Should skip Sanitize options
+  bool shouldSkipSanitizeOption(const ToolChain &TC,
+const llvm::opt::ArgList &DriverArgs,
+StringRef TargetID,
+const llvm::opt::Arg *A) const;
+
   /// Should skip argument.
   bool shouldSkipArgument(const llvm::opt::Arg *Arg) const;
 
Index: clang/lib/Driver/ToolChains/AMDGPU.cpp
===
--- clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ clang/lib/Driver/ToolChains/AMDGPU.

[PATCH] D122781: This patch aims to conform AMDGPUOpenMP driver sanitizer changes w.r.t HIPAMD toolchain.

2022-03-30 Thread Amit Kumar Pandey via Phabricator via cfe-commits
ampandey-AMD updated this revision to Diff 419317.
ampandey-AMD added a comment.

This patch aims to conform AMDGPUOpenMP driver sanitizer changes w.r.t HIPAMD 
toolchain.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D122781/new/

https://reviews.llvm.org/D122781

Files:
  clang/include/clang/Basic/DiagnosticDriverKinds.td
  clang/lib/Driver/ToolChains/AMDGPU.cpp
  clang/lib/Driver/ToolChains/AMDGPU.h
  clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
  clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
  clang/lib/Driver/ToolChains/HIPAMD.cpp
  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
@@ -62,7 +62,7 @@
 // RDC: {{"[^"]*clang[^"]*".* "-emit-llvm-bc".* "-fcuda-is-device".* "-mlink-bitcode-file" ".*asanrtl.bc".* "-mlink-builtin-bitcode" ".*hip.bc".* "-fsanitize=address".*}} "-o" "[[OUT:[^"]*.bc]]"
 // RDC-NOT: {{"[^"]*lld(\.exe){0,1}".*}} "[[OUT]]" {{".*asanrtl.bc" ".*hip.bc"}}
 
-// FAIL: AMDGPU address sanitizer runtime library (asanrtl) is not found. Please install ROCm device library which supports address sanitizer
+// FAIL: error: AMDGPU address sanitizer runtime library (asanrtl) is not found. Please install ROCm device library which supports address sanitizer
 
 // XNACK-DAG: warning: ignoring '-fsanitize=leak' option as it is not currently supported for target 'amdgcn-amd-amdhsa'
 // XNACK-DAG: warning: ignoring '-fsanitize=address' option as it is not currently supported for offload arch 'gfx900:xnack-'. Use it with an offload arch containing 'xnack+' instead
Index: clang/lib/Driver/ToolChains/HIPAMD.cpp
===
--- clang/lib/Driver/ToolChains/HIPAMD.cpp
+++ clang/lib/Driver/ToolChains/HIPAMD.cpp
@@ -35,43 +35,6 @@
 #define NULL_FILE "/dev/null"
 #endif
 
-static bool shouldSkipSanitizeOption(const ToolChain &TC,
- const llvm::opt::ArgList &DriverArgs,
- StringRef TargetID,
- const llvm::opt::Arg *A) {
-  // For actions without targetID, do nothing.
-  if (TargetID.empty())
-return false;
-  Option O = A->getOption();
-  if (!O.matches(options::OPT_fsanitize_EQ))
-return false;
-
-  if (!DriverArgs.hasFlag(options::OPT_fgpu_sanitize,
-  options::OPT_fno_gpu_sanitize, true))
-return true;
-
-  auto &Diags = TC.getDriver().getDiags();
-
-  // For simplicity, we only allow -fsanitize=address
-  SanitizerMask K = parseSanitizerValue(A->getValue(), /*AllowGroups=*/false);
-  if (K != SanitizerKind::Address)
-return true;
-
-  llvm::StringMap FeatureMap;
-  auto OptionalGpuArch = parseTargetID(TC.getTriple(), TargetID, &FeatureMap);
-
-  assert(OptionalGpuArch && "Invalid Target ID");
-  (void)OptionalGpuArch;
-  auto Loc = FeatureMap.find("xnack");
-  if (Loc == FeatureMap.end() || !Loc->second) {
-Diags.Report(
-clang::diag::warn_drv_unsupported_option_for_offload_arch_req_feature)
-<< A->getAsString(DriverArgs) << TargetID << "xnack+";
-return true;
-  }
-  return false;
-}
-
 void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
  const InputInfoList &Inputs,
  const InputInfo &Output,
@@ -337,12 +300,7 @@
 getSanitizerArgs(DriverArgs).needsAsanRt()) {
   auto AsanRTL = RocmInstallation.getAsanRTLPath();
   if (AsanRTL.empty()) {
-unsigned DiagID = getDriver().getDiags().getCustomDiagID(
-DiagnosticsEngine::Error,
-"AMDGPU address sanitizer runtime library (asanrtl) is not found. "
-"Please install ROCm device library which supports address "
-"sanitizer");
-getDriver().Diag(DiagID);
+unsigned DiagID = getDriver().Diag(diag::err_drv_no_asan_rt_lib);
 return {};
   } else
 BCLibs.push_back({AsanRTL.str(), /*ShouldInternalize=*/false});
Index: clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
===
--- clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
+++ clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
@@ -93,6 +93,10 @@
 
   SanitizerMask getSupportedSanitizers() const override;
 
+  RocmInstallationDetector getRocmInstallationLoc() const {
+return RocmInstallation;
+  }
+
   VersionTuple
   computeMSVCVersion(const Driver *D,
  const llvm::opt::ArgList &Args) const override;
Index: clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
===
--- clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
+++ clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
@@ -16,6 +16,7 @@
 #include "clang/Driver/DriverDiagnostic.h"
 #

[PATCH] D122781: This patch aims to conform AMDGPUOpenMP driver sanitizer changes w.r.t HIPAMD toolchain.

2022-03-30 Thread Amit Kumar Pandey via Phabricator via cfe-commits
ampandey-AMD updated this revision to Diff 419323.
ampandey-AMD added a comment.

This patch aims to conform AMDGPUOpenMP driver sanitizer changes w.r.t HIPAMD 
toolchain.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D122781/new/

https://reviews.llvm.org/D122781

Files:
  clang/include/clang/Basic/DiagnosticDriverKinds.td
  clang/lib/Driver/ToolChains/AMDGPU.cpp
  clang/lib/Driver/ToolChains/AMDGPU.h
  clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
  clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
  clang/lib/Driver/ToolChains/HIPAMD.cpp
  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
@@ -62,7 +62,7 @@
 // RDC: {{"[^"]*clang[^"]*".* "-emit-llvm-bc".* "-fcuda-is-device".* "-mlink-bitcode-file" ".*asanrtl.bc".* "-mlink-builtin-bitcode" ".*hip.bc".* "-fsanitize=address".*}} "-o" "[[OUT:[^"]*.bc]]"
 // RDC-NOT: {{"[^"]*lld(\.exe){0,1}".*}} "[[OUT]]" {{".*asanrtl.bc" ".*hip.bc"}}
 
-// FAIL: AMDGPU address sanitizer runtime library (asanrtl) is not found. Please install ROCm device library which supports address sanitizer
+// FAIL: error: AMDGPU address sanitizer runtime library (asanrtl) is not found. Please install ROCm device library which supports address sanitizer
 
 // XNACK-DAG: warning: ignoring '-fsanitize=leak' option as it is not currently supported for target 'amdgcn-amd-amdhsa'
 // XNACK-DAG: warning: ignoring '-fsanitize=address' option as it is not currently supported for offload arch 'gfx900:xnack-'. Use it with an offload arch containing 'xnack+' instead
Index: clang/lib/Driver/ToolChains/HIPAMD.cpp
===
--- clang/lib/Driver/ToolChains/HIPAMD.cpp
+++ clang/lib/Driver/ToolChains/HIPAMD.cpp
@@ -35,43 +35,6 @@
 #define NULL_FILE "/dev/null"
 #endif
 
-static bool shouldSkipSanitizeOption(const ToolChain &TC,
- const llvm::opt::ArgList &DriverArgs,
- StringRef TargetID,
- const llvm::opt::Arg *A) {
-  // For actions without targetID, do nothing.
-  if (TargetID.empty())
-return false;
-  Option O = A->getOption();
-  if (!O.matches(options::OPT_fsanitize_EQ))
-return false;
-
-  if (!DriverArgs.hasFlag(options::OPT_fgpu_sanitize,
-  options::OPT_fno_gpu_sanitize, true))
-return true;
-
-  auto &Diags = TC.getDriver().getDiags();
-
-  // For simplicity, we only allow -fsanitize=address
-  SanitizerMask K = parseSanitizerValue(A->getValue(), /*AllowGroups=*/false);
-  if (K != SanitizerKind::Address)
-return true;
-
-  llvm::StringMap FeatureMap;
-  auto OptionalGpuArch = parseTargetID(TC.getTriple(), TargetID, &FeatureMap);
-
-  assert(OptionalGpuArch && "Invalid Target ID");
-  (void)OptionalGpuArch;
-  auto Loc = FeatureMap.find("xnack");
-  if (Loc == FeatureMap.end() || !Loc->second) {
-Diags.Report(
-clang::diag::warn_drv_unsupported_option_for_offload_arch_req_feature)
-<< A->getAsString(DriverArgs) << TargetID << "xnack+";
-return true;
-  }
-  return false;
-}
-
 void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
  const InputInfoList &Inputs,
  const InputInfo &Output,
@@ -337,12 +300,7 @@
 getSanitizerArgs(DriverArgs).needsAsanRt()) {
   auto AsanRTL = RocmInstallation.getAsanRTLPath();
   if (AsanRTL.empty()) {
-unsigned DiagID = getDriver().getDiags().getCustomDiagID(
-DiagnosticsEngine::Error,
-"AMDGPU address sanitizer runtime library (asanrtl) is not found. "
-"Please install ROCm device library which supports address "
-"sanitizer");
-getDriver().Diag(DiagID);
+getDriver().Diag(diag::err_drv_no_asan_rt_lib);
 return {};
   } else
 BCLibs.push_back({AsanRTL.str(), /*ShouldInternalize=*/false});
Index: clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
===
--- clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
+++ clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
@@ -93,6 +93,10 @@
 
   SanitizerMask getSupportedSanitizers() const override;
 
+  RocmInstallationDetector getRocmInstallationLoc() const {
+return RocmInstallation;
+  }
+
   VersionTuple
   computeMSVCVersion(const Driver *D,
  const llvm::opt::ArgList &Args) const override;
Index: clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
===
--- clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
+++ clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
@@ -16,6 +16,7 @@
 #include "clang/Driver/DriverDiagnostic.h"
 #include "clang/Dri

[PATCH] D122781: This patch aims to conform AMDGPUOpenMP driver sanitizer changes w.r.t HIPAMD toolchain.

2022-03-31 Thread Amit Kumar Pandey via Phabricator via cfe-commits
ampandey-AMD added a comment.

Yes, it is missing here because there is some part of the code in 
AMDGPUOpenMP.cpp on which openmp sanitize lit test case is dependent and that 
part of code is dependent on Greg's DLR patch. I will upstream the missing 
source code and lit test case afterwards when the Greg's DLR patch will get 
upstreamed and land.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D122781/new/

https://reviews.llvm.org/D122781

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D122781: This patch aims to conform AMDGPUOpenMP driver sanitizer changes w.r.t HIPAMD toolchain.

2022-03-31 Thread Amit Kumar Pandey via Phabricator via cfe-commits
ampandey-AMD updated this revision to Diff 419617.
ampandey-AMD added a comment.

Updated the title


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D122781/new/

https://reviews.llvm.org/D122781

Files:
  clang/include/clang/Basic/DiagnosticDriverKinds.td
  clang/lib/Driver/ToolChains/AMDGPU.cpp
  clang/lib/Driver/ToolChains/AMDGPU.h
  clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
  clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
  clang/lib/Driver/ToolChains/HIPAMD.cpp
  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
@@ -62,7 +62,7 @@
 // RDC: {{"[^"]*clang[^"]*".* "-emit-llvm-bc".* "-fcuda-is-device".* "-mlink-bitcode-file" ".*asanrtl.bc".* "-mlink-builtin-bitcode" ".*hip.bc".* "-fsanitize=address".*}} "-o" "[[OUT:[^"]*.bc]]"
 // RDC-NOT: {{"[^"]*lld(\.exe){0,1}".*}} "[[OUT]]" {{".*asanrtl.bc" ".*hip.bc"}}
 
-// FAIL: AMDGPU address sanitizer runtime library (asanrtl) is not found. Please install ROCm device library which supports address sanitizer
+// FAIL: error: AMDGPU address sanitizer runtime library (asanrtl) is not found. Please install ROCm device library which supports address sanitizer
 
 // XNACK-DAG: warning: ignoring '-fsanitize=leak' option as it is not currently supported for target 'amdgcn-amd-amdhsa'
 // XNACK-DAG: warning: ignoring '-fsanitize=address' option as it is not currently supported for offload arch 'gfx900:xnack-'. Use it with an offload arch containing 'xnack+' instead
Index: clang/lib/Driver/ToolChains/HIPAMD.cpp
===
--- clang/lib/Driver/ToolChains/HIPAMD.cpp
+++ clang/lib/Driver/ToolChains/HIPAMD.cpp
@@ -35,43 +35,6 @@
 #define NULL_FILE "/dev/null"
 #endif
 
-static bool shouldSkipSanitizeOption(const ToolChain &TC,
- const llvm::opt::ArgList &DriverArgs,
- StringRef TargetID,
- const llvm::opt::Arg *A) {
-  // For actions without targetID, do nothing.
-  if (TargetID.empty())
-return false;
-  Option O = A->getOption();
-  if (!O.matches(options::OPT_fsanitize_EQ))
-return false;
-
-  if (!DriverArgs.hasFlag(options::OPT_fgpu_sanitize,
-  options::OPT_fno_gpu_sanitize, true))
-return true;
-
-  auto &Diags = TC.getDriver().getDiags();
-
-  // For simplicity, we only allow -fsanitize=address
-  SanitizerMask K = parseSanitizerValue(A->getValue(), /*AllowGroups=*/false);
-  if (K != SanitizerKind::Address)
-return true;
-
-  llvm::StringMap FeatureMap;
-  auto OptionalGpuArch = parseTargetID(TC.getTriple(), TargetID, &FeatureMap);
-
-  assert(OptionalGpuArch && "Invalid Target ID");
-  (void)OptionalGpuArch;
-  auto Loc = FeatureMap.find("xnack");
-  if (Loc == FeatureMap.end() || !Loc->second) {
-Diags.Report(
-clang::diag::warn_drv_unsupported_option_for_offload_arch_req_feature)
-<< A->getAsString(DriverArgs) << TargetID << "xnack+";
-return true;
-  }
-  return false;
-}
-
 void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
  const InputInfoList &Inputs,
  const InputInfo &Output,
@@ -337,12 +300,7 @@
 getSanitizerArgs(DriverArgs).needsAsanRt()) {
   auto AsanRTL = RocmInstallation.getAsanRTLPath();
   if (AsanRTL.empty()) {
-unsigned DiagID = getDriver().getDiags().getCustomDiagID(
-DiagnosticsEngine::Error,
-"AMDGPU address sanitizer runtime library (asanrtl) is not found. "
-"Please install ROCm device library which supports address "
-"sanitizer");
-getDriver().Diag(DiagID);
+getDriver().Diag(diag::err_drv_no_asan_rt_lib);
 return {};
   } else
 BCLibs.push_back({AsanRTL.str(), /*ShouldInternalize=*/false});
Index: clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
===
--- clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
+++ clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
@@ -93,6 +93,10 @@
 
   SanitizerMask getSupportedSanitizers() const override;
 
+  RocmInstallationDetector getRocmInstallationLoc() const {
+return RocmInstallation;
+  }
+
   VersionTuple
   computeMSVCVersion(const Driver *D,
  const llvm::opt::ArgList &Args) const override;
Index: clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
===
--- clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
+++ clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
@@ -16,6 +16,7 @@
 #include "clang/Driver/DriverDiagnostic.h"
 #include "clang/Driver/InputInfo.h"
 #include "clang/Driver/Options.h"
+#include "clang/Dri

[PATCH] D122781: Refactor sanitizer options handling for AMDGPU Toolchain

2022-04-01 Thread Amit Kumar Pandey via Phabricator via cfe-commits
ampandey-AMD added a comment.

In D122781#3422366 , @yaxunl wrote:

> LGTM. Thanks.

Hi @yaxunl , I don't have commit access to llvm trunk. Could you please commit 
on my behalf?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D122781/new/

https://reviews.llvm.org/D122781

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D109688: [AMDGPU] ASan Patches for OpenMP

2021-09-13 Thread Amit Kumar Pandey via Phabricator via cfe-commits
ampandey-AMD created this revision.
Herald added subscribers: kerbowa, guansong, hiraditya, t-tye, tpr, dstuttard, 
yaxunl, mgorny, nhaehnle, jvesely, kzhuravl.
ampandey-AMD requested review of this revision.
Herald added subscribers: llvm-commits, openmp-commits, cfe-commits, sstefan1, 
wdng.
Herald added a reviewer: jdoerfert.
Herald added projects: clang, OpenMP, LLVM.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D109688

Files:
  clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
  llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
  openmp/libomptarget/hostrpc/services/CMakeLists.txt
  openmp/libomptarget/hostrpc/services/hostcall.cpp
  openmp/libomptarget/hostrpc/services/hostrpc_execute_service.c
  openmp/libomptarget/hostrpc/services/hostrpc_internal.h
  openmp/libomptarget/hostrpc/src/hostrpc.cpp
  openmp/libomptarget/hostrpc/src/hostrpc.h
  openmp/libomptarget/src/rtl.cpp

Index: openmp/libomptarget/src/rtl.cpp
===
--- openmp/libomptarget/src/rtl.cpp
+++ openmp/libomptarget/src/rtl.cpp
@@ -306,6 +306,7 @@
 Device.HasPendingGlobals = true;
 for (__tgt_offload_entry *entry = img->EntriesBegin;
  entry != img->EntriesEnd; ++entry) {
+			 entry.size=32;
   if (entry->flags & OMP_DECLARE_TARGET_CTOR) {
 DP("Adding ctor " DPxMOD " to the pending list.\n",
DPxPTR(entry->addr));
Index: openmp/libomptarget/hostrpc/src/hostrpc.h
===
--- openmp/libomptarget/hostrpc/src/hostrpc.h
+++ openmp/libomptarget/hostrpc/src/hostrpc.h
@@ -111,6 +111,8 @@
   HOSTRPC_SERVICE_VARFNDOUBLE,
   HOSTRPC_SERVICE_FPRINTF,
   HOSTRPC_SERVICE_FTNASSIGN,
+  HOSTRPC_SERVICE_DEVMEM,
+  HOSTRPC_SERVICE_SANITIZER,
 };
 typedef enum hostcall_service_id hostcall_service_id_t;
 
Index: openmp/libomptarget/hostrpc/src/hostrpc.cpp
===
--- openmp/libomptarget/hostrpc/src/hostrpc.cpp
+++ openmp/libomptarget/hostrpc/src/hostrpc.cpp
@@ -156,6 +156,22 @@
   return unionarg.dval;
 }
 
+EXTERN void __ockl_sanitizer_report(uint64_t addr, uint64_t pc, uint64_t wgidx,
+uint64_t wgidy, uint64_t wgidz,
+uint64_t wave_id, uint64_t is_read,
+uint64_t access_size) {
+  hostrpc_result_t value =
+  hostrpc_invoke(PACK_VERS(HOSTRPC_SERVICE_SANITIZER), addr, pc, wgidx,
+ wgidy, wgidz, wave_id, is_read, access_size);
+  return (void)value.arg0;
+}
+
+EXTERN uint64_t __hostrpc_devmem_request(uint64_t addr, uint64_t size) {
+  hostrpc_result_t result = hostrpc_invoke(PACK_VERS(HOSTRPC_SERVICE_DEVMEM),
+   addr, size, 0, 0, 0, 0, 0, 0);
+  return (uint64_t)result.arg0;
+}
+
 // -
 //
 // vector_product_zeros: Example stub to demonstrate hostrpc services
Index: openmp/libomptarget/hostrpc/services/hostrpc_internal.h
===
--- openmp/libomptarget/hostrpc/services/hostrpc_internal.h
+++ openmp/libomptarget/hostrpc/services/hostrpc_internal.h
@@ -9,6 +9,25 @@
 extern "C" {
 #endif
 
+// Error codes for hostrpc functions.
+typedef enum hostrpc_status_t {
+  HOSTRPC_SUCCESS = 0,
+  HOSTRPC_STATUS_UNKNOWN = 1,
+  HOSTRPC_STATUS_ERROR = 2,
+  HOSTRPC_STATUS_TERMINATE = 3,
+  HOSTRPC_DATA_USED_ERROR = 4,
+  HOSTRPC_ADDINT_ERROR = 5,
+  HOSTRPC_ADDFLOAT_ERROR = 6,
+  HOSTRPC_ADDSTRING_ERROR = 7,
+  HOSTRPC_UNSUPPORTED_ID_ERROR = 8,
+  HOSTRPC_INVALID_ID_ERROR = 9,
+  HOSTRPC_ERROR_INVALID_REQUEST = 10,
+  HOSTRPC_EXCEED_MAXVARGS_ERROR = 11,
+  HOSTRPC_WRONGVERSION_ERROR = 12,
+  HOSTRPC_OLDHOSTVERSIONMOD_ERROR = 13,
+  HOSTRPC_INVALIDSERVICE_ERROR = 14,
+} hostrpc_status_t;
+
 /** \file Support library for invoking host services from the device.
  *
  *  The hostcall consumer defined here is used by the language runtime
Index: openmp/libomptarget/hostrpc/services/hostrpc_execute_service.c
===
--- openmp/libomptarget/hostrpc/services/hostrpc_execute_service.c
+++ openmp/libomptarget/hostrpc/services/hostrpc_execute_service.c
@@ -40,6 +40,7 @@
 #include 
 #include 
 
+#if 0
 // Error codes for service handler functions used in this file
 // Some error codes may be returned to device stub functions.
 typedef enum hostrpc_status_t {
@@ -59,6 +60,7 @@
   HOSTRPC_OLDHOSTVERSIONMOD_ERROR = 13,
   HOSTRPC_INVALIDSERVICE_ERROR = 14,
 } hostrpc_status_t;
+#endif
 
 // MAXVARGS is more than a static array size.
 // It is for user vargs functions only.
@@ -263,6 +265,7 @@
   payload[1] = (uint64_t)num_zeros;
 }
 
+#if 0
 // FIXME: Clean up this diagnostic and die properly
 static bool hostrpc_version_checked;
 static hostrpc_status_t hostrpc_version_check(unsigned int