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));

Reply via email to