diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-11 12:22:57 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-11 12:22:57 +0000 |
commit | d8b02cb47055f7d18048d8507b32f051cf94bfd5 (patch) | |
tree | 645544f68c75c182b632092acdfbe2feee66f73d /gcc/ada/lib-xref.adb | |
parent | 8b4123567ec4b1f923dcc6453c0750f33ae37b71 (diff) | |
download | gcc-d8b02cb47055f7d18048d8507b32f051cf94bfd5.tar.gz |
2014-06-11 Yannick Moy <moy@adacore.com>
* einfo.ads: Minor typo in comment
2014-06-11 Ed Schonberg <schonberg@adacore.com>
* sinfo.ads, sinfo.adb: New attribute Uninitialized_Variable, for
formal private types and private type extensions, to indicate
variable in a generic unit whose uninitialized use suggest that
actual type should be fully initialized.
Needs_Initialized_Actual: removed, functionaity replaced by
the above.
* lib-xref.adb (Generate_Reference): Generate a reference for
variables of a formal type when the unit is not the main unit,
to enable appropriate warnings in an instance.
* sem_ch12.adb (Check_Ininialized_Type): Improve warning on use
of variable in a generic unit that suggests that actual type
should be full initialized.
* sem_warn.adb; (May_Need_Initialized_Actual): Make into procedure
and do not emot warning, which now only appears in an instance.
2014-06-11 Eric Botcazou <ebotcazou@adacore.com>
* gnat_ugn.texi: Fix minor typo.
2014-06-11 Hristian Kirtchev <kirtchev@adacore.com>
* sem_ch3.adb Add with and use clause for Sem_Ch10.
(Analyze_Declarations): Code reformatting. Analyze the contract
of a subprogram body stub at the end of the declarative region.
* sem_ch6.adb (Analyze_Subprogram_Body_Contract): Spec_Id is
now a variable. Do not process the body if its contract is not
available. Account for subprogram body stubs when extracting
the corresponding spec.
* sem_ch6.ads (Analyze_Subprogram_Contract): Update the comment
on usage.
* sem_ch10.ads, sem_ch10.adb (Analyze_Subprogram_Body_Stub_Contract):
New routine.
* sem_prag.adb (Analyze_Depends_In_Decl_Part):
Account for subprogram body stubs when extracting the
corresponding spec.
(Analyze_Global_In_Decl_List):
Account for subprogram body stubs when extracting the
corresponding spec.
(Analyze_Refined_Depends_In_Decl_Part):
Use Find_Related_Subprogram_Or_Body to retrieve the declaration
of the related body. Spec_Is now a variable. Account for
subprogram body stubs when extracting the corresponding spec.
(Analyze_Refined_Global_In_Decl_Part): Use
Find_Related_Subprogram_Or_Body to retrieve the declaration
of the related body. Spec_Is now a variable. Account for
subprogram body stubs when extracting the corresponding spec.
(Collect_Subprogram_Inputs_Output): Account for subprogram body
stubs when extracting the corresponding spec.
2014-06-11 Vincent Celier <celier@adacore.com>
* gnatcmd.adb (Process_Link): Do not invoke gnatlink with
-lgnarl or -lgnat.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211454 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/lib-xref.adb')
-rw-r--r-- | gcc/ada/lib-xref.adb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ada/lib-xref.adb b/gcc/ada/lib-xref.adb index d99c054c7eb..cc9ac4ce0f3 100644 --- a/gcc/ada/lib-xref.adb +++ b/gcc/ada/lib-xref.adb @@ -640,6 +640,11 @@ package body Lib.Xref is -- For the same reason we accept an implicit reference generated for -- a default in an instance. + -- We also set the referenced flag in a generic package that is not in + -- then main source unit, when the variable is of a formal private type, + -- to warn in the instance if the corresponding type is not a fully + -- initialized type. + if not In_Extended_Main_Source_Unit (N) then if Typ = 'e' or else Typ = 'I' @@ -655,8 +660,23 @@ package body Lib.Xref is (GNATprove_Mode and then In_Extended_Main_Code_Unit (N) and then (Typ = 'm' or else Typ = 'r' or else Typ = 's')) + then null; + + elsif In_Instance_Body + and then In_Extended_Main_Code_Unit (N) + and then Is_Generic_Type (Etype (E)) + then + Set_Referenced (E); + return; + + elsif Inside_A_Generic + and then Is_Generic_Type (Etype (E)) + then + Set_Referenced (E); + return; + else return; end if; |