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:
parent
9d655f0a9a
commit
eeb1856993
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" } }
|
||||
|
Loading…
Reference in New Issue