This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/12926] New: sparc-sun-solaris2.7 64BIT: Wrong value after assignment in initialize list using Bit Fields


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12926

           Summary: sparc-sun-solaris2.7 64BIT: Wrong value after assignment
                    in initialize list using Bit Fields
           Product: gcc
           Version: 3.3.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bjoern dot seebeck at gmx dot de
                CC: gcc-bugs at gcc dot gnu dot org
  GCC host triplet: sparc-sun-solaris2.7

In the example below GCC seems to have problems with assignment 
of types in the initialize list, which were declared using Bit Fields:

#include <iostream>

using namespace std;

struct A 
{
  enum Type {P, U, S};

  A( const size_t size, const Type type ): mSize(size), mType(type)
  {
    cout << "type = " << type << endl;
    cout << "mType = " << mType << endl;
  }
  const size_t mSize :CHAR_BIT*sizeof(size_t) - 3 ;	
  Type mType       : 2;
}; 

int main()
{
  A testa(2,A::S); 
  return testa.mType;
}

The output is:

type = 2
mType = 0


Note that the output after compiling with -O1 is correct:
type = 2
mType = 2
, with -O2 or -O3 it is wrong.

Release:
gcc version 3.3.2

Environment:
sparc-sun-solaris2.7


Verbose message g++:
g++ a.C -v -oa -O3 -m64
Reading specs from /sw/gcc3/lib/gcc-lib/sparc-sun-solaris2.7/3.3.2/specs
Configured with: ../gcc-3.3.2/configure --prefix=/sw/gcc3 --with-local-
prefix=/sw/local --enable-libgcj --with-ld=/usr/ccs/bin/ld --with-
as=/usr/ccs/bin/as
Thread model: posix
gcc version 3.3.2
 /sw/gcc3/lib/gcc-lib/sparc-sun-solaris2.7/3.3.2/cc1plus -quiet -v -
D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=2 -Dsparc -D__sparc__ -
D__sparc -D__arch64__ -Acpu=sparc64 -Amachine=sparcv9 -D__sparcv9 a.C -
D__GNUG__=3 -mptr64 -mstack-bias -mno-v8plus -mcpu=v9 -quiet -dumpbase a.C -
m64 -auxbase a -O3 -version -o /var/tmp//ccnuC6vI.s
GNU C++ version 3.3.2 (sparc-sun-solaris2.7)
        compiled by GNU C version 3.3.2.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/sw/gcc3/sparc-sun-solaris2.7/include"
#include "..." search starts here:
#include <...> search starts here:
 /sw/gcc3/include/c++/3.3.2
 /sw/gcc3/include/c++/3.3.2/sparc-sun-solaris2.7
 /sw/gcc3/include/c++/3.3.2/backward
 /sw/local/include
 /sw/gcc3/include
 /sw/gcc3/lib/gcc-lib/sparc-sun-solaris2.7/3.3.2/include
 /usr/include
End of search list.
 /usr/ccs/bin/as -V -Qy -s -xarch=v9 -
o /var/tmp//ccu1ZhGI.o /var/tmp//ccnuC6vI.s
/usr/ccs/bin/as: Sun WorkShop 6 99/08/18
 /sw/gcc3/lib/gcc-lib/sparc-sun-solaris2.7/3.3.2/collect2 -V -Y 
P,/usr/lib/sparcv9 -Qy -oa /sw/gcc3/lib/gcc-lib/sparc-sun-
solaris2.7/3.3.2/sparcv9/crt1.o /sw/gcc3/lib/gcc-lib/sparc-sun-
solaris2.7/3.3.2/sparcv9/crti.o /usr/ccs/lib/sparcv9/values-
Xa.o /sw/gcc3/lib/gcc-lib/sparc-sun-solaris2.7/3.3.2/sparcv9/crtbegin.o -
L/sw/gcc3/lib/gcc-lib/sparc-sun-solaris2.7/3.3.2/sparcv9 -L/sw/gcc3/lib/gcc-
lib/sparc-sun-solaris2.7/3.3.2 -L/sw/gcc3/lib/gcc-lib/sparc-sun-
solaris2.7/3.3.2/../../../../sparc-sun-solaris2.7/lib -L/usr/ccs/bin/sparcv9 -
L/usr/ccs/bin -L/usr/ccs/lib/sparcv9 -L/usr/ccs/lib -L/sw/gcc3/lib/gcc-
lib/sparc-sun-solaris2.7/3.3.2/../../../sparcv9 -L/sw/gcc3/lib/gcc-lib/sparc-
sun-solaris2.7/3.3.2/../../.. -L/lib/sparcv9 -
L/usr/lib/sparcv9 /var/tmp//ccu1ZhGI.o -lstdc++ -lm -lgcc_s_sparcv9 -lgcc -lc -
lgcc_s_sparcv9 -lgcc -lc /sw/gcc3/lib/gcc-lib/sparc-sun-
solaris2.7/3.3.2/sparcv9/crtend.o /sw/gcc3/lib/gcc-lib/sparc-sun-
solaris2.7/3.3.2/sparcv9/crtn.o
ld: Software Generation Utilities - Solaris Link Editors: 5.8-1.279


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]