зеркало из https://github.com/microsoft/clang-1.git
Quick fix for crash in IRgen when we can tryEvaluate a condition to
something that is not an int. - Ignore these cases for now, added FIXME that we should also boolize them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59184 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
174da89d2d
Коммит
36bc14c3a1
|
@ -194,8 +194,11 @@ bool CodeGenFunction::ContainsLabel(const Stmt *S, bool IgnoreCaseStmts) {
|
|||
/// to 'false' and does not contain a label, return -1.
|
||||
int CodeGenFunction::ConstantFoldsToSimpleInteger(const Expr *Cond) {
|
||||
APValue V;
|
||||
if (!Cond->tryEvaluate(V, getContext()))
|
||||
return 0; // Not foldable.
|
||||
|
||||
// FIXME: Rename and handle conversion of other evaluatable things
|
||||
// to bool.
|
||||
if (!Cond->tryEvaluate(V, getContext()) || !V.isInt())
|
||||
return 0; // Not foldable or not integer.
|
||||
|
||||
if (CodeGenFunction::ContainsLabel(Cond))
|
||||
return 0; // Contains a label.
|
||||
|
|
Загрузка…
Ссылка в новой задаче