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
This commit is contained in:
Eric Botcazou 2014-07-20 20:30:23 +00:00 committed by Eric Botcazou
parent f67341b624
commit d6cd6e226f
6 changed files with 42 additions and 1 deletions

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -0,0 +1,9 @@
package body Pack20 is
procedure Proc (A : Rec) is
Local : Rec := A;
begin
Modify (Local.Fixed);
end;
end Pack20;

View File

@ -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;

View File

@ -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;