From: Daniel Dunbar Date: Wed, 12 Nov 2008 22:37:10 +0000 (+0000) Subject: Quick fix for crash in IRgen when we can tryEvaluate a condition to X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=36bc14c3a1cf63ee306df5687ac8e85f924f8639;p=clang 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 --- diff --git a/lib/CodeGen/CodeGenFunction.cpp b/lib/CodeGen/CodeGenFunction.cpp index ab9633418a..c445864bb3 100644 --- a/lib/CodeGen/CodeGenFunction.cpp +++ b/lib/CodeGen/CodeGenFunction.cpp @@ -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.