diff options
author | Samuel Tardieu <sam@rfc1149.net> | 2008-02-27 11:53:55 +0000 |
---|---|---|
committer | Samuel Tardieu <sam@gcc.gnu.org> | 2008-02-27 11:53:55 +0000 |
commit | f5c064ab04a306a571f36b1d59db2c0337433f3e (patch) | |
tree | fd8cfa265faaebdd5a596dcdf4f456955046296f /gcc/ada | |
parent | 70582b3afe47248d2b70c5731fb7cf44fa17dc16 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/sem_ch13.adb | 6 |
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)))) |