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



--- Comment #11 from Uros Bizjak <ubizjak at gmail dot com> 2013-01-22 08:46:48 
UTC ---

I was thinking of removing (!o,n) alternative from movdi (together with

corresponding splitters). Splitter/peephole2 actually always generates movabs

$N,%reg; mov $reg,(mem) unless it can't get a register. In the later case, the

move is split into two separate moves.



The problem is, that other move patterns assume (i.e.

*mov{df,xf,ti}_internal_rex64) that they can move all immediates to memory.

When moving FP immediate to volatile DFmode location, gcc tries to use DImode

move with immediate operand, so this would fail with removed (!o,n)

alternative.



Also, split_double_mode, split_to_parts and ix86_split_long_move will have to

be reviewed. Please see the comment inside split_double_mode, how

simplify_subreg refuses to split volatile memory address, but gcc manages to

get around this "limitation".

Reply via email to