[clang] cc21395 - [AMDPU][Sanitizer] Refactor sanitizer options handling for AMDGPU Toolchain

2022-04-02 Thread Ron Lieberman via cfe-commits

Author: Ron Lieberman
Date: 2022-04-02T11:01:09Z
New Revision: cc2139524f77248c7e147d4cc3befb31fe3e6daa

URL: 
https://github.com/llvm/llvm-project/commit/cc2139524f77248c7e147d4cc3befb31fe3e6daa
DIFF: 
https://github.com/llvm/llvm-project/commit/cc2139524f77248c7e147d4cc3befb31fe3e6daa.diff

LOG: [AMDPU][Sanitizer] Refactor sanitizer options handling for AMDGPU Toolchain

authored by amit.pan...@amd.com  ampandey-AMD

Differential Revision: https://reviews.llvm.org/D122781

Added: 


Modified: 
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

Removed: 




diff  --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td 
b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index 63913b933c8fb..fa17af52d6278 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -68,6 +68,9 @@ def err_drv_no_rocm_device_lib : Error<
   "cannot find ROCm device library%select{| for %1|for ABI version %1}0; 
provide its path via "
   "'--rocm-path' or '--rocm-device-lib-path', or pass '-nogpulib' to build "
   "without ROCm device library">;
+def err_drv_no_asan_rt_lib : Error<
+  "AMDGPU address sanitizer runtime library (asanrtl) is not found. "
+  "Please install ROCm device library which supports address sanitizer">;
 def err_drv_no_hip_runtime : Error<
   "cannot find HIP runtime; provide its path via '--rocm-path', or pass "
   "'-nogpuinc' to build without HIP runtime">;

diff  --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp 
b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index 123d92664495e..56b3a2d33cdab 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -911,6 +911,42 @@ RocmInstallationDetector::getCommonBitcodeLibs(
   return BCLibs;
 }
 
+bool AMDGPUToolChain::shouldSkipSanitizeOption(
+const ToolChain &TC, const llvm::opt::ArgList &DriverArgs,
+StringRef TargetID, const llvm::opt::Arg *A) const {
+  // 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;
+}
+
 bool AMDGPUToolChain::shouldSkipArgument(const llvm::opt::Arg *A) const {
   Option O = A->getOption();
   if (O.matches(options::OPT_fPIE) || O.matches(options::OPT_fpie))

diff  --git a/clang/lib/Driver/ToolChains/AMDGPU.h 
b/clang/lib/Driver/ToolChains/AMDGPU.h
index ddcc124b25bac..6d8bb82c6449d 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.h
+++ b/clang/lib/Driver/ToolChains/AMDGPU.h
@@ -99,6 +99,12 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUToolChain : public 
Generic_ELF {
   /// 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;
 

diff  --git a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp 
b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
index 998bb0b9f7c94..2989aabae5516 100644
--- a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
+++ b/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 @@ llvm::opt::DerivedArgList 
*AMDGPUOpenMPToolChain::TranslateArgs(
 
   if (DeviceOffloadKind == Action::OFK_OpenMP) 

[clang] f1e7eca - Revert "[AMDPU][Sanitizer] Refactor sanitizer options handling for AMDGPU Toolchain"

2022-04-02 Thread Ron Lieberman via cfe-commits

Author: Ron Lieberman
Date: 2022-04-02T13:25:50Z
New Revision: f1e7ecaa18a7b1c77fc95e4b83d3db02c4e2d211

URL: 
https://github.com/llvm/llvm-project/commit/f1e7ecaa18a7b1c77fc95e4b83d3db02c4e2d211
DIFF: 
https://github.com/llvm/llvm-project/commit/f1e7ecaa18a7b1c77fc95e4b83d3db02c4e2d211.diff

LOG: Revert "[AMDPU][Sanitizer] Refactor sanitizer options handling for AMDGPU 
Toolchain"

This reverts commit cc2139524f77248c7e147d4cc3befb31fe3e6daa.

failed a few buildbots

Added: 


Modified: 
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

Removed: 




diff  --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td 
b/clang/include/clang/Basic/DiagnosticDriverKinds.td
index fa17af52d6278..63913b933c8fb 100644
--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
+++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
@@ -68,9 +68,6 @@ def err_drv_no_rocm_device_lib : Error<
   "cannot find ROCm device library%select{| for %1|for ABI version %1}0; 
provide its path via "
   "'--rocm-path' or '--rocm-device-lib-path', or pass '-nogpulib' to build "
   "without ROCm device library">;
-def err_drv_no_asan_rt_lib : Error<
-  "AMDGPU address sanitizer runtime library (asanrtl) is not found. "
-  "Please install ROCm device library which supports address sanitizer">;
 def err_drv_no_hip_runtime : Error<
   "cannot find HIP runtime; provide its path via '--rocm-path', or pass "
   "'-nogpuinc' to build without HIP runtime">;

diff  --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp 
b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index 56b3a2d33cdab..123d92664495e 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -911,42 +911,6 @@ RocmInstallationDetector::getCommonBitcodeLibs(
   return BCLibs;
 }
 
-bool AMDGPUToolChain::shouldSkipSanitizeOption(
-const ToolChain &TC, const llvm::opt::ArgList &DriverArgs,
-StringRef TargetID, const llvm::opt::Arg *A) const {
-  // 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;
-}
-
 bool AMDGPUToolChain::shouldSkipArgument(const llvm::opt::Arg *A) const {
   Option O = A->getOption();
   if (O.matches(options::OPT_fPIE) || O.matches(options::OPT_fpie))

diff  --git a/clang/lib/Driver/ToolChains/AMDGPU.h 
b/clang/lib/Driver/ToolChains/AMDGPU.h
index 6d8bb82c6449d..ddcc124b25bac 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.h
+++ b/clang/lib/Driver/ToolChains/AMDGPU.h
@@ -99,12 +99,6 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUToolChain : public 
Generic_ELF {
   /// 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;
 

diff  --git a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp 
b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
index 2989aabae5516..998bb0b9f7c94 100644
--- a/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPUOpenMP.cpp
@@ -16,7 +16,6 @@
 #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"
@@ -305,8 +304,7 @@ llvm::opt::DerivedArgList 
*AMDGPUOpenMPToolChain::TranslateArgs(
 
   if (DeviceOffloadKind == Action::OFK_OpenMP) {
 

[clang] 8b646f2 - xfail: reduction_implicit_map.cpp after reapply of Start calling setTargetAttributes

2021-12-02 Thread Ron Lieberman via cfe-commits

Author: Ron Lieberman
Date: 2021-12-02T20:22:11Z
New Revision: 8b646f212e9ccc8e0fbf1a84603d0a40bfca1338

URL: 
https://github.com/llvm/llvm-project/commit/8b646f212e9ccc8e0fbf1a84603d0a40bfca1338
DIFF: 
https://github.com/llvm/llvm-project/commit/8b646f212e9ccc8e0fbf1a84603d0a40bfca1338.diff

LOG: xfail: reduction_implicit_map.cpp after reapply of Start calling 
setTargetAttributes

Added: 


Modified: 
clang/test/OpenMP/reduction_implicit_map.cpp

Removed: 




diff  --git a/clang/test/OpenMP/reduction_implicit_map.cpp 
b/clang/test/OpenMP/reduction_implicit_map.cpp
index 2d924820fbf7..64a4f36def64 100644
--- a/clang/test/OpenMP/reduction_implicit_map.cpp
+++ b/clang/test/OpenMP/reduction_implicit_map.cpp
@@ -1,3 +1,6 @@
+// amdgpu failing this test after Reapply "OpenMP: Start calling 
setTargetAttributes for generated kernels"
+// XFAIL: *
+
 // RUN: %clang_cc1 -verify -fopenmp -fopenmp-cuda-mode -x c++ \
 // RUN:  -triple powerpc64le-unknown-unknown -DCUDA \
 // RUN:  -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm-bc %s -o \



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


[clang] ef8e9be - Revert "xfail: reduction_implicit_map.cpp after reapply of Start calling setTargetAttributes"

2021-12-02 Thread Ron Lieberman via cfe-commits

Author: Ron Lieberman
Date: 2021-12-02T20:30:03Z
New Revision: ef8e9bee1a9b87ee750b193ed4a1f9b5d310daef

URL: 
https://github.com/llvm/llvm-project/commit/ef8e9bee1a9b87ee750b193ed4a1f9b5d310daef
DIFF: 
https://github.com/llvm/llvm-project/commit/ef8e9bee1a9b87ee750b193ed4a1f9b5d310daef.diff

LOG: Revert "xfail: reduction_implicit_map.cpp after reapply of Start calling 
setTargetAttributes"

This reverts commit 8b646f212e9ccc8e0fbf1a84603d0a40bfca1338.

Added: 


Modified: 
clang/test/OpenMP/reduction_implicit_map.cpp

Removed: 




diff  --git a/clang/test/OpenMP/reduction_implicit_map.cpp 
b/clang/test/OpenMP/reduction_implicit_map.cpp
index 64a4f36def64..2d924820fbf7 100644
--- a/clang/test/OpenMP/reduction_implicit_map.cpp
+++ b/clang/test/OpenMP/reduction_implicit_map.cpp
@@ -1,6 +1,3 @@
-// amdgpu failing this test after Reapply "OpenMP: Start calling 
setTargetAttributes for generated kernels"
-// XFAIL: *
-
 // RUN: %clang_cc1 -verify -fopenmp -fopenmp-cuda-mode -x c++ \
 // RUN:  -triple powerpc64le-unknown-unknown -DCUDA \
 // RUN:  -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm-bc %s -o \



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


[clang] 8cf85a0 - Revert "Add map info for dereference pointer."

2023-03-08 Thread Ron Lieberman via cfe-commits

Author: Ron Lieberman
Date: 2023-03-08T22:05:31-06:00
New Revision: 8cf85a0cadb033fed3d96aa5283deb4bfbbaf2c8

URL: 
https://github.com/llvm/llvm-project/commit/8cf85a0cadb033fed3d96aa5283deb4bfbbaf2c8
DIFF: 
https://github.com/llvm/llvm-project/commit/8cf85a0cadb033fed3d96aa5283deb4bfbbaf2c8.diff

LOG: Revert "Add map info for dereference pointer."

breaks amdgpu buildbot

This reverts commit 0f2f378425821de77e50a0dcb67c4504389a56e8.

Added: 


Modified: 
clang/lib/CodeGen/CGOpenMPRuntime.cpp
clang/lib/Sema/SemaOpenMP.cpp
clang/test/OpenMP/target_update_codegen.cpp

Removed: 
clang/test/OpenMP/target_map_deref_array_codegen.cpp
openmp/libomptarget/test/mapping/target_derefence_array_pointrs.cpp



diff  --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp 
b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
index 60e03320a391c..ff2e9423b6b2e 100644
--- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp
+++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp
@@ -7163,7 +7163,6 @@ class MappableExprsHandler {
 // double d;
 // int i[100];
 // float *p;
-// int **a = &i;
 //
 // struct S1 {
 //   int i;
@@ -7197,14 +7196,6 @@ class MappableExprsHandler {
 // in unified shared memory mode or for local pointers
 // p, &p[1], 24*sizeof(float), TARGET_PARAM | TO | FROM
 //
-// map((*a)[0:3])
-// &(*a), &(*a), sizeof(pointer), TARGET_PARAM | TO | FROM
-// &(*a), &(*a)[0], 3*sizeof(int), PTR_AND_OBJ | TO | FROM
-//
-// map(**a)
-// &(*a), &(*a), sizeof(pointer), TARGET_PARAM | TO | FROM
-// &(*a), &(**a), sizeof(int), PTR_AND_OBJ | TO | FROM
-//
 // map(s)
 // &s, &s, sizeof(S2), TARGET_PARAM | TO | FROM
 //
@@ -7497,9 +7488,7 @@ class MappableExprsHandler {
   bool IsMemberReference = isa(I->getAssociatedExpression()) &&
MapDecl &&
MapDecl->getType()->isLValueReferenceType();
-  bool IsNonDerefPointer = IsPointer &&
-   !(UO && UO->getOpcode() != UO_Deref) && !BO &&
-   !IsNonContiguous;
+  bool IsNonDerefPointer = IsPointer && !UO && !BO && !IsNonContiguous;
 
   if (OASE)
 ++DimSize;

diff  --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp
index e193fa3d19d5c..b87732ac195a2 100644
--- a/clang/lib/Sema/SemaOpenMP.cpp
+++ b/clang/lib/Sema/SemaOpenMP.cpp
@@ -2203,14 +2203,11 @@ bool Sema::isOpenMPCapturedByRef(const ValueDecl *D, 
unsigned Level,
   ++EI;
   if (EI == EE)
 return false;
-  auto Last = std::prev(EE);
-  const auto *UO =
-  dyn_cast(Last->getAssociatedExpression());
-  if ((UO && UO->getOpcode() == UO_Deref) ||
-  isa(Last->getAssociatedExpression()) ||
-  isa(Last->getAssociatedExpression()) ||
+
+  if (isa(EI->getAssociatedExpression()) ||
+  isa(EI->getAssociatedExpression()) ||
   isa(EI->getAssociatedExpression()) ||
-  isa(Last->getAssociatedExpression())) {
+  isa(EI->getAssociatedExpression())) {
 IsVariableAssociatedWithSection = true;
 // There is nothing more we need to know about this variable.
 return true;

diff  --git a/clang/test/OpenMP/target_map_deref_array_codegen.cpp 
b/clang/test/OpenMP/target_map_deref_array_codegen.cpp
deleted file mode 100644
index 40b3b5f1a6f2c..0
--- a/clang/test/OpenMP/target_map_deref_array_codegen.cpp
+++ /dev/null
@@ -1,315 +0,0 @@
-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py 
UTC_ARGS: --function-signature --include-generated-funcs --replace-value-regex 
"__omp_offloading_[0-9a-z]+_[0-9a-z]+" "reduction_size[.].+[.]" 
"pl_cond[.].+[.|,]" --prefix-filecheck-ir-name _
-// RUN: %clang_cc1 -verify -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu 
-x c++ -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck %s
-// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ 
-std=c++11 -triple powerpc64le-unknown-unknown -emit-pch -o %t %s
-// RUN: %clang_cc1 -fopenmp -fopenmp-targets=powerpc64le-ibm-linux-gnu -x c++ 
-triple powerpc64le-unknown-unknown -std=c++11 -include-pch %t -verify %s 
-emit-llvm -o - | FileCheck %s
-
-// expected-no-diagnostics
-#ifndef HEADER
-#define HEADER
-
-extern void *malloc (int __size) throw () __attribute__ ((__malloc__));
-
-void foo(int **t1d)
-{
-  *t1d = (int *) malloc(3 * sizeof(int));
-  for (int j=0; j < 3; j++)
-(*t1d)[j] = 1;
-  #pragma omp target map(to: (*t1d)[0:3])
-(*t1d)[2] = 2;
-  #pragma omp target map(tofrom : (**t1d))
-(*t1d)[0] = 3;
-  int a = 0, b = 0;
-  #pragma omp target map(tofrom : (*(*(t1d+a)+b)))
-*(*(t1d+a)+b) = 4;
-}
-
-#endif
-
-// CHECK: @.offload_maptypes = private unnamed_addr constant [2 x i64] [i64 
33, i64 17]
-// CHE