augusto2112 wrote:

@DavidSpickett thanks for reminding me. I'll add a comment describing the 
situation. 

Right now, for conditional breakpoints, we assume that the condition expression 
is cacheable, since it's being run over and over again in the exact same 
context. This works for C/C++, but not for Swift, because Swift generics aren't 
monomorphized (the same problem would happen for other languages where generics 
aren't monomorphized either, so a more general escape hatch seemed appropriate 
to me).

To illustrate what I mean, a function such as  the following (in C++ syntax but 
Swift semantics):

```
template <class T>
void use(T t) {}

// In main
use(5);
use(std::string())
```

Is lowered only once as a truly generic function (unlike C++ which will 
generate one version per instantiation), so it isn't safe to cache the 
expression parse, as the argument type may be different in every invocation.

https://github.com/llvm/llvm-project/pull/66826
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to