diff options
author | Bob Duff <duff@adacore.com> | 2021-06-15 09:12:36 -0400 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2021-07-12 12:50:57 +0000 |
commit | 0c8ff35eb982a49882ed71b1b85e8436675adf88 (patch) | |
tree | 71b6ac19dfcaef9f49b23a1221eac331546922cb /gcc/ada/sinfo.ads | |
parent | 5cb3843bca9a28c28dbc1fafd88c144a43e141df (diff) | |
download | gcc-0c8ff35eb982a49882ed71b1b85e8436675adf88.zip gcc-0c8ff35eb982a49882ed71b1b85e8436675adf88.tar.gz gcc-0c8ff35eb982a49882ed71b1b85e8436675adf88.tar.bz2 |
[Ada] Clean up Uint fields
gcc/ada/
* uintp.ads, types.h: New subtypes of Uint: Valid_Uint, Unat,
Upos, Nonzero_Uint with predicates. These correspond to new
field types in Gen_IL.
* gen_il-types.ads (Valid_Uint, Unat, Upos, Nonzero_Uint): New
field types.
* einfo-utils.ads, einfo-utils.adb, fe.h (Known_Alignment,
Init_Alignment): Use the initial zero value to represent
"unknown". This will ensure that if Alignment is called before
Set_Alignment, the compiler will blow up (if assertions are
enabled).
* atree.ads, atree.adb, atree.h, gen_il-gen.adb
(Get_Valid_32_Bit_Field): New generic low-level getter for
subtypes of Uint.
(Copy_Alignment): New procedure to copy Alignment field even
when Unknown.
(Init_Object_Size_Align, Init_Size_Align): Do not bypass the
Init_ procedures.
* exp_pakd.adb, freeze.adb, layout.adb, repinfo.adb,
sem_util.adb: Protect calls to Alignment with Known_Alignment.
Use Copy_Alignment when it might be unknown.
* gen_il-gen-gen_entities.adb (Alignment,
String_Literal_Length): Use type Unat instead of Uint, to ensure
that the field is always Set_ before we get it, and that it is
set to a nonnegative value.
(Enumeration_Pos): Unat.
(Enumeration_Rep): Valid_Uint. Can be negative, but must be
valid before fetching.
(Discriminant_Number): Upos.
(Renaming_Map): Remove.
* gen_il-gen-gen_nodes.adb (Char_Literal_Value, Reason): Unat.
(Intval, Corresponding_Integer_Value): Valid_Uint.
* gen_il-internals.ads: New functions for dealing with special
defaults and new subtypes of Uint.
* scans.ads: Correct comments.
* scn.adb (Post_Scan): Do not set Intval to No_Uint; that is no
longer allowed.
* sem_ch13.adb (Analyze_Enumeration_Representation_Clause): Do
not set Enumeration_Rep to No_Uint; that is no longer allowed.
(Offset_Value): Protect calls to Alignment with Known_Alignment.
* sem_prag.adb (Set_Atomic_VFA): Do not use Uint_0 to mean
"unknown"; call Init_Alignment instead.
* sinfo.ads: Minor comment fix.
* treepr.adb: Deal with printing of new field types.
* einfo.ads, gen_il-fields.ads (Renaming_Map): Remove.
* gcc-interface/decl.c (gnat_to_gnu_entity): Use Known_Alignment
before calling Alignment. This preserve some probably buggy
behavior: if the alignment is not set, it previously defaulted
to Uint_0; we now make that explicit. Use Copy_Alignment,
because "Set_Alignment (Y, Alignment (X));" no longer works when
the Alignment of X has not yet been set.
* gcc-interface/trans.c (process_freeze_entity): Use
Copy_Alignment.
Diffstat (limited to 'gcc/ada/sinfo.ads')
-rw-r--r-- | gcc/ada/sinfo.ads | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads index 71da7fc..20a6125 100644 --- a/gcc/ada/sinfo.ads +++ b/gcc/ada/sinfo.ads @@ -2177,12 +2177,12 @@ package Sinfo is -- Present in an N_Variant node. This has a meaningful value only after -- Gigi has back annotated the tree with representation information. At -- this point, it contains a reference to a gcc expression that depends - -- on the values of one or more discriminants. Give a set of discriminant - -- values, this expression evaluates to False (zero) if variant is not - -- present, and True (non-zero) if it is present. See unit Repinfo for - -- further details on gigi back annotation. This field is used during - -- back-annotation processing (for -gnatR -gnatc) to determine if a field - -- is present or not. + -- on the values of one or more discriminants. Given a set of + -- discriminant values, this expression evaluates to False (zero) if + -- variant is not present, and True (non-zero) if it is present. See + -- unit Repinfo for further details on gigi back annotation. This field + -- is used during back-annotation processing (for -gnatR -gnatc) to + -- determine if a field is present or not. -- Prev_Use_Clause -- Present in both N_Use_Package_Clause and N_Use_Type_Clause. Used in |