This is the mail archive of the gcc-bugs@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]

[Bug middle-end/44608] unspecified signed overflow applied to unsigned int



------- Comment #7 from avr at gjlay dot de  2010-06-21 12:27 -------
(In reply to comment #5)
> It is folding from the frontend that changes
> 
>     if (y >= 0x80000000)
> 
> to
> 
>     if ((int) y < 0)
> 
> (see code == LT instead of code == GEU)
> 
> But the main issue is that y = -y to abs is bogus (but we can't easily tell
> that as on RTL operands do not have a signedness).

Both transformation are ok from the target's point of view. The bad thing is
that undefinedness is propagated to RTL which is supposed to be an algebraic
formulation of the target's instruction set. But in this case RTL is treated
like a low level representation of C (or any other language gcc supports).

To reproduce the problem it seems essential that there is an abssi2 insn in the
md. 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44608


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