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