Hi! The rs6000 backend (and s390 one as well) diagnoses passing vector types to unprototyped functions, which breaks the builtin-classify-type-1.c test. The builtin isn't really unprototyped, it is just type-generic and accepting vector types is just fine there, all it does is categorize the vector type. The following patch makes sure we don't diagnose it for this builtin.
Preapproved in the PR, bootstrapped/regtested on powerpc64le-linux where it fixes -FAIL: c-c++-common/builtin-classify-type-1.c -Wc++-compat (test for excess errors) -UNRESOLVED: c-c++-common/builtin-classify-type-1.c -Wc++-compat compilation failed to produce executable and committed to trunk. 2023-11-29 Jakub Jelinek <ja...@redhat.com> PR target/112725 * config/rs6000/rs6000.cc (invalid_arg_for_unprototyped_fn): Return NULL for __builtin_classify_type calls with vector arguments. --- gcc/config/rs6000/rs6000.cc.jj 2023-11-17 15:08:20.816961466 +0100 +++ gcc/config/rs6000/rs6000.cc 2023-11-29 09:40:35.782955603 +0100 @@ -24389,7 +24389,8 @@ invalid_arg_for_unprototyped_fn (const_t && VECTOR_TYPE_P (TREE_TYPE (val)) && (funcdecl == NULL_TREE || (TREE_CODE (funcdecl) == FUNCTION_DECL - && DECL_BUILT_IN_CLASS (funcdecl) != BUILT_IN_MD))) + && DECL_BUILT_IN_CLASS (funcdecl) != BUILT_IN_MD + && !fndecl_built_in_p (funcdecl, BUILT_IN_CLASSIFY_TYPE)))) ? N_("AltiVec argument passed to unprototyped function") : NULL; } Jakub