This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Speedup int_bit_from_pos
- From: Richard Sandiford <richard dot sandiford at arm dot com>
- To: Jan Hubicka <hubicka at ucw dot cz>
- Cc: Mike Stump <mikestump at comcast dot net>, Richard Biener <rguenther at suse dot de>, Jeff Law <law at redhat dot com>, gcc-patches at gcc dot gnu dot org
- Date: Tue, 23 Sep 2014 16:47:10 +0100
- Subject: Re: Speedup int_bit_from_pos
- Authentication-results: sourceware.org; auth=none
- References: <541D948B dot 1030602 at redhat dot com> <20140920160752 dot GA18043 at kam dot mff dot cuni dot cz> <9767d203-5e46-4835-86b2-f983d20fcba8 at email dot android dot com> <20140921141944 dot GA4519 at kam dot mff dot cuni dot cz> <alpine dot LSU dot 2 dot 11 dot 1409220951530 dot 20733 at zhemvz dot fhfr dot qr> <20140922155110 dot GA30885 at kam dot mff dot cuni dot cz> <CF77FAC2-E85A-4204-8DF8-CCB78336EB7B at comcast dot net> <20140922182217 dot GA5371 at kam dot mff dot cuni dot cz> <1A97F69C-2945-4911-84D4-5F648ED36DCC at comcast dot net> <20140922185303 dot GA27558 at kam dot mff dot cuni dot cz> <20140922192021 dot GB27558 at kam dot mff dot cuni dot cz>
Jan Hubicka <hubicka@ucw.cz> writes:
> +/* Like bit_position, but return as an integer. It must be representable in
> + that way (since it could be a signed value, we don't have the
> + option of returning -1 like int_size_in_byte can. */
> +
> +static inline HOST_WIDE_INT
> +int_bit_position (const_tree field)
> +{
> + return (wi::lrshift (wi::to_offset (DECL_FIELD_OFFSET (field)), BITS_PER_UNIT_LOG)
> + + wi::to_offset (DECL_FIELD_BIT_OFFSET (field))).to_shwi ();
> +}
Should this be lshift (left shift) rather than lrshift (logical right shift)?
Thanks for doing this BTW.
Richard