[PATCH] phiopt: Optimize x ? __builtin_clz (x) : 32 in GIMPLE [PR97503]

Rainer Orth ro@CeBiTec.Uni-Bielefeld.DE
Thu Oct 22 10:45:48 GMT 2020


Hi Jakub,

> 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  <jakub@redhat.com>
>
> 	* tree-ssa-phiopt.c (cond_removal_in_popcount_clz_ctz_pattern):
> 	For CLZ and CTZ tests, use type temporary instead of mode.

this worked for me just fine, both sparc-sun-solaris2.11 and (for good
measure) i386-pc-solaris2.11.

Thanks.
        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


More information about the Gcc-patches mailing list