BitcodeWriter: Emit metadata in post-order (again)
Emit metadata nodes in post-order. The iterative algorithm from r266709
failed to maintain this property. After understanding my mistake, it
wasn't too hard to write a test with llvm-bcanalyzer (and I've actually
made this change once before: see r220340).
This also reverts the "noisy" testcase change from r266709. That should
have been more of a red flag :/.
Note: The same bug crept into the ValueMapper in r265456. I'm still
working on the fix.
llvm-svn: 266947
diff --git a/llvm/test/Bitcode/metadata-function-blocks.ll b/llvm/test/Bitcode/metadata-function-blocks.ll
index 7b335f7..f3e83c5 100644
--- a/llvm/test/Bitcode/metadata-function-blocks.ll
+++ b/llvm/test/Bitcode/metadata-function-blocks.ll
@@ -19,14 +19,14 @@
; Each node gets a new number. Bottom-up traversal of nodes.
!named = !{!6}
-; CHECK-NEXT: <NODE op0=2/>
-!4 = !{!"named and foo"}
-
; CHECK-NEXT: <NODE op0=1/>
-!5 = !{!"named"}
+!4 = !{!"named"}
-; CHECK-NEXT: <NODE op0=1 op1=5 op2=4/>
-!6 = !{!"named", !5, !4}
+; CHECK-NEXT: <NODE op0=2/>
+!5 = !{!"named and foo"}
+
+; CHECK-NEXT: <NODE op0=1 op1=4 op2=5/>
+!6 = !{!"named", !4, !5}
; CHECK-NEXT: <NODE op0=3/>
!7 = !{!"foo and bar"}