[Bug fortran/40206] [gfortran] Incorrect warning with -Wuninitialized

2010-07-15 Thread jakub at gcc dot gnu dot org


--- Comment #9 from jakub at gcc dot gnu dot org  2010-07-15 15:09 ---
Should be fixed now for 4.6+.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug fortran/40206] [gfortran] Incorrect warning with -Wuninitialized

2010-07-15 Thread jakub at gcc dot gnu dot org


--- Comment #8 from jakub at gcc dot gnu dot org  2010-07-15 07:53 ---
Subject: Bug 40206

Author: jakub
Date: Thu Jul 15 07:52:51 2010
New Revision: 162209

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162209
Log:
PR fortran/40206
* trans-stmt.c (gfc_trans_character_select): Always use NULL for high
in CASE_LABEL_EXPR and use NULL for low for the default case.

* gfortran.dg/select_char_3.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/select_char_3.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-stmt.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug fortran/40206] [gfortran] Incorrect warning with -Wuninitialized

2009-05-20 Thread jakub at gcc dot gnu dot org


--- Comment #7 from jakub at gcc dot gnu dot org  2009-05-20 14:32 ---
For all involved strings being non-array CHAR with length 1 I fail to see why
normal SWITCH_EXPR isn't used instead (though that would just be an
optimization).

The middle-end can't know the _gfortran_select_string function will never
return numbers bigger than the size of the jump table it is called with, so the
Fortran FE should help it.  If the table contains a default label, it should
use a default: case label instead of corresponding number, and if there is no
case label, but all possible strings are covered, it can pick a random case
label as the default.


-- 


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



[Bug fortran/40206] [gfortran] Incorrect warning with -Wuninitialized

2009-05-20 Thread rguenth at gcc dot gnu dot org


--- Comment #6 from rguenth at gcc dot gnu dot org  2009-05-20 14:14 ---
The FE should use a default label for the last case in the switch stmt.
I also think the FE does premature optimization here, but ...


-- 


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



[Bug fortran/40206] [gfortran] Incorrect warning with -Wuninitialized

2009-05-20 Thread burnus at gcc dot gnu dot org


--- Comment #5 from burnus at gcc dot gnu dot org  2009-05-20 13:40 ---
switch (case_num.1)
  {
case 1 ... 1:;
case 2 ... 2:;
__result_char2type = 1;
goto L.1;
case 0 ... 0:;
__result_char2type = -1234;
goto L.1;
  }

Wouldn't this solved by adding a "default:" as C does for "default:" ?

> In addition, why gfortran does not name the variable char2type?

Good question. it clashes with the name of the function, but I don't know
whether that is a problem or not. In any case: you are right, it makes
debugging harder ...


-- 


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



[Bug fortran/40206] [gfortran] Incorrect warning with -Wuninitialized

2009-05-20 Thread manu at gcc dot gnu dot org


--- Comment #4 from manu at gcc dot gnu dot org  2009-05-20 13:12 ---
(In reply to comment #2)
> I'd suspect this to be a related to Jakub's recent changes applied for PR39666
> (i.e. r147136)? Does your testcase work for r147135?
> 

On the contrary, I think this is a missed testcase from Jakub's changes,
because the default label is added during gimplification. Perhaps the patch of
Jakub can be extended to handle this, or the fortran FE can add the default
label in the correct place.

In addition, why gfortran does not name the variable char2type? Can you access
that variable when debugging?


-- 


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



[Bug fortran/40206] [gfortran] Incorrect warning with -Wuninitialized

2009-05-20 Thread martin at mpa-garching dot mpg dot de


--- Comment #3 from martin at mpa-garching dot mpg dot de  2009-05-20 13:03 
---
(In reply to comment #2)
> I'd suspect this to be a related to Jakub's recent changes applied for PR39666
> (i.e. r147136)? Does your testcase work for r147135?

I cannot check this quickly. However I tried with gfortran 4.2.3 and the head
of the 4.4 branch and got similar warnings. Surprisingly, these compilers warn
about
line 22 (instead of 23), which is still wrong...


-- 


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



[Bug fortran/40206] [gfortran] Incorrect warning with -Wuninitialized

2009-05-20 Thread dfranke at gcc dot gnu dot org


--- Comment #2 from dfranke at gcc dot gnu dot org  2009-05-20 12:48 ---
I'd suspect this to be a related to Jakub's recent changes applied for PR39666
(i.e. r147136)? Does your testcase work for r147135?


-- 

dfranke at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||dfranke at gcc dot gnu dot
   ||org


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



[Bug fortran/40206] [gfortran] Incorrect warning with -Wuninitialized

2009-05-20 Thread burnus at gcc dot gnu dot org


--- Comment #1 from burnus at gcc dot gnu dot org  2009-05-20 12:43 ---
The dump is the following. gfortran_select_string returns only 0, 1, or 2, but
the middle end does not know this.

Manuel, do you have an idea how to solve this?

case_num.1 = _gfortran_select_string ((void *) &jumptable.0, 3, char, 1);
switch (case_num.1)
  {
case 1 ... 1:;
case 2 ... 2:;
__result_char2type = 1;
goto L.1;
case 0 ... 0:;
__result_char2type = -1234;
goto L.1;
  }


-- 

burnus at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu dot org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
  GCC build triplet|i686-pc-linux-gnu   |
   GCC host triplet|i686-pc-linux-gnu   |
 GCC target triplet|i686-pc-linux-gnu   |
   Last reconfirmed|-00-00 00:00:00 |2009-05-20 12:43:26
   date||


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