This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: abort dominance:calc_dfs_tree trunck configured for arm-elf target


Graham Stott wrote:
> 
> Michael
> 
> sf_erf.c: In function `erfcf':
> sf_erf.c:16: Internal compiler error in calc_dfs_tree, at dominance.c:355
> 
> The following almost trival peice of code triggers an abort
> in calc_dfs_tree because di->nodes == 7 and n_basic_blocks == 8
> 
> ---------------------------sf_erf.c---------------------------------
> extern float erfcf (float);
> 
> extern const float one,two;
> 
> float
> erfcf(float x)
> {
>         int hx,ix;
> 
>         hx = one;
>         ix = hx & 0x7fffffff;
>         if(ix >= 0x7f800000)
>             return (float)(((unsigned)hx>>31)<<1)+one/x;
>         else
>           return two;
> }
> ---------------------------------------------------------------------

I think I've identified the problem.

The CFG had an unreachable block which appears to trigger the abort
because the unreachable block is never processed during the DFS.

I added a call to cleanup_cfg (CLEANUP_EXEPENSIVE) before the call to
schedule_insns() toplev.c which removed the unreachable block from the
CFG.

Graham


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]