summaryrefslogtreecommitdiff
path: root/gcc/ada/sem_ch13.adb
diff options
context:
space:
mode:
authorsam <sam@138bc75d-0d04-0410-961f-82ee72b054a4>2008-02-27 11:53:55 +0000
committersam <sam@138bc75d-0d04-0410-961f-82ee72b054a4>2008-02-27 11:53:55 +0000
commit87f9eef516a3c7de69746d5effa92ec486480d66 (patch)
treefd8cfa265faaebdd5a596dcdf4f456955046296f /gcc/ada/sem_ch13.adb
parent6295ca724123bcba17754cde6db8280274894197 (diff)
downloadgcc-87f9eef516a3c7de69746d5effa92ec486480d66.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132707 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sem_ch13.adb')
-rw-r--r--gcc/ada/sem_ch13.adb6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index 33a55a825b3..2b58c12edcd 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))))