[clang] [Clang] [CodeGen] UBSan Trap Reasons (PR #145967)

2025-06-26 Thread Anthony Tran via cfe-commits

https://github.com/anthonyhatran edited 
https://github.com/llvm/llvm-project/pull/145967
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [Clang] [CodeGen] UBSan Trap Reasons (PR #145967)

2025-06-26 Thread Anthony Tran via cfe-commits

https://github.com/anthonyhatran edited 
https://github.com/llvm/llvm-project/pull/145967
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [Clang] [CodeGen] UBSan Trap Reasons (PR #145967)

2025-06-26 Thread Anthony Tran via cfe-commits

https://github.com/anthonyhatran edited 
https://github.com/llvm/llvm-project/pull/145967
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [Clang] [CodeGen] UBSan Trap Reasons (PR #145967)

2025-06-26 Thread Anthony Tran via cfe-commits

anthonyhatran wrote:

Anyways, to address Dan's comments, I changed all test cases so that they 
utilize `clang_cc1` instead of `clang`. This also meant that I had to change 
any `-fsanitize=undefined` and `-fsanitize-trap=undefined` to the specific 
check since `undefined` is a check grouping and is not recognized by front-end. 
I also adjusted the strings in the switch function to more closely match what 
was emitted when the test cases were run without `-fsanitize-trap=`, removed 
the unnecessary bug fix for unreachable, and added all test cases in for each 
`SanitizerHandler`, aside from `SanitizerHandler::BoundsSafety`.

https://github.com/llvm/llvm-project/pull/145967
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] Gsoc ubsan trap reason v2 (PR #145967)

2025-06-26 Thread Anthony Tran via cfe-commits

https://github.com/anthonyhatran created 
https://github.com/llvm/llvm-project/pull/145967

None

>From 7bdb672ef70687575b93d099ccfe261eec66d006 Mon Sep 17 00:00:00 2001
From: Anthony Tran 
Date: Thu, 26 Jun 2025 12:40:05 -0700
Subject: [PATCH 1/2] Addressed most of Dan's comments and added remaining test
 cases

---
 clang/lib/CodeGen/CGExpr.cpp  | 107 ++
 .../CodeGen/ubsan-trap-reason-add-overflow.c  |  10 ++
 .../ubsan-trap-reason-alignment-assumption.c  |  14 +++
 .../ubsan-trap-reason-builtin-unreachable.c   |  11 ++
 .../ubsan-trap-reason-cfi-check-fail.c|  27 +
 .../ubsan-trap-reason-div-rem-overflow.c  |  10 ++
 ...an-trap-reason-dynamic-type-cache-miss.cpp |  23 
 .../ubsan-trap-reason-float-cast-overflow.c   |  10 ++
 ...ubsan-trap-reason-function-type-mismatch.c |  16 +++
 .../ubsan-trap-reason-implicit-conversion.c   |  13 +++
 .../ubsan-trap-reason-invalid-builtin.c   |  11 ++
 .../ubsan-trap-reason-invalid-objc-cast.m |  31 +
 .../ubsan-trap-reason-load-invalid-value.c|  15 +++
 .../ubsan-trap-reason-missing-return.cpp  |  12 ++
 .../CodeGen/ubsan-trap-reason-mul-overflow.c  |  10 ++
 .../ubsan-trap-reason-negate-overflow.c   |  12 ++
 .../CodeGen/ubsan-trap-reason-nonnull-arg.c   |  16 +++
 .../ubsan-trap-reason-nonnull-return.c|  15 +++
 .../ubsan-trap-reason-nullability-arg.c   |  18 +++
 .../ubsan-trap-reason-nullability-return.c|  18 +++
 .../CodeGen/ubsan-trap-reason-out-of-bounds.c |  12 ++
 .../ubsan-trap-reason-pointer-overflow.c  |  16 +++
 .../ubsan-trap-reason-shift-out-of-bounds.c   |  12 ++
 .../CodeGen/ubsan-trap-reason-sub-overflow.c  |  10 ++
 .../CodeGen/ubsan-trap-reason-type-mismatch.c |  11 ++
 ...ubsan-trap-reason-vla-bound-not-positive.c |  14 +++
 26 files changed, 474 insertions(+)
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-add-overflow.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-alignment-assumption.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-builtin-unreachable.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-cfi-check-fail.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-div-rem-overflow.c
 create mode 100644 
clang/test/CodeGen/ubsan-trap-reason-dynamic-type-cache-miss.cpp
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-float-cast-overflow.c
 create mode 100644 
clang/test/CodeGen/ubsan-trap-reason-function-type-mismatch.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-implicit-conversion.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-invalid-builtin.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-invalid-objc-cast.m
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-load-invalid-value.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-missing-return.cpp
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-mul-overflow.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-negate-overflow.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-nonnull-arg.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-nonnull-return.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-nullability-arg.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-nullability-return.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-out-of-bounds.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-pointer-overflow.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-shift-out-of-bounds.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-sub-overflow.c
 create mode 100644 clang/test/CodeGen/ubsan-trap-reason-type-mismatch.c
 create mode 100644 
clang/test/CodeGen/ubsan-trap-reason-vla-bound-not-positive.c

diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index 85c768807572f..34dba66edfac1 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -85,6 +85,97 @@ enum VariableTypeDescriptorKind : uint16_t {
 //Miscellaneous Helper Methods
 //======//
 
+<<< HEAD
+===
+static llvm::StringRef GetUBSanTrapForHandler(SanitizerHandler ID) {
+  switch (ID) {
+  case SanitizerHandler::AddOverflow:
+return "Signed integer addition overflowed";
+
+  case SanitizerHandler::BuiltinUnreachable:
+return "_builtin_unreachable(), execution reached an unreachable program "
+   "point";
+
+  case SanitizerHandler::CFICheckFail:
+return "Control flow integrity check failed";
+
+  case SanitizerHandler::DivremOverflow:
+return "Signed integer divide or remainder overflowed";
+
+  case SanitizerHandler::DynamicTypeCacheMiss:
+return "Dynamic-type cache miss";
+
+  case SanitizerHandler::FloatCastOverflow:
+return "Floating-point to integer conversion overflowed";
+
+  case SanitizerHandler::FunctionTypeMismatch:
+return "Function called with mismatched signature