brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 27854c8 Raw
44 lines · python
1"""2Script to assemble a text IR file and run FileCheck on the output with the3provided arguments. The first 2 arguments are the paths to the llvm-as and4FileCheck binaries, followed by arguments to be passed to FileCheck. The last5argument is the text IR file to disassemble.6 7Usage:8    python llvm-as-and-filecheck.py9      <path to llvm-as> <path to FileCheck>10      [arguments passed to FileCheck] <path to text IR file>11 12"""13import sys14import os15import subprocess16 17llvm_as = sys.argv[1]18filecheck = sys.argv[2]19filecheck_args = [20    filecheck21]22 23filecheck_args.extend(sys.argv[3:-1])24ir_file = sys.argv[-1]25bitcode_file = ir_file + ".bc"26 27# Verify the IR actually parses since FileCheck is too dumb to know.28assemble = subprocess.Popen([llvm_as, "-o", bitcode_file, ir_file])29assemble.communicate()30 31if assemble.returncode != 0:32    print("stderr:")33    print(assemble.stderr)34    print("stdout:")35    print(assemble.stdout)36    sys.exit(0)37 38filecheck_args.append("--input-file")39filecheck_args.append(ir_file)40 41check = subprocess.Popen(filecheck_args)42check.communicate()43sys.exit(check.returncode)44