forked from OSchip/llvm-project
Fix assert/crash on invalid with __builtin_constant_p conditionals in constant expressions.
llvm-svn: 221942
This commit is contained in:
parent
da59f3de45
commit
98710fc4f5
|
@ -8971,7 +8971,11 @@ static bool EvaluateCPlusPlus11IntegralConstantExpr(const ASTContext &Ctx,
|
|||
if (!E->isCXX11ConstantExpr(Ctx, &Result, Loc))
|
||||
return false;
|
||||
|
||||
assert(Result.isInt() && "pointer cast to int is not an ICE");
|
||||
if (!Result.isInt()) {
|
||||
if (Loc) *Loc = E->getExprLoc();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Value) *Value = Result.getInt();
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -95,11 +95,13 @@ namespace TemplateArgumentConversion {
|
|||
}
|
||||
|
||||
namespace CaseStatements {
|
||||
int x;
|
||||
void f(int n) {
|
||||
switch (n) {
|
||||
case MemberZero().zero: // expected-error {{did you mean to call it with no arguments?}} expected-note {{previous}}
|
||||
case id(0): // expected-error {{duplicate case value '0'}}
|
||||
return;
|
||||
case __builtin_constant_p(true) ? (__SIZE_TYPE__)&x : 0:; // expected-error {{constant}}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue