Hi all, I just noticed that LICM does not hoist/sink the following store out of the loop: int array[20]; int i; for (i = 0; i<100; i++) { array [0] = 0; } The getElementPtr instruction is hoisted out of the loop; the store is not. Did I miss something obvious? Bitcode file attached. Generated using LLVM 2.5 and llvm-gcc -c -emit-llvm test_loop.c -o - | opt -licm -o test.bc -f Thanks Marc -------------- next part -------------- A non-text attachment was scrubbed... Name: test.bc Type: application/octet-stream Size: 624 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091027/c0ceeabf/attachment.obj>
2009/10/27 Marc Brünink <marc at bruenink.de>> Hi all, > > I just noticed that LICM does not hoist/sink the following store out of the > loop: > > int array[20]; > int i; > for (i = 0; i<100; i++) { > array [0] = 0; > } > > The getElementPtr instruction is hoisted out of the loop; the store is not. > Did I miss something obvious? Bitcode file attached. > Generated using LLVM 2.5 and > llvm-gcc -c -emit-llvm test_loop.c -o - | opt -licm -o test.bc -f >Thanks for the report. Since this still happens with LLVM at the top of SVN, I filed it as http://llvm.org/PR5319 . Please add yourself to the cc list there. Nick Lewycky -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091027/6f10f66d/attachment.html>
On Oct 27, 2009, at 9:26 AM, Nick Lewycky wrote:> 2009/10/27 Marc Brünink <marc at bruenink.de> > Hi all, > > I just noticed that LICM does not hoist/sink the following store out > of the loop: > > int array[20]; > int i; > for (i = 0; i<100; i++) { > array [0] = 0; > } > > The getElementPtr instruction is hoisted out of the loop; the store > is not. Did I miss something obvious? Bitcode file attached. > Generated using LLVM 2.5 and > llvm-gcc -c -emit-llvm test_loop.c -o - | opt -licm -o test.bc -f > > Thanks for the report. Since this still happens with LLVM at the top > of SVN, I filed it as http://llvm.org/PR5319 . Please add yourself > to the cc list there.This is expected behavior, you need to run loop rotate before licm to get this. This is completely eliminate at -O3. -Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091027/3000fb8d/attachment.html>