diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2014-07-20 20:30:23 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2014-07-20 20:30:23 +0000 |
commit | d6cd6e226f990518183cb2c87ced5d9ae70bb4d5 (patch) | |
tree | cd57cd0c182f7904ec0d4305e406f0288d546316 /gcc | |
parent | f67341b6248741fa1d7ccc508c2692988b42c576 (diff) | |
download | gcc-d6cd6e226f990518183cb2c87ced5d9ae70bb4d5.zip gcc-d6cd6e226f990518183cb2c87ced5d9ae70bb4d5.tar.gz gcc-d6cd6e226f990518183cb2c87ced5d9ae70bb4d5.tar.bz2 |
expr.c (store_field): Handle VOIDmode for calls that return values in multiple locations.
* expr.c (store_field): Handle VOIDmode for calls that return values
in multiple locations.
From-SVN: r212877
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/expr.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/pack20.adb | 9 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/pack20.ads | 15 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/pack20_pkg.ads | 7 |
6 files changed, 42 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 52b84ef..0e5a2985 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-07-20 Eric Botcazou <ebotcazou@adacore.com> + + * expr.c (store_field): Handle VOIDmode for calls that return values + in multiple locations. + 2014-07-20 Bill Schmidt <wschmidt@linux.vnet.ibm.com> * config/rs6000/altivec.md (unspec enum): Fix typo in @@ -6581,7 +6581,7 @@ store_field (rtx target, HOST_WIDE_INT bitsize, HOST_WIDE_INT bitpos, { HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp)); rtx temp_target; - if (mode == BLKmode) + if (mode == BLKmode || mode == VOIDmode) mode = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT); temp_target = gen_reg_rtx (mode); emit_group_store (temp_target, temp, TREE_TYPE (exp), size); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3777264..3111c73 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-07-20 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/pack20.ad[sb]: New test. + * gnat.dg/pack20_pkg.ads: New helper. + 2014-07-20 Ian Lance Taylor <iant@google.com> * go.test/go-test.exp (go-gc-tests): Support multiple files in one diff --git a/gcc/testsuite/gnat.dg/pack20.adb b/gcc/testsuite/gnat.dg/pack20.adb new file mode 100644 index 0000000..5ec3e93 --- /dev/null +++ b/gcc/testsuite/gnat.dg/pack20.adb @@ -0,0 +1,9 @@ +package body Pack20 is + + procedure Proc (A : Rec) is + Local : Rec := A; + begin + Modify (Local.Fixed); + end; + +end Pack20; diff --git a/gcc/testsuite/gnat.dg/pack20.ads b/gcc/testsuite/gnat.dg/pack20.ads new file mode 100644 index 0000000..ddfb9d8 --- /dev/null +++ b/gcc/testsuite/gnat.dg/pack20.ads @@ -0,0 +1,15 @@ +-- { dg-do compile } + +with Pack20_Pkg; use Pack20_Pkg; + +package Pack20 is + + type Rec is record + Simple_Type : Integer; + Fixed : String_Ptr; + end record; + pragma Pack (Rec); + + procedure Proc (A : Rec); + +end Pack20; diff --git a/gcc/testsuite/gnat.dg/pack20_pkg.ads b/gcc/testsuite/gnat.dg/pack20_pkg.ads new file mode 100644 index 0000000..8f3c554 --- /dev/null +++ b/gcc/testsuite/gnat.dg/pack20_pkg.ads @@ -0,0 +1,7 @@ +package Pack20_Pkg is + + type String_Ptr is access all String; + + procedure Modify (Fixed : in out String_Ptr); + +end Pack20_Pkg; |