[llvm-bugs] [Bug 26237] New: Broken canonical decl of FunctionTemplateDecl.

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Jan 21 09:16:04 PST 2016


https://llvm.org/bugs/show_bug.cgi?id=26237

            Bug ID: 26237
           Summary: Broken canonical decl of FunctionTemplateDecl.
           Product: clang
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Modules
          Assignee: unassignedclangbugs at nondot.org
          Reporter: vvasilev at cern.ch
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org
    Classification: Unclassified

I am stuck with reducing this issue. It still depends on STL and I am unable to
reduce it further. Any ideas would be greatly appreciated.


=============================== GDB ====================================
(gdb) bt
#0  0x00007ffff06ea6d0 in ?? ()
#1  0x000000000224235d in clang::Decl::getCanonicalDecl (this=0x7ffff00000f8)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/include/clang/AST/DeclBase.h:750
#2  0x0000000002242378 in clang::Decl::isCanonicalDecl (this=0x7ffff00000f8)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/include/clang/AST/DeclBase.h:754
#3  0x0000000003517f22 in
clang::ASTDeclWriter::AddTemplateSpecializations<clang::ClassTemplateDecl> (
    this=0x7ffff6baae90, D=0x7ffff0263bb8)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Serialization/ASTWriterDecl.cpp:219
#4  0x000000000350d654 in clang::ASTDeclWriter::VisitClassTemplateDecl
(this=0x7ffff6baae90, D=0x7ffff0263bb8)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Serialization/ASTWriterDecl.cpp:1286
#5  0x00000000035145c7 in
clang::declvisitor::Base<clang::declvisitor::make_ptr, clang::ASTDeclWriter,
void>::Visit (
    this=0x7ffff6baae90, D=0x7ffff0263bb8)
    at
/home/vvassilev/workspace/llvm-git/obj/tools/clang/include/clang/AST/DeclNodes.inc:189
#6  0x0000000003507912 in clang::ASTDeclWriter::Visit (this=0x7ffff6baae90,
D=0x7ffff0263bb8)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Serialization/ASTWriterDecl.cpp:258
#7  0x0000000003511c7a in clang::ASTWriter::WriteDecl (this=0x7ffff00321e8,
Context=..., D=0x7ffff0263bb8)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Serialization/ASTWriterDecl.cpp:2130
#8  0x00000000034cb855 in clang::ASTWriter::WriteASTCore (this=0x7ffff00321e8,
SemaRef=..., isysroot=..., 
   
OutputFile="/home/vvassilev/workspace/root/cmake_obj/include/pcms/S04FLK6KY0X1/TCollectionProxyFactory.h-AJZOSBS4YJ7J.pcm",
WritingModule=0x7ffff0025890)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Serialization/ASTWriter.cpp:4421
#9  0x00000000034c96a6 in clang::ASTWriter::WriteAST (this=0x7ffff00321e8,
SemaRef=..., 
   
OutputFile="/home/vvassilev/workspace/root/cmake_obj/include/pcms/S04FLK6KY0X1/TCollectionProxyFactory.h-AJZOSBS4YJ7J.pcm",
WritingModule=0x7ffff0025890, isysroot=..., hasErrors=false)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Serialization/ASTWriter.cpp:4081
#10 0x00000000035310eb in clang::PCHGenerator::HandleTranslationUnit
(this=0x7ffff0032140, Ctx=...)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Serialization/GeneratePCH.cpp:54
#11 0x00000000027223d8 in clang::MultiplexConsumer::HandleTranslationUnit
(this=0x7ffff0032f70, Ctx=...)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Frontend/MultiplexConsumer.cpp:286
#12 0x00000000032d67e3 in clang::ParseAST (S=..., PrintStats=false,
SkipFunctionBodies=false)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Parse/ParseAST.cpp:168
#13 0x00000000026fb0d2 in clang::ASTFrontendAction::ExecuteAction
(this=0x7fffffffa1a0)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Frontend/FrontendAction.cpp:539
#14 0x00000000026fab97 in clang::FrontendAction::Execute (this=0x7fffffffa1a0)
---Type <return> to continue, or q <return> to quit---
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Frontend/FrontendAction.cpp:439
#15 0x00000000026b45d0 in clang::CompilerInstance::ExecuteAction
(this=0x7fffffffa240, Act=...)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Frontend/CompilerInstance.cpp:841
#16 0x00000000026b4917 in __lambda10::operator() (__closure=0x7fffffffa150)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Frontend/CompilerInstance.cpp:1010
#17 0x00000000026ba857 in
llvm::function_ref<void()>::callback_fn<compileModuleImpl(clang::CompilerInstance&,
clang::SourceLocation, clang::Module*, llvm::StringRef)::__lambda10>(intptr_t)
(callable=140737488331088)
    at /home/vvassilev/workspace/llvm-git/src/include/llvm/ADT/STLExtras.h:76
#18 0x00000000044a19a0 in llvm::function_ref<void ()>::operator()() const
(this=0x7ffff6baee30)
    at /home/vvassilev/workspace/llvm-git/src/include/llvm/ADT/STLExtras.h:88
#19 0x00000000044a155f in
llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>)
(this=0x7fffffffa130, 
    Fn=...) at
/home/vvassilev/workspace/llvm-git/src/lib/Support/CrashRecoveryContext.cpp:328
#20 0x00000000044a1688 in RunSafelyOnThread_Dispatch (UserData=0x7fffffffa020)
    at
/home/vvassilev/workspace/llvm-git/src/lib/Support/CrashRecoveryContext.cpp:376
#21 0x0000000002097fca in ExecuteOnThread_Dispatch (Arg=0x7fffffff9f90)
    at /home/vvassilev/workspace/llvm-git/src/lib/Support/Threading.cpp:40
#22 0x00007ffff79c0182 in start_thread (arg=0x7ffff6baf700) at
pthread_create.c:312
#23 0x00007ffff6caa47d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:111

(gdb) f 4
#4  0x000000000350d654 in clang::ASTDeclWriter::VisitClassTemplateDecl
(this=0x7ffff6baae90, D=0x7ffff0263bb8)
    at
/home/vvassilev/workspace/llvm-git/src/tools/clang/lib/Serialization/ASTWriterDecl.cpp:1286
1286        AddTemplateSpecializations(D);
(gdb) p D->dump()
ClassTemplateDecl 0x7ffff0263bb8
</usr/lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h:96:3,
line:278:5> line:97:11 reverse_iterator
|-TemplateTypeParmDecl 0x7ffff0263a88 <line:96:12, col:21> col:21 referenced
typename _Iterator
|-CXXRecordDecl 0x7ffff0263b10 <line:97:5, line:278:5> line:97:11 class
reverse_iterator definition
| |-public 'iterator<typename iterator_traits<_Iterator>::iterator_category,
typename iterator_traits<_Iterator>::value_type, typename
iterator_traits<_Iterator>::difference_type, typename
iterator_traits<_Iterator>::pointer, typename
iterator_traits<_Iterator>::reference>'
| |-CXXRecordDecl 0x7ffff02648d8 <col:5, col:11> col:11 implicit referenced
class reverse_iterator
| |-AccessSpecDecl 0x7ffff0264980 <line:104:5, col:14> col:5 protected
| |-FieldDecl 0x7ffff02649b8 <line:105:7, col:17> col:17 referenced current
'_Iterator'
| |-TypedefDecl 0x7ffff0264b08 <line:107:7, col:43> col:43 referenced
__traits_type 'iterator_traits<_Iterator>'
| |-AccessSpecDecl 0x7ffff0264b58 <line:109:5, col:11> col:5 public
| |-TypedefDecl 0x7ffff0264b90 <line:110:7, col:29> col:29 referenced
iterator_type '_Iterator'
| |-TypedefDecl 0x7ffff0264ca0 <line:111:7, col:55> col:55 referenced
difference_type 'typename __traits_type::difference_type'
| |-TypedefDecl 0x7ffff0264d80 <line:112:7, col:48> col:48 referenced pointer
'typename __traits_type::pointer'
| |-TypedefDecl 0x7ffff0264e60 <line:113:7, col:50> col:50 referenced reference
'typename __traits_type::reference'
| |-CXXConstructorDecl 0x7ffff0264f18 <line:121:7, col:40> col:7
reverse_iterator<_Iterator> 'void (void)'
| | |-CXXCtorInitializer Field 0x7ffff02649b8 'current' '_Iterator'
| | | `-ParenListExpr 0x7ffff02673f8 <col:35, col:36> 'NULL TYPE'
| | `-CompoundStmt 0x7ffff0267450 <col:38, col:40>
| |-CXXConstructorDecl 0x7ffff0265ba0 <line:126:7, line:127:60> col:7
reverse_iterator<_Iterator> 'void (iterator_type)'
| | |-ParmVarDecl 0x7ffff0265010 <col:24, col:38> col:38 referenced __x
'iterator_type':'_Iterator'
| | |-CXXCtorInitializer Field 0x7ffff02649b8 'current' '_Iterator'
| | | `-ParenListExpr 0x7ffff02674a8 <col:52, col:56> 'NULL TYPE'
| | |   `-DeclRefExpr 0x7ffff0267480 <col:53> 'iterator_type':'_Iterator'
lvalue ParmVar 0x7ffff0265010 '__x' 'iterator_type':'_Iterator'
| | `-CompoundStmt 0x7ffff0267508 <col:58, col:60>
| |-CXXConstructorDecl 0x7ffff0265d80 <line:132:7, line:133:32> line:132:7
reverse_iterator<_Iterator> 'void (const reverse_iterator<_Iterator> &)'
| | |-ParmVarDecl 0x7ffff0265ca8 <col:24, col:48> col:48 referenced __x 'const
reverse_iterator<_Iterator> &'
| | |-CXXCtorInitializer Field 0x7ffff02649b8 'current' '_Iterator'
| | | `-ParenListExpr 0x7ffff02675b8 <line:133:16, col:28> 'NULL TYPE'
| | |   `-CXXDependentScopeMemberExpr 0x7ffff0267560 <col:17, col:21>
'<dependent type>' lvalue
| | |     `-DeclRefExpr 0x7ffff0267538 <col:17> 'const
reverse_iterator<_Iterator>' lvalue ParmVar 0x7ffff0265ca8 '__x' 'const
reverse_iterator<_Iterator> &'
| | `-CompoundStmt 0x7ffff0267618 <col:30, col:32>
| |-FunctionTemplateDecl 0x7ffff0266270 <line:139:7, line:141:26> line:140:9
reverse_iterator<_Iterator>
| | |-TemplateTypeParmDecl 0x7ffff0265e48 <line:139:16, col:25> col:25
referenced typename _Iter
| | `-CXXConstructorDecl 0x7ffff02661b0 <line:140:9, line:141:26> line:140:9
reverse_iterator<_Iterator> 'void (const reverse_iterator<_Iter> &)'
| |   |-ParmVarDecl 0x7ffff0266090 <col:26, col:57> col:57 referenced __x
'const reverse_iterator<_Iter> &'
| |   |-CXXCtorInitializer Field 0x7ffff02649b8 'current' '_Iterator'
| |   | `-ParenListExpr 0x7ffff02676f0 <line:141:11, col:22> 'NULL TYPE'
| |   |   `-CallExpr 0x7ffff02676c8 <col:12, col:21> '<dependent type>'
| |   |     `-CXXDependentScopeMemberExpr 0x7ffff0267670 <col:12, col:16>
'<dependent type>' lvalue
| |   |       `-DeclRefExpr 0x7ffff0267648 <col:12> 'const
reverse_iterator<_Iter>' lvalue ParmVar 0x7ffff0266090 '__x' 'const
reverse_iterator<_Iter> &'
| |   `-CompoundStmt 0x7ffff0267750 <col:24, col:26>
| |-CXXMethodDecl 0x7ffff0266350 <line:146:7, line:148:25> line:147:7 base
'iterator_type (void) const'
| | `-CompoundStmt 0x7ffff02677e8 <line:148:7, col:25>
| |   `-ReturnStmt 0x7ffff02677d0 <col:9, col:16>
| |     `-MemberExpr 0x7ffff0267798 <col:16> 'const _Iterator' lvalue ->current
0x7ffff02649b8
| |       `-CXXThisExpr 0x7ffff0267780 <col:16> 'const
reverse_iterator<_Iterator> *' this
| |-CXXMethodDecl 0x7ffff02664a0 <line:160:7, line:165:7> line:161:7 referenced
operator* 'reference (void) const'
| | `-CompoundStmt 0x7ffff0267978 <line:162:7, line:165:7>
| |   |-DeclStmt 0x7ffff02678e0 <line:163:2, col:27>
| |   | `-VarDecl 0x7ffff0267830 <col:2, col:20> col:12 referenced __tmp
'_Iterator' cinit
| |   |   `-MemberExpr 0x7ffff02678a8 <col:20> 'const _Iterator' lvalue
->current 0x7ffff02649b8
| |   |     `-CXXThisExpr 0x7ffff0267890 <col:20> 'const
reverse_iterator<_Iterator> *' this
| |   `-ReturnStmt 0x7ffff0267960 <line:164:2, col:12>
| |     `-UnaryOperator 0x7ffff0267940 <col:9, col:12> '<dependent type>'
prefix '*'
| |       `-UnaryOperator 0x7ffff0267920 <col:10, col:12> '<dependent type>'
prefix '--'
| |         `-DeclRefExpr 0x7ffff02678f8 <col:12> '_Iterator' lvalue Var
0x7ffff0267830 '__tmp' '_Iterator'
| |-CXXMethodDecl 0x7ffff02665f0 <line:172:7, line:174:32> line:173:7
operator-> 'pointer (void) const'
| | `-CompoundStmt 0x7ffff0267a88 <line:174:7, col:32>
| |   `-ReturnStmt 0x7ffff0267a70 <col:9, col:29>
| |     `-UnaryOperator 0x7ffff0267a50 <col:16, col:29> '<dependent type>'
prefix '&'
| |       `-ParenExpr 0x7ffff0267a30 <col:17, col:29> '<dependent type>'
| |         `-CallExpr 0x7ffff0267a08 <col:18, col:28> '<dependent type>'
| |           `-MemberExpr 0x7ffff02679d0 <col:18, col:26> '<bound member
function type>' ->operator* 0x7ffff02664a0
| |             `-CXXThisExpr 0x7ffff02679b8 <col:18> 'const
reverse_iterator<_Iterator> *' this
| |-CXXMethodDecl 0x7ffff0266720 <line:181:7, line:186:7> line:182:7 operator++
'reverse_iterator<_Iterator> &(void)'
| | `-CompoundStmt 0x7ffff026a070 <line:183:7, line:186:7>
| |   |-UnaryOperator 0x7ffff0267b10 <line:184:2, col:4> '<dependent type>'
prefix '--'
| |   | `-MemberExpr 0x7ffff0267ad8 <col:4> '_Iterator' lvalue ->current
0x7ffff02649b8
| |   |   `-CXXThisExpr 0x7ffff0267ac0 <col:4> 'reverse_iterator<_Iterator> *'
this
| |   `-ReturnStmt 0x7ffff026a058 <line:185:2, col:10>
| |     `-UnaryOperator 0x7ffff026a038 <col:9, col:10> '<dependent type>'
prefix '*'
| |       `-CXXThisExpr 0x7ffff026a020 <col:10> 'reverse_iterator<_Iterator> *'
this
| |-CXXMethodDecl 0x7ffff02668a0 <line:193:7, line:199:7> line:194:7 operator++
'reverse_iterator<_Iterator> (int)'
| | |-ParmVarDecl 0x7ffff02667d8 <col:18> col:21 'int'
| | `-CompoundStmt 0x7ffff026a220 <line:195:7, line:199:7>
| |   |-DeclStmt 0x7ffff026a158 <line:196:2, col:32>
| |   | `-VarDecl 0x7ffff026a0c0 <col:2, col:28> col:19 referenced __tmp
'reverse_iterator<_Iterator>' nrvo cinit
| |   |   `-UnaryOperator 0x7ffff026a138 <col:27, col:28> '<dependent type>'
prefix '*'
| |   |     `-CXXThisExpr 0x7ffff026a120 <col:28> 'reverse_iterator<_Iterator>
*' this
| |   |-UnaryOperator 0x7ffff026a1c0 <line:197:2, col:4> '<dependent type>'
prefix '--'
| |   | `-MemberExpr 0x7ffff026a188 <col:4> '_Iterator' lvalue ->current
0x7ffff02649b8
| |   |   `-CXXThisExpr 0x7ffff026a170 <col:4> 'reverse_iterator<_Iterator> *'
this
| |   `-ReturnStmt 0x7ffff026a208 <line:198:2, col:9>
| |     `-DeclRefExpr 0x7ffff026a1e0 <col:9> 'reverse_iterator<_Iterator>'
lvalue Var 0x7ffff026a0c0 '__tmp' 'reverse_iterator<_Iterator>'
| |-CXXMethodDecl 0x7ffff0266970 <line:206:7, line:211:7> line:207:7 operator--
'reverse_iterator<_Iterator> &(void)'
| | `-CompoundStmt 0x7ffff026a340 <line:208:7, line:211:7>
| |   |-UnaryOperator 0x7ffff026a2d0 <line:209:2, col:4> '<dependent type>'
prefix '++'
| |   | `-MemberExpr 0x7ffff026a298 <col:4> '_Iterator' lvalue ->current
0x7ffff02649b8
| |   |   `-CXXThisExpr 0x7ffff026a280 <col:4> 'reverse_iterator<_Iterator> *'
this
| |   `-ReturnStmt 0x7ffff026a328 <line:210:2, col:10>
| |     `-UnaryOperator 0x7ffff026a308 <col:9, col:10> '<dependent type>'
prefix '*'
| |       `-CXXThisExpr 0x7ffff026a2f0 <col:10> 'reverse_iterator<_Iterator> *'
this
| |-CXXMethodDecl 0x7ffff0266ab0 <line:218:7, line:224:7> line:219:7 operator--
'reverse_iterator<_Iterator> (int)'
| | |-ParmVarDecl 0x7ffff0266a28 <col:18> col:21 'int'
| | `-CompoundStmt 0x7ffff026a4f0 <line:220:7, line:224:7>
| |   |-DeclStmt 0x7ffff026a428 <line:221:2, col:32>
| |   | `-VarDecl 0x7ffff026a390 <col:2, col:28> col:19 referenced __tmp
'reverse_iterator<_Iterator>' nrvo cinit
| |   |   `-UnaryOperator 0x7ffff026a408 <col:27, col:28> '<dependent type>'
prefix '*'
| |   |     `-CXXThisExpr 0x7ffff026a3f0 <col:28> 'reverse_iterator<_Iterator>
*' this
| |   |-UnaryOperator 0x7ffff026a490 <line:222:2, col:4> '<dependent type>'
prefix '++'
| |   | `-MemberExpr 0x7ffff026a458 <col:4> '_Iterator' lvalue ->current
0x7ffff02649b8
| |   |   `-CXXThisExpr 0x7ffff026a440 <col:4> 'reverse_iterator<_Iterator> *'
this
| |   `-ReturnStmt 0x7ffff026a4d8 <line:223:2, col:9>
| |     `-DeclRefExpr 0x7ffff026a4b0 <col:9> 'reverse_iterator<_Iterator>'
lvalue Var 0x7ffff026a390 '__tmp' 'reverse_iterator<_Iterator>'
| |-CXXMethodDecl 0x7ffff0266cb0 <line:231:7, line:233:49> line:232:7 operator+
'reverse_iterator<_Iterator> (difference_type) const'
| | |-ParmVarDecl 0x7ffff0266b90 <col:17, col:33> col:33 referenced __n
'difference_type':'typename __traits_type::difference_type'
| | `-CompoundStmt 0x7ffff026a648 <line:233:7, col:49>
| |   `-ReturnStmt 0x7ffff026a630 <col:9, col:46>
| |     `-CXXUnresolvedConstructExpr 0x7ffff026a600 <col:16, col:46>
'reverse_iterator<_Iterator>'
| |       `-BinaryOperator 0x7ffff026a5d8 <col:33, col:43> '<dependent type>'
'-'
| |         |-MemberExpr 0x7ffff026a578 <col:33> 'const _Iterator' lvalue
->current 0x7ffff02649b8
| |         | `-CXXThisExpr 0x7ffff026a560 <col:33> 'const
reverse_iterator<_Iterator> *' this
| |         `-DeclRefExpr 0x7ffff026a5b0 <col:43> 'difference_type':'typename
__traits_type::difference_type' lvalue ParmVar 0x7ffff0266b90 '__n'
'difference_type':'typename __traits_type::difference_type'
| |-CXXMethodDecl 0x7ffff0266e90 <line:241:7, line:246:7> line:242:7 operator+=
'reverse_iterator<_Iterator> &(difference_type)'
| | |-ParmVarDecl 0x7ffff0266d70 <col:18, col:34> col:34 referenced __n
'difference_type':'typename __traits_type::difference_type'
| | `-CompoundStmt 0x7ffff026a780 <line:243:7, line:246:7>
| |   |-CompoundAssignOperator 0x7ffff026a6f8 <line:244:2, col:13> '<dependent
type>' lvalue '-=' ComputeLHSTy='<dependent type>' ComputeResultTy='<dependent
type>'
| |   | |-MemberExpr 0x7ffff026a698 <col:2> '_Iterator' lvalue ->current
0x7ffff02649b8
| |   | | `-CXXThisExpr 0x7ffff026a680 <col:2> 'reverse_iterator<_Iterator> *'
this
| |   | `-DeclRefExpr 0x7ffff026a6d0 <col:13> 'difference_type':'typename
__traits_type::difference_type' lvalue ParmVar 0x7ffff0266d70 '__n'
'difference_type':'typename __traits_type::difference_type'
| |   `-ReturnStmt 0x7ffff026a768 <line:245:2, col:10>
| |     `-UnaryOperator 0x7ffff026a748 <col:9, col:10> '<dependent type>'
prefix '*'
| |       `-CXXThisExpr 0x7ffff026a730 <col:10> 'reverse_iterator<_Iterator> *'
this
| |-CXXMethodDecl 0x7ffff0266ff0 <line:253:7, line:255:49> line:254:7 operator-
'reverse_iterator<_Iterator> (difference_type) const'
| | |-ParmVarDecl 0x7ffff0266f50 <col:17, col:33> col:33 referenced __n
'difference_type':'typename __traits_type::difference_type'
| | `-CompoundStmt 0x7ffff026a8b8 <line:255:7, col:49>
| |   `-ReturnStmt 0x7ffff026a8a0 <col:9, col:46>
| |     `-CXXUnresolvedConstructExpr 0x7ffff026a870 <col:16, col:46>
'reverse_iterator<_Iterator>'
| |       `-BinaryOperator 0x7ffff026a848 <col:33, col:43> '<dependent type>'
'+'
| |         |-MemberExpr 0x7ffff026a7e8 <col:33> 'const _Iterator' lvalue
->current 0x7ffff02649b8
| |         | `-CXXThisExpr 0x7ffff026a7d0 <col:33> 'const
reverse_iterator<_Iterator> *' this
| |         `-DeclRefExpr 0x7ffff026a820 <col:43> 'difference_type':'typename
__traits_type::difference_type' lvalue ParmVar 0x7ffff0266f50 '__n'
'difference_type':'typename __traits_type::difference_type'
| |-CXXMethodDecl 0x7ffff0267150 <line:263:7, line:268:7> line:264:7 operator-=
'reverse_iterator<_Iterator> &(difference_type)'
| | |-ParmVarDecl 0x7ffff02670b0 <col:18, col:34> col:34 referenced __n
'difference_type':'typename __traits_type::difference_type'
| | `-CompoundStmt 0x7ffff026a9f0 <line:265:7, line:268:7>
| |   |-CompoundAssignOperator 0x7ffff026a968 <line:266:2, col:13> '<dependent
type>' lvalue '+=' ComputeLHSTy='<dependent type>' ComputeResultTy='<dependent
type>'
| |   | |-MemberExpr 0x7ffff026a908 <col:2> '_Iterator' lvalue ->current
0x7ffff02649b8
| |   | | `-CXXThisExpr 0x7ffff026a8f0 <col:2> 'reverse_iterator<_Iterator> *'
this
| |   | `-DeclRefExpr 0x7ffff026a940 <col:13> 'difference_type':'typename
__traits_type::difference_type' lvalue ParmVar 0x7ffff02670b0 '__n'
'difference_type':'typename __traits_type::difference_type'
| |   `-ReturnStmt 0x7ffff026a9d8 <line:267:2, col:10>
| |     `-UnaryOperator 0x7ffff026a9b8 <col:9, col:10> '<dependent type>'
prefix '*'
| |       `-CXXThisExpr 0x7ffff026a9a0 <col:10> 'reverse_iterator<_Iterator> *'
this
| `-CXXMethodDecl 0x7ffff0267330 <line:275:7, line:277:32> line:276:7
operator[] 'reference (difference_type) const'
|   |-ParmVarDecl 0x7ffff0267210 <col:18, col:34> col:34 referenced __n
'difference_type':'typename __traits_type::difference_type'
|   `-CompoundStmt 0x7ffff026ab10 <line:277:7, col:32>
|     `-ReturnStmt 0x7ffff026aaf8 <col:9, col:29>
|       `-UnaryOperator 0x7ffff026aad8 <col:16, col:29> '<dependent type>'
prefix '*'
|         `-ParenExpr 0x7ffff026aab8 <col:17, col:29> '<dependent type>'
|           `-BinaryOperator 0x7ffff026aa90 <col:18, col:26> '<dependent type>'
'+'
|             |-UnaryOperator 0x7ffff026aa48 <col:18, col:19> '<dependent
type>' prefix '*'
|             | `-CXXThisExpr 0x7ffff026aa30 <col:19> 'const
reverse_iterator<_Iterator> *' this
|             `-DeclRefExpr 0x7ffff026aa68 <col:26> 'difference_type':'typename
__traits_type::difference_type' lvalue ParmVar 0x7ffff0267210 '__n'
'difference_type':'typename __traits_type::difference_type'
|-ClassTemplateSpecializationDecl 0x7ffff06ee618 prev 0x7ffff0405508
<line:96:3, line:278:5> line:97:11 in TBuffer.h class reverse_iterator
| |-TemplateArgument type 'struct std::_Bit_const_iterator'
| `-<undeserialized declarations>
|-ClassTemplateSpecializationDecl 0x7ffff03e1fe0 <line:96:3, line:278:5>
line:97:11 class reverse_iterator definition
| |-public 'iterator<typename iterator_traits<struct
_Bit_const_iterator>::iterator_category, typename iterator_traits<struct
_Bit_const_iterator>::value_type, typename iterator_traits<struct
_Bit_const_iterator>::difference_type, typename iterator_traits<struct
_Bit_const_iterator>::pointer, typename iterator_traits<struct
_Bit_const_iterator>::reference>':'struct std::iterator<struct
std::random_access_iterator_tag, _Bool, long, const _Bool *, _Bool>'
| |-TemplateArgument type 'struct std::_Bit_const_iterator'
| |-CXXRecordDecl 0x7ffff0405508 prev 0x7ffff03e1fe0 <col:5, col:11> col:11
implicit class reverse_iterator
| |-AccessSpecDecl 0x7ffff0405598 <line:104:5, col:14> col:5 protected
| |-FieldDecl 0x7ffff04055d0 <line:105:7, col:17> col:17 current 'struct
std::_Bit_const_iterator':'struct std::_Bit_const_iterator'
| |-TypedefDecl 0x7ffff04056a8 <line:107:7, col:43> col:43 __traits_type
'iterator_traits<struct std::_Bit_const_iterator>':'struct
std::iterator_traits<struct std::_Bit_const_iterator>'
| |-AccessSpecDecl 0x7ffff04056f8 <line:109:5, col:11> col:5 public
| |-TypedefDecl 0x7ffff0405730 <line:110:7, col:29> col:29 iterator_type
'struct std::_Bit_const_iterator':'struct std::_Bit_const_iterator'
| |-TypedefDecl 0x7ffff0405830 <line:111:7, col:55> col:55 difference_type
'typename __traits_type::difference_type':'long'
| |-TypedefDecl 0x7ffff04058f0 <line:112:7, col:48> col:48 pointer 'typename
__traits_type::pointer':'const _Bool *'
| |-TypedefDecl 0x7ffff04059b0 <line:113:7, col:50> col:50 reference 'typename
__traits_type::reference':'_Bool'
| |-CXXConstructorDecl 0x7ffff0405a40 <line:121:7> col:7 reverse_iterator 'void
(void)'
| |-CXXConstructorDecl 0x7ffff0405c60 <line:126:7, line:127:7> col:7
reverse_iterator 'void (iterator_type)'
| | `-ParmVarDecl 0x7ffff0405b40 <col:24, col:38> col:38 __x
'iterator_type':'struct std::_Bit_const_iterator'
| |-CXXConstructorDecl 0x7ffff0405e60 <line:132:7> col:7 referenced
reverse_iterator 'void (const class std::reverse_iterator<struct
std::_Bit_const_iterator> &)'
| | `-ParmVarDecl 0x7ffff0405d78 <col:24, col:48> col:48 __x 'const class
std::reverse_iterator<struct std::_Bit_const_iterator> &'
| |-FunctionTemplateDecl 0x7ffff0406270 <line:139:7, line:140:9> col:9
reverse_iterator
| | |-TemplateTypeParmDecl 0x7ffff0405f38 <line:139:16, col:25> col:25 typename
_Iter
| | |-CXXConstructorDecl 0x7ffff04061b0 <line:140:9> col:9 reverse_iterator
'void (const reverse_iterator<_Iter> &)'
| | | `-ParmVarDecl 0x7ffff04060d0 <col:26, col:57> col:57 __x 'const
reverse_iterator<_Iter> &'
| | |-CXXConstructorDecl 0x7ffff06f1b10 parent 0x7ffff03e1fe0 prev
0x7ffff0409010 <col:9> col:9 in TBuffer.h reverse_iterator 'void (const
reverse_iterator<struct std::_Bit_const_iterator> &)'
| | | |-TemplateArgument type 'struct std::_Bit_const_iterator'
| | | `-ParmVarDecl 0x7ffff06f1d28 <col:26, col:57> col:57 in TBuffer.h __x
'const reverse_iterator<struct std::_Bit_const_iterator> &'
| | `-CXXConstructorDecl 0x7ffff0409010 <col:9> col:9 reverse_iterator 'void
(const reverse_iterator<struct std::_Bit_const_iterator> &)'
| |   |-TemplateArgument type 'struct std::_Bit_const_iterator'
| |   `-ParmVarDecl 0x7ffff0408f50 <col:26, col:57> col:57 __x 'const
reverse_iterator<struct std::_Bit_const_iterator> &'
| |-CXXMethodDecl 0x7ffff04063a0 <line:146:7, line:148:25> line:147:7 base
'iterator_type (void) const'
| |-CXXMethodDecl 0x7ffff04064d0 <line:160:7, line:165:7> line:161:7 operator*
'reference (void) const'
| |-CXXMethodDecl 0x7ffff0406600 <line:172:7, line:174:32> line:173:7
operator-> 'pointer (void) const'
| |-CXXMethodDecl 0x7ffff0406740 <line:181:7, line:186:7> line:182:7 operator++
'class std::reverse_iterator<struct std::_Bit_const_iterator> &(void)'
| |-CXXMethodDecl 0x7ffff04068c0 <line:193:7, line:199:7> line:194:7 operator++
'class std::reverse_iterator<struct std::_Bit_const_iterator> (int)'
| | `-ParmVarDecl 0x7ffff04067f8 <col:18> col:21 'int'
| |-CXXMethodDecl 0x7ffff04069a0 <line:206:7, line:211:7> line:207:7 operator--
'class std::reverse_iterator<struct std::_Bit_const_iterator> &(void)'
| |-CXXMethodDecl 0x7ffff0406ae0 <line:218:7, line:224:7> line:219:7 operator--
'class std::reverse_iterator<struct std::_Bit_const_iterator> (int)'
| | `-ParmVarDecl 0x7ffff0406a58 <col:18> col:21 'int'
| |-CXXMethodDecl 0x7ffff0406cd0 <line:231:7, line:233:49> line:232:7 operator+
'class std::reverse_iterator<struct std::_Bit_const_iterator> (difference_type)
const'
| | `-ParmVarDecl 0x7ffff0406bd0 <col:17, col:33> col:33 __n
'difference_type':'long'
| |-CXXMethodDecl 0x7ffff0406ea0 <line:241:7, line:246:7> line:242:7 operator+=
'class std::reverse_iterator<struct std::_Bit_const_iterator>
&(difference_type)'
| | `-ParmVarDecl 0x7ffff0406da0 <col:18, col:34> col:34 __n
'difference_type':'long'
| |-CXXMethodDecl 0x7ffff0406ff8 <line:253:7, line:255:49> line:254:7 operator-
'class std::reverse_iterator<struct std::_Bit_const_iterator> (difference_type)
const'
| | `-ParmVarDecl 0x7ffff0406f70 <col:17, col:33> col:33 __n
'difference_type':'long'
| |-CXXMethodDecl 0x7ffff0408ad0 <line:263:7, line:268:7> line:264:7 operator-=
'class std::reverse_iterator<struct std::_Bit_const_iterator>
&(difference_type)'
| | `-ParmVarDecl 0x7ffff04070c8 <col:18, col:34> col:34 __n
'difference_type':'long'
| `-CXXMethodDecl 0x7ffff0408c60 <line:275:7, line:277:32> line:276:7
operator[] 'reference (difference_type) const'
|   `-ParmVarDecl 0x7ffff0408ba0 <col:18, col:34> col:34 __n
'difference_type':'long'
|-ClassTemplateSpecializationDecl 0x7ffff06efd58 prev 0x7ffff03fe198
<line:96:3, line:278:5> line:97:11 in TBuffer.h class reverse_iterator
| |-TemplateArgument type 'struct std::_Bit_iterator'
| `-<undeserialized declarations>
|-ClassTemplateSpecializationDecl 0x7ffff03e22a0 <line:96:3, line:278:5>
line:97:11 class reverse_iterator definition
| |-public 'iterator<typename iterator_traits<struct
_Bit_iterator>::iterator_category, typename iterator_traits<struct
_Bit_iterator>::value_type, typename iterator_traits<struct
_Bit_iterator>::difference_type, typename iterator_traits<struct
_Bit_iterator>::pointer, typename iterator_traits<struct
_Bit_iterator>::reference>':'struct std::iterator<struct
std::random_access_iterator_tag, _Bool, long, struct std::_Bit_reference *,
struct std::_Bit_reference>'
| |-TemplateArgument type 'struct std::_Bit_iterator'
| |-CXXRecordDecl 0x7ffff03fe198 prev 0x7ffff03e22a0 <col:5, col:11> col:11
implicit class reverse_iterator
| |-AccessSpecDecl 0x7ffff03fe228 <line:104:5, col:14> col:5 protected
| |-FieldDecl 0x7ffff03fe260 <line:105:7, col:17> col:17 current 'struct
std::_Bit_iterator':'struct std::_Bit_iterator'
| |-TypedefDecl 0x7ffff03fe338 <line:107:7, col:43> col:43 __traits_type
'iterator_traits<struct std::_Bit_iterator>':'struct
std::iterator_traits<struct std::_Bit_iterator>'
| |-AccessSpecDecl 0x7ffff03fe388 <line:109:5, col:11> col:5 public
| |-TypedefDecl 0x7ffff03fe3c0 <line:110:7, col:29> col:29 iterator_type
'struct std::_Bit_iterator':'struct std::_Bit_iterator'
| |-TypedefDecl 0x7ffff03fe4c0 <line:111:7, col:55> col:55 difference_type
'typename __traits_type::difference_type':'long'
| |-TypedefDecl 0x7ffff03fe580 <line:112:7, col:48> col:48 pointer 'typename
__traits_type::pointer':'struct std::_Bit_reference *'
| |-TypedefDecl 0x7ffff03fe640 <line:113:7, col:50> col:50 reference 'typename
__traits_type::reference':'struct std::_Bit_reference'
| |-CXXConstructorDecl 0x7ffff03fe6d0 <line:121:7> col:7 reverse_iterator 'void
(void)'
| |-CXXConstructorDecl 0x7ffff03fe8b0 <line:126:7, line:127:7> col:7
reverse_iterator 'void (iterator_type)'
| | `-ParmVarDecl 0x7ffff03fe7d0 <col:24, col:38> col:38 __x
'iterator_type':'struct std::_Bit_iterator'
| |-CXXConstructorDecl 0x7ffff03feab0 <line:132:7> col:7 referenced
reverse_iterator 'void (const class std::reverse_iterator<struct
std::_Bit_iterator> &)'
| | `-ParmVarDecl 0x7ffff03fe9c8 <col:24, col:48> col:48 __x 'const class
std::reverse_iterator<struct std::_Bit_iterator> &'
| |-FunctionTemplateDecl 0x7ffff03fef00 <line:139:7, line:140:9> col:9
reverse_iterator
| | |-TemplateTypeParmDecl 0x7ffff03feb88 <line:139:16, col:25> col:25 typename
_Iter
| | |-CXXConstructorDecl 0x7ffff03fee40 <line:140:9> col:9 reverse_iterator
'void (const reverse_iterator<_Iter> &)'
| | | `-ParmVarDecl 0x7ffff03fed20 <col:26, col:57> col:57 __x 'const
reverse_iterator<_Iter> &'
| | |-CXXConstructorDecl 0x7ffff06f27f0 parent 0x7ffff03e22a0 prev
0x7ffff0400350 <col:9> col:9 in TBuffer.h reverse_iterator 'void (const
reverse_iterator<struct std::_Bit_iterator> &)'
| | | |-TemplateArgument type 'struct std::_Bit_iterator'
| | | `-ParmVarDecl 0x7ffff06f2a08 <col:26, col:57> col:57 in TBuffer.h __x
'const reverse_iterator<struct std::_Bit_iterator> &'
| | `-CXXConstructorDecl 0x7ffff0400350 <col:9> col:9 reverse_iterator 'void
(const reverse_iterator<struct std::_Bit_iterator> &)'
| |   |-TemplateArgument type 'struct std::_Bit_iterator'
| |   `-ParmVarDecl 0x7ffff0400290 <col:26, col:57> col:57 __x 'const
reverse_iterator<struct std::_Bit_iterator> &'
| |-CXXMethodDecl 0x7ffff03ff030 <line:146:7, line:148:25> line:147:7 base
'iterator_type (void) const'
| |-CXXMethodDecl 0x7ffff03ff160 <line:160:7, line:165:7> line:161:7 operator*
'reference (void) const'
| |-CXXMethodDecl 0x7ffff03ff2c0 <line:172:7, line:174:32> line:173:7
operator-> 'pointer (void) const'
| |-CXXMethodDecl 0x7ffff03ff400 <line:181:7, line:186:7> line:182:7 operator++
'class std::reverse_iterator<struct std::_Bit_iterator> &(void)'
| |-CXXMethodDecl 0x7ffff03ff580 <line:193:7, line:199:7> line:194:7 operator++
'class std::reverse_iterator<struct std::_Bit_iterator> (int)'
| | `-ParmVarDecl 0x7ffff03ff4b8 <col:18> col:21 'int'
| |-CXXMethodDecl 0x7ffff03ff660 <line:206:7, line:211:7> line:207:7 operator--
'class std::reverse_iterator<struct std::_Bit_iterator> &(void)'
| |-CXXMethodDecl 0x7ffff03ff7a0 <line:218:7, line:224:7> line:219:7 operator--
'class std::reverse_iterator<struct std::_Bit_iterator> (int)'
| | `-ParmVarDecl 0x7ffff03ff718 <col:18> col:21 'int'
| |-CXXMethodDecl 0x7ffff03ff990 <line:231:7, line:233:49> line:232:7 operator+
'class std::reverse_iterator<struct std::_Bit_iterator> (difference_type)
const'
| | `-ParmVarDecl 0x7ffff03ff890 <col:17, col:33> col:33 __n
'difference_type':'long'
| |-CXXMethodDecl 0x7ffff03ffb60 <line:241:7, line:246:7> line:242:7 operator+=
'class std::reverse_iterator<struct std::_Bit_iterator> &(difference_type)'
| | `-ParmVarDecl 0x7ffff03ffa60 <col:18, col:34> col:34 __n
'difference_type':'long'
| |-CXXMethodDecl 0x7ffff03ffcb8 <line:253:7, line:255:49> line:254:7 operator-
'class std::reverse_iterator<struct std::_Bit_iterator> (difference_type)
const'
| | `-ParmVarDecl 0x7ffff03ffc30 <col:17, col:33> col:33 __n
'difference_type':'long'
| |-CXXMethodDecl 0x7ffff03ffe10 <line:263:7, line:268:7> line:264:7 operator-=
'class std::reverse_iterator<struct std::_Bit_iterator> &(difference_type)'
| | `-ParmVarDecl 0x7ffff03ffd88 <col:18, col:34> col:34 __n
'difference_type':'long'
| `-CXXMethodDecl 0x7ffff03fffa0 <line:275:7, line:277:32> line:276:7
operator[] 'reference (difference_type) const'
|   `-ParmVarDecl 0x7ffff03ffee0 <col:18, col:34> col:34 __n
'difference_type':'long'
|-ClassTemplateSpecializationDecl 0x7ffff06ed650 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<const char *,
class std::basic_string<char> >'
|-ClassTemplateSpecializationDecl 0x7ffff06ed778 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<char *, class
std::basic_string<char> >'
|-ClassTemplateSpecializationDecl 0x7ffff06ed898 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<const wchar_t *,
class std::basic_string<wchar_t> >'
|-ClassTemplateSpecializationDecl 0x7ffff06ed9b8 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<wchar_t *, class
std::basic_string<wchar_t> >'
|-ClassTemplateSpecializationDecl 0x7ffff06edad8 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<const char16_t *,
class std::basic_string<char16_t, struct std::char_traits<char16_t>, class
std::allocator<char16_t> > >'
|-ClassTemplateSpecializationDecl 0x7ffff06edbf8 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<char16_t *, class
std::basic_string<char16_t, struct std::char_traits<char16_t>, class
std::allocator<char16_t> > >'
|-ClassTemplateSpecializationDecl 0x7ffff06edd18 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<const char32_t *,
class std::basic_string<char32_t, struct std::char_traits<char32_t>, class
std::allocator<char32_t> > >'
|-ClassTemplateSpecializationDecl 0x7ffff06ede38 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<char32_t *, class
std::basic_string<char32_t, struct std::char_traits<char32_t>, class
std::allocator<char32_t> > >'
|-ClassTemplateSpecializationDecl 0x7ffff06edf58 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'struct std::_Rb_tree_const_iterator<int *>'
|-ClassTemplateSpecializationDecl 0x7ffff06ee078 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'struct std::_Rb_tree_const_iterator<struct
TCollectionProxyInfo::EnvironBase *>'
|-ClassTemplateSpecializationDecl 0x7ffff06ee198 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<const int *,
class std::vector<int, class std::allocator<int> > >'
|-ClassTemplateSpecializationDecl 0x7ffff06ee2b8 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<int *, class
std::vector<int, class std::allocator<int> > >'
|-ClassTemplateSpecializationDecl 0x7ffff06ee3d8 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'struct std::_Rb_tree_iterator<int *>'
|-ClassTemplateSpecializationDecl 0x7ffff06ee4f8 <line:96:3, line:278:5>
line:97:11 class reverse_iterator
| `-TemplateArgument type 'struct std::_Rb_tree_iterator<struct
TCollectionProxyInfo::EnvironBase *>'
|-ClassTemplateSpecializationDecl 0x7ffff06eff78 <line:96:3, line:278:5>
line:97:11 in TBuffer.h class reverse_iterator
| `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<int *const *,
class std::vector<int *, class std::allocator<int *> > >'
`-ClassTemplateSpecializationDecl 0x7ffff06f0448 <line:96:3, line:278:5>
line:97:11 in TBuffer.h class reverse_iterator
  `-TemplateArgument type 'class __gnu_cxx::__normal_iterator<int **, class
std::vector<int *, class std::allocator<int *> > >'
$8 = void


=============================== Valgrind ====================================

==3821== Thread 2:
==3821== Invalid read of size 8
==3821==    at 0x22688ED:
llvm::pointee_iterator<clang::ClassTemplateSpecializationDecl**,
clang::ClassTemplateSpecializationDecl>::operator*() const (iterator.h:241)
==3821==    by 0x3517EEB: void
clang::ASTDeclWriter::AddTemplateSpecializations<clang::ClassTemplateDecl>(clang::ClassTemplateDecl*)
(ASTWriterDecl.cpp:217)
==3821==    by 0x350D653:
clang::ASTDeclWriter::VisitClassTemplateDecl(clang::ClassTemplateDecl*)
(ASTWriterDecl.cpp:1286)
==3821==    by 0x35145C6:
clang::declvisitor::Base<clang::declvisitor::make_ptr, clang::ASTDeclWriter,
void>::Visit(clang::Decl*) (DeclNodes.inc:189)
==3821==    by 0x3507911: clang::ASTDeclWriter::Visit(clang::Decl*)
(ASTWriterDecl.cpp:258)
==3821==    by 0x3511C79: clang::ASTWriter::WriteDecl(clang::ASTContext&,
clang::Decl*) (ASTWriterDecl.cpp:2130)
==3821==    by 0x34CB854: clang::ASTWriter::WriteASTCore(clang::Sema&,
llvm::StringRef, std::string const&, clang::Module*) (ASTWriter.cpp:4421)
==3821==    by 0x34C96A5: clang::ASTWriter::WriteAST(clang::Sema&, std::string
const&, clang::Module*, llvm::StringRef, bool) (ASTWriter.cpp:4081)
==3821==    by 0x35310EA:
clang::PCHGenerator::HandleTranslationUnit(clang::ASTContext&)
(GeneratePCH.cpp:54)
==3821==    by 0x27223D7:
clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&)
(MultiplexConsumer.cpp:286)
==3821==    by 0x32D67E2: clang::ParseAST(clang::Sema&, bool, bool)
(ParseAST.cpp:168)
==3821==    by 0x26FB0D1: clang::ASTFrontendAction::ExecuteAction()
(FrontendAction.cpp:539)
==3821==  Address 0xaeece98 is 8 bytes inside a block of size 136 free'd
==3821==    at 0x7D48E8E: realloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3821==    by 0x204BFAF: llvm::SmallVectorBase::grow_pod(void*, unsigned long,
unsigned long) (SmallVector.cpp:34)
==3821==    by 0x347650B:
llvm::SmallVectorTemplateCommon<clang::ClassTemplateSpecializationDecl*,
void>::grow_pod(unsigned long, unsigned long) (SmallVector.h:81)
==3821==    by 0x347198B:
llvm::SmallVectorTemplateBase<clang::ClassTemplateSpecializationDecl*,
true>::grow(unsigned long) (SmallVector.h:334)
==3821==    by 0x346C096:
llvm::SmallVectorTemplateBase<clang::ClassTemplateSpecializationDecl*,
true>::push_back(clang::ClassTemplateSpecializationDecl* const&)
(SmallVector.h:339)
==3821==    by 0x3463F01:
llvm::FoldingSetVector<clang::ClassTemplateSpecializationDecl,
llvm::SmallVector<clang::ClassTemplateSpecializationDecl*, 8u>
>::GetOrInsertNode(clang::ClassTemplateSpecializationDecl*) (FoldingSet.h:580)
==3821==    by 0x3421828:
clang::ASTDeclReader::VisitClassTemplateSpecializationDeclImpl(clang::ClassTemplateSpecializationDecl*)
(ASTReaderDecl.cpp:1928)
==3821==    by 0x345ADF0:
clang::ASTDeclReader::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*)
(ASTReaderDecl.cpp:262)
==3821==    by 0x345D306:
clang::declvisitor::Base<clang::declvisitor::make_ptr, clang::ASTDeclReader,
void>::Visit(clang::Decl*) (DeclNodes.inc:249)
==3821==    by 0x340FC84: clang::ASTDeclReader::Visit(clang::Decl*)
(ASTReaderDecl.cpp:424)
==3821==    by 0x34508E8: clang::ASTReader::ReadDeclRecord(unsigned int)
(ASTReaderDecl.cpp:3331)
==3821==    by 0x33BB0D1: clang::ASTReader::GetDecl(unsigned int)
(ASTReader.cpp:6467)
==3821== 
==3821== 
==3821== HEAP SUMMARY:
==3821==     in use at exit: 2,282,723 bytes in 1,677 blocks
==3821==   total heap usage: 45,044 allocs, 43,367 frees, 43,814,411 bytes
allocated
==3821== 
==3821== LEAK SUMMARY:
==3821==    definitely lost: 0 bytes in 0 blocks
==3821==    indirectly lost: 0 bytes in 0 blocks
==3821==      possibly lost: 27,456 bytes in 280 blocks
==3821==    still reachable: 2,255,267 bytes in 1,397 blocks
==3821==         suppressed: 0 bytes in 0 blocks
==3821== Rerun with --leak-check=full to see details of leaked memory
==3821== 
==3821== For counts of detected and suppressed errors, rerun with: -v
==3821== ERROR SUMMARY: 15 errors from 1 contexts (suppressed: 0 from 0)

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20160121/fbaaa46e/attachment-0001.html>


More information about the llvm-bugs mailing list