Here is a new patch updating the Clang API. It is just the minimal changes to move over to the new API. The .inc files are bit-identical. For now, I'll postpone 2 and 3 for a more general TableGen "cleanup" patch-set at some unspecified time in the future unless you strongly feel otherwise.<div>
<br></div><div>After this patch, you should be able to apply 3-llvm.patch from the previous email and fully remove the old API.</div><div><br></div><div>I will see what I can do to ensure deterministic iteration order. I also have some major TableGen docs updates in the works.</div>
<div><br></div><div>--Sean Silva<br><br><div class="gmail_quote">On Mon, Jun 11, 2012 at 8:53 AM, Jakob Stoklund Olesen <span dir="ltr"><<a href="mailto:stoklund@2pi.dk" target="_blank">stoklund@2pi.dk</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 Jun 10, 2012, at 4:12 PM, Sean Silva wrote:<br>
> Also, I have attached a diff of the .inc files before and after the patch set. Most of the differences are places where I either added a call to `emitSourceFileHeader`, or changed an `OS << "TableGen'erated file"` to a call to emitSourceFileHeader. These changes are benign. There is a peculiar difference in the ARMGenAsmMatcher.inc, where some table entries and `case` labels change order (but are otherwise identical); after a little bit of investigation, I found that the ordering is determined by the iteration order of std::map's with pointers as keys, and hence the orders are inherently unstable, so this should not be problematic (although it may be desirable in the future to make these orders deterministic).<br>

<br>
</div>That's not good, we really want tblgen output to be stable. Do you know how to fix it? Otherwise, please file a PR.<br>
<div class="im"><br>
> 1-llvm.patch: migrate LLVM tablegen to new API<br>
<br>
</div>Committed as r158311.<br>
<div class="im"><br>
> 2-clang.patch: migrate Clang tablegen to new API<br>
<br>
</div>This patch is making me nervous. The changes to indentation are making it difficult to see what else is happening.<br>
<br>
It should be broken into 3:<br>
<br>
1. Refactor to avoid TableGenBackend. No functional changes.<br>
2. Unrelated functional changes:<br>
<br>
-void ClangAttrLateParsedListEmitter::run(raw_ostream &OS) {<br>
-  OS << "// This file is generated by TableGen. Do not edit.\n\n";<br>
+void EmitClangAttrLateParsedList(RecordKeeper &Records, raw_ostream &OS) {<br>
+  emitSourceFileHeader("Clang Attr Late Parsed List", OS);<br>
<br>
3. Indentation.<br>
<br>
Thanks,<br>
/jakob<br>
<br>
</blockquote></div><br></div>