88 lines
2.0 KiB
Python
88 lines
2.0 KiB
Python
|
#!/usr/bin/python
|
||
|
import os
|
||
|
import re
|
||
|
import subprocess
|
||
|
|
||
|
LLVMToolDir = os.getenv('LLVMToolDir')
|
||
|
if not LLVMToolDir:
|
||
|
LLVMToolDir = '.'
|
||
|
|
||
|
cexe_res = []
|
||
|
ll_res = []
|
||
|
cbe_res = []
|
||
|
failure_list = []
|
||
|
|
||
|
def getList(fileExt):
|
||
|
fl = []
|
||
|
for name in os.listdir("."):
|
||
|
if re.search(fileExt, name):
|
||
|
fl.append(name)
|
||
|
fl.sort()
|
||
|
return fl
|
||
|
|
||
|
def genResults(fileExt, fl):
|
||
|
for names in fl:
|
||
|
if os.path.isfile(names):
|
||
|
if (fileExt == ".cexe"):
|
||
|
res = subprocess.call(["./%s" % (names)])
|
||
|
cexe_res.append(res) # append for each optimization level
|
||
|
cexe_res.append(res)
|
||
|
cexe_res.append(res)
|
||
|
cexe_res.append(res)
|
||
|
|
||
|
elif (fileExt == ".ll"):
|
||
|
res = subprocess.call([LLVMToolDir + "/lli", names])
|
||
|
ll_res.append(res)
|
||
|
|
||
|
elif (fileExt == ".cbe"):
|
||
|
res = subprocess.call(["./%s" % (names)])
|
||
|
cbe_res.append(res)
|
||
|
|
||
|
if (res != 6 and res != 25):
|
||
|
catstring = names + ":\tFailure [" + str(res) + "]"
|
||
|
failure_list.append(catstring)
|
||
|
|
||
|
def main():
|
||
|
print "Hunting for bugs... Please wait..."
|
||
|
|
||
|
cexeRegex = ".cexe$"
|
||
|
cexe = ".cexe"
|
||
|
file_list = getList(cexeRegex)
|
||
|
genResults(cexe, file_list)
|
||
|
print 'Running tests:', file_list
|
||
|
|
||
|
irRegex = ".ll$"
|
||
|
llIR = ".ll"
|
||
|
file_list = getList(irRegex)
|
||
|
genResults(llIR, file_list)
|
||
|
|
||
|
cbeRegex = ".cbe$"
|
||
|
cbe = ".cbe"
|
||
|
file_list = getList(cbeRegex)
|
||
|
genResults(cbe, file_list)
|
||
|
|
||
|
print 'cexe_res:', cexe_res
|
||
|
print 'll_res: ', ll_res
|
||
|
print 'cbe_res: ', cbe_res
|
||
|
|
||
|
if (cexe_res == ll_res == cbe_res):
|
||
|
print("Success!")
|
||
|
|
||
|
elif (cexe_res != ll_res == cbe_res):
|
||
|
print("Failure Detected between C and IR! Incorrect Return Values!")
|
||
|
for bug in failure_list:
|
||
|
print(bug)
|
||
|
|
||
|
elif (cexe_res == ll_res != cbe_res):
|
||
|
print("Failure Detected between IR and CBE! Incorrect Return Values!")
|
||
|
for bug in failure_list:
|
||
|
print(bug)
|
||
|
|
||
|
elif (cexe_res != ll_res != cbe_res):
|
||
|
print("Discrepancy between all three types! Incorrect Return Values!")
|
||
|
for bug in failure_list:
|
||
|
print(bug)
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|