]> granicus.if.org Git - clang/commitdiff
When rebuilding a dependent template specialization type to another
authorDouglas Gregor <dgregor@apple.com>
Mon, 7 Mar 2011 15:13:34 +0000 (15:13 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 7 Mar 2011 15:13:34 +0000 (15:13 +0000)
dependent template specialization type, make sure to set the keyword
location. Fixes some valgrind issues introduced in r127150.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127159 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/TreeTransform.h

index cab63d060c9e718ddfe85708b30e065f5b7e3bae..7f055c08cc0c4cea47c7ed4008a25cbf064bb6ae 100644 (file)
@@ -4516,7 +4516,7 @@ TransformDependentTemplateSpecializationType(TypeLocBuilder &TLB,
       = TLB.push<TemplateSpecializationTypeLoc>(NamedT);
     NamedTL.setLAngleLoc(TL.getLAngleLoc());
     NamedTL.setRAngleLoc(TL.getRAngleLoc());
-    for (unsigned I = 0, E = NamedTL.getNumArgs(); I != E; ++I)
+    for (unsigned I = 0, E = NewTemplateArgs.size(); I != E; ++I)
       NamedTL.setArgLocInfo(I, NewTemplateArgs[I].getLocInfo());
     
     // Copy information relevant to the elaborated type.
@@ -4526,18 +4526,19 @@ TransformDependentTemplateSpecializationType(TypeLocBuilder &TLB,
   } else if (isa<DependentTemplateSpecializationType>(Result)) {
     DependentTemplateSpecializationTypeLoc SpecTL
       = TLB.push<DependentTemplateSpecializationTypeLoc>(Result);
+    SpecTL.setKeywordLoc(TL.getKeywordLoc());
     SpecTL.setQualifierLoc(QualifierLoc);
     SpecTL.setLAngleLoc(TL.getLAngleLoc());
     SpecTL.setRAngleLoc(TL.getRAngleLoc());
     SpecTL.setNameLoc(TL.getNameLoc());
-    for (unsigned I = 0, E = SpecTL.getNumArgs(); I != E; ++I)
+    for (unsigned I = 0, E = NewTemplateArgs.size(); I != E; ++I)
       SpecTL.setArgLocInfo(I, NewTemplateArgs[I].getLocInfo());
   } else {
     TemplateSpecializationTypeLoc SpecTL
       = TLB.push<TemplateSpecializationTypeLoc>(Result);
     SpecTL.setLAngleLoc(TL.getLAngleLoc());
     SpecTL.setRAngleLoc(TL.getRAngleLoc());
-    for (unsigned I = 0, E = SpecTL.getNumArgs(); I != E; ++I)
+    for (unsigned I = 0, E = NewTemplateArgs.size(); I != E; ++I)
       SpecTL.setArgLocInfo(I, NewTemplateArgs[I].getLocInfo());
   }
   return Result;