Skip to content

Rtools gcc type errors, old data.table fwrite #7689

@tdhock

Description

@tdhock

I am trying to run a performance test,

tinfo <- atime::atime_pkg_test_info("../..")
names(tinfo$test.call)
tname <- "DT[by] fixed in #4558"
tcall <- tinfo$test.call[[tname]]
tres <- eval(tcall)

it includes comparison with old data.table versions, but Rtools 4.5 gcc on windows 11 gives me type errors.
I guess this is specific to Rtools gcc, because performance tests are working on Ubuntu GHA.

gcc  -I"c:/PROGRA~1/R/R-45~1.2/include" -DNDEBUG     -I"C:/rtools45/x86_64-w64-mingw32.static.posix/include"   -fopenmp   -O2 -Wall -std=gnu2x  -mfpmath=sse -msse2 -mstackrealign   -c fwrite.c -o fwrite.o
fwrite.c:60:6: error: conflicting types for 'writeBool8'; have 'void(int8_t *, int64_t,  char **)' {aka 'void(signed char *, long long int,  char **)'}
   60 | void writeBool8(int8_t *col, int64_t row, char **pch)
      |      ^~~~~~~~~~
In file included from fwrite.c:25:
fwrite.h:14:6: note: previous declaration of 'writeBool8' with type 'void(void)'
   14 | void writeBool8();
      |      ^~~~~~~~~~
fwrite.c:68:6: error: conflicting types for 'writeBool32'; have 'void(int32_t *, int64_t,  char **)' {aka 'void(int *, long long int,  char **)'}
   68 | void writeBool32(int32_t *col, int64_t row, char **pch)
      |      ^~~~~~~~~~~
fwrite.h:15:6: note: previous declaration of 'writeBool32' with type 'void(void)'
   15 | void writeBool32();
      |      ^~~~~~~~~~~
fwrite.c:80:6: error: conflicting types for 'writeBool32AsString'; have 'void(int32_t *, int64_t,  char **)' {aka 'void(int *, long long int,  char **)'}
   80 | void writeBool32AsString(int32_t *col, int64_t row, char **pch)
      |      ^~~~~~~~~~~~~~~~~~~
fwrite.h:16:6: note: previous declaration of 'writeBool32AsString' with type 'void(void)'
   16 | void writeBool32AsString();
      |      ^~~~~~~~~~~~~~~~~~~
fwrite.c:106:6: error: conflicting types for 'writeInt32'; have 'void(int32_t *, int64_t,  char **)' {aka 'void(int *, long long int,  char **)'}
  106 | void writeInt32(int32_t *col, int64_t row, char **pch)
      |      ^~~~~~~~~~
fwrite.h:17:6: note: previous declaration of 'writeInt32' with type 'void(void)'
   17 | void writeInt32();
      |      ^~~~~~~~~~
fwrite.c:122:6: error: conflicting types for 'writeInt64'; have 'void(int64_t *, int64_t,  char **)' {aka 'void(long long int *, long long int,  char **)'}
  122 | void writeInt64(int64_t *col, int64_t row, char **pch)
      |      ^~~~~~~~~~
fwrite.h:18:6: note: previous declaration of 'writeInt64' with type 'void(void)'
   18 | void writeInt64();
      |      ^~~~~~~~~~
fwrite.c:177:6: error: conflicting types for 'writeFloat64'; have 'void(double *, int64_t,  char **)' {aka 'void(double *, long long int,  char **)'}
  177 | void writeFloat64(double *col, int64_t row, char **pch)
      |      ^~~~~~~~~~~~
fwrite.h:19:6: note: previous declaration of 'writeFloat64' with type 'void(void)'
   19 | void writeFloat64();
      |      ^~~~~~~~~~~~
fwrite.c:301:6: error: conflicting types for 'writeComplex'; have 'void(Rcomplex *, int64_t,  char **)' {aka 'void(Rcomplex *, long long int,  char **)'}
  301 | void writeComplex(Rcomplex *col, int64_t row, char **pch)
      |      ^~~~~~~~~~~~
fwrite.h:20:6: note: previous declaration of 'writeComplex' with type 'void(void)'
   20 | void writeComplex();
      |      ^~~~~~~~~~~~
fwrite.c:340:6: error: conflicting types for 'writeITime'; have 'void(int32_t *, int64_t,  char **)' {aka 'void(int *, long long int,  char **)'}
  340 | void writeITime(int32_t *col, int64_t row, char **pch) {
      |      ^~~~~~~~~~
fwrite.h:21:6: note: previous declaration of 'writeITime' with type 'void(void)'
   21 | void writeITime();
      |      ^~~~~~~~~~
fwrite.c:394:6: error: conflicting types for 'writeDateInt32'; have 'void(int32_t *, int64_t,  char **)' {aka 'void(int *, long long int,  char **)'}
  394 | void writeDateInt32(int32_t *col, int64_t row, char **pch) {
      |      ^~~~~~~~~~~~~~
fwrite.h:22:6: note: previous declaration of 'writeDateInt32' with type 'void(void)'
   22 | void writeDateInt32();
      |      ^~~~~~~~~~~~~~
fwrite.c:398:6: error: conflicting types for 'writeDateFloat64'; have 'void(double *, int64_t,  char **)' {aka 'void(double *, long long int,  char **)'}
  398 | void writeDateFloat64(double *col, int64_t row, char **pch) {
      |      ^~~~~~~~~~~~~~~~
fwrite.h:23:6: note: previous declaration of 'writeDateFloat64' with type 'void(void)'
   23 | void writeDateFloat64();
      |      ^~~~~~~~~~~~~~~~
fwrite.c:402:6: error: conflicting types for 'writePOSIXct'; have 'void(double *, int64_t,  char **)' {aka 'void(double *, long long int,  char **)'}
  402 | void writePOSIXct(double *col, int64_t row, char **pch)
      |      ^~~~~~~~~~~~
fwrite.h:24:6: note: previous declaration of 'writePOSIXct' with type 'void(void)'
   24 | void writePOSIXct();
      |      ^~~~~~~~~~~~
fwrite.c:462:6: error: conflicting types for 'writeNanotime'; have 'void(int64_t *, int64_t,  char **)' {aka 'void(long long int *, long long int,  char **)'}
  462 | void writeNanotime(int64_t *col, int64_t row, char **pch)
      |      ^~~~~~~~~~~~~
fwrite.h:25:6: note: previous declaration of 'writeNanotime' with type 'void(void)'
   25 | void writeNanotime();
      |      ^~~~~~~~~~~~~
fwrite.c:545:6: error: conflicting types for 'writeString'; have 'void(const void *, int64_t,  char **)' {aka 'void(const void *, long long int,  char **)'}
  545 | void writeString(const void *col, int64_t row, char **pch)
      |      ^~~~~~~~~~~
fwrite.h:26:6: note: previous declaration of 'writeString' with type 'void(void)'
   26 | void writeString();
      |      ^~~~~~~~~~~
fwrite.c:550:6: error: conflicting types for 'writeCategString'; have 'void(const void *, int64_t,  char **)' {aka 'void(const void *, long long int,  char **)'}
  550 | void writeCategString(const void *col, int64_t row, char **pch)
      |      ^~~~~~~~~~~~~~~~
fwrite.h:27:6: note: previous declaration of 'writeCategString' with type 'void(void)'
   27 | void writeCategString();
      |      ^~~~~~~~~~~~~~~~
In file included from fwrite.h:6:
fwrite.c: In function 'fwriteMain':
fwrite.c:631:15: warning: format '%d' expects argument of type 'int', but argument 3 has type 'const void *' [-Wformat=]
  631 |     DTPRINT(_("\nargs.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%"PRId64" args.ncol=%d eolLen=%d\n"),
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
po.h:3:42: note: in definition of macro '_'
    3 | #define _(String) dgettext("data.table", String)
      |                                          ^~~~~~
fwrite.c:631:52: note: format string is defined here
  631 |     DTPRINT(_("\nargs.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%"PRId64" args.ncol=%d eolLen=%d\n"),
      |                                                   ~^
      |                                                    |
      |                                                    int
      |                                                   %p
fwrite.c:713:23: warning: format '%d' expects argument of type 'int', but argument 2 has type 'size_t' {aka 'long long unsigned int'} [-Wformat=]
  713 |     if (!buff) STOP(_("Unable to allocate %d MiB for header: %s"), headerLen / 1024 / 1024, strerror(errno));
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
po.h:3:42: note: in definition of macro '_'
    3 | #define _(String) dgettext("data.table", String)
      |                                          ^~~~~~
fwrite.c:713:44: note: format string is defined here
  713 |     if (!buff) STOP(_("Unable to allocate %d MiB for header: %s"), headerLen / 1024 / 1024, strerror(errno));
      |                                           ~^
      |                                            |
      |                                            int
      |                                           %lld
fwrite.c:748:18: warning: format '%d' expects argument of type 'int', but argument 2 has type 'size_t' {aka 'long long unsigned int'} [-Wformat=]
  748 |           STOP(_("Unable to allocate %d MiB for zbuffer: %s"), zbuffSize / 1024 / 1024, strerror(errno));  // # nocov
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
po.h:3:42: note: in definition of macro '_'
    3 | #define _(String) dgettext("data.table", String)
      |                                          ^~~~~~
fwrite.c:748:39: note: format string is defined here
  748 |           STOP(_("Unable to allocate %d MiB for zbuffer: %s"), zbuffSize / 1024 / 1024, strerror(errno));  // # nocov
      |                                      ~^
      |                                       |
      |                                       int
      |                                      %lld
fwrite.c:812:31: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long long unsigned int' [-Wformat=]
  812 |     STOP("Unable to allocate %d MB * %d thread buffers; '%d: %s'. Please read ?fwrite for nThread, buffMB and verbose options.",
      |                              ~^
      |                               |
      |                               int
      |                              %lld
  813 |          (size_t)buffSize/(1024^2), nth, errno, strerror(errno));
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~
      |                          |
      |                          long long unsigned int
fwrite.c:822:33: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long long unsigned int' [-Wformat=]
  822 |       STOP("Unable to allocate %d MB * %d thread compressed buffers; '%d: %s'. Please read ?fwrite for nThread, buffMB and verbose options.",
      |                                ~^
      |                                 |
      |                                 int
      |                                %lld
  823 |          (size_t)zbuffSize/(1024^2), nth, errno, strerror(errno));
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                           |
      |                           long long unsigned int
make: *** [c:/PROGRA~1/R/R-45~1.2/etc/x64/Makeconf:289: fwrite.o] Error 1
ERROR: compilation failed for package 'data.table.f750448a2efcd258b3aba57136ee6a95ce56b302'

Metadata

Metadata

Assignees

No one assigned

    Labels

    atimeRequests related to adding/improving/monitoring performance regression tests via atime.fwrite

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions