http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38174
--- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> 2011-10-13 02:49:30 UTC --- (In reply to comment #3) > So, for operator== for example, we reach the end of add_builtin_candidate, the > conditional is true, and we proceed with two calls to build_builtin_candidate > for pairs of const int* and pairs of volatile int*, I don't see the analysis > required to figure out that we need also the version for pairs of const > volatile int*. Should be open coded here? In the code where we generate those two pairs, if the two pointers have a composite pointer type, we should instead generate a single candidate with that type.