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)

Reply via email to