Thanks for the help tracking down the problem.  I've committed a fixed test case at r136385.  The test now does two FileCheck's to find the instantiations and will not be order dependent.  Let me know if any more problems crop up.<br>
<br><div class="gmail_quote">On Thu, Jul 28, 2011 at 6:59 AM, Douglas Gregor <span dir="ltr"><<a href="mailto:dgregor@apple.com">dgregor@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
On Jul 27, 2011, at 5:19 PM, Richard Trieu wrote:<br>
<br>
> Author: rtrieu<br>
> Date: Wed Jul 27 19:19:05 2011<br>
> New Revision: 136306<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=136306&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=136306&view=rev</a><br>
> Log:<br>
> Add template instantiations to the output of -ast-dump.<br>
><br>
> Added:<br>
>    cfe/trunk/test/Misc/ast-dump-templates.cpp<br>
> Modified:<br>
>    cfe/trunk/include/clang/AST/DeclBase.h<br>
>    cfe/trunk/lib/AST/DeclPrinter.cpp<br>
>    cfe/trunk/lib/Frontend/ASTConsumers.cpp<br>
><br>
><br>
</div><div class="im">> +void DeclPrinter::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) {<br>
> +  if (PrintInstantiation) {<br>
> +    TemplateParameterList *Params = D->getTemplateParameters();<br>
> +    for (FunctionTemplateDecl::spec_iterator I = D->spec_begin(), E = D->spec_end();<br>
> +         I != E; ++I) {<br>
> +      PrintTemplateParameters(Params, (*I)->getTemplateSpecializationArgs());<br>
> +      Visit(*I);<br>
> +    }<br>
> +  }<br>
> +<br>
> +  return VisitRedeclarableTemplateDecl(D);<br>
> +}<br>
> +<br>
> +void DeclPrinter::VisitClassTemplateDecl(ClassTemplateDecl *D) {<br>
> +  if (PrintInstantiation) {<br>
> +    TemplateParameterList *Params = D->getTemplateParameters();<br>
> +    for (ClassTemplateDecl::spec_iterator I = D->spec_begin(), E = D->spec_end();<br>
> +         I != E; ++I) {<br>
> +      PrintTemplateParameters(Params, &(*I)->getTemplateArgs());<br>
> +      Visit(*I);<br>
> +      Out << '\n';<br>
> +    }<br>
> +  }<br>
> +<br>
> +  return VisitRedeclarableTemplateDecl(D);<br>
> +}<br>
> +<br>
<br>
</div>This is the reason for the instability in tests: spec_begin()/spec_end() iterators over a FoldingSet, so the order will differ from one invocation of Clang to the next.<br>
<br>
        - Doug<br>
</blockquote></div><br>