Sophie

Sophie

distrib > Fedora > 13 > x86_64 > by-pkgid > 7d5aecaee42d7dac7b1ddae8d7ca767f > files > 2

gappa-0.14.0-1.fc13.src.rpm

--- ./src/backends/backend.cpp.orig	2010-04-20 10:12:33.000000000 -0600
+++ ./src/backends/backend.cpp	2011-03-18 14:00:10.041737295 -0600
@@ -14,7 +14,7 @@
 std::ostream *out;
 
 typedef std::map< std::string, backend * > backend_map;
-static backend_map backends;
+static backend_map backends __attribute__((init_priority(110)));
 
 backend::backend(std::string const &name) {
   backends[name] = this;
--- ./src/backends/holl.cpp.orig	2010-04-20 10:12:49.000000000 -0600
+++ ./src/backends/holl.cpp	2011-03-18 14:00:10.042737330 -0600
@@ -410,4 +410,4 @@
   return name.str();
 }
 
-static struct holl_backend dummy;
+static struct holl_backend dummy __attribute__((init_priority(120)));
--- ./src/backends/coq.cpp.orig	2010-10-05 09:30:19.000000000 -0600
+++ ./src/backends/coq.cpp	2011-03-18 14:00:10.042737330 -0600
@@ -541,4 +541,4 @@
   return name;
 }
 
-static struct coq_backend dummy;
+static struct coq_backend dummy __attribute__((init_priority(120)));
--- ./src/backends/coq_lambda.cpp.orig	2010-10-05 05:03:34.000000000 -0600
+++ ./src/backends/coq_lambda.cpp	2011-03-18 14:00:10.043737363 -0600
@@ -766,4 +766,4 @@
   return s;
 }
 
-static struct coq_lambda_backend dummy;
+static struct coq_lambda_backend dummy __attribute__((init_priority(120)));
--- ./src/proofs/schemes.cpp.orig	2010-04-20 10:14:32.000000000 -0600
+++ ./src/proofs/schemes.cpp	2011-03-18 14:00:10.044737394 -0600
@@ -30,7 +30,7 @@
 struct scheme_factories: std::vector< scheme_factory const * > {
   ~scheme_factories() { for(iterator i = begin(), i_end = end(); i != i_end; ++i) delete *i; }
 };
-static scheme_factories factories;
+static scheme_factories factories __attribute__((init_priority(110)));
 
 scheme_factory::scheme_factory(predicated_real const &r): target(r) {
   factories.push_back(this);
--- ./src/proofs/rewriting.cpp.orig	2010-04-20 10:14:26.000000000 -0600
+++ ./src/proofs/rewriting.cpp	2011-03-18 14:00:10.044737394 -0600
@@ -169,7 +169,7 @@
 }
 
 // REWRITING_RULE
-rewriting_vect rewriting_rules;
+rewriting_vect rewriting_rules __attribute__((init_priority(110)));
 
 rewriting_rule::rewriting_rule
   (ast_real const *r1, ast_real const *r2, std::string const &n,
@@ -204,7 +204,7 @@
   return res;
 }
 
-static pattern a(0), b(1), c(2), d(3), a_b(-1), one(token_one);
+static pattern __attribute__((init_priority(130))) a(0), b(1), c(2), d(3), a_b(-1), one(token_one);
 
 #define abs pattern::abs
 #define sqrt pattern::sqrt
@@ -213,16 +213,16 @@
 #define REWRITING_NAME BOOST_PP_CAT(rewriting_rule_,__LINE__)
 
 #define REWRITE(name,lhs,rhs) \
-  static rewriting_rule REWRITING_NAME \
+  static rewriting_rule __attribute__((init_priority(140))) REWRITING_NAME \
   (lhs, rhs, #name, pattern_cond_vect(), pattern_excl_vect())
 #define REWRIT3(name,lhs,rhs,cond) \
-  static rewriting_rule REWRITING_NAME \
+  static rewriting_rule __attribute__((init_priority(140))) REWRITING_NAME \
   (lhs, rhs, #name, pattern_cond_vect() && cond, pattern_excl_vect())
 #define REWRITe(name,lhs,rhs,excl) \
-  static rewriting_rule REWRITING_NAME \
+  static rewriting_rule __attribute__((init_priority(140))) REWRITING_NAME \
   (lhs, rhs, #name, pattern_cond_vect(), pattern_excl_vect() && excl)
 #define REWRIT9(name,lhs,rhs,cond,excl) \
-  static rewriting_rule REWRITING_NAME \
+  static rewriting_rule __attribute__((init_priority(140))) REWRITING_NAME \
   (lhs, rhs, #name, pattern_cond_vect() && cond, pattern_excl_vect() && excl)
 
 /*
--- ./src/utils.hpp.orig	2010-04-20 10:12:16.000000000 -0600
+++ ./src/utils.hpp	2011-03-18 14:01:05.967744860 -0600
@@ -17,4 +17,9 @@
   static class_##name dummy_##name; \
   class_##name::class_##name()
 
+#define RUN_ONCE_PRI(name,pri) \
+  struct class_##name { class_##name(); }; \
+  static class_##name dummy_##name __attribute__((init_priority(pri))); \
+  class_##name::class_##name()
+
 #endif // UTILS_HPP
--- ./src/parser/ast.cpp.orig	2010-04-20 10:13:16.000000000 -0600
+++ ./src/parser/ast.cpp	2011-03-18 14:01:27.727745964 -0600
@@ -22,7 +22,8 @@
 
 extern std::string get_real_split(number const &f, int &exp, bool &zero);
 extern bool parameter_rfma;
-link_map accurates, approximates;
+link_map accurates __attribute__((init_priority(110)));
+link_map approximates __attribute__((init_priority(110)));
 
 template< class T >
 class cache {
@@ -102,11 +103,11 @@
   }  
 }
 
-static cache< ast_ident > ast_ident_cache;
+static cache< ast_ident > ast_ident_cache __attribute__((init_priority(110)));
 ast_ident *ast_ident::find(std::string const &s) { return ast_ident_cache.find(ast_ident(s)); }
-static cache< ast_number > ast_number_cache;
+static cache< ast_number > ast_number_cache __attribute__((init_priority(110)));
 ast_number *normalize(ast_number const &v) { return ast_number_cache.find(v); }
-static cache< ast_real > ast_real_cache;
+static cache< ast_real > ast_real_cache __attribute__((init_priority(110)));
 ast_real *normalize(ast_real const &v) {
   bool b;
   ast_real *p = ast_real_cache.find(v, &b);
@@ -121,7 +122,7 @@
 
 ast_number const *token_zero, *token_one;
 
-RUN_ONCE(load_numbers) {
+RUN_ONCE_PRI(load_numbers,120) {
   ast_number num;
   num.base = 0;
   num.exponent = 0;
--- ./src/arithmetic/relative.cpp.orig	2010-04-20 10:12:30.000000000 -0600
+++ ./src/arithmetic/relative.cpp	2011-03-18 14:00:10.045737423 -0600
@@ -107,7 +107,7 @@
   return &j->second;
 }
 
-static relative_function_generator dummy_add("add_rel", BOP_ADD);
-static relative_function_generator dummy_sub("sub_rel", BOP_SUB);
-static relative_function_generator dummy_mul("mul_rel", BOP_MUL);
-static relative_function_generator dummy_fma("fma_rel", COP_FMA);
+static relative_function_generator __attribute__((init_priority(120))) dummy_add("add_rel", BOP_ADD);
+static relative_function_generator __attribute__((init_priority(120))) dummy_sub("sub_rel", BOP_SUB);
+static relative_function_generator __attribute__((init_priority(120))) dummy_mul("mul_rel", BOP_MUL);
+static relative_function_generator __attribute__((init_priority(120))) dummy_fma("fma_rel", COP_FMA);
--- ./src/arithmetic/homogen.cpp.orig	2010-04-20 10:12:26.000000000 -0600
+++ ./src/arithmetic/homogen.cpp	2011-03-18 14:00:10.046737450 -0600
@@ -35,7 +35,7 @@
   return i * he;
 }
 
-static homogen_rounding_class dummy;
+static homogen_rounding_class dummy __attribute__((init_priority(120)));
 
 struct homogen_init_rounding_class: function_class
 {
@@ -57,7 +57,7 @@
   return i * he;
 }
 
-static homogen_init_rounding_class dummy_init;
+static homogen_init_rounding_class dummy_init __attribute__((init_priority(120)));
 
 struct floatx_rounding_class: function_class {
   default_function_generator generator;
@@ -83,4 +83,4 @@
   return interval(a, b);
 }
 
-static floatx_rounding_class dummy2;
+static floatx_rounding_class dummy2 __attribute__((init_priority(120)));
--- ./src/arithmetic/fixed.cpp.orig	2010-10-05 09:20:24.000000000 -0600
+++ ./src/arithmetic/fixed.cpp	2011-03-18 14:00:10.046737450 -0600
@@ -100,7 +100,7 @@
   return generate(get_direction(p[1]), min_exp);
 }
 
-static fixed_rounding_generator dummy;
+static fixed_rounding_generator dummy __attribute__((init_priority(120)));
 
 struct int_rounding_generator: function_generator {
   int_rounding_generator(): function_generator("int") {}
@@ -112,7 +112,7 @@
   return fixed_rounding_generator::generate(get_direction(p[0]), 0);
 }
 
-static int_rounding_generator dummy2;
+static int_rounding_generator dummy2 __attribute__((init_priority(120)));
 
 // FIX_OF_FIXED
 REGISTER_SCHEME_BEGIN(fix_of_fixed);
--- ./src/arithmetic/float.cpp.orig	2010-10-05 09:20:07.000000000 -0600
+++ ./src/arithmetic/float.cpp	2011-03-18 14:01:46.458748085 -0600
@@ -31,12 +31,12 @@
 };
 
 typedef std::map< ast_ident const *, float_format > float_formats;
-static float_formats formats;
+static float_formats formats __attribute__((init_priority(110)));
 
 #define REGISTER_FORMAT(name, e, p) \
   formats.insert(std::make_pair(ast_ident::find(#name), float_format(e, p)))
 
-RUN_ONCE(register_formats) {
+RUN_ONCE_PRI(register_formats,120) {
   REGISTER_FORMAT(ieee_32 ,   -149,  24);
   REGISTER_FORMAT(ieee_64 ,  -1074,  53);
   REGISTER_FORMAT(ieee_128, -16494, 113);
@@ -100,7 +100,7 @@
   return &j->second;
 }
 
-static float_rounding_generator dummy;
+static float_rounding_generator dummy __attribute__((init_priority(120)));
 
 interval float_rounding_class::enforce(interval const &i, std::string &name) const {
   number a = round_number(lower(i), &format, &float_format::roundUP);
--- ./src/numbers/round.cpp.orig	2010-04-20 10:13:12.000000000 -0600
+++ ./src/numbers/round.cpp	2011-03-18 14:02:34.687752043 -0600
@@ -113,7 +113,7 @@
 }
 
 typedef std::map< ast_ident const *, direction_type > rounding_directions;
-static rounding_directions directions;
+static rounding_directions directions __attribute__((init_priority(110)));
 rounding_fun direction_functions[nb_directions];
 char const *direction_names[nb_directions];
 
@@ -122,7 +122,7 @@
   direction_functions[ROUND_##type] = &gs_rounding::round##type; \
   direction_names[ROUND_##type] = #name
 
-RUN_ONCE(register_directions) {
+RUN_ONCE_PRI(register_directions,120) {
   REGISTER_DIRECTION(up, UP);
   REGISTER_DIRECTION(dn, DN);
   REGISTER_DIRECTION(zr, ZR);