mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-25 06:10:29 +08:00
[multiple changes]
2010-06-17 Ed Schonberg <schonberg@adacore.com> * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): The designated type of the generated pointer is the type of the original expression, not that of the function call itself, because the return type may be an untagged derived type and the function may be an inherited operation. 2010-06-17 Robert Dewar <dewar@adacore.com> * exp_ch4.adb: Minor reformatting From-SVN: r160915
This commit is contained in:
parent
f104fca1e5
commit
b0b7b57de8
@ -1,3 +1,18 @@
|
||||
2010-06-17 Arnaud Charlet <charlet@adacore.com>
|
||||
|
||||
* gnatvsn.ads: Bump to 4.6 version.
|
||||
|
||||
2010-06-17 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): The
|
||||
designated type of the generated pointer is the type of the original
|
||||
expression, not that of the function call itself, because the return
|
||||
type may be an untagged derived type and the function may be an
|
||||
inherited operation.
|
||||
|
||||
2010-06-17 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* exp_ch4.adb: Minor reformatting
|
||||
2010-06-17 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* sinfo.ads, sinfo.adb (Inherited_Discriminant): New flag on
|
||||
|
@ -6687,12 +6687,11 @@ package body Exp_Ch4 is
|
||||
if Is_VMS_Operator (Entity (N)) then
|
||||
declare
|
||||
LI : constant Entity_Id := RTE (RE_Unsigned_64);
|
||||
|
||||
begin
|
||||
Rewrite (N,
|
||||
Unchecked_Convert_To (Typ,
|
||||
(Make_Op_Not (Loc,
|
||||
Right_Opnd => Unchecked_Convert_To (LI, Right_Opnd (N))))));
|
||||
Right_Opnd => Unchecked_Convert_To (LI, Right_Opnd (N))))));
|
||||
Analyze_And_Resolve (N, Typ);
|
||||
return;
|
||||
end;
|
||||
|
@ -5095,7 +5095,7 @@ package body Exp_Ch6 is
|
||||
Rewrite (Allocator, New_Allocator);
|
||||
|
||||
-- Create a new access object and initialize it to the result of the
|
||||
-- new uninitialized allocator. Do not use Allocator as the
|
||||
-- new uninitialized allocator. Note: we do not use Allocator as the
|
||||
-- Related_Node of Return_Obj_Access in call to Make_Temporary below
|
||||
-- as this would create a sort of infinite "recursion".
|
||||
|
||||
@ -5660,7 +5660,10 @@ package body Exp_Ch6 is
|
||||
Add_Access_Actual_To_Build_In_Place_Call
|
||||
(Func_Call, Function_Id, Caller_Object, Is_Access => Pass_Caller_Acc);
|
||||
|
||||
-- Create an access type designating the function's result subtype
|
||||
-- Create an access type designating the function's result subtype. We
|
||||
-- use the type of the original expression because it may be a call to
|
||||
-- an inherited operation, which the expansion has replaced with the
|
||||
-- parent operation that yields the parent type.
|
||||
|
||||
Ref_Type := Make_Temporary (Loc, 'A');
|
||||
|
||||
@ -5671,7 +5674,7 @@ package body Exp_Ch6 is
|
||||
Make_Access_To_Object_Definition (Loc,
|
||||
All_Present => True,
|
||||
Subtype_Indication =>
|
||||
New_Reference_To (Result_Subt, Loc)));
|
||||
New_Reference_To (Etype (Function_Call), Loc)));
|
||||
|
||||
-- The access type and its accompanying object must be inserted after
|
||||
-- the object declaration in the constrained case, so that the function
|
||||
|
Loading…
x
Reference in New Issue
Block a user