aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2019-10-10 15:23:01 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-10-10 15:23:01 +0000
commitc223b7646bff69adeea080fdddc499b30179efec (patch)
tree5526949bdb912eb87e39cb6ec3de4b67ffad456a /gcc/ada
parent92219babbb18f8ee2590fe9e1040b0cc09d16b45 (diff)
downloadgcc-c223b7646bff69adeea080fdddc499b30179efec.zip
gcc-c223b7646bff69adeea080fdddc499b30179efec.tar.gz
gcc-c223b7646bff69adeea080fdddc499b30179efec.tar.bz2
[Ada] Spurious visibility error in predicate in generic instance
2019-10-10 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_cat.adb (Set_Categorization_From_Pragma): Do not modify any visibility settings if there are no compilation_unit pragmas following the package declaration. Add comments for future cleanup. From-SVN: r276812
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog14
-rw-r--r--gcc/ada/sem_cat.adb12
2 files changed, 14 insertions, 12 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 1788f19..50654f0 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,10 +1,6 @@
-2019-10-10 Patrick Bernardi <bernardi@adacore.com>
+2019-10-10 Ed Schonberg <schonberg@adacore.com>
- * bindgen.adb (System_Secondary_Stack_Package_In_Closure):
- Renamed flag System_Secondary_Stack_Used to be clearer of what
- it represents.
- (Gen_Adainit): Refactor secondary stack related code to make it
- clearer.
- * rtsfind.adb (Load_RTU): Don't set Sec_Stack_Used flag here
- (RTE): Set Sec_Stack_Used if the System.Secondary_Stack is
- referenced, but not if we're ignoring ghost code. \ No newline at end of file
+ * sem_cat.adb (Set_Categorization_From_Pragma): Do not modify
+ any visibility settings if there are no compilation_unit pragmas
+ following the package declaration. Add comments for future
+ cleanup. \ No newline at end of file
diff --git a/gcc/ada/sem_cat.adb b/gcc/ada/sem_cat.adb
index 663dca4..780fec9 100644
--- a/gcc/ada/sem_cat.adb
+++ b/gcc/ada/sem_cat.adb
@@ -721,9 +721,15 @@ package body Sem_Cat is
-- The purpose is to set categorization flags before analyzing the
-- unit itself, so as to diagnose violations of categorization as
-- we process each declaration, even though the pragma appears after
- -- the unit.
-
- if Nkind (P) /= N_Compilation_Unit then
+ -- the unit. This processing is only needsd if compilation unit
+ -- pragmas are present.
+ -- Note: this code may be incorrect in the unlikely case a child
+ -- genericc unit is instantiated as a child of its (non-generic)
+ -- parent, so that generic and insstance are siblings,
+
+ if Nkind (P) /= N_Compilation_Unit
+ or else No (First (Pragmas_After (Aux_Decls_Node (P))))
+ then
return;
end if;