NoQ added inline comments. ================ Comment at: lib/Analysis/CloneDetection.cpp:154 @@ -153,2 +153,3 @@ // Function pointers don't have a callee and we just skip hashing it. - if (S->getDirectCallee()) + if (S->getDirectCallee()) { + // If the function is a template instantiation, we also need to handle ---------------- Maybe `if (const FunctionDecl *D = S->getDirectCallee())` here, and then use `D` everywhere inside the `if`?
================ Comment at: lib/Analysis/CloneDetection.cpp:164 @@ +163,3 @@ + for (unsigned i = 0; i < Args->size(); ++i) { + Args->get(i).print(Context.getLangOpts(), OS); + } ---------------- We don't discriminate between `foo<A, AA>()` and `foo<AA, A>()` here, because in both cases the stuff we hash gets concatenated to `AAA`. Just thought that we might be having this common problem everywhere, even though it barely shows up "in real life". ================ Comment at: test/Analysis/copypaste/call.cpp:41 @@ +40,3 @@ +template<typename T, unsigned N> +bool tempFunc() { unsigned i = N; return false; } + ---------------- "temp" feels a lot more like "temporary" than like "template" (?) https://reviews.llvm.org/D23555 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits