diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-02-11 21:48:26 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-02-11 21:48:26 +0100 |
commit | 879287d96b5a37c7cc167ad792ac795075a457fd (patch) | |
tree | d879ba85d7d97dda6a345c4f15876930f4ffab73 /gcc | |
parent | fe89bba406fc34c89cee08b8ea9d5a283f71ca9e (diff) | |
download | gcc-879287d96b5a37c7cc167ad792ac795075a457fd.zip gcc-879287d96b5a37c7cc167ad792ac795075a457fd.tar.gz gcc-879287d96b5a37c7cc167ad792ac795075a457fd.tar.bz2 |
re PR fortran/52370 (Spurious "may be used uninitialized" warning for check of optional argument)
PR fortran/52370
* trans-decl.c (gfc_build_dummy_array_decl): Set TREE_NO_WARNING
on decl if sym->attr.optional.
* gfortran.dg/pr52370.f90: New test.
From-SVN: r207698
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr52370.f90 | 21 |
4 files changed, 36 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 89b34ab..c625a70 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2014-02-11 Jakub Jelinek <jakub@redhat.com> + + PR fortran/52370 + * trans-decl.c (gfc_build_dummy_array_decl): Set TREE_NO_WARNING + on decl if sym->attr.optional. + 2014-02-09 Paul Thomas <pault@gcc.gnu.org> PR fortran/57522 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index bb02f43..9c86653 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1014,6 +1014,10 @@ gfc_build_dummy_array_decl (gfc_symbol * sym, tree dummy) TREE_STATIC (decl) = 0; DECL_EXTERNAL (decl) = 0; + /* Avoid uninitialized warnings for optional dummy arguments. */ + if (sym->attr.optional) + TREE_NO_WARNING (decl) = 1; + /* We should never get deferred shape arrays here. We used to because of frontend bugs. */ gcc_assert (sym->as->type != AS_DEFERRED); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6d3743a..b9a4cd1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-02-11 Jakub Jelinek <jakub@redhat.com> + + PR fortran/52370 + * gfortran.dg/pr52370.f90: New test. + 2014-02-11 Uros Bizjak <ubizjak@gmail.com> PR target/59927 diff --git a/gcc/testsuite/gfortran.dg/pr52370.f90 b/gcc/testsuite/gfortran.dg/pr52370.f90 new file mode 100644 index 0000000..66a6fe2 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr52370.f90 @@ -0,0 +1,21 @@ +! PR fortran/52370 +! { dg-do compile } +! { dg-options "-O1 -Wall" } + +module pr52370 +contains + subroutine foo(a,b) + real, intent(out) :: a + real, dimension(:), optional, intent(out) :: b + a=0.5 + if (present(b)) then + b=1.0 + end if + end subroutine foo +end module pr52370 + +program prg52370 + use pr52370 + real :: a + call foo(a) +end program prg52370 |