diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2018-06-12 09:51:26 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2018-06-12 09:51:26 +0000 |
commit | cd8ad45920aaf33a660b85878c572298faba06bf (patch) | |
tree | 3c8c32322ff2d79c1acfc7387a1606252f353502 /gcc/testsuite | |
parent | 835d417373cf5843051885e2cba29aea30814606 (diff) | |
download | gcc-cd8ad45920aaf33a660b85878c572298faba06bf.zip gcc-cd8ad45920aaf33a660b85878c572298faba06bf.tar.gz gcc-cd8ad45920aaf33a660b85878c572298faba06bf.tar.bz2 |
decl.c (variant_desc): Add AUX field.
* gcc-interface/decl.c (variant_desc): Add AUX field.
(gnat_to_gnu_entity) <discrete_type>: Do not call compute_record_mode
directly.
(reverse_sort_field_list): New static function.
(components_to_record): Place the variant part at the beginning of the
field list when there is an obvious order of increasing position.
(build_variant_list): Initialize it.
(create_variant_part_from): Do not call compute_record_mode directly.
(copy_and_substitute_in_layout): Likewise. Always sort the fields with
fixed position in order of increasing position, in the record and all
the variants, in any. Call reverse_sort_field_list.
* gcc-interface/utils.c (make_packable_type): Compute the sizes before
calling finish_record_type. Do not call compute_record_mode directly.
(finish_record_type): Overhaul final processing depending on REP_LEVEL
and call finish_bitfield_layout if it is equal to one or two.
From-SVN: r261479
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/opt72_pkg.ads | 12 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/opt72a.adb | 12 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/opt72b.adb | 12 |
4 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b1e6944..56b6008 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-06-12 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/opt72a.ad[sb]: New test. + * gnat.dg/opt72_pkg.ads: New helper. + 2018-06-12 Tom de Vries <tdevries@suse.de> * gcc.dg-selftests/dg-final.exp: New file. diff --git a/gcc/testsuite/gnat.dg/opt72_pkg.ads b/gcc/testsuite/gnat.dg/opt72_pkg.ads new file mode 100644 index 0000000..92255fb --- /dev/null +++ b/gcc/testsuite/gnat.dg/opt72_pkg.ads @@ -0,0 +1,12 @@ +package Opt72_Pkg is + + type Rec is record + Flag : Boolean; + Size : Positive; + end record; + for Rec use record + Flag at 0 range 0 .. 0; + Size at 0 range 1 .. 31; + end record; + +end Opt72_Pkg; diff --git a/gcc/testsuite/gnat.dg/opt72a.adb b/gcc/testsuite/gnat.dg/opt72a.adb new file mode 100644 index 0000000..db1d28c --- /dev/null +++ b/gcc/testsuite/gnat.dg/opt72a.adb @@ -0,0 +1,12 @@ +-- { dg-do compile } +-- { dg-require-effective-target store_merge } +-- { dg-options "-O2 -fdump-tree-store-merging" } + +with Opt72_Pkg; use Opt72_Pkg; + +procedure Opt72a (X : not null access Rec; Size : Positive) is +begin + X.all := (Flag => True, Size => Size); +end; + +-- { dg-final { scan-tree-dump "Merging successful" "store-merging" } } diff --git a/gcc/testsuite/gnat.dg/opt72b.adb b/gcc/testsuite/gnat.dg/opt72b.adb new file mode 100644 index 0000000..e4a708b --- /dev/null +++ b/gcc/testsuite/gnat.dg/opt72b.adb @@ -0,0 +1,12 @@ +-- { dg-do compile } +-- { dg-require-effective-target store_merge } +-- { dg-options "-O2 -fdump-tree-store-merging" } + +with Opt72_Pkg; use Opt72_Pkg; + +procedure Opt72b (X : not null access Rec; Y : not null access Rec) is +begin + X.all := (Flag => True, Size => Y.Size); +end; + +-- { dg-final { scan-tree-dump "Merging successful" "store-merging" } } |