This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ 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]

Re: RFA (libstdc++): PATCH to implement C++17 over-aligned new


Hi Jonathan,

>>* For 64-bit, I get
>>
>>+FAIL: g++.dg/cpp1z/aligned-new5.C  -std=gnu++11 execution test
>>+FAIL: g++.dg/cpp1z/aligned-new5.C  -std=gnu++14 execution test
>>+FAIL: g++.dg/cpp1z/aligned-new5.C  -std=gnu++98 execution test
>>
>>  which fails like this:
>>
>>terminate called after throwing an instance of 'std::bad_alloc'
>>  what():  std::bad_alloc
>>
>>  gdb shows
>>
>>#7  0xffff80ff1d104bdc in __cxxabiv1::__cxa_throw (obj=<optimized out>,
>>    tinfo=0xffff80ff1d2d0c98 <typeinfo for std::bad_alloc>,
>>    dest=0xffff80ff1d1028f0 <std::bad_alloc::~bad_alloc()>)
>>    at /vol/gcc/src/hg/trunk/local/libstdc++-v3/libsupc++/eh_throw.cc:96
>>#8  0xffff80ff1d10604c in operator new (sz=4, al=(unknown: 64))
>>    at /vol/gcc/src/hg/trunk/local/libstdc++-v3/libsupc++/new_opa.cc:71
>>#9  0x00000000004010df in main ()
>>    at /vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/cpp1z/aligned-new5.C:11
>>
>>  and aligned_alloc(3C) documents
>>
>>       The  value of alignment must be a valid alignment supported by the sys-
>>       tem, that is, any power of two (1, 2, 4, 8, ...), and the value of size
>>       must be an integral multiple of alignment.
>>
>>  which isn't the case here.
>
> Ah, it seems GNU's aligned_alloc doesn't check that requirement. So we
> need to increase the requested size, maybe something like this patch.

I've now tested this patch on top of r240127 and the execution failures
are gone indeed.

The only failures now remaining are (on 32-bit sparc-sun-solaris2.12,
both 64-bit sparc and 32/64-bit i386-pc-solaris2.12 are fine)

FAIL: g++.dg/cpp0x/gen-attrs-21.C  -std=c++11 (test for excess errors)
FAIL: g++.dg/cpp0x/gen-attrs-21.C  -std=c++14 (test for excess errors)

Excess errors:
/vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/cpp0x/gen-attrs-21.C:9:31: error: requested alignment 16 is larger than 8 [-Wattributes]
/vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/cpp0x/gen-attrs-21.C:15:32: error: requested alignment 16 is larger than 8 [-Wattributes]
/vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/cpp0x/gen-attrs-21.C:21:1: error: static assertion failed: sizeof (S) == 8 + 16 + 8

FAIL: g++.dg/cpp0x/gen-attrs-51.C  -std=c++11 (test for excess errors)
FAIL: g++.dg/cpp0x/gen-attrs-51.C  -std=c++14 (test for excess errors)

Excess errors:
/vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/cpp0x/gen-attrs-51.C:6:44: error: requested alignment 16 is larger than 8 [-Wattributes]
/vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/cpp0x/gen-attrs-51.C:9:1: error: static assertion failed: Alignment should be 16

FAIL: g++.dg/ipa/devirt-33.C   (test for excess errors)

Excess errors:
/vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/ipa/devirt-33.C:46:32: warning: requested alignment 16 is larger than 8 [-Wattributes]

FAIL: g++.dg/lookup/name-clash11.C  -std=gnu++11 (test for excess errors)
FAIL: g++.dg/lookup/name-clash11.C  -std=gnu++14 (test for excess errors)

Excess errors:
/vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/lookup/name-clash11.C:51:11: warning: requested alignment 16 is larger than 8 [-Wattributes]
/vol/gcc/src/hg/trunk/local/gcc/testsuite/g++.dg/lookup/name-clash11.C:7:21: error: static assertion failed: __alignof__ (this->A) == 16

FAIL: 29_atomics/atomic/65147.cc (test for excess errors)

Excess errors:
/vol/gcc/src/hg/trunk/local/libstdc++-v3/testsuite/29_atomics/atomic/65147.cc:26: error: static assertion failed: atomic<S16> must be aligned to at least its size

Thanks.
	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


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