Richard Henderson wrote:
> On 07/26/2011 10:26 AM, Georg-Johann Lay wrote:
>> If -mint8 (word_mode = QImode) ever returns resp. is turned
>> functional again, then the QI version is undefined for
>> offsets >= 8  whereas the HI version is only undefined for
>> offsets >= 16.
> 
> It's undefined at the C level, not necessarily at the rtl level.
> 
> 
> r~

I once ran into trouble because there seems to be no clear
separation between undefinedness in C and undefinedness in RTL

Starting thread from here,
  http://gcc.gnu.org/ml/gcc-help/2010-06/msg00191.html

the treads comes to this
  http://gcc.gnu.org/ml/gcc-help/2010-06/msg00198.html

which includes a snip that shows that some RTL passes
optimize on assumptions of undefinedness of C.
I.e. undefinedness is propagated from C trough SSA until RTL.

In the particular case, an undefined (because of strict
overflow) abs in C was propagated to an undefined ABS in
RTL.

I regarded RTL rather as a high-level representation
of assembly than a low-level representation of C.

As far as I understand GCC, a front end emit it's code
like generic or gimple or whatever on the basis of input
language semantics, and behind that point there is a clear
semantics what, e.g.
  (set (reg) (plus (reg) (const_int 1)))
means.

Johann




Reply via email to