================
@@ -301,6 +301,70 @@ void test_StaticInlineMember() {
   StaticInlineMember::x();
 }
 
----------------
oToToT wrote:

IIUC, this still aligns to the Itanium ABI spec. The 5.1.8 rule "If the context 
is the body of a function (inline and/or template), the closure type is encoded 
like any other local entity", and some relevant statements in both 5.1.7 and 
5.1.8.

Basically, I think this is a recursion bug in Clang’s mangling path. This fix 
is to break recursive re-entry by resolving/publishing lambda context early. I 
do not invent a new recursive-type encoding.

For GCC, it produces the same output of all the test files. (except the 
existing differences of how we mangle lambda, e.g. `main::$_0` vs 
`main::{lambda()#1}`)

https://github.com/llvm/llvm-project/pull/182667
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to