re PR c++/9704 (miscompilation of classes with bit fields)
PR c++/9704 * class.c (layout_class_type): In the 3.2 ABI, take into account trailing bit fields when computing CLASSTYPE_SIZE_UNIT. PR c++/9704 * g++.dg/init/copy5.C: New test. [[Split portion of a mixed commit.]] From-SVN: r63054.2
This commit is contained in:
parent
30db8e17e5
commit
2e120205b3
29
gcc/testsuite/g++.dg/init/copy5.C
Normal file
29
gcc/testsuite/g++.dg/init/copy5.C
Normal file
@ -0,0 +1,29 @@
|
||||
// { dg-options "-O2" }
|
||||
|
||||
struct BOOL {
|
||||
int nVal:1, bSet:1;
|
||||
BOOL (int i) : nVal(i!=0), bSet(1) {}
|
||||
};
|
||||
struct Fill {
|
||||
void *d;
|
||||
Fill() : d(0) {}
|
||||
Fill( const Fill& ) {}
|
||||
};
|
||||
struct SvMetaSlot {
|
||||
Fill aGroupId;
|
||||
BOOL a8;
|
||||
SvMetaSlot() :
|
||||
a8(1) {}
|
||||
SvMetaSlot* MakeClone() const;
|
||||
};
|
||||
|
||||
SvMetaSlot* SvMetaSlot::MakeClone() const { return new SvMetaSlot( *this ); }
|
||||
|
||||
extern "C" void abort(void);
|
||||
int main()
|
||||
{
|
||||
SvMetaSlot s; SvMetaSlot s2(s);
|
||||
if (s.a8.bSet != s2.a8.bSet)
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user