[Ad-dev] [openAD] #290: DATA statement cannot partially initialize default initialized active typed variable
OpenAD
trac at mcs.anl.gov
Fri Feb 14 15:13:35 CST 2014
#290: DATA statement cannot partially initialize default initialized active typed
variable
--------------------------+-------------------------------------------------
Reporter: utke | Owner: utke
Type: defect | Status: new
Priority: major | Milestone:
Component: OpenADFortTk | Keywords:
--------------------------+-------------------------------------------------
To: J3 11-201r1
From: Van Snyder / Tobias Burnus
Subject: Mixing default initialization with DATA initialization
Date: 2011 June 28
References: WG5/N1830
----------------------------------------------------------------------
NUMBER: F08/0062
TITLE: Mixing default initialization with DATA initialization
KEYWORDS: DATA, default initialization, explicit initalization
DEFECT TYPE: Clarification
STATUS: J3 consideration in progress
QUESTION:
In the following program, one component has a default initialization
and the other is initialized in a DATA statement. Is the program
valid?
module oad_active
implicit none
type active
integer :: v
integer :: d = 42
end type
end module
module tots_c
use oad_active
implicit none
type(active), save :: trlkold
data trlkold%v /100/
end module
program foo
use tots_c
implicit none
if (trlkold%d /= 42) stop 'ERROR d /= 42'
if (trlkold%v /= 100) stop 'ERROR v /= 100'
end program foo
WG5/N1830 has [p104, 5.4.7, parag. 2]
If a nonpointer object has default initialization, it shall not
appear in a <data-stmt-object-list>.
and [p89, 5.2.3, parag. 1]
Explicit initialization alternatively may be specified in a DATA
statement unless the variable is of a derived type for which default
initialization is specified. [...] A variable, or part of a
variable, shall not be explicitly initialized more than once in a
program.
and [p70, 4.5.4.6, parag. 6]
Explicit initialization in a type declaration statement (5.2)
overrides default initialization
ANSWER:
It was intended that the data statement not be conforming.
5.4.7p2 was carefully worded to use "shall not appear" rather than
"shall not be the <data-stmt-object>".
The intention was that an object be initialized entirely in a type
declaration statement, or that only those parts of it having default
initialization be initialized. It was considered to be a burden on
processors to be required to initialize some parts of a structure
using default initialization, and other parts of it explicitly.
EDITS:
None.
SUBMITTED BY: Tobias Burnus
HISTORY: 11-201 m195 Submitted
11-201r1 Draft answer.
----------------------------------------------------------------------
--
Ticket URL: <https://trac.mcs.anl.gov/projects/openAD/ticket/290>
OpenAD <http://www.mcs.anl.gov/openad>
Bug tracking for OpenAD components
More information about the Ad-dev
mailing list