ports/math/givaro/files/patch-src_kernel_recint_rfiddling.h
Dimitry Andric b47d453f0a math/givaro: fix build with clang 19
Clang 19 has become more strict about errors in member functions, which
results in errors building math/givaro:

  ./givaro/givaro/givaro/random-integer.h:94:51: error: no viable overloaded '='
     94 |                 const_cast<Integer_Domain&>(_ring)=R._ring;
        |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
  ./givaro/givaro/givaro/random-integer.h:94:51: note: type 'Integer_Domain' (aka 'ZRing<Integer>') is incomplete
     94 |                 const_cast<Integer_Domain&>(_ring)=R._ring;
        |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
  In file included from givintprime.C:19:
  In file included from ./givaro/givintprime.h:24:
  In file included from ./givaro/givaro/givinteger.h:25:
  ../../../src/kernel/ring/givaro/zring.h:123:13: warning: misleading indentation; statement is not part of the previous 'while' [-Wmisleading-indentation]
    123 |             return a; }
        |             ^
  ../../../src/kernel/ring/givaro/zring.h:121:11: note: previous statement is here
    121 |         { while (isZero(init(a, g())))
        |           ^

The `const_cast` line has been removed by upstream as part of
https://github.com/linbox-team/givaro/commit/b0cf33e1, but that commit
is rather large. It is enough to only delete the line.

Also fix a failure that occurs when running "make test":

  ../src/kernel/recint/rfiddling.h:170:29: error: no member named 'Low' in 'rint<K>'

This is because the expression `max.Low.Value` should actually be
`max.Value.Low`.

PR:		282830
Approved by:	pi (maintainer)
MFH:		2024Q4
2024-11-20 09:49:11 +01:00

11 lines
335 B
C++

--- src/kernel/recint/rfiddling.h.orig 2021-12-14 10:00:03 UTC
+++ src/kernel/recint/rfiddling.h
@@ -167,7 +167,7 @@ namespace RecInt
template <size_t K>
inline rint<K> rint<K>::maxFFLAS() {
rint<K> max;
- set_highest_bit(max.Low.Value);
+ set_highest_bit(max.Value.Low);
return max;
}