------- Comment #7 from fmartinez at gmv dot com  2010-04-26 20:34 -------
Actually both ROTATION_MATRIX_TIMES_VECTOR are pure; the one in m_vector is
elemental, therefore pure, and the one in m_rotation_matrix is pure.
I have changed the one in m_rotation_matrix to ROTATION_MATRIX_TIMES_ARRAY to
remove the names collision and the ICE remains (I guess as expected)
I am a bit surprised about the NAG compiler behaviour.

> Confirmed with 4.5.0 and 4.6.0.
> 
> At least NAG f95 thinks that the current code is invalid; it writes for the
> second file:
> 
> Error: m_vector.f03, line 394: Reference via operator * to impure
> ROTATION_MATRIX_TIMES_VECTOR from pure ROTATION_MATRIX_TIMES_VECTOR
> which is in the following line:
> 
> ! Compute result
>   res%x = rot * right%x
> 
>  * * *
> 
> The assert fails at gfc_conv_variable for:
>   sym = expr->symtree->n.sym;
>   if (se->ss != NULL)
>     {
>       /* Check that something hasn't gone horribly wrong.  */
>       gcc_assert (se->ss != gfc_ss_terminator);
>       gcc_assert (se->ss->expr == expr); <<<<<<< ICE
> 
>  * * *
> 
> My old "4.6.0 20100421 fortran-dev revision 158628" fails with another ICE:
> ICE in gfc_build_null_descriptor, at fortran/trans-array.c:373
> 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43896

Reply via email to