forked from OSchip/llvm-project
PR43674: fix incorrect constant evaluation of 'switch' where no case
label corresponds to the condition. llvm-svn: 374954
This commit is contained in:
parent
208e9c01fc
commit
61dadfc894
|
@ -4435,7 +4435,7 @@ static EvalStmtResult EvaluateSwitch(StmtResult &Result, EvalInfo &Info,
|
|||
}
|
||||
|
||||
if (!Found)
|
||||
return Scope.destroy() ? ESR_Failed : ESR_Succeeded;
|
||||
return Scope.destroy() ? ESR_Succeeded : ESR_Failed;
|
||||
|
||||
// Search the switch body for the switch case and evaluate it from there.
|
||||
EvalStmtResult ESR = EvaluateStmt(Result, Info, SS->getBody(), Found);
|
||||
|
|
|
@ -627,6 +627,12 @@ namespace assignment_op {
|
|||
}
|
||||
|
||||
namespace switch_stmt {
|
||||
constexpr bool no_such_case(int n) {
|
||||
switch (n) { case 1: return false; }
|
||||
return true;
|
||||
}
|
||||
static_assert(no_such_case(0), "");
|
||||
|
||||
constexpr int f(char k) {
|
||||
bool b = false;
|
||||
int z = 6;
|
||||
|
|
Loading…
Reference in New Issue