Fix for the issue 12176

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Fix for the issue 12176

David Chisnall via cfe-dev
Hi,

Please find attached a diff to fix the issue 12176. Let me know if there
is anything any improvements you can think of.

Best regards,

Oscar


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

Extract-getDepthAndIndex-issue-12176.patch (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Fix for the issue 12176

David Chisnall via cfe-dev
+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
> [hidden email]
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>

--
Jon Roelofs
[hidden email]
CodeSourcery / Mentor Embedded / Siemens
_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: Fix for the issue 12176

David Chisnall via cfe-dev
Hi Jonathan,

Thanks for the input. I will amend it and update it. I created an entry
in Phabricator too (https://reviews.llvm.org/D38382).

Best regards,
Oscar


On 28/09/17 21:28, Jonathan Roelofs wrote:

> +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
>> [hidden email]
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>

_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: Fix for the issue 12176

David Chisnall via cfe-dev
In reply to this post by David Chisnall via cfe-dev


On 28/09/17 21:28, Jonathan Roelofs wrote:
> +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
Thanks ;)

>
>> 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.
Done
>
> Then the body should go in a *.cpp somewhere in lib/Sema.
I haven't put the body in a *.cpp file because the other internal
headers I've seen in lib/Sema have everything in the header file.

>
>> +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?
I added this method to the header.

>
>> Index: lib/Sema/SemaTemplateInstantiate.cpp
>
> snip
>
>
> Jon
>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> [hidden email]
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>

_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

Extract-getDepthAndIndex-issue-12176.patch (6K) Download Attachment