On Wed, Oct 21, 2020 at 07:30:46PM +0200, Rainer Orth wrote: > this broke sparc-sun-solaris2.11 bootstrap > > /vol/gcc/src/hg/master/local/gcc/tree-ssa-phiopt.c: In function 'bool > cond_removal_in_popcount_clz_ctz_pattern(basic_block, basic_block, edge, > edge, gimple*, tree, tree)': > /vol/gcc/src/hg/master/local/gcc/tree-ssa-phiopt.c:1858:27: error: variable > 'mode' set but not used [-Werror=unused-but-set-variable] > 1858 | scalar_int_mode mode = SCALAR_INT_TYPE_MODE (TREE_TYPE > (arg)); > | ^~~~ > > > and doubtlessly several other targets that use the defaults.h definition of > > #define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) 0
Ugh, seems many of those macros do not evaluate the first argument. This got broken by the change to direct_internal_fn_supported_p, previously it used mode also in the optab test. Anyway, I think this should fix it, I'll bootstrap/regtest it tonight: 2020-10-21 Jakub Jelinek <ja...@redhat.com> * tree-ssa-phiopt.c (cond_removal_in_popcount_clz_ctz_pattern): For CLZ and CTZ tests, use type temporary instead of mode. --- gcc/tree-ssa-phiopt.c.jj 2020-10-21 19:33:12.358042645 +0200 +++ gcc/tree-ssa-phiopt.c 2020-10-21 19:35:18.113213095 +0200 @@ -1842,10 +1842,10 @@ cond_removal_in_popcount_clz_ctz_pattern CASE_CFN_CLZ: if (INTEGRAL_TYPE_P (TREE_TYPE (arg))) { - scalar_int_mode mode = SCALAR_INT_TYPE_MODE (TREE_TYPE (arg)); - if (direct_internal_fn_supported_p (IFN_CLZ, TREE_TYPE (arg), - OPTIMIZE_FOR_BOTH) - && CLZ_DEFINED_VALUE_AT_ZERO (mode, val) == 2) + tree type = TREE_TYPE (arg); + if (direct_internal_fn_supported_p (IFN_CLZ, type, OPTIMIZE_FOR_BOTH) + && CLZ_DEFINED_VALUE_AT_ZERO (SCALAR_INT_TYPE_MODE (type), + val) == 2) { ifn = IFN_CLZ; break; @@ -1855,10 +1855,10 @@ cond_removal_in_popcount_clz_ctz_pattern CASE_CFN_CTZ: if (INTEGRAL_TYPE_P (TREE_TYPE (arg))) { - scalar_int_mode mode = SCALAR_INT_TYPE_MODE (TREE_TYPE (arg)); - if (direct_internal_fn_supported_p (IFN_CTZ, TREE_TYPE (arg), - OPTIMIZE_FOR_BOTH) - && CTZ_DEFINED_VALUE_AT_ZERO (mode, val) == 2) + tree type = TREE_TYPE (arg); + if (direct_internal_fn_supported_p (IFN_CTZ, type, OPTIMIZE_FOR_BOTH) + && CTZ_DEFINED_VALUE_AT_ZERO (SCALAR_INT_TYPE_MODE (type), + val) == 2) { ifn = IFN_CTZ; break; Jakub