Skip to content

Commit 7f00ecd

Browse files
committed
Revert "[clang] trigger -Wcast-qual on functional casts"
This reverts commit 7c00219. It broke post-commit buildbots: https://lab.llvm.org/buildbot/#/builders/37/builds/21631
1 parent c1d55d2 commit 7f00ecd

File tree

3 files changed

+0
-107
lines changed

3 files changed

+0
-107
lines changed

clang/docs/ReleaseNotes.rst

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,6 @@ Improvements to Clang's diagnostics
231231
- ``-Wformat`` now recognizes ``%lb`` for the ``printf``/``scanf`` family of
232232
functions.
233233
(`#62247: <https://github.com/llvm/llvm-project/issues/62247>`_).
234-
- ``-Wcast-qual`` now triggers on function-style casts.
235-
(`#62083 <https://github.com/llvm/llvm-project/issues/62083>`_)
236234

237235
Bug Fixes in This Version
238236
-------------------------

clang/lib/Sema/SemaCast.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3332,9 +3332,6 @@ ExprResult Sema::BuildCXXFunctionalCastExpr(TypeSourceInfo *CastTypeInfo,
33323332
if (auto *ConstructExpr = dyn_cast<CXXConstructExpr>(SubExpr))
33333333
ConstructExpr->setParenOrBraceRange(SourceRange(LPLoc, RPLoc));
33343334

3335-
// -Wcast-qual
3336-
DiagnoseCastQual(Op.Self, Op.SrcExpr, Op.DestType);
3337-
33383335
return Op.complete(CXXFunctionalCastExpr::Create(
33393336
Context, Op.ResultType, Op.ValueKind, CastTypeInfo, Op.Kind,
33403337
Op.SrcExpr.get(), &Op.BasePath, CurFPFeatureOverrides(), LPLoc, RPLoc));

clang/test/SemaCXX/warn-cast-qual.cpp

Lines changed: 0 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,6 @@ void foo_0() {
3434
const int &a6 = (int &)((int &)a); // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
3535
const int &a7 = (int &)((const int &)a); // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
3636
const int &a8 = (const int &)((int &)a); // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
37-
38-
using T = int&;
39-
using T2 = const int&;
40-
const int &a11 =T2(a); // no warning
41-
int a22 = T(a); // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
42-
const int &a33 = T(a); // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
43-
int &a44 = T(T2(a)); // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
44-
int &a55 = T(T(a)); // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
45-
const int &a66 = T(T(a)); // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
46-
int &a77 = T(T2(a)); // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
47-
const int &a88 = T2(T(a)); // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
4837
}
4938

5039
void foo_1() {
@@ -60,17 +49,6 @@ void foo_1() {
6049
volatile int &a6 = (int &)((int &)a); // expected-warning {{cast from 'volatile int' to 'int &' drops volatile qualifier}}
6150
volatile int &a7 = (int &)((volatile int &)a); // expected-warning {{cast from 'volatile int' to 'int &' drops volatile qualifier}}
6251
volatile int &a8 = (volatile int &)((int &)a); // expected-warning {{cast from 'volatile int' to 'int &' drops volatile qualifier}}
63-
64-
using T = int&;
65-
using T2 = volatile int&;
66-
volatile int &a11 =T2(a); // no warning
67-
int a22 = T(a); // expected-warning {{cast from 'volatile int' to 'int &' drops volatile qualifier}}
68-
volatile int &a33 = T(a); // expected-warning {{cast from 'volatile int' to 'int &' drops volatile qualifier}}
69-
int &a44 = T(T2(a)); // expected-warning {{cast from 'volatile int' to 'int &' drops volatile qualifier}}
70-
int &a55 = T(T(a)); // expected-warning {{cast from 'volatile int' to 'int &' drops volatile qualifier}}
71-
volatile int &a66 = T(T(a)); // expected-warning {{cast from 'volatile int' to 'int &' drops volatile qualifier}}
72-
int &a77 = T(T2(a)); // expected-warning {{cast from 'volatile int' to 'int &' drops volatile qualifier}}
73-
volatile int &a88 = T2(T(a)); // expected-warning {{cast from 'volatile int' to 'int &' drops volatile qualifier}}
7452
}
7553

7654
void foo_2() {
@@ -86,17 +64,6 @@ void foo_2() {
8664
const volatile int &a6 = (int &)((int &)a); // expected-warning {{cast from 'const volatile int' to 'int &' drops const and volatile qualifiers}}
8765
const volatile int &a7 = (int &)((const volatile int &)a); // expected-warning {{cast from 'const volatile int' to 'int &' drops const and volatile qualifiers}}
8866
const volatile int &a8 = (const volatile int &)((int &)a); // expected-warning {{cast from 'const volatile int' to 'int &' drops const and volatile qualifiers}}
89-
90-
using T = int&;
91-
using T2 = const volatile int&;
92-
const volatile int &a11 =T2(a); // no warning
93-
int a22 = T(a); // expected-warning {{cast from 'const volatile int' to 'int &' drops const and volatile qualifiers}}
94-
const volatile int &a33 = T(a); // expected-warning {{cast from 'const volatile int' to 'int &' drops const and volatile qualifiers}}
95-
int &a44 = T(T2(a)); // expected-warning {{cast from 'const volatile int' to 'int &' drops const and volatile qualifiers}}
96-
int &a55 = T(T(a)); // expected-warning {{cast from 'const volatile int' to 'int &' drops const and volatile qualifiers}}
97-
const volatile int &a66 = T(T(a)); // expected-warning {{cast from 'const volatile int' to 'int &' drops const and volatile qualifiers}}
98-
const volatile int &a77 = T(T2(a)); // expected-warning {{cast from 'const volatile int' to 'int &' drops const and volatile qualifiers}}
99-
const volatile int &a88 = T2(T(a)); // expected-warning {{cast from 'const volatile int' to 'int &' drops const and volatile qualifiers}}
10067
}
10168

10269
void bar_0() {
@@ -111,16 +78,6 @@ void bar_0() {
11178

11279
const int **a4 = (const int **)((int **)a); // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}} expected-warning {{cast from 'int **' to 'const int **' must have all intermediate pointers const qualified to be safe}}
11380
const int **a5 = (const int **)((const int **)a); // no warning
114-
115-
using T = int**;
116-
using T2 = const int**;
117-
118-
int **a00 = T(T2(a)) ; // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
119-
int **a11 = T(T(a)); // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
120-
121-
const int **a44 = T2(T(a)); // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}} expected-warning {{cast from 'T' (aka 'int **') to 'T2' (aka 'const int **') must have all intermediate pointers const qualified to be safe}}
122-
const int **a55 = T2(T2(a)); // no warning
123-
12481
}
12582

12683
void bar_1() {
@@ -135,15 +92,6 @@ void bar_1() {
13592

13693
const int *&a4 = (const int *&)((int *&)a); // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}} expected-warning {{cast from 'int *' to 'const int *&' must have all intermediate pointers const qualified to be safe}}
13794
const int *&a5 = (const int *&)((const int *&)a); // no warning
138-
139-
using T = int*&;
140-
using T2 = const int*&;
141-
142-
int *&a00 = T(T2(a)); // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
143-
int *&a11 = T(T(a)); // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
144-
145-
const int *&a44 = T2(T(a)); // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}} expected-warning {{cast from 'int *' to 'T2' (aka 'const int *&') must have all intermediate pointers const qualified to be safe}}
146-
const int *&a55 = T2(T2(a)); // no warning
14795
}
14896

14997
void baz_0() {
@@ -160,14 +108,6 @@ void baz_0() {
160108

161109
((C *)&S)->B(); // expected-warning {{cast from 'const C *' to 'C *' drops const qualifier}}
162110
((C *)&S)->A(); // expected-warning {{cast from 'const C *' to 'C *' drops const qualifier}}
163-
164-
using T = C&;
165-
using T2 = C*;
166-
T(S).B(); // expected-warning {{cast from 'const C' to 'C &' drops const qualifier}}
167-
T(S).A(); // expected-warning {{cast from 'const C' to 'C &' drops const qualifier}}
168-
169-
T2(&S)->B(); // expected-warning {{cast from 'const C *' to 'C *' drops const qualifier}}
170-
T2(&S)->A(); // expected-warning {{cast from 'const C *' to 'C *' drops const qualifier}}
171111
}
172112

173113
void baz_1() {
@@ -187,14 +127,6 @@ void baz_1() {
187127

188128
*(int *)(&S.a) = 0; // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
189129
*(int *)(&S.b) = 0; // no warning
190-
191-
using T = int&;
192-
using T2 = int*;
193-
T(S.a) = 0; // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
194-
T(S.b) = 0; // no warning
195-
196-
*T2(&S.a) = 0; // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
197-
*T2(&S.b) = 0; // no warning
198130
}
199131
{
200132
const C S;
@@ -204,39 +136,5 @@ void baz_1() {
204136

205137
*(int *)(&S.a) = 0; // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
206138
*(int *)(&S.b) = 0; // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
207-
208-
using T = int&;
209-
using T2 = int*;
210-
T(S.a) = 0; // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
211-
T(S.b) = 0; // expected-warning {{cast from 'const int' to 'int &' drops const qualifier}}
212-
213-
*T2(&S.a) = 0; // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
214-
*T2(&S.b) = 0; // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
215139
}
216140
}
217-
218-
void qux_0() {
219-
const auto i = 42;
220-
using T = int*;
221-
auto p = T(&i); // expected-warning {{cast from 'const int *' to 'int *' drops const qualifier}}
222-
223-
const auto i2 = 42;
224-
using T2 = const int*;
225-
auto p2 = T2(&i2);
226-
227-
volatile auto i3 = 42;
228-
using T3= int*;
229-
auto p3 = T3(&i3); // expected-warning {{cast from 'volatile int *' to 'int *' drops volatile qualifier}}
230-
231-
volatile auto i4 = 42;
232-
using T4 = volatile int*;
233-
auto p4 = T4(&i4);
234-
235-
const volatile auto i5 = 42;
236-
using T5= int*;
237-
auto p5 = T5(&i5); // expected-warning {{cast from 'const volatile int *' to 'int *' drops const and volatile qualifiers}}
238-
239-
const volatile auto i6 = 42;
240-
using T6= const volatile int*;
241-
auto p6 = T6(&i6);
242-
}

0 commit comments

Comments
 (0)