On 6/23/19 7:53 AM, Paolo Carlini wrote:
... hi again ;)
The other day I was having a look at using declarations for this issue
and noticed that only a few lines below the de-virtualization check we
have to handle functions found by a using declaration, for various
reasons. In particular, we know whether we found a function fn where has
been declared or in a derived class. Thus the idea: for the purpose of
making some progress, in particular all the cases in c++/67184 & co,
would it make sense for the time being to simply add a check to the
de-virtualization condition restricting it to non-using declarations?
See the below (it also moves the conditional a few lines below only for
clarity and consistency with the code handling using declarations, no
functional impact) What do you think?
Hmm, perhaps we should check CLASSTYPE_FINAL in resolves_to_fixed_type_p
rather than in build_over_call at all; then the code in
build_new_method_call ought to set LOOKUP_NONVIRTUAL when appropriate.
Jason