llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-x86

Author: Nikita Popov (nikic)

<details>
<summary>Changes</summary>

This stops emitting the zeroext/signext attributes for return values on X86, 
except for `bool` (which stays zeroext, as it requires zero-extension to 8 
bits) and Darwin.

The `getTypeForExtReturn()` in the X86 backend already ignores zeroext/signext 
for i8 and i16 types on non-Darwin platforms. For these cases, this change has 
no impact on codegen: The intent is merely to clarify the used psABI. Using 
zeroext/signext when no actual extension takes place is highly confusing, esp. 
when the behavior is different between return values and arguments.

However, this *does* change behavior for non-i8/i16 types. Specifically, it 
changes `_BitInt` types to have unspecified high bits, instead of performing a 
partial sign/zero extension to 8, 16 or 32 bits. This makes `_BitInt` comply 
with the Linux psABI, the previous behavior was incorrect. MSVC does not 
support `_BitInt`, so there is no correct ABI there.

Because the only case with actual behavior change is `_BitInt`, I'm not 
bothering with `-fclang-abi-compat` for this change. We explicitly document 
`_BitInt` as not ABI stable at this point.

This change does not affect handling of arguments.

---

Patch is 42.78 KiB, truncated to 20.00 KiB below, full version: 
https://github.com/llvm/llvm-project/pull/232729.diff


19 Files Affected:

- (modified) clang/lib/CodeGen/Targets/X86.cpp (+19-5) 
- (modified) clang/test/C/C2y/n3254.c (+2-2) 
- (modified) clang/test/CodeGen/X86/ms-x86-intrinsics.c (+2-2) 
- (modified) clang/test/CodeGen/X86/x86_64-arguments.c (+3-3) 
- (modified) clang/test/CodeGen/attr-noundef.cpp (+1-1) 
- (modified) clang/test/CodeGen/attr-sized-by-for-pointers.c (+12-12) 
- (modified) clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c (+12-12) 
- (modified) clang/test/CodeGen/function-attributes.c (+4-4) 
- (modified) clang/test/CodeGen/overflow-behavior-types.cpp (+1-1) 
- (modified) clang/test/CodeGenCXX/cxx20-consteval-crash.cpp (+3-3) 
- (modified) clang/test/CodeGenCXX/ext-int.cpp (+2-2) 
- (modified) clang/test/CodeGenCXX/ms-inline-asm-return.cpp (+2-2) 
- (modified) clang/test/CodeGenCXX/pr12251.cpp (+1-1) 
- (modified) clang/test/CodeGenObjC/property.m (+3-3) 
- (modified) clang/test/DebugInfo/CXX/ptr-to-ptr.cpp (+2-2) 
- (modified) clang/test/OpenMP/distribute_parallel_for_num_threads_codegen.cpp 
(+4-4) 
- (modified) 
clang/test/OpenMP/distribute_parallel_for_simd_num_threads_codegen.cpp (+5-5) 
- (modified) llvm/lib/ABI/Targets/X86.cpp (+19-4) 
- (modified) llvm/unittests/ABI/X86TargetInfoTest.cpp (+49) 


``````````diff
diff --git a/clang/lib/CodeGen/Targets/X86.cpp 
b/clang/lib/CodeGen/Targets/X86.cpp
index c0947c481d2b07..eed851b306ad49 100644
--- a/clang/lib/CodeGen/Targets/X86.cpp
+++ b/clang/lib/CodeGen/Targets/X86.cpp
@@ -459,6 +459,18 @@ bool X86_32ABIInfo::canExpandIndirectArgument(QualType Ty) 
const {
   return Size == getContext().getTypeSize(Ty);
 }
 
+static bool shouldExtendReturnType(const ABIInfo &Info, QualType RetTy) {
+  // Bools need to be zero-extended to 8 bits for all ABIs.
+  if (RetTy->isBooleanType())
+    return true;
+
+  // Promotable integer types get extended only for Darwin.
+  if (!Info.getTarget().getTriple().isOSDarwin())
+    return false;
+
+  return Info.isPromotableIntegerTypeForABI(RetTy);
+}
+
 ABIArgInfo X86_32ABIInfo::getIndirectReturnResult(QualType RetTy, CCState 
&State) const {
   // If the return value is indirect, then the hidden argument is consuming one
   // integer register.
@@ -565,8 +577,8 @@ ABIArgInfo X86_32ABIInfo::classifyReturnType(QualType RetTy,
     if (EIT->getNumBits() > 64)
       return getIndirectReturnResult(RetTy, State);
 
-  return (isPromotableIntegerTypeForABI(RetTy) ? ABIArgInfo::getExtend(RetTy)
-                                               : ABIArgInfo::getDirect());
+  return shouldExtendReturnType(*this, RetTy) ? ABIArgInfo::getExtend(RetTy)
+                                              : ABIArgInfo::getDirect();
 }
 
 unsigned X86_32ABIInfo::getTypeStackAlignInBytes(QualType Ty,
@@ -2385,8 +2397,8 @@ ABIArgInfo 
X86_64ABIInfo::getIndirectReturnResult(QualType Ty) const {
       return getNaturalAlignIndirect(Ty, getDataLayout().getAllocaAddrSpace());
 
     llvm::Type *IRTy = CGT.ConvertType(Ty);
-    return (isPromotableIntegerTypeForABI(Ty) ? ABIArgInfo::getExtend(Ty, IRTy)
-                                              : ABIArgInfo::getDirect(IRTy));
+    return shouldExtendReturnType(*this, Ty) ? ABIArgInfo::getExtend(Ty, IRTy)
+                                             : ABIArgInfo::getDirect(IRTy);
   }
 
   return getNaturalAlignIndirect(Ty, getDataLayout().getAllocaAddrSpace());
@@ -2838,7 +2850,9 @@ ABIArgInfo X86_64ABIInfo::classifyReturnType(QualType 
RetTy) const {
 
       if (RetTy->isIntegralOrEnumerationType() &&
           isPromotableIntegerTypeForABI(RetTy))
-        return ABIArgInfo::getExtend(RetTy);
+        return shouldExtendReturnType(*this, RetTy)
+                   ? ABIArgInfo::getExtend(RetTy)
+                   : ABIArgInfo::getDirect();
     }
 
     if (ResType->isIntegerTy(128)) {
diff --git a/clang/test/C/C2y/n3254.c b/clang/test/C/C2y/n3254.c
index 9f8c47756df328..c83217559a704c 100644
--- a/clang/test/C/C2y/n3254.c
+++ b/clang/test/C/C2y/n3254.c
@@ -37,7 +37,7 @@ int foo() {
   return s_ptr->x;
 }
 
-// CHECK-LABEL: define dso_local signext i8 @bar(
+// CHECK-LABEL: define dso_local i8 @bar(
 // CHECK-SAME: ) #[[ATTR0]] {
 // CHECK-NEXT:  [[ENTRY:.*:]]
 // CHECK-NEXT:    [[BUFFER:%.*]] = alloca [12 x i8], align 4
@@ -77,7 +77,7 @@ struct T {
   DECL_BUFFER(struct S, buffer);
 };
 
-// CHECK-LABEL: define dso_local signext i8 @quux(
+// CHECK-LABEL: define dso_local i8 @quux(
 // CHECK-SAME: ) #[[ATTR0]] {
 // CHECK-NEXT:  [[ENTRY:.*:]]
 // CHECK-NEXT:    [[T:%.*]] = alloca [[STRUCT_T:%.*]], align 4
diff --git a/clang/test/CodeGen/X86/ms-x86-intrinsics.c 
b/clang/test/CodeGen/X86/ms-x86-intrinsics.c
index 9099b56e50d45e..803444df852278 100644
--- a/clang/test/CodeGen/X86/ms-x86-intrinsics.c
+++ b/clang/test/CodeGen/X86/ms-x86-intrinsics.c
@@ -11,7 +11,7 @@
 char test__readfsbyte(unsigned long Offset) {
   return __readfsbyte(++Offset);
 }
-// CHECK-I386-LABEL: define dso_local signext i8 @test__readfsbyte(i32 noundef 
%Offset)
+// CHECK-I386-LABEL: define dso_local i8 @test__readfsbyte(i32 noundef %Offset)
 // CHECK-I386:   %inc = add i32 %Offset, 1
 // CHECK-I386:   [[PTR:%[0-9]+]] = inttoptr i32 %inc to ptr addrspace(257)
 // CHECK-I386:   [[VALUE:%[0-9]+]] = load volatile i8, ptr addrspace(257) 
[[PTR]], align 1
@@ -20,7 +20,7 @@ char test__readfsbyte(unsigned long Offset) {
 short test__readfsword(unsigned long Offset) {
   return __readfsword(++Offset);
 }
-// CHECK-I386-LABEL: define dso_local signext i16 @test__readfsword(i32 
noundef %Offset)
+// CHECK-I386-LABEL: define dso_local i16 @test__readfsword(i32 noundef 
%Offset)
 // CHECK-I386:   %inc = add i32 %Offset, 1
 // CHECK-I386:   [[PTR:%[0-9]+]] = inttoptr i32 %inc to ptr addrspace(257)
 // CHECK-I386:   [[VALUE:%[0-9]+]] = load volatile i16, ptr addrspace(257) 
[[PTR]], align 2
diff --git a/clang/test/CodeGen/X86/x86_64-arguments.c 
b/clang/test/CodeGen/X86/x86_64-arguments.c
index b56792dd50cddd..73f99b9a814b4e 100644
--- a/clang/test/CodeGen/X86/x86_64-arguments.c
+++ b/clang/test/CodeGen/X86/x86_64-arguments.c
@@ -6,17 +6,17 @@
 // RUN:   FileCheck %s -check-prefix=CHECK -check-prefix=AVX 
-check-prefix=AVX512
 #include <stdarg.h>
 
-// CHECK-LABEL: define{{.*}} signext i8 @f0()
+// CHECK-LABEL: define dso_local i8 @f0()
 char f0(void) {
   return 0;
 }
 
-// CHECK-LABEL: define{{.*}} signext i16 @f1()
+// CHECK-LABEL: define dso_local i16 @f1()
 short f1(void) {
   return 0;
 }
 
-// CHECK-LABEL: define{{.*}} i32 @f2()
+// CHECK-LABEL: define dso_local i32 @f2()
 int f2(void) {
   return 0;
 }
diff --git a/clang/test/CodeGen/attr-noundef.cpp 
b/clang/test/CodeGen/attr-noundef.cpp
index 582743a5be5fa6..9b14381d004b84 100644
--- a/clang/test/CodeGen/attr-noundef.cpp
+++ b/clang/test/CodeGen/attr-noundef.cpp
@@ -158,7 +158,7 @@ void pass_large_BitInt(_BitInt(127) e) {
 // CHECK: [[DEF]] ptr @{{.*}}ret_npt{{.*}}()
 // CHECK: [[DEF]] void @{{.*}}pass_npt{{.*}}(ptr %
 
-// CHECK-INTEL: [[DEF]] noundef signext i3 @{{.*}}ret_BitInt{{.*}}()
+// CHECK-INTEL: [[DEF]] noundef i3 @{{.*}}ret_BitInt{{.*}}()
 // CHECK-AARCH: [[DEF]] noundef i3 @{{.*}}ret_BitInt{{.*}}()
 // CHECK-INTEL: [[DEF]] void @{{.*}}pass_BitInt{{.*}}(i3 noundef signext %
 // CHECK-AARCH: [[DEF]] void @{{.*}}pass_BitInt{{.*}}(i3 noundef %
diff --git a/clang/test/CodeGen/attr-sized-by-for-pointers.c 
b/clang/test/CodeGen/attr-sized-by-for-pointers.c
index dabe3163571a5d..a3293689027969 100644
--- a/clang/test/CodeGen/attr-sized-by-for-pointers.c
+++ b/clang/test/CodeGen/attr-sized-by-for-pointers.c
@@ -210,7 +210,7 @@ struct annotated_sized_ptr_odd_pointee {
   unsigned byte_count;
 };
 
-// SANITIZE-WITH-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_odd_pointee(
+// SANITIZE-WITH-ATTR-LABEL: define dso_local i8 
@test_load_subscript_odd_pointee(
 // SANITIZE-WITH-ATTR-SAME: ptr noundef [[P:%.*]], i32 noundef [[INDEX:%.*]]) 
local_unnamed_addr #[[ATTR0]] {
 // SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITH-ATTR-NEXT:    [[DOTCOUNTED_BY_GEP:%.*]] = getelementptr 
inbounds nuw i8, ptr [[P]], i64 16
@@ -230,7 +230,7 @@ struct annotated_sized_ptr_odd_pointee {
 // SANITIZE-WITH-ATTR-NEXT:    [[TMP4:%.*]] = load i8, ptr [[ARRAYIDX]], align 
1, !tbaa [[CHAR_TBAA19:![0-9]+]]
 // SANITIZE-WITH-ATTR-NEXT:    ret i8 [[TMP4]]
 //
-// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_odd_pointee(
+// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local i8 
@test_load_subscript_odd_pointee(
 // NO-SANITIZE-WITH-ATTR-SAME: ptr nofree noundef readonly captures(none) 
[[P:%.*]], i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR1:[0-9]+]] {
 // NO-SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
@@ -240,7 +240,7 @@ struct annotated_sized_ptr_odd_pointee {
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP1:%.*]] = load i8, ptr [[ARRAYIDX]], 
align 1, !tbaa [[CHAR_TBAA17:![0-9]+]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret i8 [[TMP1]]
 //
-// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_odd_pointee(
+// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local i8 
@test_load_subscript_odd_pointee(
 // SANITIZE-WITHOUT-ATTR-SAME: ptr noundef [[P:%.*]], i32 noundef 
[[INDEX:%.*]]) local_unnamed_addr #[[ATTR0]] {
 // SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
@@ -250,7 +250,7 @@ struct annotated_sized_ptr_odd_pointee {
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP1:%.*]] = load i8, ptr [[ARRAYIDX]], 
align 1, !tbaa [[CHAR_TBAA17:![0-9]+]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret i8 [[TMP1]]
 //
-// NO-SANITIZE-WITHOUT-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_odd_pointee(
+// NO-SANITIZE-WITHOUT-ATTR-LABEL: define dso_local i8 
@test_load_subscript_odd_pointee(
 // NO-SANITIZE-WITHOUT-ATTR-SAME: ptr nofree noundef readonly captures(none) 
[[P:%.*]], i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR1:[0-9]+]] {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw 
i8, ptr [[P]], i64 8
@@ -341,14 +341,14 @@ struct annotated_sized_ptr_narrow_unsigned_count {
   unsigned char byte_count;
 };
 
-// SANITIZE-WITH-ATTR-LABEL: define dso_local noundef signext i8 
@test_load_subscript_narrow_unsigned_count(
+// SANITIZE-WITH-ATTR-LABEL: define dso_local noundef i8 
@test_load_subscript_narrow_unsigned_count(
 // SANITIZE-WITH-ATTR-SAME: ptr noundef [[P:%.*]], i32 noundef [[INDEX:%.*]]) 
local_unnamed_addr #[[ATTR2:[0-9]+]] {
 // SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITH-ATTR-NEXT:    [[TMP0:%.*]] = zext i32 [[INDEX]] to i64, 
!nosanitize [[META6]]
 // SANITIZE-WITH-ATTR-NEXT:    tail call void 
@__ubsan_handle_out_of_bounds_abort(ptr nonnull @[[GLOB11:[0-9]+]], i64 
[[TMP0]]) #[[ATTR6]], !nosanitize [[META6]]
 // SANITIZE-WITH-ATTR-NEXT:    unreachable, !nosanitize [[META6]]
 //
-// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_narrow_unsigned_count(
+// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local i8 
@test_load_subscript_narrow_unsigned_count(
 // NO-SANITIZE-WITH-ATTR-SAME: ptr nofree noundef readonly captures(none) 
[[P:%.*]], i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR1]] {
 // NO-SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[P]], align 8, 
!tbaa [[_ZTS13LARGE_POINTEEPTR_TBAA20:![0-9]+]]
@@ -357,7 +357,7 @@ struct annotated_sized_ptr_narrow_unsigned_count {
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP1:%.*]] = load i8, ptr [[ARRAYIDX]], 
align 1, !tbaa [[CHAR_TBAA17]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret i8 [[TMP1]]
 //
-// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_narrow_unsigned_count(
+// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local i8 
@test_load_subscript_narrow_unsigned_count(
 // SANITIZE-WITHOUT-ATTR-SAME: ptr noundef [[P:%.*]], i32 noundef 
[[INDEX:%.*]]) local_unnamed_addr #[[ATTR0]] {
 // SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[P]], align 8, 
!tbaa [[_ZTS13LARGE_POINTEEPTR_TBAA20:![0-9]+]]
@@ -366,7 +366,7 @@ struct annotated_sized_ptr_narrow_unsigned_count {
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP1:%.*]] = load i8, ptr [[ARRAYIDX]], 
align 1, !tbaa [[CHAR_TBAA17]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret i8 [[TMP1]]
 //
-// NO-SANITIZE-WITHOUT-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_narrow_unsigned_count(
+// NO-SANITIZE-WITHOUT-ATTR-LABEL: define dso_local i8 
@test_load_subscript_narrow_unsigned_count(
 // NO-SANITIZE-WITHOUT-ATTR-SAME: ptr nofree noundef readonly captures(none) 
[[P:%.*]], i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR1]] {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[P]], align 
8, !tbaa [[_ZTS13LARGE_POINTEEPTR_TBAA20:![0-9]+]]
@@ -388,14 +388,14 @@ struct annotated_sized_ptr_narrow_signed_count {
   signed char byte_count;
 };
 
-// SANITIZE-WITH-ATTR-LABEL: define dso_local noundef signext i8 
@test_load_subscript_narrow_signed_count(
+// SANITIZE-WITH-ATTR-LABEL: define dso_local noundef i8 
@test_load_subscript_narrow_signed_count(
 // SANITIZE-WITH-ATTR-SAME: ptr noundef [[P:%.*]], i32 noundef [[INDEX:%.*]]) 
local_unnamed_addr #[[ATTR2]] {
 // SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITH-ATTR-NEXT:    [[TMP0:%.*]] = zext i32 [[INDEX]] to i64, 
!nosanitize [[META6]]
 // SANITIZE-WITH-ATTR-NEXT:    tail call void 
@__ubsan_handle_out_of_bounds_abort(ptr nonnull @[[GLOB13:[0-9]+]], i64 
[[TMP0]]) #[[ATTR6]], !nosanitize [[META6]]
 // SANITIZE-WITH-ATTR-NEXT:    unreachable, !nosanitize [[META6]]
 //
-// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_narrow_signed_count(
+// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local i8 
@test_load_subscript_narrow_signed_count(
 // NO-SANITIZE-WITH-ATTR-SAME: ptr nofree noundef readonly captures(none) 
[[P:%.*]], i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR1]] {
 // NO-SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[P]], align 8, 
!tbaa [[_ZTS15MIDSIZE_POINTEEPTR_TBAA23:![0-9]+]]
@@ -404,7 +404,7 @@ struct annotated_sized_ptr_narrow_signed_count {
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP1:%.*]] = load i8, ptr [[ARRAYIDX]], 
align 1, !tbaa [[CHAR_TBAA17]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret i8 [[TMP1]]
 //
-// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_narrow_signed_count(
+// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local i8 
@test_load_subscript_narrow_signed_count(
 // SANITIZE-WITHOUT-ATTR-SAME: ptr noundef [[P:%.*]], i32 noundef 
[[INDEX:%.*]]) local_unnamed_addr #[[ATTR0]] {
 // SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[P]], align 8, 
!tbaa [[_ZTS15MIDSIZE_POINTEEPTR_TBAA23:![0-9]+]]
@@ -413,7 +413,7 @@ struct annotated_sized_ptr_narrow_signed_count {
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP1:%.*]] = load i8, ptr [[ARRAYIDX]], 
align 1, !tbaa [[CHAR_TBAA17]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret i8 [[TMP1]]
 //
-// NO-SANITIZE-WITHOUT-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_narrow_signed_count(
+// NO-SANITIZE-WITHOUT-ATTR-LABEL: define dso_local i8 
@test_load_subscript_narrow_signed_count(
 // NO-SANITIZE-WITHOUT-ATTR-SAME: ptr nofree noundef readonly captures(none) 
[[P:%.*]], i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR1]] {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[P]], align 
8, !tbaa [[_ZTS15MIDSIZE_POINTEEPTR_TBAA23:![0-9]+]]
diff --git a/clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c 
b/clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c
index 05f3c57d861498..afe97592b9f7a1 100644
--- a/clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c
+++ b/clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c
@@ -222,7 +222,7 @@ struct annotated_sized_ptr_odd_pointee {
   unsigned byte_count;
 };
 
-// SANITIZE-WITH-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_odd_pointee(
+// SANITIZE-WITH-ATTR-LABEL: define dso_local i8 
@test_load_subscript_odd_pointee(
 // SANITIZE-WITH-ATTR-SAME: ptr noundef [[P:%.*]], i32 noundef [[INDEX:%.*]]) 
local_unnamed_addr #[[ATTR0]] {
 // SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITH-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
@@ -244,7 +244,7 @@ struct annotated_sized_ptr_odd_pointee {
 // SANITIZE-WITH-ATTR-NEXT:    [[TMP6:%.*]] = load i8, ptr [[ARRAYIDX]], align 
1, !tbaa [[CHAR_TBAA19:![0-9]+]]
 // SANITIZE-WITH-ATTR-NEXT:    ret i8 [[TMP6]]
 //
-// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_odd_pointee(
+// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local i8 
@test_load_subscript_odd_pointee(
 // NO-SANITIZE-WITH-ATTR-SAME: ptr nofree noundef readonly captures(none) 
[[P:%.*]], i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR1:[0-9]+]] {
 // NO-SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
@@ -254,7 +254,7 @@ struct annotated_sized_ptr_odd_pointee {
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP1:%.*]] = load i8, ptr [[ARRAYIDX]], 
align 1, !tbaa [[CHAR_TBAA17:![0-9]+]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret i8 [[TMP1]]
 //
-// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_odd_pointee(
+// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local i8 
@test_load_subscript_odd_pointee(
 // SANITIZE-WITHOUT-ATTR-SAME: ptr noundef [[P:%.*]], i32 noundef 
[[INDEX:%.*]]) local_unnamed_addr #[[ATTR0]] {
 // SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw i8, 
ptr [[P]], i64 8
@@ -264,7 +264,7 @@ struct annotated_sized_ptr_odd_pointee {
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP1:%.*]] = load i8, ptr [[ARRAYIDX]], 
align 1, !tbaa [[CHAR_TBAA17:![0-9]+]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret i8 [[TMP1]]
 //
-// NO-SANITIZE-WITHOUT-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_odd_pointee(
+// NO-SANITIZE-WITHOUT-ATTR-LABEL: define dso_local i8 
@test_load_subscript_odd_pointee(
 // NO-SANITIZE-WITHOUT-ATTR-SAME: ptr nofree noundef readonly captures(none) 
[[P:%.*]], i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR1:[0-9]+]] {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[BUF:%.*]] = getelementptr inbounds nuw 
i8, ptr [[P]], i64 8
@@ -357,14 +357,14 @@ struct annotated_sized_ptr_narrow_unsigned_count {
   unsigned char byte_count;
 };
 
-// SANITIZE-WITH-ATTR-LABEL: define dso_local noundef signext i8 
@test_load_subscript_narrow_unsigned_count(
+// SANITIZE-WITH-ATTR-LABEL: define dso_local noundef i8 
@test_load_subscript_narrow_unsigned_count(
 // SANITIZE-WITH-ATTR-SAME: ptr noundef [[P:%.*]], i32 noundef [[INDEX:%.*]]) 
local_unnamed_addr #[[ATTR2:[0-9]+]] {
 // SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITH-ATTR-NEXT:    [[TMP0:%.*]] = zext i32 [[INDEX]] to i64, 
!nosanitize [[META12]]
 // SANITIZE-WITH-ATTR-NEXT:    tail call void 
@__ubsan_handle_out_of_bounds_abort(ptr nonnull @[[GLOB11:[0-9]+]], i64 
[[TMP0]]) #[[ATTR6]], !nosanitize [[META12]]
 // SANITIZE-WITH-ATTR-NEXT:    unreachable, !nosanitize [[META12]]
 //
-// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_narrow_unsigned_count(
+// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local i8 
@test_load_subscript_narrow_unsigned_count(
 // NO-SANITIZE-WITH-ATTR-SAME: ptr nofree noundef readonly captures(none) 
[[P:%.*]], i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR1]] {
 // NO-SANITIZE-WITH-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[P]], align 8, 
!tbaa [[_ZTS13LARGE_POINTEEPTR_TBAA20:![0-9]+]]
@@ -373,7 +373,7 @@ struct annotated_sized_ptr_narrow_unsigned_count {
 // NO-SANITIZE-WITH-ATTR-NEXT:    [[TMP1:%.*]] = load i8, ptr [[ARRAYIDX]], 
align 1, !tbaa [[CHAR_TBAA17]]
 // NO-SANITIZE-WITH-ATTR-NEXT:    ret i8 [[TMP1]]
 //
-// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_narrow_unsigned_count(
+// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local i8 
@test_load_subscript_narrow_unsigned_count(
 // SANITIZE-WITHOUT-ATTR-SAME: ptr noundef [[P:%.*]], i32 noundef 
[[INDEX:%.*]]) local_unnamed_addr #[[ATTR0]] {
 // SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[P]], align 8, 
!tbaa [[_ZTS13LARGE_POINTEEPTR_TBAA20:![0-9]+]]
@@ -382,7 +382,7 @@ struct annotated_sized_ptr_narrow_unsigned_count {
 // SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP1:%.*]] = load i8, ptr [[ARRAYIDX]], 
align 1, !tbaa [[CHAR_TBAA17]]
 // SANITIZE-WITHOUT-ATTR-NEXT:    ret i8 [[TMP1]]
 //
-// NO-SANITIZE-WITHOUT-ATTR-LABEL: define dso_local signext i8 
@test_load_subscript_narrow_unsigned_count(
+// NO-SANITIZE-WITHOUT-ATTR-LABEL: define dso_local i8 
@test_load_subscript_narrow_unsigned_count(
 // NO-SANITIZE-WITHOUT-ATTR-SAME: ptr nofree noundef readonly captures(none) 
[[P:%.*]], i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR1]] {
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:  [[ENTRY:.*:]]
 // NO-SANITIZE-WITHOUT-ATTR-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[P]], align 
8, !tbaa [[_ZTS13LARGE_POINTEEPTR_TBAA20:![0-9]+]]
@@ -404,14 +404,14 @@ struct annotated_sized_ptr_narrow_signed_count {
   signed char byte_count;
 };
 
-// SANITIZE-WITH-ATTR-LABEL: define dso_local noundef signext i8 
@test_load_subscript_narrow_signed_count(
+// SANITIZE-WITH-ATTR-LAB...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/232729
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to