https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123888
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The rv_160 = Init (_153, 2, aDefaultPort_270(D), aSpec_9(D), aCharset_269(D), aBaseURI_268(D)); call in #c2 is _ZN7mozilla3net13nsStandardURL4InitEjiRK12nsTSubstringIcEPKcP6nsIURI aka mozilla::net::nsStandardURL::Init(unsigned int, int, nsTSubstring<char> const&, char const*, nsIURI*) while the other call is to _ZThn24_N7mozilla3net13nsStandardURL16TemplatedMutatorIS1_E4InitEjiRK12nsTSubstringIcEPKcP6nsIURIPP13nsIURIMutator aka non-virtual thunk to mozilla::net::nsStandardURL::TemplatedMutator<mozilla::net::nsStandardURL>::Init(unsigned int, int, nsTSubstring<char> const&, char const*, nsIURI*, nsIURIMutator**) Now, looking at -O0 -fno-lto code from both TUs, the latter is 0000000000000185 <_ZThn24_N7mozilla3net13nsStandardURL16TemplatedMutatorIS1_E4InitEjiRK12nsTSubstringIcEPKcP6nsIURIPP13nsIURIMutator>: 185: f3 0f 1e fa endbr64 189: 48 83 ef 18 sub $0x18,%rdi 18d: e9 6e fe ff ff jmp 0 <_ZN7mozilla3net13nsStandardURL16TemplatedMutatorIS1_E4InitEjiRK12nsTSubstringIcEPKcP6nsIURIPP13nsIURIMutator> so subtracts 24 from this pointer, and _ZN7mozilla3net13nsStandardURL16TemplatedMutatorIS1_E4InitEjiRK12nsTSubstringIcEPKcP6nsIURIPP13nsIURIMutator calls _ZN7mozilla3net13nsStandardURL4InitEjiRK12nsTSubstringIcEPKcP6nsIURI with _3 = &this_21(D)->D.1360743.mURI; RefPtr<mozilla::net::nsStandardURL>::swap (_3, &uri); ... _8 = RefPtr<mozilla::net::nsStandardURL>::operator-> (&uri); rv_39 = mozilla::net::nsStandardURL::Init (_8, aURLType_33(D), aDefaultPort_34(D), aSpec_35(D), aCharset_36(D), aBaseURI_37(D));
