https://github.com/vasu-the-sharma updated https://github.com/llvm/llvm-project/pull/175023
>From f10bbba299bfcda6ac69af7aa3b7e11107484d72 Mon Sep 17 00:00:00 2001 From: vasu-ibm <[email protected]> Date: Thu, 8 Jan 2026 11:49:39 -0500 Subject: [PATCH] add coverage ubsan-aggregate-null-align.c --- .../test/CodeGen/ubsan-aggregate-null-align.c | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 clang/test/CodeGen/ubsan-aggregate-null-align.c diff --git a/clang/test/CodeGen/ubsan-aggregate-null-align.c b/clang/test/CodeGen/ubsan-aggregate-null-align.c new file mode 100644 index 0000000000000..7ca9d32c3305b --- /dev/null +++ b/clang/test/CodeGen/ubsan-aggregate-null-align.c @@ -0,0 +1,48 @@ +// RUN: %clang_cc1 -triple x86_64-linux-gnu -emit-llvm %s -o - \ +// RUN: -fsanitize=null,alignment | FileCheck %s --check-prefix=CHECK-SANITIZE +// RUN: %clang_cc1 -triple x86_64-linux-gnu -emit-llvm %s -o - \ +// RUN: | FileCheck %s --check-prefix=CHECK-NO-SANITIZE + +struct Small { int x; }; +struct Container { struct Small inner; }; + +// CHECK-SANITIZE-LABEL: define {{.*}}void @test_direct_assign_ptr( +// CHECK-SANITIZE: %[[D:.*]] = load ptr, ptr %dest.addr +// CHECK-SANITIZE: %[[S:.*]] = load ptr, ptr %src.addr +// CHECK-SANITIZE: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %[[D]], ptr align 4 %[[S]], i64 4, i1 false) +// +// CHECK-NO-SANITIZE-LABEL: define {{.*}}void @test_direct_assign_ptr( +// CHECK-NO-SANITIZE-NOT: @__ubsan_handle_type_mismatch +void test_direct_assign_ptr(struct Small *dest, struct Small *src) { + *dest = *src; +} + +// CHECK-SANITIZE-LABEL: define {{.*}}void @test_null_dest( +// CHECK-SANITIZE: %[[D:.*]] = load ptr, ptr %dest +// CHECK-SANITIZE: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %[[D]], ptr {{.*}}, i64 4, i1 false) +// +// CHECK-NO-SANITIZE-LABEL: define {{.*}}void @test_null_dest( +// CHECK-NO-SANITIZE-NOT: @__ubsan_handle_type_mismatch +void test_null_dest(struct Small *src) { + struct Small *dest = 0; + *dest = *src; +} + +// CHECK-SANITIZE-LABEL: define {{.*}}void @test_nested_struct( +// CHECK-SANITIZE: %[[VAL1:.*]] = icmp ne ptr %[[C:.*]], null +// CHECK-SANITIZE: br i1 %{{.*}}, label %cont, label %handler.type_mismatch +// +// CHECK-NO-SANITIZE-LABEL: define {{.*}}void @test_nested_struct( +// CHECK-NO-SANITIZE-NOT: @__ubsan_handle_type_mismatch +void test_nested_struct(struct Container *c, struct Small *s) { + c->inner = *s; +} + +// CHECK-SANITIZE-LABEL: define {{.*}}void @test_comma_operator( +// CHECK-SANITIZE: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %{{.*}}, ptr align 4 %{{.*}}, i64 4, i1 false) +// +// CHECK-NO-SANITIZE-LABEL: define {{.*}}void @test_comma_operator( +// CHECK-NO-SANITIZE-NOT: @__ubsan_handle_type_mismatch +void test_comma_operator(struct Small *dest, struct Small *src) { + *dest = (0, *src); +} _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
