aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorJustin Squirek <squirek@adacore.com>2018-09-26 09:19:53 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-09-26 09:19:53 +0000
commit0ebf09ed046391377af708ab2471403d3affdddd (patch)
tree9daee39e9cfe4cf3897f36e82bf02f98605ec927 /gcc/ada
parentcec0185c7e02aa52ffceddbf46a16a66ed47459c (diff)
downloadgcc-0ebf09ed046391377af708ab2471403d3affdddd.zip
gcc-0ebf09ed046391377af708ab2471403d3affdddd.tar.gz
gcc-0ebf09ed046391377af708ab2471403d3affdddd.tar.bz2
[Ada] Spurious ineffective use_clause warning
This patch fixes an issue whereby user-defined subprograms used as generic actuals with corresponding formals containing other formal types led to spurious ineffective use_clause warnings. 2018-09-26 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_ch8.adb (Analyze_Subprogram_Renaming): Add extra condition to check for unmarked subprogram references coming from renamings. gcc/testsuite/ * gnat.dg/warn16.adb: New testcase. From-SVN: r264635
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/sem_ch8.adb10
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 5e0adf4..f460963 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2018-09-26 Justin Squirek <squirek@adacore.com>
+
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): Add extra condition
+ to check for unmarked subprogram references coming from
+ renamings.
+
2018-09-26 Arnaud Charlet <charlet@adacore.com>
* back_end.adb (Scan_Compiler_Arguments): Store -G xxx switches.
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index f538144..fb4dcb5 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -3692,8 +3692,16 @@ package body Sem_Ch8 is
-- and mark any use_package_clauses that affect the visibility of the
-- implicit generic actual.
+ -- Also, we may be looking at an internal renaming of a user-defined
+ -- subprogram created for a generic formal subprogram association,
+ -- which will also have to be marked here. This can occur when the
+ -- corresponding formal subprogram contains references to other generic
+ -- formals.
+
if Is_Generic_Actual_Subprogram (New_S)
- and then (Is_Intrinsic_Subprogram (New_S) or else From_Default (N))
+ and then (Is_Intrinsic_Subprogram (New_S)
+ or else From_Default (N)
+ or else Nkind (N) = N_Subprogram_Renaming_Declaration)
then
Mark_Use_Clauses (New_S);