Date: Tue, 23 Oct 2012 11:46:03 +0200 From: Dimitry Andric <dim@FreeBSD.org> To: Olivier Smedts <olivier@gid0.org> Cc: FreeBSD current mailing list <current@freebsd.org> Subject: Re: buildworld fails with clang, seems to be due to ATF import Message-ID: <5086675B.40907@FreeBSD.org> In-Reply-To: <CABzXLYOvE8cZFZ25TkHGbpgy--oppadtn=2-kQFCx32P1GQbfg@mail.gmail.com> References: <CABzXLYOvE8cZFZ25TkHGbpgy--oppadtn=2-kQFCx32P1GQbfg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------080802080305050801040601
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
On 2012-10-23 11:21, Olivier Smedts wrote:
> I can't buildworld with clang anymore, tried with one job, error
> below. Sorry for the noise if that's a known problem.
...
> /usr/obj/usr/src/tmp/usr/include/c++/4.2/bits/streambuf_iterator.h:162:20:
> error: '&&' within '||' [-Werror,-Wlogical-op-parentheses]
> return (__thiseof && __beof || (!__thiseof && !__beof));
> ~~~~~~~~~~^~~~~~~~~ ~~
Yes, these are several warnings in libstdc++ that should be fixed. I
have a few patches ready to commit tonight. Meanwhile, you can apply
the attached patch.
--------------080802080305050801040601
Content-Type: text/x-diff;
name="fix-libstdcxx-warnings-1.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="fix-libstdcxx-warnings-1.diff"
Index: contrib/atf/atf-report/atf-report.cpp
===================================================================
--- contrib/atf/atf-report/atf-report.cpp (revision 241921)
+++ contrib/atf/atf-report/atf-report.cpp (working copy)
@@ -381,7 +381,6 @@ class ticker_writer : public writer {
class xml_writer : public writer {
ostream_ptr m_os;
- size_t m_curtp, m_ntps;
std::string m_tcname, m_tpname;
static
Index: contrib/atf/atf-run/io.hpp
===================================================================
--- contrib/atf/atf-run/io.hpp (revision 241921)
+++ contrib/atf/atf-run/io.hpp (working copy)
@@ -378,11 +378,6 @@ class pistream :
public std::istream, utils::noncopyable
{
//!
- //! \brief The file handle managed by this stream.
- //!
- int m_fd;
-
- //!
//! \brief The systembuf object used to manage this stream's data.
//!
systembuf m_systembuf;
Index: contrib/libstdc++/config/os/bsd/freebsd/ctype_base.h
===================================================================
--- contrib/libstdc++/config/os/bsd/freebsd/ctype_base.h (revision 241921)
+++ contrib/libstdc++/config/os/bsd/freebsd/ctype_base.h (working copy)
@@ -38,8 +38,9 @@
_GLIBCXX_BEGIN_NAMESPACE(std)
/// @brief Base class for ctype.
- struct ctype_base
+ class ctype_base
{
+ public:
// Non-standard typedefs.
typedef const int* __to_type;
Index: contrib/libstdc++/include/bits/fstream.tcc
===================================================================
--- contrib/libstdc++/include/bits/fstream.tcc (revision 241921)
+++ contrib/libstdc++/include/bits/fstream.tcc (working copy)
@@ -641,21 +641,23 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
setbuf(char_type* __s, streamsize __n)
{
if (!this->is_open())
- if (__s == 0 && __n == 0)
- _M_buf_size = 1;
- else if (__s && __n > 0)
- {
- // This is implementation-defined behavior, and assumes that
- // an external char_type array of length __n exists and has
- // been pre-allocated. If this is not the case, things will
- // quickly blow up. When __n > 1, __n - 1 positions will be
- // used for the get area, __n - 1 for the put area and 1
- // position to host the overflow char of a full put area.
- // When __n == 1, 1 position will be used for the get area
- // and 0 for the put area, as in the unbuffered case above.
- _M_buf = __s;
- _M_buf_size = __n;
- }
+ {
+ if (__s == 0 && __n == 0)
+ _M_buf_size = 1;
+ else if (__s && __n > 0)
+ {
+ // This is implementation-defined behavior, and assumes that
+ // an external char_type array of length __n exists and has
+ // been pre-allocated. If this is not the case, things will
+ // quickly blow up. When __n > 1, __n - 1 positions will be
+ // used for the get area, __n - 1 for the put area and 1
+ // position to host the overflow char of a full put area.
+ // When __n == 1, 1 position will be used for the get area
+ // and 0 for the put area, as in the unbuffered case above.
+ _M_buf = __s;
+ _M_buf_size = __n;
+ }
+ }
return this;
}
Index: contrib/libstdc++/include/bits/locale_facets.h
===================================================================
--- contrib/libstdc++/include/bits/locale_facets.h (revision 241921)
+++ contrib/libstdc++/include/bits/locale_facets.h (working copy)
@@ -4335,8 +4335,9 @@ _GLIBCXX_END_LDBL_NAMESPACE
/**
* @brief Messages facet base class providing catalog typedef.
*/
- struct messages_base
+ class messages_base
{
+ public:
typedef int catalog;
};
Index: contrib/libstdc++/include/bits/locale_facets.tcc
===================================================================
--- contrib/libstdc++/include/bits/locale_facets.tcc (revision 241921)
+++ contrib/libstdc++/include/bits/locale_facets.tcc (working copy)
@@ -316,7 +316,7 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE
int __sep_pos = 0;
while (!__testeof)
{
- if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep
+ if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
|| __c == __lc->_M_decimal_point)
break;
else if (__c == __lit[__num_base::_S_izero])
@@ -558,7 +558,7 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE
int __sep_pos = 0;
while (!__testeof)
{
- if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep
+ if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
|| __c == __lc->_M_decimal_point)
break;
else if (__c == __lit[__num_base::_S_izero]
@@ -748,16 +748,20 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE
const char_type __c = *__beg;
if (__testf)
- if (__n < __lc->_M_falsename_size)
- __testf = __c == __lc->_M_falsename[__n];
- else
- break;
+ {
+ if (__n < __lc->_M_falsename_size)
+ __testf = __c == __lc->_M_falsename[__n];
+ else
+ break;
+ }
if (__testt)
- if (__n < __lc->_M_truename_size)
- __testt = __c == __lc->_M_truename[__n];
- else
- break;
+ {
+ if (__n < __lc->_M_truename_size)
+ __testt = __c == __lc->_M_truename[__n];
+ else
+ break;
+ }
if (!__testf && !__testt)
break;
@@ -1387,9 +1391,9 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE
== money_base::space)))
|| (__i == 2 && ((static_cast<part>(__p.field[3])
== money_base::value)
- || __mandatory_sign
+ || (__mandatory_sign
&& (static_cast<part>(__p.field[3])
- == money_base::sign))))
+ == money_base::sign)))))
{
const size_type __len = __lc->_M_curr_symbol_size;
size_type __j = 0;
Index: contrib/libstdc++/include/bits/streambuf_iterator.h
===================================================================
--- contrib/libstdc++/include/bits/streambuf_iterator.h (revision 241921)
+++ contrib/libstdc++/include/bits/streambuf_iterator.h (working copy)
@@ -160,7 +160,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
const bool __thiseof = _M_at_eof();
const bool __beof = __b._M_at_eof();
- return (__thiseof && __beof || (!__thiseof && !__beof));
+ return ((__thiseof && __beof) || (!__thiseof && !__beof));
}
private:
Index: contrib/libstdc++/include/std/std_sstream.h
===================================================================
--- contrib/libstdc++/include/std/std_sstream.h (revision 241921)
+++ contrib/libstdc++/include/std/std_sstream.h (working copy)
@@ -240,10 +240,12 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
const bool __testin = _M_mode & ios_base::in;
if (this->pptr() && this->pptr() > this->egptr())
- if (__testin)
- this->setg(this->eback(), this->gptr(), this->pptr());
- else
- this->setg(this->pptr(), this->pptr(), this->pptr());
+ {
+ if (__testin)
+ this->setg(this->eback(), this->gptr(), this->pptr());
+ else
+ this->setg(this->pptr(), this->pptr(), this->pptr());
+ }
}
};
--------------080802080305050801040601--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5086675B.40907>
