[cfe-dev] Fix for the issue 12176
Jonathan Roelofs via cfe-dev
cfe-dev at lists.llvm.org
Thu Sep 28 13:28:44 PDT 2017
+silvas
On 9/28/17 2:19 PM, Oscar Forner Martinez via cfe-commits wrote:
> Hi,
>
> Please find attached a diff to fix the issue 12176.
Link for the lazy: llvm.org/PR12176
> Let me know if there
> is anything any improvements you can think of.
>
> Best regards,
>
> Oscar
>
>
> Extract-getDepthAndIndex-issue-12176.patch
>
>
> Index: lib/Sema/DepthAndIndex.h
> ===================================================================
> --- lib/Sema/DepthAndIndex.h (nonexistent)
> +++ lib/Sema/DepthAndIndex.h (working copy)
> @@ -0,0 +1,32 @@
> +//===- DepthAndIndex.h - Static declaration of the getDepthAndIndex function -*- C++ -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//===----------------------------------------------------------------------===//
> +//
> +// This file defines getDepthAndIndex function.
> +//
> +//===----------------------------------------------------------------------===//
> +
> +#ifndef LLVM_CLANG_LIB_SEMA_DEPTHANDINDEX_H
> +#define LLVM_CLANG_LIB_SEMA_DEPTHANDINDEX_H
> +
> +#include "clang/AST/DeclTemplate.h"
> +#include "clang/Sema/DeclSpec.h"
> +
> +/// \brief Retrieve the depth and index of a template parameter.
> +static std::pair<unsigned, unsigned>
This should be just a declaration and a doxygen comment for it. Drop the
'static'. You can also drop the "\brief" since autobrief is turned on.
Then the body should go in a *.cpp somewhere in lib/Sema.
> +getDepthAndIndex(NamedDecl *ND) {
> + if (TemplateTypeParmDecl *TTP = dyn_cast<TemplateTypeParmDecl>(ND))
> + return std::make_pair(TTP->getDepth(), TTP->getIndex());
> +
> + if (NonTypeTemplateParmDecl *NTTP = dyn_cast<NonTypeTemplateParmDecl>(ND))
> + return std::make_pair(NTTP->getDepth(), NTTP->getIndex());
> +
> + TemplateTemplateParmDecl *TTP = cast<TemplateTemplateParmDecl>(ND);
> + return std::make_pair(TTP->getDepth(), TTP->getIndex());
> +}
> +
> +#endif // LLVM_CLANG_LIB_SEMA_DEPTHANDINDEX_H
> \ No newline at end of file
> Index: lib/Sema/SemaTemplateDeduction.cpp
> ===================================================================
> --- lib/Sema/SemaTemplateDeduction.cpp (revision 314321)
> +++ lib/Sema/SemaTemplateDeduction.cpp (working copy)
> @@ -11,6 +11,7 @@
> //===----------------------------------------------------------------------===/
>
> #include "clang/Sema/TemplateDeduction.h"
> +#include "DepthAndIndex.h"
> #include "TreeTransform.h"
> #include "clang/AST/ASTContext.h"
> #include "clang/AST/ASTLambda.h"
> @@ -579,19 +580,6 @@
> }
> }
>
> -/// \brief Retrieve the depth and index of a template parameter.
> -static std::pair<unsigned, unsigned>
> -getDepthAndIndex(NamedDecl *ND) {
> - if (TemplateTypeParmDecl *TTP = dyn_cast<TemplateTypeParmDecl>(ND))
> - return std::make_pair(TTP->getDepth(), TTP->getIndex());
> -
> - if (NonTypeTemplateParmDecl *NTTP = dyn_cast<NonTypeTemplateParmDecl>(ND))
> - return std::make_pair(NTTP->getDepth(), NTTP->getIndex());
> -
> - TemplateTemplateParmDecl *TTP = cast<TemplateTemplateParmDecl>(ND);
> - return std::make_pair(TTP->getDepth(), TTP->getIndex());
> -}
> -
> /// \brief Retrieve the depth and index of an unexpanded parameter pack.
> static std::pair<unsigned, unsigned>
> getDepthAndIndex(UnexpandedParameterPack UPP) {
Maybe this ^ one should go too?
> Index: lib/Sema/SemaTemplateInstantiate.cpp
snip
Jon
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
--
Jon Roelofs
jonathan at codesourcery.com
CodeSourcery / Mentor Embedded / Siemens
More information about the cfe-dev
mailing list