On Thu, 16 Nov 2023, Jason Merrill wrote: > On 11/11/23 03:22, Jakub Jelinek wrote: > > Hi! > > > > While filing a clang request to return 18 on _BitInts for > > __builtin_classify_type instead of -1 they return currently, I've > > noticed that we return -1 for vector types. I'm not convinced it is a good > > idea to change behavior of __builtin_classify_type (vector_expression) > > after 22 years it behaved one way (returned -1), but the > > __builtin_classify_type (type) form is a new extension added for GCC 14, > > so this patch returns 19 for vectors just in that second form. Many other > > return values are only accessible from the second form as well (mostly > > because > > of argument promotions), so I think it is fine like that. > > > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? > > The C++ changes are OK (and obvious). I'm skeptical of the choice to keep > returning -1 for the expression form, it seems more likely to cause problems > (due to it disagreeing with the type form) than changing it (due to old code > somehow relying on -1?). But people who are more familiar with the use of > __builtin_classify_type should make the call.
I'm also doubtful of keeping returning -1 for vectors in expression form (I'd be surprised if people are actually using __builtin_classify_type with vectors). The C changes are OK (but the front-end changes wouldn't be needed at all if the vector and type argument cases aren't distinguished). -- Joseph S. Myers jos...@codesourcery.com