Author: rsmith Date: Thu Jun 30 13:36:34 2016 New Revision: 274260 URL: http://llvm.org/viewvc/llvm-project?rev=274260&view=rev Log: PR28373: fix crash-on-invalid if the condition of an if-statement fails typo-correction.
Modified: cfe/trunk/lib/Sema/SemaExpr.cpp cfe/trunk/test/SemaCXX/condition.cpp Modified: cfe/trunk/lib/Sema/SemaExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=274260&r1=274259&r2=274260&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) +++ cfe/trunk/lib/Sema/SemaExpr.cpp Thu Jun 30 13:36:34 2016 @@ -14394,7 +14394,12 @@ Sema::ConditionResult Sema::ActOnConditi if (Cond.isInvalid()) return ConditionError(); - return ConditionResult(*this, nullptr, MakeFullExpr(Cond.get(), Loc), + // FIXME: FullExprArg doesn't have an invalid bit, so check nullness instead. + FullExprArg FullExpr = MakeFullExpr(Cond.get(), Loc); + if (!FullExpr.get()) + return ConditionError(); + + return ConditionResult(*this, nullptr, FullExpr, CK == ConditionKind::ConstexprIf); } Modified: cfe/trunk/test/SemaCXX/condition.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/condition.cpp?rev=274260&r1=274259&r2=274260&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/condition.cpp (original) +++ cfe/trunk/test/SemaCXX/condition.cpp Thu Jun 30 13:36:34 2016 @@ -65,3 +65,7 @@ void test5() { void test5_inst() { test5<int>(); } + +void PR28373() { + if (!x) {} // expected-error {{undeclared}} +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits