summaryrefslogtreecommitdiff
path: root/gcc/ada/exp_ch6.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-11-21 13:23:52 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-11-21 13:23:52 +0000
commit00234530fa94c683d01b71546530263fe5baaae3 (patch)
tree9b0dcdac8dae1e481bd247ca6ee57115b2baef80 /gcc/ada/exp_ch6.adb
parent25f787f97ebe2215147362006decdd1adabdb758 (diff)
downloadgcc-00234530fa94c683d01b71546530263fe5baaae3.tar.gz
2011-11-21 Tristan Gingold <gingold@adacore.com>
* env.c: Remove unused declaration. 2011-11-21 Pascal Obry <obry@adacore.com> * s-os_lib.ads: Minor style fix. 2011-11-21 Pascal Obry <obry@adacore.com> * adaint.c (__gnat_dup2): When fd are stdout, stdin or stderr and identical, do nothing on Windows XP. 2011-11-21 Yannick Moy <moy@adacore.com> * sem_ch3.adb (Constrain_Index, Process_Range_Expr_In_Decl): Use Full_Expander_Active instead of Expander_Active to control the forced evaluation of expressions for the sake of generating checks. 2011-11-21 Thomas Quinot <quinot@adacore.com> * init.c: On FreeBSD, stack checking failures may raise SIGBUS. 2011-11-21 Tristan Gingold <gingold@adacore.com> * sysdep.c (mode_read_text, mode_write_text, mode_append_text, mode_read_binary, mode_write_binary, mode_append_binary, mode_read_text_plus, mode_write_text_plus, mode_append_text_plus, mode_read_binary_plus, mode_write_binary_plus, mode_append_binary_plus): Remove unused declarations. 2011-11-21 Yannick Moy <moy@adacore.com> * gnat_rm.texi: Minor rewording. 2011-11-21 Hristian Kirtchev <kirtchev@adacore.com> * exp_imgv.adb (Expand_Width_Attribute): Emit an error message rather than a warning when pragma Discard_Names prevents the computation of 'Width. Do not emit an error through the use of RE_Null. 2011-11-21 Javier Miranda <miranda@adacore.com> * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Add implicit type conversion when the type of the allocator is an interface. Done to force generation of displacement of the "this" pointer when required. 2011-11-21 Ed Schonberg <schonberg@adacore.com> * sinfo.ads, sinfo.adb: Corresponding_Spec applies to expression functions, and is set when the expression is a completion of a previous declaration. * sem_ch6.adb (Analyze_Expression_Function): To determine properly whether an expression function completes a previous declaration, use Find_Corresponding_Spec, as when analyzing a subprogram body. 2011-11-21 Steve Baird <baird@adacore.com> * sem_util.adb (Deepest_Type_Access_Level): Improve comment. (Type_Access_Level): Improve comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181575 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_ch6.adb')
-rw-r--r--gcc/ada/exp_ch6.adb9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 6673328acaf..93396525dde 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -7805,6 +7805,15 @@ package body Exp_Ch6 is
-- to the object created by the allocator).
Rewrite (Allocator, Make_Reference (Loc, Relocate_Node (Function_Call)));
+
+ -- Ada 2005 (AI-251): If the type of the allocator is an interface then
+ -- generate an implicit conversion to force displacement of the "this"
+ -- pointer.
+
+ if Is_Interface (Designated_Type (Acc_Type)) then
+ Rewrite (Allocator, Convert_To (Acc_Type, Relocate_Node (Allocator)));
+ end if;
+
Analyze_And_Resolve (Allocator, Acc_Type);
end Make_Build_In_Place_Call_In_Allocator;