v.g.vassilev added a comment.

In D112349#3111927 <https://reviews.llvm.org/D112349#3111927>, @erichkeane 
wrote:

> In D112349#3111873 <https://reviews.llvm.org/D112349#3111873>, @ibookstein 
> wrote:
>
>> And how is Cling expecting CFE to deal with partial knowledge situations at 
>> the implementation level? To deal with exactly the non-local cases that the 
>> current violations address?
>> If there's no prescriptive way forward to dealing with these cases (so 
>> they're tech debt without a remediation plan), then as far as I'm concerned 
>> this case sits exactly under the same tech-debt umbrella of the existing 
>> violations and the way forward is using the same violating solution for this 
>> case too. 
>> We definitely shouldn't block the IR verification indefinitely on this 
>> impasse. Once an acceptable solution is found, this will also be part of 
>> that refactor.
>
> My understanding is that the REPL setup is that the 'IR' just needs to be in 
> a state where it doesn't require reverts/rewrites later, so that we can do 
> partial-back-end-code-generation as we go along.  That said, I'm not positive 
> as to the implications.  I'm just repeating the discussion the CFE code-owner 
> made at the time.
>
> IMO, the 'acceptable' solution is to have a way to forward-declare an ifunc 
> in IR so that we can fill in the resolver later on.  From your description 
> earlier, it seems that this would work as we could emit it as an 'unknown 
> symbol' (as if it was an undefined function declaration), and would be 
> completely implementable in the CFE.
>
> So it would change your plan from earlier to:
>
> When processing cpu_specific, emit the ifunc "x.ifunc", with no resolver;
> When processing cpu_dispatch:
>
>   Get/Create the ifunc, then pull up the resolver.
>   If the resolver is null (as it should be), create one and update the 
> 'ifunc'.
>   Generate said resolver.
>   

Speaking of the incremental compilation case, we can experiment with the 
clang-repl binary. I am not sure about the details of this discussion but here 
is an example that works today:

  llvm/build/bin/clang-repl 
  clang-repl> __attribute__((cpu_specific(ivybridge))) void 
single_version(void){}
  clang-repl> void useage() {single_version();}
  clang-repl> quit

What would it be a good example to check if the incremental compilation case is 
covered?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112349

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

Reply via email to