On Fri, 21 Aug 2015, Jiong Wang wrote: > > Richard Biener writes: > > > Given there is now PR67167 I am going forward with the earlier posted > > patch to switch SCCVN to PHI elimination in favor of another PHI > > (to remove IVs) rather than in favor of its only executable edge value. > > > > I still see no way to capture both cases without detecting the choice > > and re-numbering the SCC twice, eventually choosing the "better" outcome. > > And then the situation where both cases happen in the same SCC is not > > handled either. > > > > Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk. > > > > Richard. > > > > 2015-08-13 Richard Biener <rguent...@suse.de> > > > > PR tree-optimization/66502 > > PR tree-optimization/67167 > > * tree-ssa-sccvn.c (vn_phi_compute_hash): Do not include > > backedge arguments. > > (vn_phi_lookup): Adjust. > > (vn_phi_insert): Likewise. > > (visit_phi): Prefer to value-number to another PHI node > > over value-numbering to a PHI argument. > > (init_scc_vn): Mark DFS back edges. > > Richard, > > I suspect this patch r226850 caused internal compiler error on > ./gcc/testsuite/gcc.c-torture/compile/20121027-1.c on arm-non-eabi. > The ICE gone away if I revert this patch. > > it can be easily reproduced by the following command. -mfpu and > -mfloat are necessary. > > ./cc1 -O3 -nostdinc 20121027-1.c -march=armv8-a -mthumb > -mfpu=crypto-neon-fp-armv8 -mfloat-abi=hard > > cc1 is generated from > > ../gcc/configure --target=arm-none-eabi --enable-languages=c,c++ > > do you mind to have a look?
I see the following ICE: t.c:13:1: internal compiler error: in decompose_normal_address, at rtlanal.c:6090 } ^ 0xc94a37 decompose_normal_address /space/rguenther/tramp3d/trunk/gcc/rtlanal.c:6090 0xc94d25 decompose_address(address_info*, rtx_def**, machine_mode, unsigned char, rtx_code) /space/rguenther/tramp3d/trunk/gcc/rtlanal.c:6167 0xc94dc3 decompose_mem_address(address_info*, rtx_def*) /space/rguenther/tramp3d/trunk/gcc/rtlanal.c:6187 0xb61149 process_address_1 /space/rguenther/tramp3d/trunk/gcc/lra-constraints.c:2867 0xb61c4e process_address /space/rguenther/tramp3d/trunk/gcc/lra-constraints.c:3124 0xb62607 curr_insn_transform /space/rguenther/tramp3d/trunk/gcc/lra-constraints.c:3419 0xb65250 lra_constraints(bool) /space/rguenther/tramp3d/trunk/gcc/lra-constraints.c:4421 that looks like a latent issue to me in an area of GCC I am not familiar with. I suggest to open a bugreport and CC Vladimir. The r226850 change caused us to eliminate an induction variable early (I suspect IVOPTs would have done this later anyway, but I did not verify that): Replaced redundant PHI node defining bl_2 with c_1 Replaced c_1 + 1 with bl_15 in all uses of c_16 = c_1 + 1; Removing dead stmt c_16 = c_1 + 1; Removing dead stmt bl_2 = PHI <0(2), bl_15(3)> Thanks, Richard. > Thanks. > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)