[Bug target/19293] avr-gcc crashes when using shifts with negative shift count

bjoern dot m dot haase at web dot de gcc-bugzilla@gcc.gnu.org
Thu Jan 6 17:35:00 GMT 2005


------- Additional Comments From bjoern dot m dot haase at web dot de  2005-01-06 17:35 -------
It seems that the standard says that shift operations with negative shift count 
are supposed to yield an "unspecified" result. 
 
Is there some more specific convention for gcc on how to behave in these cases? 
Otherwise the only thing to do would be to fix the instruction length 
calculation in the back-end code.  
 
 
Copy from C-Standards description: 
http://www.open-std.org/jtc1/sc22/open/n2794/n2794.txt 
 
 
 
       6.5.7  Bitwise shift operators 
 
       Syntax 
 
       [#1] 
 
               shift-expr: 
                       additive-expr 
                       shift-expr << additive-expr 
                       shift-expr >> additive-expr 
 
       Constraints 
 
       [#2] Each of the operands shall have integer type. 
 
       Semantics 
 
       [#3] The integer promotions are performed  on  each  of  the 
       operands.   The  type  of the result is that of the promoted 
       left operand.  If the value of the right operand is negative 
       or  is  greater  than  or equal to the width of the promoted 
       left operand, the behavior is undefined. 
 

-- 


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



More information about the Gcc-bugs mailing list