On Thu, 2020-06-25 at 15:46 -0400, Alan Lehotsky wrote: > I’m working on a GCC 8.3 port to a load/store architecture with a 32-bit > data-path between registers and memory; > > looking at the gcc.dg/loop-9.c test, I fail to pass because I have split the > move of a double constant to memory into multiple moves (4 in fact, because I > only have a 16-bit immediate mode.) > > The (define_insn_and_split “movdf” …) is conditioned on “reload_completed”. > > Is there some other trick I need get the constant hoisted. I have already > set the rtx cost of the CONST_DOUBLE ridiculously high (like 10 insns) Hi Alan, it's been a long time...
We'd probably need to set the RTL. A variety of things can get in the way of LICM. For example, I'd expect subregs to be problematical because they can look like RMW operations. jeff