Skip to content

Commit 568b002

Browse files
authored
Merge branch 'main' into fix-ProTypeUnionAccessCheck
2 parents e0f3bae + b5bcdb5 commit 568b002

File tree

440 files changed

+8596
-11866
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

440 files changed

+8596
-11866
lines changed

clang/include/clang/Basic/AttrDocs.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2669,7 +2669,7 @@ sign. For example:
26692669

26702670
.. code-block:: c++
26712671

2672-
__attribute__((target_clones("sha2+memtag2", "fcma+sve2-pmull128")))
2672+
__attribute__((target_clones("sha2+memtag", "fcma+sve2-pmull128")))
26732673
void foo() {}
26742674

26752675
For every multiversioned function a ``default`` (fallback) implementation

clang/include/clang/Basic/BuiltinsAMDGPU.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,8 @@ TARGET_BUILTIN(__builtin_amdgcn_frexp_exph, "sh", "nc", "16-bit-insts")
224224
TARGET_BUILTIN(__builtin_amdgcn_fracth, "hh", "nc", "16-bit-insts")
225225
TARGET_BUILTIN(__builtin_amdgcn_classh, "bhi", "nc", "16-bit-insts")
226226
TARGET_BUILTIN(__builtin_amdgcn_s_memrealtime, "WUi", "n", "s-memrealtime")
227-
TARGET_BUILTIN(__builtin_amdgcn_mov_dpp, "iiIiIiIiIb", "nc", "dpp")
228-
TARGET_BUILTIN(__builtin_amdgcn_update_dpp, "iiiIiIiIiIb", "nc", "dpp")
227+
TARGET_BUILTIN(__builtin_amdgcn_mov_dpp, "iiIiIiIiIb", "nct", "dpp")
228+
TARGET_BUILTIN(__builtin_amdgcn_update_dpp, "iiiIiIiIiIb", "nct", "dpp")
229229
TARGET_BUILTIN(__builtin_amdgcn_s_dcache_wb, "v", "n", "gfx8-insts")
230230
TARGET_BUILTIN(__builtin_amdgcn_perm, "UiUiUiUi", "nc", "gfx8-insts")
231231

clang/lib/Basic/Targets/AArch64.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -784,7 +784,7 @@ bool AArch64TargetInfo::hasFeature(StringRef Feature) const {
784784
.Case("sme-fa64", HasSMEFA64)
785785
.Case("sme-f16f16", HasSMEF16F16)
786786
.Case("sme-b16b16", HasSMEB16B16)
787-
.Cases("memtag", "memtag2", HasMTE)
787+
.Case("memtag", HasMTE)
788788
.Case("sb", HasSB)
789789
.Case("predres", HasPredRes)
790790
.Cases("ssbs", "ssbs2", HasSSBS)

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19037,15 +19037,32 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
1903719037
ASTContext::GetBuiltinTypeError Error;
1903819038
getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
1903919039
assert(Error == ASTContext::GE_None && "Should not codegen an error");
19040+
llvm::Type *DataTy = ConvertType(E->getArg(0)->getType());
19041+
unsigned Size = DataTy->getPrimitiveSizeInBits();
19042+
llvm::Type *IntTy =
19043+
llvm::IntegerType::get(Builder.getContext(), std::max(Size, 32u));
19044+
Function *F = CGM.getIntrinsic(Intrinsic::amdgcn_update_dpp, IntTy);
19045+
assert(E->getNumArgs() == 5 || E->getNumArgs() == 6);
19046+
bool InsertOld = E->getNumArgs() == 5;
19047+
if (InsertOld)
19048+
Args.push_back(llvm::PoisonValue::get(IntTy));
1904019049
for (unsigned I = 0; I != E->getNumArgs(); ++I) {
19041-
Args.push_back(EmitScalarOrConstFoldImmArg(ICEArguments, I, E));
19050+
llvm::Value *V = EmitScalarOrConstFoldImmArg(ICEArguments, I, E);
19051+
if (I <= !InsertOld && Size < 32) {
19052+
if (!DataTy->isIntegerTy())
19053+
V = Builder.CreateBitCast(
19054+
V, llvm::IntegerType::get(Builder.getContext(), Size));
19055+
V = Builder.CreateZExtOrBitCast(V, IntTy);
19056+
}
19057+
llvm::Type *ExpTy =
19058+
F->getFunctionType()->getFunctionParamType(I + InsertOld);
19059+
Args.push_back(Builder.CreateTruncOrBitCast(V, ExpTy));
1904219060
}
19043-
assert(Args.size() == 5 || Args.size() == 6);
19044-
if (Args.size() == 5)
19045-
Args.insert(Args.begin(), llvm::PoisonValue::get(Args[0]->getType()));
19046-
Function *F =
19047-
CGM.getIntrinsic(Intrinsic::amdgcn_update_dpp, Args[0]->getType());
19048-
return Builder.CreateCall(F, Args);
19061+
Value *V = Builder.CreateCall(F, Args);
19062+
if (Size < 32 && !DataTy->isIntegerTy())
19063+
V = Builder.CreateTrunc(
19064+
V, llvm::IntegerType::get(Builder.getContext(), Size));
19065+
return Builder.CreateTruncOrBitCast(V, DataTy);
1904919066
}
1905019067
case AMDGPU::BI__builtin_amdgcn_permlane16:
1905119068
case AMDGPU::BI__builtin_amdgcn_permlanex16:

clang/lib/Format/UnwrappedLineParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2148,7 +2148,7 @@ bool UnwrappedLineParser::tryToParsePropertyAccessor() {
21482148
if (!Style.isCSharp())
21492149
return false;
21502150
// See if it's a property accessor.
2151-
if (FormatTok->Previous->isNot(tok::identifier))
2151+
if (!FormatTok->Previous || FormatTok->Previous->isNot(tok::identifier))
21522152
return false;
21532153

21542154
// See if we are inside a property accessor.

clang/lib/Headers/opencl-c-base.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
#define __opencl_c_ext_fp32_global_atomic_min_max 1
4747
#define __opencl_c_ext_fp32_local_atomic_min_max 1
4848
#define __opencl_c_ext_image_raw10_raw12 1
49+
#define __opencl_c_ext_image_unorm_int_2_101010 1
4950
#define cl_khr_kernel_clock 1
5051
#define __opencl_c_kernel_clock_scope_device 1
5152
#define __opencl_c_kernel_clock_scope_work_group 1
@@ -486,6 +487,9 @@ typedef enum memory_order
486487
#define CLK_UNSIGNED_INT_RAW10_EXT 0x10E3
487488
#define CLK_UNSIGNED_INT_RAW12_EXT 0x10E4
488489
#endif // __opencl_c_ext_image_raw10_raw12
490+
#ifdef __opencl_c_ext_image_unorm_int_2_101010
491+
#define CLK_UNORM_INT_2_101010_EXT 0x10E5
492+
#endif // __opencl_c_ext_image_unorm_int_2_101010
489493

490494
// Channel order, numbering must be aligned with cl_channel_order in cl.h
491495
//

clang/lib/Sema/SemaAMDGPU.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,44 @@ bool SemaAMDGPU::CheckAMDGCNBuiltinFunctionCall(unsigned BuiltinID,
6363
OrderIndex = 0;
6464
ScopeIndex = 1;
6565
break;
66+
case AMDGPU::BI__builtin_amdgcn_mov_dpp: {
67+
if (SemaRef.checkArgCountRange(TheCall, 5, 5))
68+
return true;
69+
Expr *ValArg = TheCall->getArg(0);
70+
QualType Ty = ValArg->getType();
71+
// TODO: Vectors can also be supported.
72+
if (!Ty->isArithmeticType() || Ty->isAnyComplexType()) {
73+
SemaRef.Diag(ValArg->getBeginLoc(),
74+
diag::err_typecheck_cond_expect_int_float)
75+
<< Ty << ValArg->getSourceRange();
76+
return true;
77+
}
78+
return false;
79+
}
80+
case AMDGPU::BI__builtin_amdgcn_update_dpp: {
81+
if (SemaRef.checkArgCountRange(TheCall, 6, 6))
82+
return true;
83+
Expr *Args[2];
84+
QualType ArgTys[2];
85+
for (unsigned I = 0; I != 2; ++I) {
86+
Args[I] = TheCall->getArg(I);
87+
ArgTys[I] = Args[I]->getType();
88+
// TODO: Vectors can also be supported.
89+
if (!ArgTys[I]->isArithmeticType() || ArgTys[I]->isAnyComplexType()) {
90+
SemaRef.Diag(Args[I]->getBeginLoc(),
91+
diag::err_typecheck_cond_expect_int_float)
92+
<< ArgTys[I] << Args[I]->getSourceRange();
93+
return true;
94+
}
95+
}
96+
if (ArgTys[0] != ArgTys[1]) {
97+
SemaRef.Diag(Args[1]->getBeginLoc(),
98+
diag::err_typecheck_call_different_arg_types)
99+
<< ArgTys[0] << ArgTys[1];
100+
return true;
101+
}
102+
return false;
103+
}
66104
default:
67105
return false;
68106
}

clang/lib/Sema/SemaOpenMP.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18335,7 +18335,8 @@ static bool checkOMPArraySectionConstantForReduction(
1833518335
return false;
1833618336

1833718337
// This is an array subscript which has implicit length 1!
18338-
ArraySizes.push_back(llvm::APSInt::get(1));
18338+
llvm::APSInt ConstantOne = llvm::APSInt::get(1);
18339+
ArraySizes.push_back(ConstantOne);
1833918340
} else {
1834018341
Expr::EvalResult Result;
1834118342
if (!Length->EvaluateAsInt(Result, Context))
@@ -18354,7 +18355,8 @@ static bool checkOMPArraySectionConstantForReduction(
1835418355
if (!SingleElement) {
1835518356
while (const auto *TempASE = dyn_cast<ArraySubscriptExpr>(Base)) {
1835618357
// Has implicit length 1!
18357-
ArraySizes.push_back(llvm::APSInt::get(1));
18358+
llvm::APSInt ConstantOne = llvm::APSInt::get(1);
18359+
ArraySizes.push_back(ConstantOne);
1835818360
Base = TempASE->getBase()->IgnoreParenImpCasts();
1835918361
}
1836018362
}

clang/test/CodeGen/aarch64-cpu-supports-target.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ int check_all_feature() {
1717
return 7;
1818
else if (__builtin_cpu_supports("sve2-bitperm+sve2-sha3+sve2-sm4"))
1919
return 8;
20-
else if (__builtin_cpu_supports("sme+memtag+memtag2+memtag3+sb"))
20+
else if (__builtin_cpu_supports("sme+memtag+memtag3+sb"))
2121
return 9;
2222
else if (__builtin_cpu_supports("predres+ssbs+ssbs2+bti+ls64+ls64_v"))
2323
return 10;

clang/test/CodeGen/aarch64-cpu-supports.c

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals --version 2
1+
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --check-globals --global-value-regex ".*"
22
// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -emit-llvm -o - %s | FileCheck %s
33

4+
//.
45
// CHECK: @__aarch64_cpu_features = external dso_local global { i64 }
5-
// CHECK-LABEL: define dso_local i32 @main
6-
// CHECK-SAME: () #[[ATTR0:[0-9]+]] {
6+
//.
7+
// CHECK-LABEL: @main(
78
// CHECK-NEXT: entry:
89
// CHECK-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
910
// CHECK-NEXT: store i32 0, ptr [[RETVAL]], align 4
@@ -17,8 +18,8 @@
1718
// CHECK-NEXT: br label [[RETURN:%.*]]
1819
// CHECK: if.end:
1920
// CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @__aarch64_cpu_features, align 8
20-
// CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], 9070970929152
21-
// CHECK-NEXT: [[TMP6:%.*]] = icmp eq i64 [[TMP5]], 9070970929152
21+
// CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], 17867063951360
22+
// CHECK-NEXT: [[TMP6:%.*]] = icmp eq i64 [[TMP5]], 17867063951360
2223
// CHECK-NEXT: [[TMP7:%.*]] = and i1 true, [[TMP6]]
2324
// CHECK-NEXT: br i1 [[TMP7]], label [[IF_THEN1:%.*]], label [[IF_END2:%.*]]
2425
// CHECK: if.then1:
@@ -60,3 +61,7 @@ int main(void) {
6061

6162
return 0;
6263
}
64+
//.
65+
// CHECK: [[META0:![0-9]+]] = !{i32 1, !"wchar_size", i32 4}
66+
// CHECK: [[META1:![0-9]+]] = !{!"{{.*}}clang version {{.*}}"}
67+
//.

0 commit comments

Comments
 (0)