Actually, I now see the PR doesn't reproduce on 3.9, so this must have broke after the branch point.
On Fri, Jul 22, 2016 at 7:02 AM, Hans Wennborg <h...@chromium.org> wrote: > Richard: should we merge this to 3.9? > > On Thu, Jul 21, 2016 at 7:03 PM, David Majnemer via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> 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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits