https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90309

--- Comment #5 from Philipp Lucas <philipp.lucas at siemens dot com> ---
(In reply to Marek Polacek from comment #4)
> ...but first it'd be nice to find out *why* we're shifting by -4 and how
> that can be.

It's not shifting /by/ -4, the -4 is shifted by 1. The ARM ABI says in ยง3.2.1
"This ABI specifies that adj contains /twice the this adjustment/, plus 1 if
the member function is virtual.", and the shift seems to be the choice of
implementation for the "twice". 

As a layman's guess, replacing the shift by a multiplication with 2 should fix
it, right?

Reply via email to