This is in any case the wrong fix. The code *is* wrong, for the reason this compiler is reporting.
The correct fix is to declare the explicit specializations in the header file: template <> void CFGDominatorTreeImpl<true>::anchor(); template <> void CFGDominatorTreeImpl<false>::anchor(); Clang will tell you to do this under -Wundefined-func-template (which we haven't turned on by default because people get this wrong too often...). On Mon, 8 Jul 2019 at 12:29, JF Bastien via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Kristof, > > It looks like your fix didn’t address all the bots: > > /Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/lib/Analysis/Dominators.cpp:14:48: > error: explicit specialization of 'anchor' after instantiation void > CFGDominatorTreeImpl</*IsPostDom=*/true>::anchor() {} ^ > /Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/include/clang/Analysis/Analyses/Dominators.h:225:3: > note: implicit instantiation first required here > ControlDependencyCalculator(CFG *cfg) ^ > > Can you please address the issue? > > http://green.lab.llvm.org/green/job/clang-stage2-coverage-R/4153/consoleFull > > Thanks, > > JF > > > On Jul 3, 2019, at 5:06 AM, Kristof Umann via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > > Author: szelethus > Date: Wed Jul 3 05:06:10 2019 > New Revision: 365030 > > URL: http://llvm.org/viewvc/llvm-project?rev=365030&view=rev > Log: > Make a buildbot using a buggy gcc happy > > When specializing a template in a namespace, it has to be in a namespace > block, else gcc will get confused. Hopefully this fixes the issue. > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480 > > Modified: > cfe/trunk/lib/Analysis/Dominators.cpp > > Modified: cfe/trunk/lib/Analysis/Dominators.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/Dominators.cpp?rev=365030&r1=365029&r2=365030&view=diff > > ============================================================================== > --- cfe/trunk/lib/Analysis/Dominators.cpp (original) > +++ cfe/trunk/lib/Analysis/Dominators.cpp Wed Jul 3 05:06:10 2019 > @@ -8,10 +8,12 @@ > > #include "clang/Analysis/Analyses/Dominators.h" > > -using namespace clang; > +namespace clang { > > template <> > -void clang::CFGDominatorTreeImpl</*IsPostDom=*/true>::anchor() {} > +void CFGDominatorTreeImpl</*IsPostDom=*/true>::anchor() {} > > template <> > -void clang::CFGDominatorTreeImpl</*IsPostDom=*/false>::anchor() {} > +void CFGDominatorTreeImpl</*IsPostDom=*/false>::anchor() {} > + > +} // end of namespace clang > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits