[pypy-svn] r8940 - pypy/dist/pypy/translator/llvm
cfbolz at codespeak.net
cfbolz at codespeak.net
Mon Feb 7 01:32:43 CET 2005
Author: cfbolz
Date: Mon Feb 7 01:32:43 2005
New Revision: 8940
Modified:
pypy/dist/pypy/translator/llvm/build_llvm_module.py
pypy/dist/pypy/translator/llvm/genllvm.py
Log:
Added some debug output and a way to turn off LLVM-optimization.
Modified: pypy/dist/pypy/translator/llvm/build_llvm_module.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/build_llvm_module.py (original)
+++ pypy/dist/pypy/translator/llvm/build_llvm_module.py Mon Feb 7 01:32:43 2005
@@ -14,7 +14,7 @@
from pypy.translator.tool.buildpyxmodule import make_c_from_pyxfile
from pypy.translator.tool import stdoutcapture
-debug = 0
+debug = 1
class CompileError(exceptions.Exception):
pass
@@ -26,18 +26,26 @@
old_system = os.system
os.system = system_trace
-def make_module_from_llvm(llvmfile, pyxfile):
+def make_module_from_llvm(llvmfile, pyxfile, optimize=True):
include_dir = autopath.this_dir
dirpath = llvmfile.dirpath()
lastdir = path.local()
os.chdir(str(dirpath))
modname = pyxfile.purebasename
- ops1 = ["llvm-as %s -f" % llvmfile,
- "llvmc -O3 %s.bc -o _%s.o" % (llvmfile.purebasename, modname),
- "llc _%s.o.bc -f -o _%s.s" % (modname, modname),
- "as _%s.s -o _%s.o" % (modname, modname)]
+ ops1 = ["llvm-as %s -f -o %s.bc" % (llvmfile, llvmfile.purebasename),
+ "llvmc -f -O3 %s.bc -o %s_optimized.o" % (llvmfile.purebasename,
+ llvmfile.purebasename),
+ "llc %s_optimized.o.bc -f -o %s.s" % (llvmfile.purebasename,
+ llvmfile.purebasename),
+ "as %s.s -o %s.o" % (llvmfile.purebasename, llvmfile.purebasename)]
+ if not optimize:
+ ops1 = ["llvm-as %s -f" % llvmfile,
+ "llc %s.bc -f -o %s.s" % (llvmfile.purebasename,
+ llvmfile.purebasename),
+ "as %s.s -o %s.o" % (llvmfile.purebasename,
+ llvmfile.purebasename)]
ops2 = ["gcc -c -fPIC -I/usr/include/python %s.c" % pyxfile.purebasename,
- "gcc -shared %s.o _%s.o -o %s.so" % (pyxfile.purebasename,
+ "gcc -shared %s.o %s.o -o %s.so" % (llvmfile.purebasename,
modname, modname)]
try:
if debug: print "modname", modname
@@ -46,9 +54,11 @@
try:
try:
for op in ops1:
+ print op
cmdexec(op)
make_c_from_pyxfile(pyxfile)
for op in ops2:
+ print op
cmdexec(op)
finally:
foutput, foutput = c.done()
Modified: pypy/dist/pypy/translator/llvm/genllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/genllvm.py (original)
+++ pypy/dist/pypy/translator/llvm/genllvm.py Mon Feb 7 01:32:43 2005
@@ -34,9 +34,9 @@
debug = 0
-def llvmcompile(transl):
+def llvmcompile(transl, optimize=True):
gen = LLVMGenerator(transl)
- return gen.compile()
+ return gen.compile(optimize)
class CompileError(exceptions.Exception):
@@ -53,7 +53,7 @@
self.llvm_reprs = {}
self.l_entrypoint = self.get_repr(self.translator.functions[0])
- def compile(self):
+ def compile(self, optimize=True):
from pypy.tool.udir import udir
name = self.l_entrypoint.llvmname()[1:]
llvmfile = udir.join('%s.ll' % name)
@@ -64,7 +64,8 @@
f = pyxfile.open('w')
f.write(self.l_entrypoint.get_pyrex_source())
f.close()
- mod = build_llvm_module.make_module_from_llvm(llvmfile, pyxfile)
+ mod = build_llvm_module.make_module_from_llvm(llvmfile, pyxfile,
+ optimize)
return getattr(mod, "wrap_%s" % name)
def get_global_tmp(self, used_by=None):
More information about the Pypy-commit
mailing list