+2017-09-29 Justin Squirek <squirek@adacore.com>
+
+ * sem_ch8.adb (Note_Redundant_Use): Add guard to protect against false
+ redundant warnings.
+
+2017-09-29 Yannick Moy <moy@adacore.com>
+
+ * sinput-c.adb: Remove unused with-clause on Ada.Unchecked_Conversion.
+
+2017-09-29 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_rm/representation_clauses_and_pragmas.rst: Minor rewording.
+ * doc/gnat_rm/implementation_defined_pragmas.rst (Optimize_Alignment):
+ Document the effect of pragma Optimize_Alignment (Space) on non-packed
+ record types.
+ * gnat_rm.texi: Regenerate.
+
2017-09-25 Justin Squirek <squirek@adacore.com>
* aspects.adb, bindgen.adb, clean.adb, erroutc.adb, exp_ch13.adb,
which occur when the compiler increases the alignment of a specific object
without changing the alignment of its type.
+Specifying SPACE also disables component reordering in unpacked record types,
+which can result in larger sizes in order to meet alignment requirements.
+
Specifying TIME causes larger default alignments to be chosen in the case of
small types with sizes that are not a power of 2. For example, consider:
* *Records*.
- For the normal non-packed case, the alignment of a record is equal to
+ For the normal unpacked case, the alignment of a record is equal to
the maximum alignment of any of its components. For tagged records, this
includes the implicit access type used for the tag. If a pragma ``Pack``
is used and all components are packable (see separate section on pragma
@copying
@quotation
-GNAT Reference Manual , Sep 13, 2017
+GNAT Reference Manual , Sep 29, 2017
AdaCore
which occur when the compiler increases the alignment of a specific object
without changing the alignment of its type.
+Specifying SPACE also disables component reordering in unpacked record types,
+which can result in larger sizes in order to meet alignment requirements.
+
Specifying TIME causes larger default alignments to be chosen in the case of
small types with sizes that are not a power of 2. For example, consider:
@item
@emph{Records}.
-For the normal non-packed case, the alignment of a record is equal to
+For the normal unpacked case, the alignment of a record is equal to
the maximum alignment of any of its components. For tagged records, this
includes the implicit access type used for the tag. If a pragma @code{Pack}
is used and all components are packable (see separate section on pragma
end if;
- if Present (Redundant) then
+ if Present (Redundant) and then Parent (Redundant) /= Prev_Use then
-- Make sure we are looking at most-descendant use_package_clause
-- by traversing the chain with Find_Most_Prev and then verifying
-- there is no scope manipulation via Most_Descendant_Use_Clause.
with Output; use Output;
with System; use System;
-with Ada.Unchecked_Conversion;
-
pragma Warnings (Off);
-- This package is used also by gnatcoll
with System.OS_Lib; use System.OS_Lib;