On Wed, 30 Oct 2024 at 21:54, Jakub Jelinek <ja...@redhat.com> wrote: > > On Wed, Oct 30, 2024 at 09:24:05PM +0000, Jonathan Wakely wrote: > > The aligned versions of operator new should use the align_alloc > > attribute to help the compiler. > > > > PR c++/86878 requests that the compiler would use the attribute to warn > > about invalid attributes, so an XFAILed test is added for that. > > > > libstdc++-v3/ChangeLog: > > > > * libsupc++/new (operator new): Add attribute align_alloc(2) to > > overloads taking a std::align_val_t argument. > > * testsuite/18_support/new_aligned_warn.cc: New test. > > --- > > I think this makes sense, but maybe there's some property of the > > attribute that means this isn't a good idea? I think the compiler can > > use the value of align_val_t even though it's a scoped enumeration type. > > We document that alloc_align (and alloc_size etc.) arguments can have > integer or enumerated types, the implemented check is INTEGRAL_TYPE_P (t) > && TREE_CODE (t) != BOOLEAN_TYPE.
I suppose the "not implicitly convertible to an integer" rule for scoped enums is just a language constraint, the compiler sees scoped enumerations like any other integral value. > And the meaning of the attribute is exactly what the C++ standard requires > from such operators, so the patch LGTM. Great, thanks, I'll push in the morning.