[apron] Fix the tests for GCC 4.7.1.

Jerry James jjames at fedoraproject.org
Wed Jul 25 21:07:41 UTC 2012


commit 17f95a3ef5ac2481efb65c22f8a07593a8707a96
Author: Jerry James <loganjerry at gmail.com>
Date:   Wed Jul 25 15:07:01 2012 -0600

    Fix the tests for GCC 4.7.1.

 apron-test.patch |  335 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 apron.spec       |    5 +-
 2 files changed, 339 insertions(+), 1 deletions(-)
---
diff --git a/apron-test.patch b/apron-test.patch
new file mode 100644
index 0000000..a3dbbb5
--- /dev/null
+++ b/apron-test.patch
@@ -0,0 +1,335 @@
+--- ./apronxx/apronxx_test.cc.orig	2009-12-22 06:33:22.000000000 -0700
++++ ./apronxx/apronxx_test.cc	2012-07-25 14:53:57.429804754 -0600
+@@ -327,11 +327,13 @@ void test_coeff()
+ 
+ void test_dimchange()
+ {
++  ap_dim_t temp_array1[3] = {1,2,3};
++  ap_dim_t temp_array2[3] = {3,2,1};
+   cout << endl << "dimchange" 
+        << endl << "=========" << endl << endl;
+-  dimchange d = dimchange(1,2,(ap_dim_t[]){1,2,3});
++  dimchange d = dimchange(1,2,temp_array1);
+   cout << "from array 1 2 3: " << d;
+-  d = (ap_dim_t[]){3,2,1};
++  d = temp_array2;
+   cout << "from array 3 2 1: " << d;
+   cout << d.get_intdim() << " " << d.get_realdim() << " " << d.get(0) << " " << d[1] << endl;
+   try { d.get(3); assert(0); } catch (out_of_range& b) {}
+@@ -362,15 +364,17 @@ void test_dimchange()
+ 
+ void test_dimperm()
+ {
++  ap_dim_t temp_array1[3] = {1,0,2};
++  ap_dim_t temp_array2[3] = {1,2,0};
+   cout << endl << "dimperm" 
+        << endl << "=======" << endl << endl;
+   dimperm i = id(3);
+   cout << "identity:         " << i << endl;
+-  dimperm d = dimperm(3,(ap_dim_t[]){1,0,2});
++  dimperm d = dimperm(3,temp_array1);
+   cout << "from array 1 0 2: " << d;
+   d = id(3);
+   cout << "identity:         " << d;  
+-  d = (ap_dim_t[]){1,2,0};
++  d = temp_array2;
+   cout << "from array 1 2 0: " << d;
+   cout << d.size() << " " << d.get(0) << " " << d[1] << endl;
+   try { d.get(3); assert(0); } catch (out_of_range& b) {}
+@@ -408,8 +412,10 @@ void test_dimperm()
+ 
+ void test_linexpr0()
+ {
+-  dimchange dim = dimchange(1,1,(ap_dim_t[]){0,2});
+-  dimperm perm  = dimperm(3,(ap_dim_t[]){1,0,2});
++  ap_dim_t temp_array1[2] = {0,2};
++  ap_dim_t temp_array2[3] = {1,0,2};
++  dimchange dim = dimchange(1,1,temp_array1);
++  dimperm perm  = dimperm(3,temp_array2);
+   dimperm perm2 = -perm;
+ 
+   // dense
+@@ -554,6 +560,8 @@ void test_linexpr0()
+ 
+ void test_lincons0()
+ {
++  ap_dim_t temp_array1[2] = {0,2};
++  ap_dim_t temp_array2[3] = {1,0,2};
+   cout << endl << "lincons0" 
+        << endl << "========" << endl << endl;
+   coeff a[] = {1,2,3};
+@@ -568,10 +576,10 @@ void test_lincons0()
+   lincons0 m = l;
+   assert(!l.is_unsat() && l.is_quasilinear() && l.is_linear());
+   cout << "copy 1x0 + 2x1 + 3x2 + 4 = 0:            " << m << endl;
+-  lincons0 n = lincons0(m,dimchange(2,0,(ap_dim_t[]){0,2}));
++  lincons0 n = lincons0(m,dimchange(2,0,temp_array1));
+   assert(!n.is_unsat() && n.is_quasilinear() && n.is_linear());
+   cout << "dimchange 1x1 + 2x2 + 3x4 + 4 = 0:       " << n << endl;
+-  lincons0 o = lincons0(m,dimperm(3,(ap_dim_t[]){1,0,2}));
++  lincons0 o = lincons0(m,dimperm(3,temp_array2));
+   assert(!o.is_unsat() && o.is_quasilinear() && o.is_linear());
+   cout << "dimperm 2x0 + 1x1 + 3x2 + 4 = 0:         " << o << endl;
+   cout << "unsat:                                   " << lincons0(unsat()) << endl;
+@@ -582,9 +590,9 @@ void test_lincons0()
+   cout << "unsat:                                   " << l << endl;
+   o = n = lincons0(AP_CONS_EQ,linexpr0(3,a,4));
+   cout << "chained copy 1x0 + 2x1 + 3x2 + 4 = 0:    " << o << endl;
+-  o.add_dimensions(dimchange(2,0,(ap_dim_t[]){0,2}));
++  o.add_dimensions(dimchange(2,0,temp_array1));
+   cout << "dimchange 1x1 + 2x2 + 3x4 + 4 = 0:       " << o << endl;
+-  n.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++  n.permute_dimensions(dimperm(3,temp_array2));
+   cout << "dimperm 2x0 + 1x1 + 3x2 + 4 = 0:         " << n << endl;
+   n.resize(2);
+   cout << "resize 2x0 + 1x1 + 4 = 0:                " << n << endl;
+@@ -620,6 +628,8 @@ void test_lincons0()
+ 
+ void test_lincons0_array()
+ {
++  ap_dim_t temp_array1[3] = {1,0,2};
++  ap_dim_t temp_array2[2] = {0,2};
+   cout << endl << "lincons0 array" 
+        << endl << "==============" << endl << endl;
+   coeff a[] = {1,2,3};
+@@ -631,9 +641,9 @@ void test_lincons0_array()
+   cout << "construct:    " << t << endl;
+   lincons0_array u = t;
+   cout << "copy:         " << t << endl; 
+-  lincons0_array v = lincons0_array(u,dimperm(3,(ap_dim_t[]){1,0,2}));
++  lincons0_array v = lincons0_array(u,dimperm(3,temp_array1));
+   cout << "permutation: " << v << endl;
+-  lincons0_array w = lincons0_array(u,dimchange(1,1,(ap_dim_t[]){0,2}));
++  lincons0_array w = lincons0_array(u,dimchange(1,1,temp_array2));
+   cout << "dim change:   " << w << endl;
+   lincons0 ar[3] = { lincons0(AP_CONS_EQ,linexpr0(3,a,5)), 
+ 		     lincons0(AP_CONS_EQ,linexpr0(2,b,4)),
+@@ -650,10 +660,10 @@ void test_lincons0_array()
+   cout << "from vector:  " << x << endl;  
+   w = v;
+   cout << "copy:         " << w << endl;
+-  w.add_dimensions(dimchange(1,1,(ap_dim_t[]){0,2}));
++  w.add_dimensions(dimchange(1,1,temp_array2));
+   cout << "dim change:   " << w << endl;
+   w = v;
+-  w.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++  w.permute_dimensions(dimperm(3,temp_array1));
+   cout << "permutation:  " << w << endl;
+   cout << "size:     " << w.size() << endl;
+   assert(w.is_linear() && w.is_quasilinear());
+@@ -675,6 +685,8 @@ void test_lincons0_array()
+ 
+ void test_generator0()
+ {
++  ap_dim_t temp_array1[2] = {0,2};
++  ap_dim_t temp_array2[3] = {1,0,2};
+   cout << endl << "generator0" 
+        << endl << "==========" << endl << endl;
+   coeff a[] = {1,2,3};
+@@ -688,17 +700,17 @@ void test_generator0()
+   generator0 l = generator0(AP_GEN_VERTEX,linexpr0(3,a,4));
+   generator0 m = l;
+   cout << "copy vert 1x0 + 2x1 + 3x2 + 4:          " << m << endl;
+-  generator0 n = generator0(m,dimchange(2,0,(ap_dim_t[]){0,2}));
++  generator0 n = generator0(m,dimchange(2,0,temp_array1));
+   cout << "dimchange vert 1x1 + 2x2 + 3x4 + 4:     " << n << endl;
+-  generator0 o = generator0(m,dimperm(3,(ap_dim_t[]){1,0,2}));
++  generator0 o = generator0(m,dimperm(3,temp_array2));
+   cout << "dimperm vert 2x0 + 1x1 + 3x2 + 4:       " << o << endl;
+   l = generator0(AP_GEN_RAY,linexpr0(4,b,5));
+   cout << "copy ray 4x0 + 3x1 + 2x2 + 1x3 + 5:     " << l << endl;
+   o = n = generator0(AP_GEN_LINE,linexpr0(3,a,4));
+   cout << "chained copy line 1x0 + 2x1 + 3x2 + 4:  " << o << endl;
+-  o.add_dimensions(dimchange(2,0,(ap_dim_t[]){0,2}));
++  o.add_dimensions(dimchange(2,0,temp_array1));
+   cout << "dimchange line 1x1 + 2x2 + 3x4 + 4:     " << o << endl;
+-  n.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++  n.permute_dimensions(dimperm(3,temp_array2));
+   cout << "dimperm line 2x0 + 1x1 + 3x2 + 4:       " << n << endl;
+   n.resize(2);
+   cout << "resize line 2x0 + 1x1 + 4:              " << n << endl;
+@@ -723,6 +735,8 @@ void test_generator0()
+ 
+ void test_generator0_array()
+ {
++  ap_dim_t temp_array1[3] = {1,0,2};
++  ap_dim_t temp_array2[2] = {0,2};
+   cout << endl << "generator0 array" 
+        << endl << "================" << endl << endl;
+   coeff a[] = {1,2,3};
+@@ -734,9 +748,9 @@ void test_generator0_array()
+   cout << "construct:    " << t << endl;
+   generator0_array u = t;
+   cout << "copy:         " << t << endl; 
+-  generator0_array v = generator0_array(u,dimperm(3,(ap_dim_t[]){1,0,2}));
++  generator0_array v = generator0_array(u,dimperm(3,temp_array1));
+   cout << "permutation: " << v << endl;
+-  generator0_array w = generator0_array(u,dimchange(1,1,(ap_dim_t[]){0,2}));
++  generator0_array w = generator0_array(u,dimchange(1,1,temp_array2));
+   cout << "dim change:   " << w << endl;
+   generator0 ar[3] = { generator0(AP_GEN_VERTEX,linexpr0(3,a,5)), 
+ 		       generator0(AP_GEN_VERTEX,linexpr0(2,b,4)),
+@@ -753,10 +767,10 @@ void test_generator0_array()
+   cout << "from vector:  " << x << endl;  
+   w = v;
+   cout << "copy:         " << w << endl;
+-  w.add_dimensions(dimchange(1,1,(ap_dim_t[]){0,2}));
++  w.add_dimensions(dimchange(1,1,temp_array2));
+   cout << "dim change:   " << w << endl;
+   w = v;
+-  w.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++  w.permute_dimensions(dimperm(3,temp_array1));
+   cout << "permutation:  " << w << endl;
+   cout << "size:     " << w.size() << endl;
+   w[0] = generator0(AP_GEN_LINE,linexpr0(2,b,88));
+@@ -775,6 +789,8 @@ void test_generator0_array()
+ 
+ void test_texpr0()
+ {
++  ap_dim_t temp_array1[2] = {0,2};
++  ap_dim_t temp_array2[3] = {1,0,2};
+   cout << endl << "texpr0"
+        << endl << "======" << endl << endl;
+   coeff a[] = {1,2,3};
+@@ -857,8 +873,8 @@ void test_texpr0()
+   x = y = sqrt(dim(0)+1); cout << "chained assign sqrt(x0+1): " << x << "; " << y << endl;
+ 
+   // dimensions
+-  dimchange dimc = dimchange(1,1,(ap_dim_t[]){0,2});
+-  dimperm perm  = dimperm(3,(ap_dim_t[]){1,0,2});
++  dimchange dimc = dimchange(1,1,temp_array1);
++  dimperm perm  = dimperm(3,temp_array2);
+   x = dim(0)/dim(1);
+   cout << "add dim x1/x2:         " << texpr0(x,dimc) << endl;
+   cout << "del dim ]-oo;+oo[/x0:  " << texpr0(x,dimc,false) << endl;
+@@ -1002,6 +1018,8 @@ void test_texpr0()
+ 
+ void test_tcons0()
+ {
++  ap_dim_t temp_array1[2] = {0,2};
++  ap_dim_t temp_array2[3] = {1,0,2};
+   cout << endl << "tcons0" 
+        << endl << "======" << endl << endl;
+   coeff a[] = {1,2,3};
+@@ -1026,9 +1044,9 @@ void test_tcons0()
+   assert(!l.is_interval_cst() && !l.is_interval_linear() && l.is_interval_polynomial() && 
+ 	 l.is_interval_polyfrac() && l.is_scalar());
+   cout << "copy x0 * x2 = 0:                    " << m << endl;
+-  tcons0 n = tcons0(m,dimchange(2,0,(ap_dim_t[]){0,2}));
++  tcons0 n = tcons0(m,dimchange(2,0,temp_array1));
+   cout << "dimchange x1 * x4 = 0:               " << n << endl;
+-  tcons0 o = tcons0(m,dimperm(3,(ap_dim_t[]){1,0,2}));
++  tcons0 o = tcons0(m,dimperm(3,temp_array2));
+   cout << "dimperm x1 * x2 = 0:                 " << o << endl;
+   cout << "unsat:                               " << tcons0(unsat()) << endl;
+   l = tcons0(AP_CONS_SUPEQ,dim(0));
+@@ -1040,12 +1058,12 @@ void test_tcons0()
+ 	 l.is_interval_polyfrac() && l.is_scalar());
+   o = n = tcons0(AP_CONS_EQ,dim(0)*dim(2)+2);
+   cout << "chained copy x0 * x2 +2 = 0:         " << o << endl;
+-  o.add_dimensions(dimchange(2,0,(ap_dim_t[]){0,2}));
++  o.add_dimensions(dimchange(2,0,temp_array1));
+   cout << "dimchange x1 * x4 + 2 = 0:           " << o << endl;
+   o = tcons0(AP_CONS_EQ,dim(0)*dim(3)+2);
+-  o.remove_dimensions(dimchange(2,0,(ap_dim_t[]){0,2}));
++  o.remove_dimensions(dimchange(2,0,temp_array1));
+   cout << "dimchange ]-oo;+oo[ * x1 + 2 = 0:    " << o << endl;
+-  n.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++  n.permute_dimensions(dimperm(3,temp_array2));
+   cout << "dimperm x1 * x2 + 2 = 0:              " << n << endl;
+   assert(n.get_constyp()==AP_CONS_EQ);
+   n.get_constyp()=AP_CONS_SUP;
+@@ -1084,6 +1102,8 @@ void test_tcons0()
+ 
+ void test_tcons0_array()
+ {
++  ap_dim_t temp_array1[3] = {1,0,2};
++  ap_dim_t temp_array2[2] = {0,2};
+   cout << endl << "tcons0 array" 
+        << endl << "============" << endl << endl;
+   coeff a[] = {1,2,3};
+@@ -1095,11 +1115,11 @@ void test_tcons0_array()
+   cout << "construct:    " << t << endl;
+   tcons0_array u = t;
+   cout << "copy:         " << t << endl; 
+-  tcons0_array v = tcons0_array(u,dimperm(3,(ap_dim_t[]){1,0,2}));
++  tcons0_array v = tcons0_array(u,dimperm(3,temp_array1));
+   cout << "permutation:  " << v << endl;
+-  tcons0_array w = tcons0_array(u,dimchange(1,1,(ap_dim_t[]){0,2}));
++  tcons0_array w = tcons0_array(u,dimchange(1,1,temp_array2));
+   cout << "add dim:      " << w << endl;
+-  tcons0_array ww = tcons0_array(u,dimchange(1,1,(ap_dim_t[]){0,2}),false);
++  tcons0_array ww = tcons0_array(u,dimchange(1,1,temp_array2),false);
+   cout << "rem dim:      " << ww << endl;
+   tcons0 ar[3] = { tcons0(AP_CONS_SUPEQ,dim(0)*dim(1)*dim(2)),
+ 		   tcons0(AP_CONS_EQ,dim(0)%dim(1)),
+@@ -1117,13 +1137,13 @@ void test_tcons0_array()
+   cout << "from vector:  " << x << endl;  
+   w = u;
+   cout << "copy:         " << w << endl;
+-  w.add_dimensions(dimchange(1,1,(ap_dim_t[]){0,2}));
++  w.add_dimensions(dimchange(1,1,temp_array2));
+   cout << "add dim:      " << w << endl;
+   w = u;
+-  w.remove_dimensions(dimchange(1,1,(ap_dim_t[]){0,2}));
++  w.remove_dimensions(dimchange(1,1,temp_array2));
+   cout << "del dim:      " << w << endl;
+   w = u;
+-  w.permute_dimensions(dimperm(3,(ap_dim_t[]){1,0,2}));
++  w.permute_dimensions(dimperm(3,temp_array1));
+   cout << "permutation:  " << w << endl;
+   cout << "size:     " << w.size() << endl;
+   assert(!w.is_interval_linear());
+@@ -1607,7 +1627,6 @@ void test_texpr1()
+   var af[] = { "f1","f3","f2"  };
+   environment env(ai,2,af,2);
+   environment env2(ai,3,af,3);
+-  coeff a[] = {1,2,3};
+   
+   // construction
+   cout << "construct 2:              " << texpr1(env,2) << endl;
+@@ -1806,7 +1825,6 @@ void test_tcons1_array()
+   var af[] = { "f1","f3","f2"  };
+   environment env(ai,2,af,2);
+   environment env2(ai,3,af,3);
+-  coeff a[] = {1,2,3};
+   coeff b[] = {5,3};
+   tcons1_array t = tcons1_array(env,2);
+   try { cout << t; assert(0); } catch (invalid_argument& r) { cout << endl; }
+@@ -1859,6 +1877,9 @@ void test_tcons1_array()
+ 
+ void test_abstract0(manager& m, manager& mm)
+ {
++  ap_dim_t temp_array1[3] = {1,2,3};
++  ap_dim_t temp_array2[5] = {0,1,3,4,2};
++  ap_dim_t temp_array3[3] = {0,1,2};
+   cout << "level 0" << endl << endl;
+ 
+   interval i[5] = { 
+@@ -2220,7 +2241,7 @@ void test_abstract0(manager& m, manager&
+ 
+   // dim change & permute
+ 
+-  dimchange dc = dimchange(1,2,(ap_dim_t[]){1,2,3});
++  dimchange dc = dimchange(1,2,temp_array1);
+   a1 = abstract0(m,2,3,ia);
+   add_dimensions(m,a2,a1,dc);
+   add_dimensions(m,a3,a1,dc,true);
+@@ -2235,7 +2256,7 @@ void test_abstract0(manager& m, manager&
+   assert(a1==abstract0(m,2,3,ia));
+   cout << "remove dim:         " << a1 << endl;
+ 
+-  dimperm dp = dimperm(5,(ap_dim_t[]){0,1,3,4,2});
++  dimperm dp = dimperm(5,temp_array2);
+   a1 = abstract0(m,2,3,ia);
+   permute_dimensions(m,a2,a1,dp);
+   a1.permute_dimensions(m,dp);
+@@ -2243,7 +2264,7 @@ void test_abstract0(manager& m, manager&
+   cout << "permute dim:        " << a1 << endl;
+   a1.permute_dimensions(m,-dp);
+   assert(a1==abstract0(m,2,3,ia));
+-  try { a1.permute_dimensions(m,dimperm(3,(ap_dim_t[]){0,1,2})); assert(0); }
++  try { a1.permute_dimensions(m,dimperm(3,temp_array3)); assert(0); }
+   catch (invalid_argument&c) {}
+     
+   // expand fold
diff --git a/apron.spec b/apron.spec
index 27ad46a..226368d 100644
--- a/apron.spec
+++ b/apron.spec
@@ -21,6 +21,8 @@ Source0:        http://apron.cri.ensmp.fr/library/%{name}-%{version}.tgz
 Patch0:         %{name}-weak.patch
 # Sent upstream 10 May 2012.  This patch adapts to mlgmpidl 1.2.
 Patch1:         %{name}-mlgmpidl12.patch
+# Not yet sent upstream.  Fix the tests for GCC 4.7.1.
+Patch2:         %{name}-test.patch
 
 BuildRequires:  mpfr-devel
 BuildRequires:  ppl-devel
@@ -79,6 +81,7 @@ Development files for the Ocaml interface to the APRON library.
 %setup -q
 %patch0
 %patch1
+%patch2
 
 # Set the configuration values
 sed -e "s|^# HAS_CPP.*|HAS_CPP = 1|" \
@@ -88,7 +91,7 @@ sed -e "s|^# HAS_CPP.*|HAS_CPP = 1|" \
     -e "s|^MLGMPIDL_PREFIX =.*|MLGMPIDL_PREFIX=%{_libdir}/ocaml/gmp|" \
     -e "s|^PPL_PREFIX =.*|PPL_PREFIX=%{_prefix}|" \
     -e "s|^-fPIC -O3 -DNDEBUG|$RPM_OPT_FLAGS -fPIC -DNDEBUG -Wl,--as-needed|" \
-    -e "s|^-fPIC -g -O0|$RPM_OPT_FLAGS -fPIC -O0 -Wl,--as-needed|" \
+    -e "s|^-fPIC -g -O0|$RPM_OPT_FLAGS -fPIC -Wl,--as-needed|" \
 %ifarch %{ocaml_arches}
 %if !%opt
     -e "s|^HAS_OCAMLOPT.*|# HAS_OCAMLOPT = 1|" \


More information about the scm-commits mailing list