------- Comment #26 from dje at gcc dot gnu dot org 2006-08-29 21:09 ------- The RTL looks like:
(code_label 34 33 35 2 "" [0 uses]) (note 35 34 0 NOTE_INSN_BASIC_BLOCK) ;; return val (insn 36 35 37 (set (subreg:DF (reg:DI 136) 0) (reg:DF 122 [ val ])) -1 (nil) (nil)) (insn 37 36 38 (set (reg:DI 137) (reg:DI 136)) -1 (nil) (nil)) (insn 38 37 39 (set (reg:DI 120 [ <result> ]) (reg:DI 137)) -1 (nil) (nil)) so this is naked DImode, not SUBREG. This punning between modes is more than I plan to try to fix myself. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27287