v.g.vassilev added a comment.

>> I'm nervous in general about the looming idea of declaration unloading, but 
>> the fact that it's been working in Cling for a long time gives me some 
>> confidence that we can do that in a way that's not prohibitively expensive 
>> and invasive.
>
> I don't really know the jargon here.

"Code unloading" is mentioned here 
https://reviews.llvm.org/D96033?id=323531#inline-911819

> The biggest problem that I foresee around having a full-featured C REPL is 
> the impossibility of replacing existing types — you might be able to 
> introduce a *new* struct with a particular name, break the redeclaration 
> chain, and have it shadow the old one, and we could probably chase down all 
> the engineering problems that that causes in the compiler, but it's never 
> going to be a particularly satisfying model.

Indeed. Cling did not have this feature until recently. We indeed "shadow" the 
reachable declaration maintaining (using inline namespaces) the redecl chain 
invariants (relevant code here 
<https://github.com/vgvassilev/cling/blob/899b3337fc25cb06d6b82d5451c5040515d94416/lib/Interpreter/DefinitionShadower.cpp#L73-L94>).
 I am not sure that approach can work outside C++.

> If we don't have to worry about that, then I feel like the largest problem is 
> probably the IRGen interaction — in particular, whether we're going to have 
> to start serializing IRGen state the same way that Sema state has to be 
> serialized across PCH boundaries.  But I'm sure the people who are working on 
> this have more knowledge of what issues they're seeing than I can just 
> abstractly anticipate.

We find ourselves patching often that area in CodeGen when upgrading llvm (eg. 
here 
<https://github.com/vgvassilev/clang/commit/7274af0e10e0569ad3c685269814a458b9d49ad0>).
 The current cling model requires the state to be transferred to subsequent 
calls of IRGen. We briefly touched that topic in 
https://reviews.llvm.org/D34444#812418 (and onward) and I thought we had a plan 
how to move forward.


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

https://reviews.llvm.org/D96033

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

Reply via email to