https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113950

--- Comment #7 from Jeevitha <jeevitha at gcc dot gnu.org> ---

In GCC 11, we encountered a different issue that didn't result in an ICE.

The following is the error message in GCC 11:

error: too few arguments to function '__builtin_vsx_splat_2di'
   11 |   vsll_result = __builtin_vsx_splat_2di (sll_arg1);  // ISSUE

The error indicated a shortage of arguments for the built-in function. It
expects two arguments because the function prototype is different in GCC 11
compared to GCC 12, 13, and 14.

I have found that the commit responsible for changing the function prototype
was made by Bill Schmidt (commit hash:
d08236359eb22918ba067489edcec02857109d09). In this commit, he introduced new
built-in functionality, where the function prototype is sourced from
rs6000-builtin-new.def, which includes the following declaration:

const vsll __builtin_vsx_splat_2di (signed long long);

Prior to this commit ie, in gcc11, the function prototype was sourced from
rs6000-builtin.def and included two arguments:

/* 2 argument VSX builtins.  */
BU_VSX_2 (SPLAT_2DI, "splat_2di", CONST, vsx_splat_v2di)

These changes are controlled by the setting new_builtins_are_live. Bill made
this change in his commit by adjusting this setting.

Due to the above prototype changes, we are not backporting to GCC 11.

Reply via email to