coin-or / Couenne

Convex Over and Under Envelopes for Nonlinear Estimation
Eclipse Public License 1.0
72 stars 8 forks source link

Compilation fails: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister] #75

Open yurivict opened 1 year ago

yurivict commented 1 year ago
 c++ -DHAVE_CONFIG_H -I. -I. -I.. -I./.. -I./../expression -I./../convex -I./../branch -I./../bound_tightening -I./../problem -I./../util -I/usr/local/include/coin -I/usr/local/include/coin-or/asl -I/usr/local/include/coin-or/mumps -I/usr/local/include/coin-or -I/usr/local/include/coin -I/usr/local/include/coin-or/asl -I/usr/local/include/coin-or/mumps -I/usr/local/include/coin-or -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -DCOUENNE_BUILD -MT drawCuts.lo -MD -MP -MF .deps/drawCuts.Tpo -c drawCuts.cpp  -fPIC -DPIC -o .libs/drawCuts.o
rootQ.cpp:21:14: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
CouNumber Q (register int k, CouNumber x) {
             ^~~~~~~~~
rootQ.cpp:23:3: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  register CouNumber xp = x, Q = 1.;
  ^~~~~~~~~
rootQ.cpp:23:3: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  register CouNumber xp = x, Q = 1.;
  ^~~~~~~~~
rootQ.cpp:27:8: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  for (register int i=2; i<=k; i++) {
       ^~~~~~~~~
rootQ.cpp:47:5: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    register CouNumber 
    ^~~~~~~~~
rootQ.cpp:47:5: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    register CouNumber 
    ^~~~~~~~~
rootQ.cpp:47:5: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    register CouNumber 
    ^~~~~~~~~
rootQ.cpp:47:5: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    register CouNumber 
    ^~~~~~~~~
8 errors generated.
gmake[3]: *** [Makefile:420: rootQ.lo] Error 1
gmake[3]: *** Waiting for unfinished jobs....
In file included from drawCuts.cpp:13:
In file included from ./../problem/CouenneProblem.hpp:25:
./../expression/CouenneExpression.hpp:279:26: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
inline bool updateBound (register int sign, 
                         ^~~~~~~~~
./../expression/CouenneExpression.hpp:280:5: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
                         register CouNumber *dst, 
                         ^~~~~~~~~
./../expression/CouenneExpression.hpp:281:5: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
                         register CouNumber src) {
                         ^~~~~~~~~
./../expression/CouenneExpression.hpp:291:3: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  register double delta = (sign > 0) ? (*dst - src) : (src - *dst);
  ^~~~~~~~~
In file included from drawCuts.cpp:13:
In file included from ./../problem/CouenneProblem.hpp:28:
./../expression/CouenneDomain.hpp:84:25: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  inline CouNumber &x  (register int index) {return x_  [index];} ///< return current variable
                        ^~~~~~~~~
./../expression/CouenneDomain.hpp:85:25: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  inline CouNumber &lb (register int index) {return lb_ [index];} ///< return current lower bound
                        ^~~~~~~~~
./../expression/CouenneDomain.hpp:86:25: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  inline CouNumber &ub (register int index) {return ub_ [index];} ///< return current upper bound
                        ^~~~~~~~~
./../expression/CouenneDomain.hpp:156:25: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  inline CouNumber &x  (register int index) {return point_ -> x  (index);}   ///< current variable
                        ^~~~~~~~~
./../expression/CouenneDomain.hpp:157:25: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  inline CouNumber &lb (register int index) {return point_ -> lb (index);}   ///< current lower bound
                        ^~~~~~~~~
./../expression/CouenneDomain.hpp:158:25: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  inline CouNumber &ub (register int index) {return point_ -> ub (index);}   ///< current upper bound
                        ^~~~~~~~~
In file included from drawCuts.cpp:13:
./../problem/CouenneProblem.hpp:63:31: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    inline void color_vertex (register int k) {color = k;}
                              ^~~~~~~~~
./../problem/CouenneProblem.hpp:71:24: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    inline void bounds(register double a, register double b){ lb = a; ub = b;}
                       ^~~~~~~~~
./../problem/CouenneProblem.hpp:71:43: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
    inline void bounds(register double a, register double b){ lb = a; ub = b;}
                                          ^~~~~~~~~

Version: 0.5.8 clang-16 FreeBSD 14

merraksh commented 1 year ago

Thanks. The register keyword was removed from master and (just now) from stable/0.5. I hope to create a release/0.5.9 soon but it will take a few days.