44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
|
"""
|
||
|
Script to assemble a text IR file and run FileCheck on the output with the
|
||
|
provided arguments. The first 2 arguments are the paths to the llvm-as and
|
||
|
FileCheck binaries, followed by arguments to be passed to FileCheck. The last
|
||
|
argument is the text IR file to disassemble.
|
||
|
|
||
|
Usage:
|
||
|
python llvm-as-and-filecheck.py
|
||
|
<path to llvm-as> <path to FileCheck>
|
||
|
[arguments passed to FileCheck] <path to text IR file>
|
||
|
|
||
|
"""
|
||
|
import sys
|
||
|
import os
|
||
|
import subprocess
|
||
|
|
||
|
llvm_as = sys.argv[1]
|
||
|
filecheck = sys.argv[2]
|
||
|
filecheck_args = [
|
||
|
filecheck
|
||
|
]
|
||
|
|
||
|
filecheck_args.extend(sys.argv[3:-1])
|
||
|
ir_file = sys.argv[-1]
|
||
|
bitcode_file = ir_file + ".bc"
|
||
|
|
||
|
# Verify the IR actually parses since FileCheck is too dumb to know.
|
||
|
assemble = subprocess.Popen([llvm_as, "-o", bitcode_file, ir_file])
|
||
|
assemble.communicate()
|
||
|
|
||
|
if assemble.returncode != 0:
|
||
|
print("stderr:")
|
||
|
print(assemble.stderr)
|
||
|
print("stdout:")
|
||
|
print(assemble.stdout)
|
||
|
sys.exit(0)
|
||
|
|
||
|
filecheck_args.append("--input-file")
|
||
|
filecheck_args.append(ir_file)
|
||
|
|
||
|
check = subprocess.Popen(filecheck_args)
|
||
|
check.communicate()
|
||
|
sys.exit(check.returncode)
|