[Bug target/26457] -fstack-protector leaks the upper bits of RAX

jakub at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Mar 2 14:48:00 GMT 2006



------- Comment #5 from jakub at gcc dot gnu dot org  2006-03-02 14:48 -------
(define_insn "*movdi_xor_rex64"
  [(set (match_operand:DI 0 "register_operand" "=r")
        (match_operand:DI 1 "const0_operand" "i"))
   (clobber (reg:CC FLAGS_REG))]
  "TARGET_64BIT && (!TARGET_USE_MOV0 || optimize_size)
   && reload_completed"
  "xor{l}\t{%k0, %k0|%k0, %k0}"
  [(set_attr "type" "alu1")
   (set_attr "mode" "SI")
   (set_attr "length_immediate" "0")])

and say:
long foo (void) { return 0; }
with -m64 -O2 gives:
        xorl    %eax, %eax
        ret
If xorl %eax, %eax did not zero extend to 64-bits, GCC compiled code wouldn't
really work.


-- 

jakub at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |INVALID


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



More information about the Gcc-bugs mailing list