[Bug libstdc++/64798] [5 regression] g++.old-deja/g++.eh/badalloc1.C FAILs
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Tue Jan 27 12:51:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64798
--- Comment #14 from rguenther at suse dot de <rguenther at suse dot de> ---
On Tue, 27 Jan 2015, jakub at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64798
>
> --- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I
> think aligned attribute is similarly useless for this, I'd really go for
> testing alignments you need, rather than expecting some magic value.
> I'm not aware of any target that would have bigger alignment for say
> char/short/int/long than long long, ditto with float/double, so I'd just
> check maximum of long long, long double, void * alignment.
For the actual bug I can use __alignof__ (__cxa_refcounted_exception),
but that again ends up using __attribute__((__aligned__)) via the
_Unwind_Exception member:
struct _Unwind_Exception
{
_Unwind_Exception_Class exception_class;
_Unwind_Exception_Cleanup_Fn exception_cleanup;
#if !defined (__USING_SJLJ_EXCEPTIONS__) && defined (__SEH__)
_Unwind_Word private_[6];
#else
_Unwind_Word private_1;
_Unwind_Word private_2;
#endif
/* @@@ The IA-64 ABI says that this structure must be double-word
aligned.
Taking that literally does not make much sense generically. Instead
we
provide the maximum alignment required by any type for the machine.
*/
} __attribute__((__aligned__));
so I think that using __attribute__((__aligned__)) is very much the
correct and easiest thing to use.
More information about the Gcc-bugs
mailing list