Giuliano Procida a écrit: > The traverse method is defined in the traversable_base class but is > never used as the synonymous methods in the derived classes have > different argument types and so hide it. The derived classes have a traverse method which parameter type (ir_node_visitor and diff_node_visitor) derives from the type of the parameter of traversable_base::traverse (node_visitor_base). And that is by design. So yes they are different, but they are closely related. So I'd like to keep the traversable_base::traverse method at least as a comment, saying that types that extend traversable_base ought to declare a virtual traverse method which type extends node_visitor_base. I've done so in the attached patch I am applying. > The function can be removed and consequently the source file > abg-traverse.cc too. Rather than removing abg-traverse.cc, I'd pimpl-ify abg-traverse.h and move its inline definitions into abg-traverse.cc. This gets abg-traverse.h closer to a somewhat achieving some a{b,p}i stability in the future. It's a generic "backburner" goal that I have and I think removing this file gets me further from it. So I've done that in the patch as well. [...] Please find attached the patch I am applying to master. Cheers,