diff options
author | Michael Orlitzky <mjo@gentoo.org> | 2024-10-21 13:04:12 -0400 |
---|---|---|
committer | Michael Orlitzky <mjo@gentoo.org> | 2024-10-24 10:36:14 -0400 |
commit | e9cc5b98df6ccbfc116cd7340f1aa63e56a233cb (patch) | |
tree | 3bae8b8b3ac3bb0da91bc7cd53a6c204a7eb6d8b /sci-mathematics | |
parent | sys-cluster/kube-scheduler: add 1.29.10 (diff) | |
download | gentoo-e9cc5b98df6ccbfc116cd7340f1aa63e56a233cb.tar.gz gentoo-e9cc5b98df6ccbfc116cd7340f1aa63e56a233cb.tar.bz2 gentoo-e9cc5b98df6ccbfc116cd7340f1aa63e56a233cb.zip |
sci-mathematics/glpk: steal strict-aliasing patch from Fedora
This lets us bring LTO back without having to be responsible for a
custom patch.
Bug: https://bugs.gentoo.org/863047
Signed-off-by: Michael Orlitzky <mjo@gentoo.org>
Diffstat (limited to 'sci-mathematics')
-rw-r--r-- | sci-mathematics/glpk/files/glpk-5.0-aliasing.patch | 89 | ||||
-rw-r--r-- | sci-mathematics/glpk/glpk-5.0-r3.ebuild (renamed from sci-mathematics/glpk/glpk-5.0-r2.ebuild) | 10 |
2 files changed, 90 insertions, 9 deletions
diff --git a/sci-mathematics/glpk/files/glpk-5.0-aliasing.patch b/sci-mathematics/glpk/files/glpk-5.0-aliasing.patch new file mode 100644 index 000000000000..91ca8b189bb6 --- /dev/null +++ b/sci-mathematics/glpk/files/glpk-5.0-aliasing.patch @@ -0,0 +1,89 @@ +Stolen from Fedora: + + https://src.fedoraproject.org/rpms/glpk/raw/rawhide/f/glpk-4.65-alias.patch + +diff -urN glpk-4.65.orig/src/minisat/minisat.c glpk-4.65/src/minisat/minisat.c +--- glpk-4.65.orig/src/minisat/minisat.c 2018-02-16 00:00:00.000000000 -0700 ++++ glpk-4.65/src/minisat/minisat.c 2018-05-20 18:54:25.106624859 -0600 +@@ -135,11 +135,11 @@ struct clause_t + + #define clause_learnt(c) ((c)->size_learnt & 1) + +-#define clause_activity(c) \ +- (*((float*)&(c)->lits[(c)->size_learnt>>1])) ++#define clause_activity(c, a) \ ++ memcpy(&(a), &(c)->lits[(c)->size_learnt>>1], sizeof(float)) + + #define clause_setactivity(c, a) \ +- (void)(*((float*)&(c)->lits[(c)->size_learnt>>1]) = (a)) ++ memcpy(&(c)->lits[(c)->size_learnt>>1], &(a), sizeof(float)) + + /*====================================================================*/ + /* Encode literals in clause pointers: */ +@@ -313,14 +313,18 @@ static inline void act_clause_rescale(so + clause** cs = (clause**)vecp_begin(&s->learnts); + int i; + for (i = 0; i < vecp_size(&s->learnts); i++){ +- float a = clause_activity(cs[i]); +- clause_setactivity(cs[i], a * (float)1e-20); ++ float a; ++ clause_activity(cs[i], a); ++ a *= (float)1e-20; ++ clause_setactivity(cs[i], a); + } + s->cla_inc *= (float)1e-20; + } + + static inline void act_clause_bump(solver* s, clause *c) { +- float a = clause_activity(c) + s->cla_inc; ++ float a; ++ clause_activity(c, a); ++ a += s->cla_inc; + clause_setactivity(c,a); + if (a > 1e20) act_clause_rescale(s); + } +@@ -356,7 +360,7 @@ static clause* clause_new(solver* s, lit + c->lits[i] = begin[i]; + + if (learnt) +- *((float*)&c->lits[size]) = 0.0; ++ memset(&c->lits[size], 0, sizeof(float)); + + assert(begin[0] >= 0); + assert(begin[0] < s->size*2); +@@ -850,10 +854,17 @@ clause* solver_propagate(solver* s) + } + + static inline int clause_cmp (const void* x, const void* y) { +- return clause_size((clause*)x) > 2 +- && (clause_size((clause*)y) == 2 +- || clause_activity((clause*)x) +- < clause_activity((clause*)y)) ? -1 : 1; } ++ clause *cx = (clause *)x; ++ clause *cy = (clause *)y; ++ float fx, fy; ++ if (clause_size(cx) <= 2) ++ return 1; ++ if (clause_size(cy) == 2) ++ return -1; ++ clause_activity(cx, fx); ++ clause_activity(cy, fy); ++ return fx < fy ? -1 : 1; ++} + + void solver_reducedb(solver* s) + { +@@ -874,10 +885,12 @@ void solver_reducedb(solver* s) + learnts[j++] = learnts[i]; + } + for (; i < vecp_size(&s->learnts); i++){ ++ float f; ++ clause_activity(learnts[i], f); + if (clause_size(learnts[i]) > 2 + && reasons[lit_var(*clause_begin(learnts[i]))] + != learnts[i] +- && clause_activity(learnts[i]) < extra_lim) ++ && f < extra_lim) + clause_remove(s,learnts[i]); + else + learnts[j++] = learnts[i]; diff --git a/sci-mathematics/glpk/glpk-5.0-r2.ebuild b/sci-mathematics/glpk/glpk-5.0-r3.ebuild index ec74e25882a4..477d3016240a 100644 --- a/sci-mathematics/glpk/glpk-5.0-r2.ebuild +++ b/sci-mathematics/glpk/glpk-5.0-r3.ebuild @@ -36,6 +36,7 @@ RDEPEND="${DEPEND}" PATCHES=( "${FILESDIR}"/${PN}-4.65-fix-mysql-include-prefix.patch "${FILESDIR}"/${PN}-4.65-debundle-system-libs.patch + "${FILESDIR}"/${PN}-5.0-aliasing.patch ) src_prepare() { @@ -53,15 +54,6 @@ src_prepare() { } src_configure() { - # -Werror=strict-aliasing - # https://bugs.gentoo.org/863047 - # https://lists.gnu.org/archive/html/bug-glpk/2022-08/msg00000.html - # No upstream response... - # - # Do not trust it to LTO either. - append-flags -fno-strict-aliasing - filter-lto - local myconf if use mysql || use odbc; then myconf="--enable-dl" |