aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2008-02-27 11:53:55 +0000
committerSamuel Tardieu <sam@gcc.gnu.org>2008-02-27 11:53:55 +0000
commitf5c064ab04a306a571f36b1d59db2c0337433f3e (patch)
treefd8cfa265faaebdd5a596dcdf4f456955046296f /gcc/ada
parent70582b3afe47248d2b70c5731fb7cf44fa17dc16 (diff)
downloadgcc-f5c064ab04a306a571f36b1d59db2c0337433f3e.zip
gcc-f5c064ab04a306a571f36b1d59db2c0337433f3e.tar.gz
gcc-f5c064ab04a306a571f36b1d59db2c0337433f3e.tar.bz2
re PR ada/34799 ([Ada] Assertion fails when no component clause is given for generic record member)
gcc/ada/ PR ada/34799 * sem_ch13.adb (Analyze_Record_Representation_Clause): Check that underlying type is present. gcc/testsuite/ PR ada/34799 * gnat.dg/specs/pr34799.ads: New test. From-SVN: r132707
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/sem_ch13.adb6
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 148d066..f509596 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2008-02-27 Samuel Tardieu <sam@rfc1149.net>
+
+ PR ada/34799
+ * sem_ch13.adb (Analyze_Record_Representation_Clause): Check
+ that underlying type is present.
+
2008-02-26 Tom Tromey <tromey@redhat.com>
* misc.c (internal_error_function): Remove test of
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index 33a55a8..2b58c12 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -2747,7 +2747,10 @@ package body Sem_Ch13 is
-- We are only interested in the case where there is at least one
-- unrepped component, and at least half the components have rep
-- clauses. We figure that if less than half have them, then the
- -- partial rep clause is really intentional.
+ -- partial rep clause is really intentional. If the component
+ -- type has no underlying type set at this point (as for a generic
+ -- formal type), we don't know enough to give a warning on the
+ -- component.
if Num_Unrepped_Components > 0
and then Num_Unrepped_Components < Num_Repped_Components
@@ -2756,6 +2759,7 @@ package body Sem_Ch13 is
while Present (Comp) loop
if No (Component_Clause (Comp))
and then Comes_From_Source (Comp)
+ and then Present (Underlying_Type (Etype (Comp)))
and then (Is_Scalar_Type (Underlying_Type (Etype (Comp)))
or else Size_Known_At_Compile_Time
(Underlying_Type (Etype (Comp))))