Opened 13 years ago

Closed 12 years ago

#3681 closed Bugs (wontfix)

Comeau throws "no operator==" and "no suitable conversion" errors

Reported by: Mateusz Loskot (mloskot) <mateusz@…> Owned by: Beman Dawes
Milestone: Boost 1.42.0 Component: filesystem
Version: Boost Development Trunk Severity: Problem
Keywords: como, comeau Cc:

Description

Building Boost.Filesystem library using Comeau C/C++ frontend with GCC 4.3.3 on Linux 32-bit (Ubuntu 9.03) compilation of filesystem/src/operations.cpp reports missing equal-to operators for some POSIX-related types:

como-linux.compile.c++ ../../../bin.v2/libs/filesystem/build/como-linux/debug/link-static/operations.o
Comeau C/C++ 4.3.10.1 (May  7 2008 12:23:21) for LINUX_INTEL_ELF_Beta
Copyright 1988-2008 Comeau Computing.  All rights reserved.
MODE:non-strict warnings C++ noC++0x_extensions

"../../../libs/filesystem/src/operations.cpp", line 1027: error: no operator
          "==" matches these operands
            operand types are: __off64_t == int
            : path_stat.st_size == 0 );
                                ^

"../../../libs/filesystem/src/operations.cpp", line 1041: error: no operator
          "==" matches these operands
            operand types are: __dev_t == __dev_t
              s1.st_dev == s2.st_dev
                        ^

"../../../libs/filesystem/src/operations.cpp", line 1042: error: no operator
          "==" matches these operands
            operand types are: __ino64_t == __ino64_t
              && s1.st_ino == s2.st_ino
                           ^

"../../../libs/filesystem/src/operations.cpp", line 1046: error: no operator
          "==" matches these operands
            operand types are: __off64_t == __off64_t
              && s1.st_size == s2.st_size
                            ^

Also, no suitable conversion errors are thrown for the same source code:

"../../../libs/filesystem/src/operations.cpp", line 1059: error: no suitable
          conversion function from "__off64_t" to "boost::uintmax_t" exists
            static_cast<boost::uintmax_t>(path_stat.st_size) );
                                          ^

"../../../libs/filesystem/src/operations.cpp", line 1077: error: no suitable
          conversion function from "__fsblkcnt64_t" to "boost::uintmax_t"
          exists
              = static_cast<boost::uintmax_t>(vfs.f_blocks) * BOOST_STATVFS_F_FRSIZE;
                                              ^

"../../../libs/filesystem/src/operations.cpp", line 1079: error: no suitable
          conversion function from "__fsblkcnt64_t" to "boost::uintmax_t"
          exists
              = static_cast<boost::uintmax_t>(vfs.f_bfree) * BOOST_STATVFS_F_FRSIZE;
                                              ^

"../../../libs/filesystem/src/operations.cpp", line 1081: error: no suitable
          conversion function from "__fsblkcnt64_t" to "boost::uintmax_t"
          exists
              = static_cast<boost::uintmax_t>(vfs.f_bavail) * BOOST_STATVFS_F_FRSIZE;
                                              ^

"../../../libs/filesystem/src/operations.cpp", line 1317: error: argument of
          type "dirent *" is incompatible with parameter of type "dirent64 *"
              { return ::readdir_r( dirp, entry, result ); }
                                          ^

"../../../libs/filesystem/src/operations.cpp", line 1317: error: argument of
          type "dirent **" is incompatible with parameter of type "dirent64 **"
              { return ::readdir_r( dirp, entry, result ); }
                                                 ^

"../../../libs/filesystem/src/operations.cpp", line 1322: error: a value of
          type "dirent64 *" cannot be assigned to an entity of type "dirent *"
            if ( (p = ::readdir( dirp )) == 0 )
                    ^

Here is complete como command:

como -tused -c --long_long  -DBOOST_ALL_NO_LIB=1 -DBOOST_All_STATIC_LINK=1 -DBOOST_SYSTEM_STATIC_LINK=1 -D_GNU_SOURCE=1 --no_inlining -O0 -g --exceptions -I"../../.."   -o "../../../bin.v2/libs/filesystem/build/como-linux/debug/link-static/operations.o" "../../../libs/filesystem/src/operations.cpp"

Change History (1)

comment:1 by Beman Dawes, 12 years ago

Resolution: wontfix
Status: newclosed

I'm closing this as "wontfix" since the Comeau compiler is not one compilers being regression tested regularly. Much filesystem code is platform dependent, so if an error is platform specific, it is just too difficult to trouble shoot unless that platform is being tested regularly.

Sorry,

--Beman

Note: See TracTickets for help on using tickets.