# HG changeset patch # User John W. Eaton # Date 1363345628 14400 # Node ID 6aafe87a314421f9f8866d6061ef64ad010ae20d # Parent 9c4ac8f25a8c542cc45b5866483ee9d3a222ffe6 use int64_t for idx type if --enable-64 * configure.ac: Check for and use int64_t instead of long if --enable-64. (IDX_TYPE_LONG): Delete definion. Change all uses to check USE_64_BIT_IDX_T instead. * MArray-i.cc: Instantiate arrays of int64_t instead of long, but only if USE_64_BIT_IDX_T is defined. * acinclinde.m4 (OCTAVE_CHECK_SIZEOF_FORTRAN_INTEGER): Use int64_t instead of long. diff -r 9c4ac8f25a8c -r 6aafe87a3144 configure.ac --- a/configure.ac Fri Mar 15 09:54:53 2013 +0100 +++ b/configure.ac Fri Mar 15 07:07:08 2013 -0400 @@ -243,17 +243,9 @@ AC_CHECK_SIZEOF([void *]) AC_CHECK_SIZEOF([int]) AC_CHECK_SIZEOF([long]) + AC_CHECK_SIZEOF([int64_t]) if test $ac_cv_sizeof_void_p -eq 8; then - if test $ac_cv_sizeof_int -eq 8; then - OCTAVE_IDX_TYPE=int - elif test $ac_cv_sizeof_long -eq 8; then - OCTAVE_IDX_TYPE=long - AC_DEFINE(IDX_TYPE_LONG, 1, [Define to 1 if octave index type is long.]) - else - warn_64_bit="no suitable type found for octave_idx_type so disabling 64-bit features" - OCTAVE_CONFIGURE_WARNING([warn_64_bit]) - USE_64_BIT_IDX_T=no - fi + OCTAVE_IDX_TYPE=int64_t else warn_64_bit="pointers are not 64-bits wide; disabling 64-bit features" OCTAVE_CONFIGURE_WARNING([warn_64_bit]) @@ -2749,7 +2741,7 @@ #endif #ifdef USE_64_BIT_IDX_T -#define SIZEOF_OCTAVE_IDX_TYPE 8 +#define SIZEOF_OCTAVE_IDX_TYPE SIZEOF_INT64_T #else #define SIZEOF_OCTAVE_IDX_TYPE SIZEOF_INT #endif @@ -2822,10 +2814,10 @@ /* oct-types.h */ +#include + typedef OCTAVE_IDX_TYPE octave_idx_type; -#include - /* Tag indicating Octave config.h has been included */ #define OCTAVE_CONFIG_INCLUDED 1 ]) diff -r 9c4ac8f25a8c -r 6aafe87a3144 libinterp/dldfcn/amd.cc --- a/libinterp/dldfcn/amd.cc Fri Mar 15 09:54:53 2013 +0100 +++ b/libinterp/dldfcn/amd.cc Fri Mar 15 07:07:08 2013 -0400 @@ -44,7 +44,7 @@ #include "oct-sparse.h" #include "oct-locbuf.h" -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T #define AMD_NAME(name) amd_l ## name #else #define AMD_NAME(name) amd ## name diff -r 9c4ac8f25a8c -r 6aafe87a3144 libinterp/dldfcn/ccolamd.cc --- a/libinterp/dldfcn/ccolamd.cc Fri Mar 15 09:54:53 2013 +0100 +++ b/libinterp/dldfcn/ccolamd.cc Fri Mar 15 07:07:08 2013 -0400 @@ -43,7 +43,7 @@ #include "oct-sparse.h" #include "oct-locbuf.h" -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T #define CCOLAMD_NAME(name) ccolamd_l ## name #define CSYMAMD_NAME(name) csymamd_l ## name #else diff -r 9c4ac8f25a8c -r 6aafe87a3144 libinterp/dldfcn/colamd.cc --- a/libinterp/dldfcn/colamd.cc Fri Mar 15 09:54:53 2013 +0100 +++ b/libinterp/dldfcn/colamd.cc Fri Mar 15 07:07:08 2013 -0400 @@ -44,7 +44,7 @@ #include "oct-sparse.h" #include "oct-locbuf.h" -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T #define COLAMD_NAME(name) colamd_l ## name #define SYMAMD_NAME(name) symamd_l ## name #else diff -r 9c4ac8f25a8c -r 6aafe87a3144 libinterp/dldfcn/dmperm.cc --- a/libinterp/dldfcn/dmperm.cc Fri Mar 15 09:54:53 2013 +0100 +++ b/libinterp/dldfcn/dmperm.cc Fri Mar 15 07:07:08 2013 -0400 @@ -37,7 +37,7 @@ #include "SparseQR.h" #include "SparseCmplxQR.h" -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T #define CXSPARSE_NAME(name) cs_dl ## name #else #define CXSPARSE_NAME(name) cs_di ## name diff -r 9c4ac8f25a8c -r 6aafe87a3144 libinterp/dldfcn/symbfact.cc --- a/libinterp/dldfcn/symbfact.cc Fri Mar 15 09:54:53 2013 +0100 +++ b/libinterp/dldfcn/symbfact.cc Fri Mar 15 07:07:08 2013 -0400 @@ -132,7 +132,7 @@ A->packed = true; A->sorted = true; A->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T A->itype = CHOLMOD_LONG; #else A->itype = CHOLMOD_INT; diff -r 9c4ac8f25a8c -r 6aafe87a3144 libinterp/interp-core/ls-hdf5.h --- a/libinterp/interp-core/ls-hdf5.h Fri Mar 15 09:54:53 2013 +0100 +++ b/libinterp/interp-core/ls-hdf5.h Fri Mar 15 07:07:08 2013 -0400 @@ -202,7 +202,7 @@ hdf5_add_scalar_attr (hid_t loc_id, hid_t type_id, const char *attr_name, void *buf); -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T #define H5T_NATIVE_IDX H5T_NATIVE_LONG #else #define H5T_NATIVE_IDX H5T_NATIVE_INT diff -r 9c4ac8f25a8c -r 6aafe87a3144 liboctave/array/CSparse.cc --- a/liboctave/array/CSparse.cc Fri Mar 15 09:54:53 2013 +0100 +++ b/liboctave/array/CSparse.cc Fri Mar 15 07:07:08 2013 -0400 @@ -5661,7 +5661,7 @@ A->packed = true; A->sorted = true; A->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T A->itype = CHOLMOD_LONG; #else A->itype = CHOLMOD_INT; @@ -5904,7 +5904,7 @@ A->packed = true; A->sorted = true; A->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T A->itype = CHOLMOD_LONG; #else A->itype = CHOLMOD_INT; @@ -5928,7 +5928,7 @@ B->packed = true; B->sorted = true; B->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T B->itype = CHOLMOD_LONG; #else B->itype = CHOLMOD_INT; @@ -6195,7 +6195,7 @@ A->packed = true; A->sorted = true; A->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T A->itype = CHOLMOD_LONG; #else A->itype = CHOLMOD_INT; @@ -6417,7 +6417,7 @@ A->packed = true; A->sorted = true; A->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T A->itype = CHOLMOD_LONG; #else A->itype = CHOLMOD_INT; @@ -6441,7 +6441,7 @@ B->packed = true; B->sorted = true; B->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T B->itype = CHOLMOD_LONG; #else B->itype = CHOLMOD_INT; diff -r 9c4ac8f25a8c -r 6aafe87a3144 liboctave/array/CSparse.h --- a/liboctave/array/CSparse.h Fri Mar 15 09:54:53 2013 +0100 +++ b/liboctave/array/CSparse.h Fri Mar 15 07:07:08 2013 -0400 @@ -513,7 +513,7 @@ SPARSE_FORWARD_DEFS (MSparse, SparseComplexMatrix, ComplexMatrix, Complex) -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T #define UMFPACK_ZNAME(name) umfpack_zl_ ## name #else #define UMFPACK_ZNAME(name) umfpack_zi_ ## name diff -r 9c4ac8f25a8c -r 6aafe87a3144 liboctave/array/MArray-i.cc --- a/liboctave/array/MArray-i.cc Fri Mar 15 09:54:53 2013 +0100 +++ b/liboctave/array/MArray-i.cc Fri Mar 15 07:07:08 2013 -0400 @@ -32,7 +32,9 @@ #include "MArray.cc" template class OCTAVE_API MArray; -template class OCTAVE_API MArray; +#ifdef USE_64_BIT_IDX_T +template class OCTAVE_API MArray; +#endif // Explicit instantiation, as this seems to be required by weird compilers // like MSVC. This should be harmless on other compilers. @@ -42,7 +44,9 @@ template long xmax (long, long); INSTANTIATE_MARRAY_FRIENDS (int, OCTAVE_API) -INSTANTIATE_MARRAY_FRIENDS (long, OCTAVE_API) +#ifdef USE_64_BIT_IDX_T +INSTANTIATE_MARRAY_FRIENDS (int64_t, OCTAVE_API) +#endif template class OCTAVE_API MArray; template class OCTAVE_API MArray; diff -r 9c4ac8f25a8c -r 6aafe87a3144 liboctave/array/dSparse.cc --- a/liboctave/array/dSparse.cc Fri Mar 15 09:54:53 2013 +0100 +++ b/liboctave/array/dSparse.cc Fri Mar 15 07:07:08 2013 -0400 @@ -5859,7 +5859,7 @@ A->packed = true; A->sorted = true; A->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T A->itype = CHOLMOD_LONG; #else A->itype = CHOLMOD_INT; @@ -6075,7 +6075,7 @@ A->packed = true; A->sorted = true; A->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T A->itype = CHOLMOD_LONG; #else A->itype = CHOLMOD_INT; @@ -6099,7 +6099,7 @@ B->packed = true; B->sorted = true; B->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T B->itype = CHOLMOD_LONG; #else B->itype = CHOLMOD_INT; @@ -6337,7 +6337,7 @@ A->packed = true; A->sorted = true; A->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T A->itype = CHOLMOD_LONG; #else A->itype = CHOLMOD_INT; @@ -6571,7 +6571,7 @@ A->packed = true; A->sorted = true; A->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T A->itype = CHOLMOD_LONG; #else A->itype = CHOLMOD_INT; @@ -6595,7 +6595,7 @@ B->packed = true; B->sorted = true; B->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T B->itype = CHOLMOD_LONG; #else B->itype = CHOLMOD_INT; diff -r 9c4ac8f25a8c -r 6aafe87a3144 liboctave/array/dSparse.h --- a/liboctave/array/dSparse.h Fri Mar 15 09:54:53 2013 +0100 +++ b/liboctave/array/dSparse.h Fri Mar 15 07:07:08 2013 -0400 @@ -469,7 +469,7 @@ SPARSE_FORWARD_DEFS (MSparse, SparseMatrix, Matrix, double) -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T #define UMFPACK_DNAME(name) umfpack_dl_ ## name #else #define UMFPACK_DNAME(name) umfpack_di_ ## name diff -r 9c4ac8f25a8c -r 6aafe87a3144 liboctave/numeric/SparseCmplxQR.h --- a/liboctave/numeric/SparseCmplxQR.h Fri Mar 15 09:54:53 2013 +0100 +++ b/liboctave/numeric/SparseCmplxQR.h Fri Mar 15 07:07:08 2013 -0400 @@ -31,7 +31,7 @@ #include "CSparse.h" #include "oct-sparse.h" -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T #define CXSPARSE_ZNAME(name) cs_cl ## name #else #define CXSPARSE_ZNAME(name) cs_ci ## name diff -r 9c4ac8f25a8c -r 6aafe87a3144 liboctave/numeric/SparseQR.h --- a/liboctave/numeric/SparseQR.h Fri Mar 15 09:54:53 2013 +0100 +++ b/liboctave/numeric/SparseQR.h Fri Mar 15 07:07:08 2013 -0400 @@ -31,7 +31,7 @@ #include "CSparse.h" #include "oct-sparse.h" -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T #define CXSPARSE_DNAME(name) cs_dl ## name #else #define CXSPARSE_DNAME(name) cs_di ## name diff -r 9c4ac8f25a8c -r 6aafe87a3144 liboctave/numeric/sparse-base-chol.cc --- a/liboctave/numeric/sparse-base-chol.cc Fri Mar 15 09:54:53 2013 +0100 +++ b/liboctave/numeric/sparse-base-chol.cc Fri Mar 15 07:07:08 2013 -0400 @@ -136,7 +136,7 @@ ac->packed = true; ac->sorted = true; ac->nz = 0; -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T ac->itype = CHOLMOD_LONG; #else ac->itype = CHOLMOD_INT; diff -r 9c4ac8f25a8c -r 6aafe87a3144 liboctave/util/oct-sparse.h --- a/liboctave/util/oct-sparse.h Fri Mar 15 09:54:53 2013 +0100 +++ b/liboctave/util/oct-sparse.h Fri Mar 15 07:07:08 2013 -0400 @@ -87,7 +87,7 @@ || defined (HAVE_UFSPARSE_CHOLMOD_H) \ || defined (HAVE_CHOLMOD_CHOLMOD_H) \ || defined (HAVE_CHOLMOD_H)) -#ifdef IDX_TYPE_LONG +#ifdef USE_64_BIT_IDX_T #define CHOLMOD_NAME(name) cholmod_l_ ## name #else #define CHOLMOD_NAME(name) cholmod_ ## name diff -r 9c4ac8f25a8c -r 6aafe87a3144 m4/acinclude.m4 --- a/m4/acinclude.m4 Fri Mar 15 09:54:53 2013 +0100 +++ b/m4/acinclude.m4 Fri Mar 15 07:07:08 2013 -0400 @@ -861,13 +861,10 @@ LIBS="fintsize.$ac_objext $[]_AC_LANG_PREFIX[]LIBS" AC_LANG_PUSH(C) AC_RUN_IFELSE([AC_LANG_PROGRAM([[ - #include ]], [[ + #include + #include ]], [[ #ifdef USE_64_BIT_IDX_T - #if IDX_TYPE_LONG - typedef long octave_idx_type; - #else - typedef int octave_idx_type; - #endif + typedef int64_t octave_idx_type; #else typedef int octave_idx_type; #endif