1*11ad5401SMatt Arsenault""" 2*11ad5401SMatt ArsenaultScript to assemble a text IR file and run FileCheck on the output with the 3*11ad5401SMatt Arsenaultprovided arguments. The first 2 arguments are the paths to the llvm-as and 4*11ad5401SMatt ArsenaultFileCheck binaries, followed by arguments to be passed to FileCheck. The last 5*11ad5401SMatt Arsenaultargument is the text IR file to disassemble. 6*11ad5401SMatt Arsenault 7*11ad5401SMatt ArsenaultUsage: 8*11ad5401SMatt Arsenault python llvm-as-and-filecheck.py 9*11ad5401SMatt Arsenault <path to llvm-as> <path to FileCheck> 10*11ad5401SMatt Arsenault [arguments passed to FileCheck] <path to text IR file> 11*11ad5401SMatt Arsenault 12*11ad5401SMatt Arsenault""" 13*11ad5401SMatt Arsenaultimport sys 14*11ad5401SMatt Arsenaultimport os 15*11ad5401SMatt Arsenaultimport subprocess 16*11ad5401SMatt Arsenault 17*11ad5401SMatt Arsenaultllvm_as = sys.argv[1] 18*11ad5401SMatt Arsenaultfilecheck = sys.argv[2] 19*11ad5401SMatt Arsenaultfilecheck_args = [ 20*11ad5401SMatt Arsenault filecheck 21*11ad5401SMatt Arsenault] 22*11ad5401SMatt Arsenault 23*11ad5401SMatt Arsenaultfilecheck_args.extend(sys.argv[3:-1]) 24*11ad5401SMatt Arsenaultir_file = sys.argv[-1] 25*11ad5401SMatt Arsenaultbitcode_file = ir_file + ".bc" 26*11ad5401SMatt Arsenault 27*11ad5401SMatt Arsenault# Verify the IR actually parses since FileCheck is too dumb to know. 28*11ad5401SMatt Arsenaultassemble = subprocess.Popen([llvm_as, "-o", bitcode_file, ir_file]) 29*11ad5401SMatt Arsenaultassemble.communicate() 30*11ad5401SMatt Arsenault 31*11ad5401SMatt Arsenaultif assemble.returncode != 0: 32*11ad5401SMatt Arsenault print("stderr:") 33*11ad5401SMatt Arsenault print(assemble.stderr) 34*11ad5401SMatt Arsenault print("stdout:") 35*11ad5401SMatt Arsenault print(assemble.stdout) 36*11ad5401SMatt Arsenault sys.exit(0) 37*11ad5401SMatt Arsenault 38*11ad5401SMatt Arsenaultfilecheck_args.append("--input-file") 39*11ad5401SMatt Arsenaultfilecheck_args.append(ir_file) 40*11ad5401SMatt Arsenault 41*11ad5401SMatt Arsenaultcheck = subprocess.Popen(filecheck_args) 42*11ad5401SMatt Arsenaultcheck.communicate() 43*11ad5401SMatt Arsenaultsys.exit(check.returncode) 44