The bitcode upgrade process for DISubprogram was fragile and depended on the exact order in which DICompileUnit, DISubprogram, and the list of DISubprograms were emitted. This would work out okay with bitcode written by standard LLVM, but was not a rule that the old format had. This commit makes the upgrade process work when these metadata nodes are emitted in any order, and updates the existing upgrade-subprogram.ll test to cover all orders. The corresponding .bc file was written by a patched version of LLVM 3.7 that provides a hook to force nodes to be emitted in a specific order and can be inspected with llvm-bcanalyzer --dump.
1.1 KiB
1.1 KiB