Skip to content

Commit 2ae1822

Browse files
[Diagnostics] Fixed -Wsizeof-array-div false positive when divisor is sizeof reference type (PR47495)
1 parent 15c8306 commit 2ae1822

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

clang/lib/Sema/SemaExpr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10038,7 +10038,7 @@ static void DiagnoseDivisionSizeofPointerOrArray(Sema &S, Expr *LHS, Expr *RHS,
1003810038
QualType ArrayElemTy = ArrayTy->getElementType();
1003910039
if (ArrayElemTy != S.Context.getBaseElementType(ArrayTy) ||
1004010040
ArrayElemTy->isDependentType() || RHSTy->isDependentType() ||
10041-
ArrayElemTy->isCharType() ||
10041+
RHSTy->isReferenceType() || ArrayElemTy->isCharType() ||
1004210042
S.Context.getTypeSize(ArrayElemTy) == S.Context.getTypeSize(RHSTy))
1004310043
return;
1004410044
S.Diag(Loc, diag::warn_division_sizeof_array)

clang/test/Sema/div-sizeof-array.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,8 @@ void test(void) {
4242

4343
float m[4][4];
4444
int d1 = sizeof(m) / sizeof(**m);
45+
46+
int array[10];
47+
int narray = sizeof(array) / sizeof(int &);
48+
int narray2 = sizeof(array) / sizeof(decltype(array[0]));
4549
}

0 commit comments

Comments
 (0)