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:
Daniel Dunbar 2008-11-12 22:37:10 +00:00
Родитель 174da89d2d
Коммит 36bc14c3a1
1 изменённых файлов: 5 добавлений и 2 удалений

Просмотреть файл

@ -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.