This patch renumbers the metadata nodes in debug info testcases after https://reviews.llvm.org/D26769. This is a separate patch because it causes so much churn. This was implemented with a python script that pipes the testcases through llvm-as - | llvm-dis - and then goes through the original and new output side-by side to insert all comments at a close-enough location.
Here's the script for reference:
import re, sys, subprocess fn = sys.argv[1] stdout = subprocess.check_output('llvm-as %s -o - | llvm-dis -o -' % fn, shell=True) new = stdout.split('\n') out = [] comment = re.compile(r'^([^;]*)(;.*)$') ws = re.compile(r'^ *$') empty = re.compile(r'^ *\n$') for line in open(fn): if new and new[0].startswith('; ModuleID ='): new = new[1:] # If there was a comment on this line, carry it over. m = comment.match(line) if m: if ws.match(m.group(1)): if m.group(2).startswith('; Function Attrs'): continue out.append(line) else: cmnt = m.group(2) if cmnt.startswith('; preds =') or cmnt.count(r'#uses='): cmnt = '' out.append(new[0]+' '+cmnt+'\n') new = new[1:] else: if empty.match(line): if out[-1] <> '\n': out.append('\n') continue # Try to sync the original and the new output again by comparing the # first couple of characters. if new: if new[0] == '' and out and out[-1] == '\n': new = new[1:] continue out.append(new[0]+'\n') new = new[1:] if len(new) > 2 and new[2][:8] == line[:8]: out.append(new[0]+'\n') new = new[1:] if len(new) > 1 and new[1][:8] == line[:8]: out.append(new[0]+'\n') new = new[1:] if len(new) > 0 and new[0][:8] == line[:8]: out.append(new[0]+'\n') new = new[1:] f = open(fn, 'w') f.write(''.join(out+new)+'\n')
Is dropping all this debug info intentional?
& theer are other 'interesting' changes in other files, but rather than discussing all of them:
Perhaps it'd be better to just run this script over the files that are changed by your previous commit? Ah, I guess that's what you're already doing.
*ponders*