================
@@ -54,6 +54,12 @@ ABI Changes in This Version
   inline member function that contains a static local variable with a dynamic
   initializer is declared with ``__declspec(dllimport)``. (#GH83616).
 
+- Fixed Microsoft name mangling of lifetime extended temporary objects. This
+  change corrects missing back reference registrations that could result in
+  incorrect back reference indexes and suprising demangled name results. Since
+  MSVC uses a different mangling for these objects, compatibility is not 
affected.
+  (#GH85423).
----------------
zmodem wrote:

> Commit 
> [e77de75](https://github.com/llvm/llvm-project/commit/e77de75d7e009daaadb03e9b1091c3a9a9c9d311)
>  claims that Microsoft doesn't have a mangling for these objects and that the 
> `$RT` mangling is a Clang invention. The claim that MSVC doesn't implement a 
> mangling for these doesn't seem right though. Consider 
> https://godbolt.org/z/n715zPbc6.

Looks like things have changed then. I tried the example code with MSVC 
18.00.31101.0 (from VS2013) and there the object is just `_$S1`:

```
??__E?singleton@RT1@@2ABU1@B@@YAXXZ PROC                ; 
??__E?singleton@RT1@@2ABU1@B@@YAXXZ, COMDAT
; File z:\tmp\a.cc
; Line 6
        push    ebp
        mov     ebp, esp
        push    ecx
        call    ?f@@YA?AURT1@@XZ                        ; f
        mov     DWORD PTR $T1[ebp], eax
        mov     eax, DWORD PTR $T1[ebp]
        mov     DWORD PTR _$S1, eax
        mov     DWORD PTR ?singleton@RT1@@2ABU1@B, OFFSET _$S1 ; RT1::singleton
        mov     esp, ebp
        pop     ebp
        ret     0
```

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

Reply via email to