tejohnson added a comment.

In D61634#1515176 <https://reviews.llvm.org/D61634#1515176>, @tejohnson wrote:

> In D61634#1512020 <https://reviews.llvm.org/D61634#1512020>, @gchatelet wrote:
>
> > AFAIU here is a coarse plan of what needs to happen
>


I've listed below what I believe is the status:

>> 
>> 
>> 1. Add a `no-builtin` clang function attribute that has the same semantic as 
>> the `no-builtin` cmd line argument 
>> <https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fbuiltin>

Done (D68028 <https://reviews.llvm.org/D68028> committed at bd8791610948).

>> 2. Propagate it to the IR.
>>   - In the light of recent discussions and as @theraven suggested it seems 
>> more appropriate to encode them as individual IR attributes (e.g. 
>> `"no-builtin-memcpy"`, `"no-builtin-sqrt"`, etc..)

Done (also in D68028 <https://reviews.llvm.org/D68028> committed at 
bd8791610948).
Additionally the -fno-builtin* options were translated to the IR attributes in 
D71193 <https://reviews.llvm.org/D71193> (committed at 0508c994f0b1 
<https://reviews.llvm.org/rG0508c994f0b14144041f2cfd3ba9f9a80f03de08>).

>> 3. Propagate/merge the `no-builtin` IR attribute for LTO by "updating 
>> `AttributeFuncs::areInlineCompatible` and/or 
>> `AttributeFuncs::mergeAttributesForInlining` and adding a new MergeRule in 
>> `include/llvm/IR/Attributes.td` and writing a function like 
>> `adjustCallerStackProbeSize`."
> 
> This one isn't about LTO, but rather the inliner. You could have different 
> functions in the same module even without LTO that have incompatible 
> no-builtin attributes. There isn't any propagation required for LTO.

Not done yet - I can work on this.

> 
> 
>> 4. Get inspiration from `TargetTransformInfo` to get `TargetLibraryInfo` on 
>> a per function basis for all passes and respect the IR attribute.

Done (D67923 <https://reviews.llvm.org/D67923> was the last patch in the series 
to enable this, committed at 878ab6df033d 
<https://reviews.llvm.org/rG878ab6df033d44430939c02075ee00800995dc3b>).

I'm not quite sure where D71710 <https://reviews.llvm.org/D71710> 
([instrinsics] Add @llvm.memcpy.inline instrinsics) fits in to the above list.

Anything else missing?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D61634/new/

https://reviews.llvm.org/D61634



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to