Author: majnemer Date: Thu Jul 21 18:03:43 2016 New Revision: 276352 URL: http://llvm.org/viewvc/llvm-project?rev=276352&view=rev Log: [Sema] Handle errors during rewriteBuiltinFunctionDecl
rewriteBuiltinFunctionDecl can encounter errors when performing DefaultFunctionArrayLvalueConversion. These errors were not handled which led to a null pointer dereference. This fixes PR28651. Modified: cfe/trunk/lib/Sema/SemaExpr.cpp cfe/trunk/test/Sema/builtins.cl Modified: cfe/trunk/lib/Sema/SemaExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=276352&r1=276351&r2=276352&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) +++ cfe/trunk/lib/Sema/SemaExpr.cpp Thu Jul 21 18:03:43 2016 @@ -5051,7 +5051,11 @@ static FunctionDecl *rewriteBuiltinFunct for (QualType ParamType : FT->param_types()) { // Convert array arguments to pointer to simplify type lookup. - Expr *Arg = Sema->DefaultFunctionArrayLvalueConversion(ArgExprs[i++]).get(); + ExprResult ArgRes = + Sema->DefaultFunctionArrayLvalueConversion(ArgExprs[i++]); + if (ArgRes.isInvalid()) + return nullptr; + Expr *Arg = ArgRes.get(); QualType ArgType = Arg->getType(); if (!ParamType->isPointerType() || ParamType.getQualifiers().hasAddressSpace() || Modified: cfe/trunk/test/Sema/builtins.cl URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/builtins.cl?rev=276352&r1=276351&r2=276352&view=diff ============================================================================== --- cfe/trunk/test/Sema/builtins.cl (original) +++ cfe/trunk/test/Sema/builtins.cl Thu Jul 21 18:03:43 2016 @@ -1,8 +1,11 @@ // RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic -// expected-no-diagnostics kernel void test(global float *out, global float *in, global int* in2) { out[0] = __builtin_nanf(""); __builtin_memcpy(out, in, 32); out[0] = __builtin_frexpf(in[0], in2); } + +void pr28651() { + __builtin_alloca(value); // expected-error{{use of undeclared identifier}} +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits