On Thu, Mar 31, 2016 at 11:16 AM, David Blaikie <dblai...@gmail.com> wrote:
> Yep, reproduces even with a plain (non template arg) function pointer - > and immediately goes away with a real function of the same type. > Thanks for the extra reduction. > That's bothersome. I played around with a few ways of writing the > call-to-function-pointer but couldn't find any particular syntax that > seemed to untickle GCC's problem here. Maybe if you find the filed GCC bug > there might be a workaround listed (if it's been filed/investigated > already). > I couldn't not find a bug for it. Maybe someone with a little experience in bugzilla has a little more luck? > > On Thu, Mar 31, 2016 at 6:53 AM, Samuel Benzaquen <sbe...@google.com> > wrote: > >> I was able to reduce the bug to this: >> >> struct A { >> >> A(int (&)[1]); >> >> }; >> >> template <int (*F)(A)> >> >> int E() { >> >> int X[] = {0}; >> >> return F(X); >> >> } >> >> >> Note that the array is not empty and we are not using variadics anymore. >> The problem seems to be related to the function pointer template >> parameter. >> gcc doesn't want to do the implicit conversion from X to A, but if I make >> the conversion explicit it works. >> >> >> On Fri, Mar 25, 2016 at 1:58 PM, Alexey Samsonov <vonos...@gmail.com> >> wrote: >> >>> >>> On Fri, Mar 25, 2016 at 10:55 AM, David Blaikie via cfe-commits < >>> cfe-commits@lists.llvm.org> wrote: >>> >>>> >>>> >>>> On Fri, Mar 25, 2016 at 10:46 AM, Samuel Benzaquen via cfe-commits < >>>> cfe-commits@lists.llvm.org> wrote: >>>> >>>>> Author: sbenza >>>>> Date: Fri Mar 25 12:46:02 2016 >>>>> New Revision: 264428 >>>>> >>>>> URL: http://llvm.org/viewvc/llvm-project?rev=264428&view=rev >>>>> Log: >>>>> [ASTMatchers] Fix build for VariadicFunction. >>>>> >>>>> Under some conditions the implicit conversion from array to ArrayRef<> >>>>> is not working. >>>>> >>>> >>>> Any idea what those conditions are? >>>> >>> >>> This was causing the build failure with opt GCC. I will try to create a >>> smaller reproducer later today. >>> >>> >>>> >>>> >>>>> Fix the build by making it explicit. >>>>> >>>>> Modified: >>>>> cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h >>>>> >>>>> Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h?rev=264428&r1=264427&r2=264428&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h >>>>> (original) >>>>> +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h Fri Mar >>>>> 25 12:46:02 2016 >>>>> @@ -90,7 +90,7 @@ private: >>>>> // before we make the array. >>>>> template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) >>>>> const { >>>>> const ArgT *const ArgsArray[] = {&Args...}; >>>>> - return Func(ArgsArray); >>>>> + return Func(ArrayRef<const ArgT *>(ArgsArray, sizeof...(ArgsT))); >>>>> } >>>>> }; >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> 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 >>>> >>>> >>> >>> >>> -- >>> Alexey Samsonov >>> vonos...@gmail.com >>> >> >> >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits