re PR fortran/45742 (VOLATILE has no effect)

2010-11-13  Tobias Burnus  <burnus@net-b.de>

        PR fortran/45742
        * trans-common.c (build_field): Add TREE_SIDE_EFFECTS for
        * volatile.
        * trans-decl.c (gfc_finish_var_decl): Ditto.
        (create_function_arglist): Handle volatile dummy arguments.

2010-11-13  Tobias Burnus  <burnus@net-b.de>

        PR fortran/45742
        * gfortran.dg/volatile12.f90: New.

From-SVN: r166715
This commit is contained in:
Tobias Burnus 2010-11-13 18:25:28 +01:00 committed by Tobias Burnus
parent 9d655f0a9a
commit eeb1856993
5 changed files with 39 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2010-11-13 Tobias Burnus <burnus@net-b.de>
PR fortran/45742
* trans-common.c (build_field): Add TREE_SIDE_EFFECTS for volatile.
* trans-decl.c (gfc_finish_var_decl): Ditto.
(create_function_arglist): Handle volatile dummy arguments.
2010-10-25 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/46140

View File

@ -323,6 +323,7 @@ build_field (segment_info *h, tree union_type, record_layout_info rli)
{
tree new_type;
TREE_THIS_VOLATILE (field) = 1;
TREE_SIDE_EFFECTS (field) = 1;
new_type = build_qualified_type (TREE_TYPE (field), TYPE_QUAL_VOLATILE);
TREE_TYPE (field) = new_type;
}

View File

@ -539,6 +539,7 @@ gfc_finish_var_decl (tree decl, gfc_symbol * sym)
if (sym->attr.volatile_)
{
TREE_THIS_VOLATILE (decl) = 1;
TREE_SIDE_EFFECTS (decl) = 1;
new_type = build_qualified_type (TREE_TYPE (decl), TYPE_QUAL_VOLATILE);
TREE_TYPE (decl) = new_type;
}
@ -1655,10 +1656,19 @@ create_function_arglist (gfc_symbol * sym)
if (f->sym->attr.proc_pointer)
type = build_pointer_type (type);
if (f->sym->attr.volatile_)
type = build_qualified_type (type, TYPE_QUAL_VOLATILE);
/* Build the argument declaration. */
parm = build_decl (PARM_DECL, gfc_sym_identifier (f->sym), type);
if (f->sym->attr.volatile_)
{
TREE_THIS_VOLATILE (parm) = 1;
TREE_SIDE_EFFECTS (parm) = 1;
}
/* Fill in arg stuff. */
DECL_CONTEXT (parm) = fndecl;
DECL_ARG_TYPE (parm) = TREE_VALUE (typelist);

View File

@ -1,3 +1,8 @@
2010-11-13 Tobias Burnus <burnus@net-b.de>
PR fortran/45742
* gfortran.dg/volatile12.f90: New.
2010-11-12 Jakub Jelinek <jakub@redhat.com>
Backport from mainline

View File

@ -0,0 +1,16 @@
! { dg-do compile }
! { dg-options "-fdump-tree-optimized -O3" }
!
! PR fortran/45742
!
subroutine sub(arg)
integer, volatile :: arg
if (arg /= arg) call I_dont_exist()
end
! { dg-final { scan-tree-dump "integer.kind=.. . volatile arg" "optimized" } }
! { dg-final { scan-tree-dump-times " =.v. arg;" 2 "optimized" } }
! { dg-final { scan-tree-dump "i_dont_exist" "optimized" } }
! { dg-final { cleanup-tree-dump "optimized" } }