[compiler-rt] [llvm] [compiler-rt] Add AMDGPU Device UndefinedBehaviorSanitizer runtime (PR #219972)

via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 31 14:54:31 PDT 2026


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp,h,inc -- compiler-rt/lib/ubsan/offload/hsa.h compiler-rt/lib/ubsan/offload/ubsan_offload.h compiler-rt/lib/ubsan/offload/ubsan_offload_hsa.cpp compiler-rt/lib/ubsan/offload/ubsan_offload_hsa.h compiler-rt/lib/ubsan/offload/ubsan_offload_hsa_interceptors.cpp compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp compiler-rt/lib/ubsan/offload/ubsan_offload_rpc.cpp compiler-rt/lib/ubsan/offload/ubsan_offload_rpc.h compiler-rt/lib/ubsan/offload/ubsan_offload_symbolize.cpp compiler-rt/lib/ubsan/offload/ubsan_offload_symbolize.h compiler-rt/lib/ubsan/ubsan_handlers_internal.h compiler-rt/lib/ubsan/ubsan_offload.cpp compiler-rt/lib/ubsan/ubsan_offload_checks.inc compiler-rt/lib/ubsan/ubsan_offload_packet.h compiler-rt/test/ubsan/AMDGPU/openmp-overflow.cpp compiler-rt/test/ubsan/Inputs/hip.h compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp compiler-rt/lib/ubsan/ubsan_diag.cpp compiler-rt/lib/ubsan/ubsan_diag.h compiler-rt/lib/ubsan/ubsan_handlers.cpp compiler-rt/lib/ubsan/ubsan_interface.inc compiler-rt/lib/ubsan/ubsan_value.h --diff_from_common_commit
``````````

:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/compiler-rt/lib/ubsan/offload/ubsan_offload_hsa_interceptors.cpp b/compiler-rt/lib/ubsan/offload/ubsan_offload_hsa_interceptors.cpp
index ab27e2582..eca02530d 100644
--- a/compiler-rt/lib/ubsan/offload/ubsan_offload_hsa_interceptors.cpp
+++ b/compiler-rt/lib/ubsan/offload/ubsan_offload_hsa_interceptors.cpp
@@ -14,11 +14,11 @@
 #include "sanitizer_common/sanitizer_libc.h"
 #include "sanitizer_common/sanitizer_mutex.h"
 #include "sanitizer_common/sanitizer_platform.h"
+#include "ubsan_diag.h"
 #include "ubsan_offload.h"
 #include "ubsan_offload_hsa.h"
 #include "ubsan_offload_rpc.h"
 #include "ubsan_offload_symbolize.h"
-#include "ubsan_diag.h"
 
 #if !SANITIZER_LINUX
 #error "Offload UBSan reporting is supported on Linux only"
diff --git a/compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp b/compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp
index 9eed5ae13..7aba59e1a 100644
--- a/compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp
+++ b/compiler-rt/lib/ubsan/offload/ubsan_offload_report.cpp
@@ -13,9 +13,9 @@
 
 #include "ubsan_offload.h"
 
-#include "ubsan_offload_hsa.h"
 #include "ubsan_diag.h"
 #include "ubsan_handlers_internal.h"
+#include "ubsan_offload_hsa.h"
 #include "ubsan_value.h"
 
 #include "sanitizer_common/sanitizer_common.h"
@@ -51,8 +51,8 @@ struct CFICheckFailLocPrefix {
 constexpr u8 kCFILocOff =
     static_cast<u8>(__builtin_offsetof(CFICheckFailLocPrefix, Loc));
 
-#define UBSAN_OFFLOAD_HANDLER(kind, name, reason, size, locoff, nloc, ntype,    \
-                             flags, ...)                                       \
+#define UBSAN_OFFLOAD_HANDLER(kind, name, reason, size, locoff, nloc, ntype,   \
+                              flags, ...)                                      \
   {size, locoff, nloc, ntype, flags},
 constexpr KindLayout kLayout[] = {
 #include "ubsan_offload_checks.inc"
diff --git a/compiler-rt/lib/ubsan/ubsan_offload.cpp b/compiler-rt/lib/ubsan/ubsan_offload.cpp
index f44d2bc08..ca7566915 100644
--- a/compiler-rt/lib/ubsan/ubsan_offload.cpp
+++ b/compiler-rt/lib/ubsan/ubsan_offload.cpp
@@ -65,20 +65,20 @@ void report(uptr Pc, __ubsan_report_kind Kind, bool Fatal, const void *Data,
 
 extern "C" {
 
-#define UBSAN_OFFLOAD_HANDLER(kind, name, reason, size, locoff, nloc, ntype,    \
-                             flags, params, ...)                               \
+#define UBSAN_OFFLOAD_HANDLER(kind, name, reason, size, locoff, nloc, ntype,   \
+                              flags, params, ...)                              \
   [[gnu::cold, gnu::noinline]] void __ubsan_handle_##name params {             \
-    report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, false, __VA_ARGS__);          \
+    report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, false, __VA_ARGS__);         \
   }                                                                            \
   [[gnu::cold, gnu::noinline]] void __ubsan_handle_##name##_abort params {     \
-    report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, true, __VA_ARGS__);           \
+    report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, true, __VA_ARGS__);          \
     __builtin_verbose_trap("UndefinedBehaviorSanitizer", reason);              \
   }
 
-#define UBSAN_OFFLOAD_HANDLER_NORETURN(kind, name, reason, size, locoff, nloc,  \
-                                      ntype, flags, params, ...)               \
+#define UBSAN_OFFLOAD_HANDLER_NORETURN(kind, name, reason, size, locoff, nloc, \
+                                       ntype, flags, params, ...)              \
   [[gnu::cold, gnu::noinline]] void __ubsan_handle_##name params {             \
-    report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, true, __VA_ARGS__);           \
+    report(GET_CALLER_PC(), UBSAN_OFFLOAD_##kind, true, __VA_ARGS__);          \
     __builtin_verbose_trap("UndefinedBehaviorSanitizer", reason);              \
   }
 
diff --git a/compiler-rt/lib/ubsan/ubsan_offload_checks.inc b/compiler-rt/lib/ubsan/ubsan_offload_checks.inc
index 268f2b2bc..217dc46c9 100644
--- a/compiler-rt/lib/ubsan/ubsan_offload_checks.inc
+++ b/compiler-rt/lib/ubsan/ubsan_offload_checks.inc
@@ -18,93 +18,92 @@
 #endif
 
 UBSAN_OFFLOAD_HANDLER(type_mismatch, type_mismatch_v1, "type mismatch",
-                     sizeof(TypeMismatchData), 0, 1, 1, KL_None,
-                     (TypeMismatchData * D, ValueHandle P), D, P)
+                      sizeof(TypeMismatchData), 0, 1, 1, KL_None,
+                      (TypeMismatchData * D, ValueHandle P), D, P)
 UBSAN_OFFLOAD_HANDLER(alignment_assumption, alignment_assumption,
-                     "alignment assumption", sizeof(AlignmentAssumptionData), 0,
-                     2, 1, KL_None,
-                     (AlignmentAssumptionData * D, ValueHandle P, ValueHandle A,
-                      ValueHandle O),
-                     D, P, A, O)
+                      "alignment assumption", sizeof(AlignmentAssumptionData),
+                      0, 2, 1, KL_None,
+                      (AlignmentAssumptionData * D, ValueHandle P,
+                       ValueHandle A, ValueHandle O),
+                      D, P, A, O)
 UBSAN_OFFLOAD_HANDLER(add_overflow, add_overflow, "integer overflow",
-                     sizeof(OverflowData), 0, 1, 1, KL_None,
-                     (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
+                      sizeof(OverflowData), 0, 1, 1, KL_None,
+                      (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
 UBSAN_OFFLOAD_HANDLER(sub_overflow, sub_overflow, "integer overflow",
-                     sizeof(OverflowData), 0, 1, 1, KL_None,
-                     (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
+                      sizeof(OverflowData), 0, 1, 1, KL_None,
+                      (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
 UBSAN_OFFLOAD_HANDLER(mul_overflow, mul_overflow, "integer overflow",
-                     sizeof(OverflowData), 0, 1, 1, KL_None,
-                     (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
+                      sizeof(OverflowData), 0, 1, 1, KL_None,
+                      (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
 UBSAN_OFFLOAD_HANDLER(negate_overflow, negate_overflow, "negation overflow",
-                     sizeof(OverflowData), 0, 1, 1, KL_None,
-                     (OverflowData * D, ValueHandle V), D, V)
+                      sizeof(OverflowData), 0, 1, 1, KL_None,
+                      (OverflowData * D, ValueHandle V), D, V)
 UBSAN_OFFLOAD_HANDLER(divrem_overflow, divrem_overflow, "division overflow",
-                     sizeof(OverflowData), 0, 1, 1, KL_None,
-                     (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
+                      sizeof(OverflowData), 0, 1, 1, KL_None,
+                      (OverflowData * D, ValueHandle L, ValueHandle R), D, L, R)
 UBSAN_OFFLOAD_HANDLER(shift_out_of_bounds, shift_out_of_bounds,
-                     "shift out of bounds", sizeof(ShiftOutOfBoundsData), 0, 1,
-                     2, KL_None,
-                     (ShiftOutOfBoundsData * D, ValueHandle L, ValueHandle R),
-                     D, L, R)
+                      "shift out of bounds", sizeof(ShiftOutOfBoundsData), 0, 1,
+                      2, KL_None,
+                      (ShiftOutOfBoundsData * D, ValueHandle L, ValueHandle R),
+                      D, L, R)
 UBSAN_OFFLOAD_HANDLER(out_of_bounds, out_of_bounds, "array index out of bounds",
-                     sizeof(OutOfBoundsData), 0, 1, 2, KL_None,
-                     (OutOfBoundsData * D, ValueHandle I), D, I)
+                      sizeof(OutOfBoundsData), 0, 1, 2, KL_None,
+                      (OutOfBoundsData * D, ValueHandle I), D, I)
 UBSAN_OFFLOAD_HANDLER(local_out_of_bounds, local_out_of_bounds,
-                     "local array index out of bounds", 0, 0, 0, 0, KL_NoData,
-                     (void), nullptr)
+                      "local array index out of bounds", 0, 0, 0, 0, KL_NoData,
+                      (void), nullptr)
 UBSAN_OFFLOAD_HANDLER(vla_bound_not_positive, vla_bound_not_positive,
-                     "non-positive VLA bound", sizeof(VLABoundData), 0, 1, 1,
-                     KL_None, (VLABoundData * D, ValueHandle B), D, B)
+                      "non-positive VLA bound", sizeof(VLABoundData), 0, 1, 1,
+                      KL_None, (VLABoundData * D, ValueHandle B), D, B)
 UBSAN_OFFLOAD_HANDLER(float_cast_overflow, float_cast_overflow,
-                     "float cast overflow", sizeof(FloatCastOverflowDataV2), 0,
-                     1, 2, KL_FloatCast, (void *D, ValueHandle F), D, F)
+                      "float cast overflow", sizeof(FloatCastOverflowDataV2), 0,
+                      1, 2, KL_FloatCast, (void *D, ValueHandle F), D, F)
 UBSAN_OFFLOAD_HANDLER(load_invalid_value, load_invalid_value,
-                     "invalid value load", sizeof(InvalidValueData), 0, 1, 1,
-                     KL_None, (InvalidValueData * D, ValueHandle V), D, V)
-UBSAN_OFFLOAD_HANDLER(implicit_conversion, implicit_conversion,
-                     "implicit conversion", sizeof(ImplicitConversionData), 0,
-                     1, 2, KL_None,
-                     (ImplicitConversionData * D, ValueHandle S, ValueHandle T),
-                     D, S, T)
+                      "invalid value load", sizeof(InvalidValueData), 0, 1, 1,
+                      KL_None, (InvalidValueData * D, ValueHandle V), D, V)
+UBSAN_OFFLOAD_HANDLER(
+    implicit_conversion, implicit_conversion, "implicit conversion",
+    sizeof(ImplicitConversionData), 0, 1, 2, KL_None,
+    (ImplicitConversionData * D, ValueHandle S, ValueHandle T), D, S, T)
 UBSAN_OFFLOAD_HANDLER(invalid_builtin, invalid_builtin, "invalid builtin",
-                     sizeof(InvalidBuiltinData), 0, 1, 0, KL_None,
-                     (InvalidBuiltinData * D), D)
+                      sizeof(InvalidBuiltinData), 0, 1, 0, KL_None,
+                      (InvalidBuiltinData * D), D)
 UBSAN_OFFLOAD_HANDLER(invalid_objc_cast, invalid_objc_cast, "invalid ObjC cast",
-                     sizeof(InvalidObjCCast), 0, 1, 1, KL_None,
-                     (InvalidObjCCast * D, ValueHandle P), D, P)
+                      sizeof(InvalidObjCCast), 0, 1, 1, KL_None,
+                      (InvalidObjCCast * D, ValueHandle P), D, P)
 UBSAN_OFFLOAD_HANDLER(nonnull_arg, nonnull_arg, "null argument",
-                     sizeof(NonNullArgData), 0, 2, 0, KL_None,
-                     (NonNullArgData * D), D)
+                      sizeof(NonNullArgData), 0, 2, 0, KL_None,
+                      (NonNullArgData * D), D)
 UBSAN_OFFLOAD_HANDLER(nullability_arg, nullability_arg, "null argument",
-                     sizeof(NonNullArgData), 0, 2, 0, KL_None,
-                     (NonNullArgData * D), D)
+                      sizeof(NonNullArgData), 0, 2, 0, KL_None,
+                      (NonNullArgData * D), D)
 UBSAN_OFFLOAD_HANDLER(nonnull_return, nonnull_return_v1, "null return",
-                     sizeof(NonNullReturnData), 0, 1, 0, KL_ExtraLoc,
-                     (NonNullReturnData * D, SourceLocation *L), D,
-                     reinterpret_cast<ValueHandle>(L))
+                      sizeof(NonNullReturnData), 0, 1, 0, KL_ExtraLoc,
+                      (NonNullReturnData * D, SourceLocation *L), D,
+                      reinterpret_cast<ValueHandle>(L))
 UBSAN_OFFLOAD_HANDLER(nullability_return, nullability_return_v1, "null return",
-                     sizeof(NonNullReturnData), 0, 1, 0, KL_ExtraLoc,
-                     (NonNullReturnData * D, SourceLocation *L), D,
-                     reinterpret_cast<ValueHandle>(L))
+                      sizeof(NonNullReturnData), 0, 1, 0, KL_ExtraLoc,
+                      (NonNullReturnData * D, SourceLocation *L), D,
+                      reinterpret_cast<ValueHandle>(L))
 UBSAN_OFFLOAD_HANDLER(pointer_overflow, pointer_overflow, "pointer overflow",
-                     sizeof(PointerOverflowData), 0, 1, 0, KL_None,
-                     (PointerOverflowData * D, ValueHandle B, ValueHandle R), D,
-                     B, R)
+                      sizeof(PointerOverflowData), 0, 1, 0, KL_None,
+                      (PointerOverflowData * D, ValueHandle B, ValueHandle R),
+                      D, B, R)
 UBSAN_OFFLOAD_HANDLER(function_type_mismatch, function_type_mismatch,
-                     "function type mismatch", sizeof(FunctionTypeMismatchData),
-                     0, 1, 1, KL_None,
-                     (FunctionTypeMismatchData * D, ValueHandle V), D, V)
+                      "function type mismatch",
+                      sizeof(FunctionTypeMismatchData), 0, 1, 1, KL_None,
+                      (FunctionTypeMismatchData * D, ValueHandle V), D, V)
 UBSAN_OFFLOAD_HANDLER(cfi_check_fail, cfi_check_fail,
-                     "control flow integrity failure", sizeof(CFICheckFailData),
-                     kCFILocOff, 1, 1, KL_None,
-                     (CFICheckFailData * D, ValueHandle F, uptr V), D, F, V)
+                      "control flow integrity failure",
+                      sizeof(CFICheckFailData), kCFILocOff, 1, 1, KL_None,
+                      (CFICheckFailData * D, ValueHandle F, uptr V), D, F, V)
 UBSAN_OFFLOAD_HANDLER_NORETURN(builtin_unreachable, builtin_unreachable,
-                              "unreachable code reached",
-                              sizeof(UnreachableData), 0, 1, 0, KL_None,
-                              (UnreachableData * D), D)
+                               "unreachable code reached",
+                               sizeof(UnreachableData), 0, 1, 0, KL_None,
+                               (UnreachableData * D), D)
 UBSAN_OFFLOAD_HANDLER_NORETURN(missing_return, missing_return, "missing return",
-                              sizeof(UnreachableData), 0, 1, 0, KL_None,
-                              (UnreachableData * D), D)
+                               sizeof(UnreachableData), 0, 1, 0, KL_None,
+                               (UnreachableData * D), D)
 
 #undef UBSAN_OFFLOAD_HANDLER
 #undef UBSAN_OFFLOAD_HANDLER_NORETURN

``````````

</details>


https://github.com/llvm/llvm-project/pull/219972


More information about the llvm-commits mailing list