This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Will backend ever see an memory operand with address wrap around?


On Mon, May 14, 2012 at 4:26 AM, Geert Bosch <bosch@adacore.com> wrote:
>
> On May 13, 2012, at 21:17, amylaar@spamcop.net wrote:
>> The expectation is wrap-around. ?Note that loop strenght reduction can
>> cause assumed wrap-around semantics in RTL for strictly conforming C input
>> where no such wrap-around is in evidence.
>
> Really, we should define signed integer arithmetic in RTL to always
> be wrap-around. While there may (*) be some benefit in "taking
> advantage" of undefined semantics of integer overflow in early tree
> optimizers (computing number of loop iterations etc.), at the same
> time it also reduces optimization opportunities.
>
> Transformations cannot introduce overflows where none existed before,
> so integer addition and subtraction are not associative. ?In the
> end, the hardware is deterministic and does have wrap-around
> semantics. So, it really doesn't make sense to pretend in RTL that
> it doesn't.

I agree - but we don't have signed vs. unsigned PLUS on RTL so RTL
arith is unsigned anway, no?

Richard.

> ?-Geert
>
> --
> (*) At the end of the day, I think everybody would win by unambiguously
> defining signed integer arithmetic as using wrap-around semantics
> everywhere. Software is hard enough with defined semantics.
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]