Today I updated to trunk the toolchain for my work developing on Cortex-M4F. I was super excited to see three commits by Tim Northover that actually attempt to improve the machine code generation for my target, or any ARM target for that matter (as opposed to other important work on compiler correctness or architectural elegance or formatting comment white-space, I mean). Is he alone or are there others working toward such improvements?
The subject of two of his commits dealt with substituting MOVW/MOVT pairs for an LDR and a lit-pool. Isn't this what MachineConstantPool and ARMConstantIslandPass was all about? I vaguely recall a while back that it was disabled by some Darwin snob who thought no useful target benefited from it. What about enabling it again? Perhaps you've noticed in the last two months that someone's been porting it to the MIPS target, suggesting to me that it's still a good starting point. Finally, I would really like to see this optimization be promoted from -Oz to -Os. Doesn't it satisfy the criteria for -Os over -Oz?
Tim's other commit was about stack adjustment folding. So, Tim, did you see the treads with Andrea Mucignat back in October? She asked for some help so that she could provide a patch to improve machine code generation for Thumb entry/exit points. No one with knowledge about the matter responded. This commit of yours looks to me like you do have some knowledge about it. She seems to have given up (and judging by the way she was treated, I don't blame her -- sad). But would you review what she was attempting, please?
066461.html, 066466.html, 066470.html, 066475.html