On Sunday 05 April 2009 18:56:20 Eric Botcazou wrote:
> > I'm not sure if it would work and I have idea where in trans*.c
> > you need to do this, but if you mark the tree as used with
> > something like
> >
> > TREE_USED (__result_f) = 1
> >
> > the middle-end may be silenced.
>
> I think that TREE_NO_WARNING would be more appropriate for this purpose.

I found that the warning doesn't show up if the testcase is changed:

FUNCTION f(n)
  INTEGER, INTENT(in) :: n
  REAL                :: f

  SELECT CASE (n)
    CASE ( :-1);   f = 0.0      ! was -1.0
    CASE (0);      f = 0.0
    CASE (1: );    f = 0.0      ! was  1.0
  END SELECT
END FUNCTION

Here, the optimizer removes the select-case completely, so it "knows" that the 
full range is covered:

f (integer(kind=4) & n)
{
<bb 2>:
  return 0.0;
}

Conclusion: the "default" clause in the generic case is wrong?

        Daniel

Reply via email to