Re: gcc 4.6.1 expand is playing tricks on me

2011-07-08 Thread Paulo J. Matos
On 08/07/11 15:58, Paulo J. Matos wrote: However, you hinted to using combine. I am wondering if I can combine and into a memory-memory move in HImode and straight away split into the 4 insn above. In the end 4.6.1 would end up doing the same at combine time as 4.5.3 in expand time. I have to loo

Re: gcc 4.6.1 expand is playing tricks on me

2011-07-08 Thread Paulo J. Matos
On 08/07/11 15:35, Michael Matz wrote: Without TERing these two instructions expand won't see both memory references at the same time, and hence generate separate load and store instruction, instead of a mem-mem move if that's supported on your target (I assume so, otherwise you wouldn't have not

Re: gcc 4.6.1 expand is playing tricks on me

2011-07-08 Thread Michael Matz
Hi, On Fri, 8 Jul 2011, Paulo J. Matos wrote: > gcc4.5.3 hits continue the first time it gets there and gcc4.6.1 fails > the inner if and enters expand_gimple_stmt twice. Yes, the MEMREF branch merge disabled TER (temporary expression replacement, tree-ssa-ter.c) for loads with stores that pos

gcc 4.6.1 expand is playing tricks on me

2011-07-08 Thread Paulo J. Matos
Hi, I got a few size regressions when moving from 4.5.3 to 4.6.1, all due to the same issue. I have code that is basically a double word memory move: void simple1(uint32 *a, uint32 *b) { *a = *b; } GCC 4.6.1 is from this gimple: simple1 (uint32 * a, uint32 * b) { uint32 D.1927; # BLOCK 2