[PATCH] D51544: [OpenCL] Split opencl-c.h header
Anastasia Stulova via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 11 08:49:53 PDT 2018
Anastasia added a comment.
In https://reviews.llvm.org/D51544#1230264, @asavonic wrote:
> In https://reviews.llvm.org/D51544#1229105, @Anastasia wrote:
>
> > > With this setup, we can compile opencl-c-common.h, opencl-c-fp16.h and
> > > opencl-c-fp64.h into PCHs with one set of extensions/OpenCL version,
> > > and use them for any other set of extensions/OpenCL version. Clang
> > > will detect this and throw out an error, which can be safely disabled
> > > by -fno-validate-pch option.
> >
> > However, keeping this as a permanent solution is unsafe. Because this way can result in unexpected errors to be silent out and allow erroneous configurations to be accepted successfully without any notification.
>
>
> Agree. LIT test in `test/Headers/opencl-c-header-split.cl` is supposed
> to verify that common/fp16/fp64 headers do not use preprocessor macros
> and it should catch most of the issues, but this is definitely not the
> most robust solution.
>
> > So I am wondering if there is any plan to put a proper solution in place at some point?
>
> This solution can be improved if we implement `convert` and `shuffle`
> as clang builtins with custom typechecking: these two builtins (with
> all their overloadings) take ~90% of `opencl-c-common.h` and ~50% of
> fp16/fp64 headers.
>
> However, this can be a non-trivial change: it is difficult to do a
> proper mangling for clang builtins and rounding modes must be handled
> as well.
>
> I'll take a few days to prototype this. If it turns out to be good in
> terms of performance/footprint, we can drop this patch.
Btw, I was wondering if a target agnostic PCH is a viable solution to move forward too. Something that we discussed/prototyped during the HackerLab in EuroLLVM?
Repository:
rC Clang
https://reviews.llvm.org/D51544
More information about the cfe-commits
mailing list