re PR libstdc++/45713 (sizeof std::bitset<ULONG_MAX> == 1)

2010-09-17  Luc Hermitte  <hermitte@free.fr>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/45713
	* include/std/bitset: Fix _GLIBCXX_BITSET_WORDS macro.
	* testsuite/23_containers/bitset/45713.cc: New.
	    

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r164388
This commit is contained in:
Luc Hermitte 2010-09-18 03:29:31 +02:00 committed by Paolo Carlini
parent 7b458ccc8d
commit fc99f7809e
3 changed files with 34 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2010-09-17 Luc Hermitte <hermitte@free.fr>
Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/45713
* include/std/bitset: Fix _GLIBCXX_BITSET_WORDS macro.
* testsuite/23_containers/bitset/45713.cc: New.
2010-09-16 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/stl_raw_storage_iter.h (raw_storage_iterator<>::

View File

@ -53,8 +53,8 @@
#define _GLIBCXX_BITSET_BITS_PER_WORD (__CHAR_BIT__ * sizeof(unsigned long))
#define _GLIBCXX_BITSET_WORDS(__n) \
((__n) < 1 ? 0 : ((__n) + _GLIBCXX_BITSET_BITS_PER_WORD - 1) \
/ _GLIBCXX_BITSET_BITS_PER_WORD)
((__n) / _GLIBCXX_BITSET_BITS_PER_WORD + \
((__n) % _GLIBCXX_BITSET_BITS_PER_WORD == 0 ? 0 : 1))
_GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)

View File

@ -0,0 +1,25 @@
// Copyright (C) 2010 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
#include <bitset>
// libstdc++/45713
#if __SIZEOF_SIZE_T__ >= 4
int test[sizeof(std::bitset<0xffffffff>) != 1 ? 1 : -1];
#endif