[pypy-svn] r36554 - in pypy/dist/pypy/translator/llvm: . test

ericvrp at codespeak.net ericvrp at codespeak.net
Fri Jan 12 12:49:14 CET 2007


Author: ericvrp
Date: Fri Jan 12 12:49:04 2007
New Revision: 36554

Modified:
   pypy/dist/pypy/translator/llvm/buildllvm.py
   pypy/dist/pypy/translator/llvm/externs2ll.py
   pypy/dist/pypy/translator/llvm/test/runtest.py
   pypy/dist/pypy/translator/llvm/test/test_lltype.py
   pypy/dist/pypy/translator/llvm/test/test_rtagged.py
Log:
make some translator/llvm aware that they require gcc3.


Modified: pypy/dist/pypy/translator/llvm/buildllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/buildllvm.py	(original)
+++ pypy/dist/pypy/translator/llvm/buildllvm.py	Fri Jan 12 12:49:04 2007
@@ -15,14 +15,14 @@
         return False 
     return True
 
-def llvm_version():
-    v = os.popen('llvm-as -version 2>&1').read()
+def exe_version(exe):
+    v = os.popen(exe + ' -version 2>&1').read()
     v = ''.join([c for c in v if c.isdigit()])
     v = int(v) / 10.0
     return v
 
-def llvm_gcc_version():
-    v = os.popen('llvm-gcc --version 2>&1').read()
+def exe_version2(exe):
+    v = os.popen(exe + ' --version 2>&1').read()
     i = v.index(')')
     v = v[i+2:].split()[0].split('.')
     major, minor = v[0], ''.join([c for c in v[1] if c.isdigit()])

Modified: pypy/dist/pypy/translator/llvm/externs2ll.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/externs2ll.py	(original)
+++ pypy/dist/pypy/translator/llvm/externs2ll.py	Fri Jan 12 12:49:04 2007
@@ -7,7 +7,7 @@
 from pypy.rpython.rmodel import inputconst
 from pypy.rpython.lltypesystem import lltype
 from pypy.translator.llvm.codewriter import DEFAULT_CCONV
-from pypy.translator.llvm.buildllvm import llvm_gcc_version 
+from pypy.translator.llvm.buildllvm import exe_version2
 
 from pypy.tool.udir import udir
 
@@ -42,7 +42,7 @@
 
     global _llvm_gcc_version
     if not _llvm_gcc_version:
-        _llvm_gcc_version = llvm_gcc_version()
+        _llvm_gcc_version = exe_version2('llvm-gcc')
     if _llvm_gcc_version < 4.0:
         emit_llvm = ''
     else:

Modified: pypy/dist/pypy/translator/llvm/test/runtest.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/test/runtest.py	(original)
+++ pypy/dist/pypy/translator/llvm/test/runtest.py	Fri Jan 12 12:49:04 2007
@@ -1,7 +1,7 @@
 import py
 from pypy.tool import isolate
 from pypy.translator.llvm.genllvm import genllvm_compile
-from pypy.translator.llvm.buildllvm import llvm_is_on_path, llvm_version
+from pypy.translator.llvm.buildllvm import llvm_is_on_path, exe_version, exe_version2
 optimize_tests = False
 MINIMUM_LLVM_VERSION = 1.7
 MAXIMUM_LLVM_VERSION = 2.0
@@ -33,7 +33,7 @@
     if not llvm_is_on_path():
         py.test.skip("could not find one of llvm-as or llvm-gcc")
         return False
-    v = llvm_version()
+    v = exe_version('llvm-as')
     if v < MINIMUM_LLVM_VERSION:
         py.test.skip("llvm version not up-to-date (found "
                      "%.1f, should be >= %.1f)" % (v, MINIMUM_LLVM_VERSION))
@@ -44,6 +44,13 @@
         return False
     return True
 
+def gcc3_test():
+    v = exe_version2('gcc')
+    if int(v) != 3:
+        py.test.skip("test required gcc version 3 (found version %.1f)" % v)
+        return False
+    return True
+
 def compile_test(function, annotation, isolate=True, **kwds):
     " returns module and compiled function "    
     if llvm_test():

Modified: pypy/dist/pypy/translator/llvm/test/test_lltype.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/test/test_lltype.py	(original)
+++ pypy/dist/pypy/translator/llvm/test/test_lltype.py	Fri Jan 12 12:49:04 2007
@@ -240,6 +240,7 @@
     assert f() == floats_fn()
 
 def test_fixedsizearray():
+    gcc3_test()
     S = Struct("s", ('v', Signed))
     A7 = FixedSizeArray(Signed, 7)
     A3 = FixedSizeArray(S, 3)
@@ -268,6 +269,7 @@
     assert fn() == 607
 
 def test_recursivearray():
+    gcc3_test()
     A = ForwardReference()
     A.become(FixedSizeArray(Struct("S", ('a', Ptr(A))), 5))
     TREE = GcStruct("TREE", ("root", A), ("other", A))
@@ -298,6 +300,7 @@
     fn()
 
 def test_call_with_fixedsizearray():
+    gcc3_test()
     A = FixedSizeArray(Struct('s1', ('x', Signed)), 5)
     S = GcStruct('s', ('a', Ptr(A)))
     a = malloc(A, immortal=True)
@@ -313,6 +316,7 @@
     assert res == 123
 
 def test_more_prebuilt_arrays():
+    gcc3_test()
     A = FixedSizeArray(Struct('s1', ('x', Signed)), 5)
     S = GcStruct('s', ('a1', Ptr(A)), ('a2', A))
     s = malloc(S, zero=True)
@@ -332,6 +336,7 @@
     assert res == 60
 
 def test_fnptr_with_fixedsizearray():
+    gcc3_test()
     A = ForwardReference()
     F = FuncType([Ptr(A)], Signed)
     A.become(FixedSizeArray(Struct('s1', ('f', Ptr(F)), ('n', Signed)), 5))

Modified: pypy/dist/pypy/translator/llvm/test/test_rtagged.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/test/test_rtagged.py	(original)
+++ pypy/dist/pypy/translator/llvm/test/test_rtagged.py	Fri Jan 12 12:49:04 2007
@@ -68,6 +68,7 @@
 
 def test_tagged_boehm():
     runtest.llvm_test()
+    runtest.gcc3_test()
     t = Translation(entry_point, standalone=True, gc='boehm')
     try:
         exename = t.compile_llvm()



More information about the Pypy-commit mailing list