[pypy-svn] r12789 - pypy/dist/pypy/translator/llvm

ericvrp at codespeak.net ericvrp at codespeak.net
Wed May 25 10:33:45 CEST 2005


Author: ericvrp
Date: Wed May 25 10:33:45 2005
New Revision: 12789

Modified:
   pypy/dist/pypy/translator/llvm/build_llvm_module.py
Log:
added llvm compile support for x64-64


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	Wed May 25 10:33:45 2005
@@ -14,7 +14,7 @@
 from pypy.translator.tool.buildpyxmodule import make_c_from_pyxfile
 from pypy.translator.tool import stdoutcapture
 
-debug = 1
+debug = False
 
 class CompileError(exceptions.Exception):
     pass
@@ -27,22 +27,31 @@
     lastdir = path.local()
     os.chdir(str(dirpath))
     modname = pyxfile.purebasename
-    ops1 = ["llvm-as %s -f -o %s.bc" % (llvmfile, llvmfile.purebasename), 
-            "opt %s -f %s.bc -o %s_optimized.bc" % (OPTIMIZATION_SWITCHES,
-                                                    llvmfile.purebasename,
-                                                    llvmfile.purebasename),
-            "llc -enable-correct-eh-support %s_optimized.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 -enable-correct-eh-support %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/python2.3 %s.c" % pyxfile.purebasename,
-           "gcc -shared %s.o %s.o -o %s.so" % (llvmfile.purebasename,
-                                               modname, modname)]
+    b = llvmfile.purebasename
+
+    if sys.maxint == 2147483647:        #32 bit platform
+        if optimize:
+            ops1 = ["llvm-as %s.ll -f -o %s.bc" % (b, b), 
+                    "opt %s -f %s.bc -o %s_optimized.bc" % (OPTIMIZATION_SWITCHES, b, b),
+                    "llc -enable-correct-eh-support %s_optimized.bc -f -o %s.s" % (b, b),
+                    "as %s.s -o %s.o" % (b, b)]
+        else:
+            ops1 = ["llvm-as %s.ll -f -o %s.bc" % (b, b),
+                    "llc -enable-correct-eh-support %s.bc -f -o %s.s" % (b, b),
+                    "as %s.s -o %s.o" % (b, b)]
+        ops2 = ["gcc -c -shared -I/usr/include/python2.3 %s.c" % pyxfile.purebasename,
+                "gcc -shared %s.o %s.o -o %s.so" % (b, modname, modname)]
+    else:       #assume 64 bit platform (x86-64?)
+        #this special case for x86-64 (called ia64 in llvm) can go as soon as llc supports ia64 assembly output!
+        if optimize:
+            ops1 = ["llvm-as %s.ll -f -o %s.bc" % (b, b), 
+                    "opt %s -f %s.bc -o %s_optimized.bc" % (OPTIMIZATION_SWITCHES, b, b),
+                    "llc -enable-correct-eh-support %s_optimized.bc -march=c -f -o %s.c" % (b, b)]
+        else:
+            ops1 = ["llvm-as %s.ll -f -o %s.bc" % (b, b),
+                    "llc -enable-correct-eh-support %s.bc -march=c -f -o %s.c" % (b, b)]
+        ops2 = ["gcc -shared -fPIC -I/usr/include/python2.3 %s.c %s.c -o %s.so" % (b, modname, modname)]
+
     try:
         if debug: print "modname", modname
         c = stdoutcapture.Capture(mixed_out_err = True)
@@ -50,11 +59,11 @@
         try:
             try:
                 for op in ops1:
-                    print op
+                    if debug: print op
                     cmdexec(op)
                 make_c_from_pyxfile(pyxfile)
                 for op in ops2:
-                    print op
+                    if debug: print op
                     cmdexec(op)
             finally:
                 foutput, foutput = c.done()



More information about the Pypy-commit mailing list