Skip to content

Commit f706e54

Browse files
committed
fix tests
1 parent ae66e1c commit f706e54

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

clang/include/clang/AST/Stmt.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ class alignas(void *) Stmt {
531531
unsigned : NumExprBits;
532532

533533
LLVM_PREFERRED_TYPE(UnaryExprOrTypeTrait)
534-
unsigned Kind : 3;
534+
unsigned Kind : 4;
535535
LLVM_PREFERRED_TYPE(bool)
536536
unsigned IsType : 1; // true if operand is a type, false if an expression.
537537
};

clang/lib/Sema/SemaDeclCXX.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17320,13 +17320,21 @@ void Sema::DiagnoseStaticAssertDetails(const Expr *E) {
1732017320
if (!UsefulToPrintExpr(LHS) && !UsefulToPrintExpr(RHS))
1732117321
return;
1732217322

17323+
auto UseCachedValue = [](const Expr *Outer, const Expr *Inner) {
17324+
if (const ConstantExpr *E = dyn_cast<ConstantExpr>(Outer);
17325+
E && !E->getAPValueResult().isAbsent())
17326+
return Outer;
17327+
return Inner;
17328+
};
17329+
1732317330
struct {
1732417331
const clang::Expr *Cond;
1732517332
Expr::EvalResult Result;
1732617333
SmallString<12> ValueString;
1732717334
bool Print;
17328-
} DiagSide[2] = {{Op->getLHS(), Expr::EvalResult(), {}, false},
17329-
{Op->getRHS(), Expr::EvalResult(), {}, false}};
17335+
} DiagSide[2] = {
17336+
{UseCachedValue(Op->getLHS(), LHS), Expr::EvalResult(), {}, false},
17337+
{UseCachedValue(Op->getRHS(), RHS), Expr::EvalResult(), {}, false}};
1733017338
for (unsigned I = 0; I < 2; I++) {
1733117339
const Expr *Side = DiagSide[I].Cond;
1733217340

0 commit comments

Comments
 (0)