Skip to content

Commit 2a1040d

Browse files
author
Georgios Rokos
committed
Merge from 'main' to 'sycl-web' (1 commits)
2 parents 7ded9a7 + f6fa95b commit 2a1040d

File tree

215 files changed

+6775
-5328
lines changed

Some content is hidden

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

215 files changed

+6775
-5328
lines changed

clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ runCheckOnCode(StringRef Code, std::vector<ClangTidyError> *Errors = nullptr,
141141
for (const auto &Error : DiagConsumer.take()) {
142142
ErrorText += Error.Message.Message + "\n";
143143
}
144-
llvm::report_fatal_error(ErrorText);
144+
llvm::report_fatal_error(llvm::Twine(ErrorText));
145145
}
146146

147147
tooling::Replacements Fixes;

clang/include/clang/Serialization/ASTRecordReader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ struct SavedStreamPosition {
350350
~SavedStreamPosition() {
351351
if (llvm::Error Err = Cursor.JumpToBit(Offset))
352352
llvm::report_fatal_error(
353-
"Cursor should always be able to go back, failed: " +
353+
llvm::Twine("Cursor should always be able to go back, failed: ") +
354354
toString(std::move(Err)));
355355
}
356356

clang/lib/Basic/ProfileList.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ ProfileSpecialCaseList::createOrDie(const std::vector<std::string> &Paths,
5858
std::string Error;
5959
if (auto PSCL = create(Paths, VFS, Error))
6060
return PSCL;
61-
llvm::report_fatal_error(Error);
61+
llvm::report_fatal_error(llvm::Twine(Error));
6262
}
6363

6464
}

clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ class PCHContainerGenerator : public ASTConsumer {
264264
std::string Error;
265265
auto Triple = Ctx.getTargetInfo().getTriple();
266266
if (!llvm::TargetRegistry::lookupTarget(Triple.getTriple(), Error))
267-
llvm::report_fatal_error(Error);
267+
llvm::report_fatal_error(llvm::Twine(Error));
268268

269269
// Emit the serialized Clang AST into its own section.
270270
assert(Buffer->IsComplete && "serialization did not complete");

clang/lib/Headers/altivec.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7109,6 +7109,11 @@ vec_orc(vector float __a, vector bool int __b) {
71097109
return (vector float)((vector unsigned int)__a | ~__b);
71107110
}
71117111

7112+
static __inline__ vector float __ATTRS_o_ai vec_orc(vector float __a,
7113+
vector float __b) {
7114+
return (vector float)((vector unsigned int)__a | ~(vector unsigned int)__b);
7115+
}
7116+
71127117
static __inline__ vector signed long long __ATTRS_o_ai
71137118
vec_orc(vector signed long long __a, vector signed long long __b) {
71147119
return __a | ~__b;
@@ -7153,6 +7158,12 @@ static __inline__ vector double __ATTRS_o_ai
71537158
vec_orc(vector bool long long __a, vector double __b) {
71547159
return (vector double)(__a | ~(vector unsigned long long)__b);
71557160
}
7161+
7162+
static __inline__ vector double __ATTRS_o_ai vec_orc(vector double __a,
7163+
vector double __b) {
7164+
return (vector double)((vector bool long long)__a |
7165+
~(vector unsigned long long)__b);
7166+
}
71567167
#endif
71577168

71587169
/* vec_vor */

clang/lib/Serialization/ASTReaderDecl.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3851,7 +3851,7 @@ Decl *ASTReader::ReadDeclRecord(DeclID ID) {
38513851
Expected<unsigned> MaybeDeclCode = Record.readRecord(DeclsCursor, Code);
38523852
if (!MaybeDeclCode)
38533853
llvm::report_fatal_error(
3854-
"ASTReader::readDeclRecord failed reading decl code: " +
3854+
Twine("ASTReader::readDeclRecord failed reading decl code: ") +
38553855
toString(MaybeDeclCode.takeError()));
38563856
switch ((DeclCode)MaybeDeclCode.get()) {
38573857
case DECL_CONTEXT_LEXICAL:
@@ -4236,12 +4236,12 @@ void ASTReader::loadDeclUpdateRecords(PendingUpdateRecord &Record) {
42364236
if (llvm::Error JumpFailed = Cursor.JumpToBit(Offset))
42374237
// FIXME don't do a fatal error.
42384238
llvm::report_fatal_error(
4239-
"ASTReader::loadDeclUpdateRecords failed jumping: " +
4239+
Twine("ASTReader::loadDeclUpdateRecords failed jumping: ") +
42404240
toString(std::move(JumpFailed)));
42414241
Expected<unsigned> MaybeCode = Cursor.ReadCode();
42424242
if (!MaybeCode)
42434243
llvm::report_fatal_error(
4244-
"ASTReader::loadDeclUpdateRecords failed reading code: " +
4244+
Twine("ASTReader::loadDeclUpdateRecords failed reading code: ") +
42454245
toString(MaybeCode.takeError()));
42464246
unsigned Code = MaybeCode.get();
42474247
ASTRecordReader Record(*this, *F);
@@ -4250,7 +4250,7 @@ void ASTReader::loadDeclUpdateRecords(PendingUpdateRecord &Record) {
42504250
"Expected DECL_UPDATES record!");
42514251
else
42524252
llvm::report_fatal_error(
4253-
"ASTReader::loadDeclUpdateRecords failed reading rec code: " +
4253+
Twine("ASTReader::loadDeclUpdateRecords failed reading rec code: ") +
42544254
toString(MaybeCode.takeError()));
42554255

42564256
ASTDeclReader Reader(*this, Record, RecordLocation(F, Offset), ID,
@@ -4317,22 +4317,22 @@ void ASTReader::loadPendingDeclChain(Decl *FirstLocal, uint64_t LocalOffset) {
43174317
SavedStreamPosition SavedPosition(Cursor);
43184318
if (llvm::Error JumpFailed = Cursor.JumpToBit(LocalOffset))
43194319
llvm::report_fatal_error(
4320-
"ASTReader::loadPendingDeclChain failed jumping: " +
4320+
Twine("ASTReader::loadPendingDeclChain failed jumping: ") +
43214321
toString(std::move(JumpFailed)));
43224322

43234323
RecordData Record;
43244324
Expected<unsigned> MaybeCode = Cursor.ReadCode();
43254325
if (!MaybeCode)
43264326
llvm::report_fatal_error(
4327-
"ASTReader::loadPendingDeclChain failed reading code: " +
4327+
Twine("ASTReader::loadPendingDeclChain failed reading code: ") +
43284328
toString(MaybeCode.takeError()));
43294329
unsigned Code = MaybeCode.get();
43304330
if (Expected<unsigned> MaybeRecCode = Cursor.readRecord(Code, Record))
43314331
assert(MaybeRecCode.get() == LOCAL_REDECLARATIONS &&
43324332
"expected LOCAL_REDECLARATIONS record!");
43334333
else
43344334
llvm::report_fatal_error(
4335-
"ASTReader::loadPendingDeclChain failed reading rec code: " +
4335+
Twine("ASTReader::loadPendingDeclChain failed reading rec code: ") +
43364336
toString(MaybeCode.takeError()));
43374337

43384338
// FIXME: We have several different dispatches on decl kind here; maybe

clang/lib/StaticAnalyzer/Core/Store.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,19 @@ SVal StoreManager::getLValueIvar(const ObjCIvarDecl *decl, SVal base) {
442442

443443
SVal StoreManager::getLValueElement(QualType elementType, NonLoc Offset,
444444
SVal Base) {
445+
446+
// Special case, if index is 0, return the same type as if
447+
// this was not an array dereference.
448+
if (Offset.isZeroConstant()) {
449+
QualType BT = Base.getType(this->Ctx);
450+
if (!BT.isNull() && !elementType.isNull()) {
451+
QualType PointeeTy = BT->getPointeeType();
452+
if (!PointeeTy.isNull() &&
453+
PointeeTy.getCanonicalType() == elementType.getCanonicalType())
454+
return Base;
455+
}
456+
}
457+
445458
// If the base is an unknown or undefined value, just return it back.
446459
// FIXME: For absolute pointer addresses, we just return that value back as
447460
// well, although in reality we should return the offset added to that

clang/lib/Tooling/CommonOptionsParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ CommonOptionsParser::CommonOptionsParser(
170170
llvm::Error Err = init(argc, argv, Category, OccurrencesFlag, Overview);
171171
if (Err) {
172172
llvm::report_fatal_error(
173-
"CommonOptionsParser: failed to parse command-line arguments. " +
173+
Twine("CommonOptionsParser: failed to parse command-line arguments. ") +
174174
llvm::toString(std::move(Err)));
175175
}
176176
}

clang/test/Analysis/ptr-arith.c

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.core.FixedAddr,alpha.core.PointerArithm,alpha.core.PointerSub,debug.ExprInspection -analyzer-store=region -Wno-pointer-to-int-cast -verify -triple i686-apple-darwin9 -Wno-tautological-pointer-compare -analyzer-config eagerly-assume=false %s
33

44
void clang_analyzer_eval(int);
5+
void clang_analyzer_dump(int);
56

67
void f1() {
78
int a[10];
@@ -330,3 +331,59 @@ float test_nowarning_on_vector_deref() {
330331
simd_float2 x = {0, 1};
331332
return x[1]; // no-warning
332333
}
334+
335+
struct s {
336+
int v;
337+
};
338+
339+
// These three expressions should produce the same sym vals.
340+
void struct_pointer_canon(struct s *ps) {
341+
struct s ss = *ps;
342+
clang_analyzer_dump((*ps).v);
343+
// expected-warning-re@-1{{reg_${{[[:digit:]]+}}<int SymRegion{reg_${{[[:digit:]]+}}<struct s * ps>}.v>}}
344+
clang_analyzer_dump(ps[0].v);
345+
// expected-warning-re@-1{{reg_${{[[:digit:]]+}}<int SymRegion{reg_${{[[:digit:]]+}}<struct s * ps>}.v>}}
346+
clang_analyzer_dump(ps->v);
347+
// expected-warning-re@-1{{reg_${{[[:digit:]]+}}<int SymRegion{reg_${{[[:digit:]]+}}<struct s * ps>}.v>}}
348+
clang_analyzer_eval((*ps).v == ps[0].v); // expected-warning{{TRUE}}
349+
clang_analyzer_eval((*ps).v == ps->v); // expected-warning{{TRUE}}
350+
clang_analyzer_eval(ps[0].v == ps->v); // expected-warning{{TRUE}}
351+
}
352+
353+
void struct_pointer_canon_bidim(struct s **ps) {
354+
struct s ss = **ps;
355+
clang_analyzer_eval(&(ps[0][0].v) == &((*ps)->v)); // expected-warning{{TRUE}}
356+
}
357+
358+
typedef struct s T1;
359+
typedef struct s T2;
360+
void struct_pointer_canon_typedef(T1 *ps) {
361+
T2 ss = *ps;
362+
clang_analyzer_dump((*ps).v);
363+
// expected-warning-re@-1{{reg_${{[[:digit:]]+}}<int SymRegion{reg_${{[[:digit:]]+}}<T1 * ps>}.v>}}
364+
clang_analyzer_dump(ps[0].v);
365+
// expected-warning-re@-1{{reg_${{[[:digit:]]+}}<int SymRegion{reg_${{[[:digit:]]+}}<T1 * ps>}.v>}}
366+
clang_analyzer_dump(ps->v);
367+
// expected-warning-re@-1{{reg_${{[[:digit:]]+}}<int SymRegion{reg_${{[[:digit:]]+}}<T1 * ps>}.v>}}
368+
clang_analyzer_eval((*ps).v == ps[0].v); // expected-warning{{TRUE}}
369+
clang_analyzer_eval((*ps).v == ps->v); // expected-warning{{TRUE}}
370+
clang_analyzer_eval(ps[0].v == ps->v); // expected-warning{{TRUE}}
371+
}
372+
373+
void struct_pointer_canon_bidim_typedef(T1 **ps) {
374+
T2 ss = **ps;
375+
clang_analyzer_eval(&(ps[0][0].v) == &((*ps)->v)); // expected-warning{{TRUE}}
376+
}
377+
378+
void struct_pointer_canon_const(const struct s *ps) {
379+
struct s ss = *ps;
380+
clang_analyzer_dump((*ps).v);
381+
// expected-warning-re@-1{{reg_${{[[:digit:]]+}}<int SymRegion{reg_${{[[:digit:]]+}}<const struct s * ps>}.v>}}
382+
clang_analyzer_dump(ps[0].v);
383+
// expected-warning-re@-1{{reg_${{[[:digit:]]+}}<int SymRegion{reg_${{[[:digit:]]+}}<const struct s * ps>}.v>}}
384+
clang_analyzer_dump(ps->v);
385+
// expected-warning-re@-1{{reg_${{[[:digit:]]+}}<int SymRegion{reg_${{[[:digit:]]+}}<const struct s * ps>}.v>}}
386+
clang_analyzer_eval((*ps).v == ps[0].v); // expected-warning{{TRUE}}
387+
clang_analyzer_eval((*ps).v == ps->v); // expected-warning{{TRUE}}
388+
clang_analyzer_eval(ps[0].v == ps->v); // expected-warning{{TRUE}}
389+
}

clang/test/CodeGen/builtins-ppc-p8vector.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ vector signed __int128 vsx = { 1 };
3535
vector unsigned __int128 vux = { 1 };
3636

3737
vector float vfa = { 1.e-4f, -132.23f, -22.1, 32.00f };
38+
vector float vfb = { 1.e-4f, -132.23f, -22.1, 32.00f };
3839
vector double vda = { 1.e-11, -132.23e10 };
40+
vector double vdb = { 1.e-11, -132.23e10 };
3941

4042
int res_i;
4143
double res_d;
@@ -1067,6 +1069,12 @@ void test1() {
10671069
// CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
10681070
// CHECK: or <4 x i32> {{%.+}}, [[T1]]
10691071
// CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1072+
// CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
1073+
1074+
res_vf = vec_orc(vfa, vfb);
1075+
// CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
1076+
// CHECK: or <4 x i32> {{%.+}}, [[T1]]
1077+
// CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
10701078
// CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
10711079

10721080
res_vsll = vec_orc(vsll, vsll);
@@ -1121,6 +1129,12 @@ void test1() {
11211129
// CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
11221130
// CHECK: or <2 x i64> {{%.+}}, [[T1]]
11231131
// CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1132+
// CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
1133+
1134+
res_vd = vec_orc(vda, vdb);
1135+
// CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
1136+
// CHECK: or <2 x i64> {{%.+}}, [[T1]]
1137+
// CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
11241138
// CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
11251139

11261140
/* vec_sub */

0 commit comments

Comments
 (0)