On Tue, Oct 11, 2011 at 4:40 AM, Richard Guenther <rguent...@suse.de> wrote:
> this function misses to transfer TREE_THIS_NOTRAP which is supposed > to be set on the base of old_ref or any contained ARRAY[_RANGE]_REF. > If you make the function generic please adjust it to at least do ... > ... > > TREE_THIS_NOTRAP (new_ref) = TREE_THIS_NOTRAP (base); This line was indeed added to the patch as committed. This appears to have broken the build of libgo. I now get this: ../../../gccgo3/libgo/go/image/png/writer.go: In function ‘png.writeIDATs.pN23_libgo_image.png.encoder’: ../../../gccgo3/libgo/go/image/png/writer.go:403:1: error: statement marked for throw, but doesn’t # .MEM_775 = VDEF <.MEM_774> MEM[base: D.8326_1070, offset: 0B] = VIEW_CONVERT_EXPR<struct { uint8 * __values; int __count; int __capacity; }>(GOTMP.495); ../../../gccgo3/libgo/go/image/png/writer.go:403:1: error: statement marked for throw, but doesn’t # .MEM_776 = VDEF <.MEM_775> D.7574 = MEM[base: D.8325_1069, offset: 0B]; ../../../gccgo3/libgo/go/image/png/writer.go:403:1: internal compiler error: verify_gimple failed Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. I have not yet done a full investigation, but it appears that this function is now marking a newly created reference as TREE_THIS_NOTRAP, which it did not previously do. The new instruction is within an exception region, and the tree-cfg checker insists that instructions in exception region are permitted to trap. It may be that the ivopts pass now requires TODO_cleanup_cfg, or it may be something more complicated. You should be able to recreate the problem yourself by using --enable-languages=go when you run configure. Ian