On Wed, Nov 17, 2021 at 02:58:54PM -0600, Bill Schmidt wrote: > Hi! This patch is broken out of the previous patch for all the builtins test > suite adjustments. Here we have some slight changes in error messages due to > how the internals have changed between the old and new builtins methods. > > For scalar-extract-exp-2.c we change: > error: '__builtin_vec_scalar_extract_exp is not supported in this compiler > configuration' > > to: > error: '__builtin_vsx_scalar_extract_exp' requires the '-mcpu=power9' > option and either the '-m64' or '-mpowerpc64' option > note: builtin '__builtin_vec_scalar_extract_exp' requires builtin > '__builtin_vsx_scalar_extract_exp'
I don't like that at all. The user didn't write the _vsx thing, and it isn't documented either (neither is the _vec one, but that is a separate issue, specific to this builtin). > The new message provides more information. In both cases, it is less than > ideal that we don't refer to scalar_extract_exp, which is referenced in > the source line, but this is because scalar_extract_exp is #define'd to > __builtin_vec_scalar_extract_exp, so it's unavoidable. Certainly this is no > worse than before, and arguably better. It is a macro, enough said there The __builtin_ implementation should be documented (in the GCC manual, if not elsewhere). The warnings should talk about _vec, because the _vsx thing only exists as implementation detail, and we should never talk about those. We don't have errors about adddi3 either! > error: '__builtin_vsx_scalar_extract_sig' requires the '-mcpu=power9' > option and either the '-m64' or '-mpowerpc64' option > note: builtin '__builtin_vec_scalar_extract_sig' requires builtin > '__builtin_vsx_scalar_extract_sig' The rhs in the note does not *exist*, as far as the user is concerned. One builtin requiring another is all gobbledygook. > For scalar-test-neg-{2,3,5}.c, we actually change the test case. This is > because we deliberately removed some undocumented and pointless > overloads, > where each overload mapped to a single builtin. These were: > __builtin_vec_scalar_test_neg_sp > __builtin_vec_scalar_test_neg_dp > __builtin_vec_scalar_test_neg_qp > which are redundant with the "real" overload: > __builtin_vec_scalar_test_neg > The latter maps to three builtins of the appropriate type. Yes. And the new ones are undocumented and useless just as well, they just have better names. Segher