[Bug c++/65143] [C++11] missing devirtualization for virtual base in "final" classes

trippels at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Aug 12 10:37:00 GMT 2015


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

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |trippels at gcc dot gnu.org

--- Comment #6 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Testcase from PR67184:

markus@x4 tmp % cat test.ii
struct V {
  virtual void foo();
};

struct wV final : V {};

struct oV final : V {
  void foo();
};

void call(V &x) { x.foo(); }

void call(wV &x) { x.foo(); }

void call(oV &x) { x.foo(); }

markus@x4 tmp % clang++ -std=c++14 -c -O3 -S test.ii -o -
...
_Z4callR2wV:                            # @_Z4callR2wV
        .cfi_startproc
# BB#0:                                 # %entry
        jmp     _ZN1V3fooEv             # TAILCALL
...

markus@x4 tmp % g++ -std=c++14 -O3 -c -S test.ii -o -
...
_Z4callR2wV:
.LFB1:
        .cfi_startproc
        movq    (%rdi), %rax
        jmp     *(%rax)



More information about the Gcc-bugs mailing list