From: Arnaud Charlet Date: Thu, 17 Oct 2013 10:28:53 +0000 (+0200) Subject: [multiple changes] X-Git-Tag: releases/gcc-4.9.0~3411 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13b2f7fd6317e9858dcbaa3917dfc65629d6eed2;p=thirdparty%2Fgcc.git [multiple changes] 2013-10-17 Tristan Gingold * a-exexpr-gcc.adb: Synchronize declarations of other/all others. 2013-10-17 Thomas Quinot * exp_pakd.adb: Add missing guard protecting Reverse_Storage_Order call. * sem_res.adb: Minor code cleanup: use named parameter association (not positional) for Boolean parameter Sec_Stack in calls to Establish_Transient_Scope. From-SVN: r203746 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 41fd9869dcf4..822e880da7e1 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,15 @@ +2013-10-17 Tristan Gingold + + * a-exexpr-gcc.adb: Synchronize declarations of other/all others. + +2013-10-17 Thomas Quinot + + * exp_pakd.adb: Add missing guard protecting Reverse_Storage_Order + call. + * sem_res.adb: Minor code cleanup: use named parameter association + (not positional) for Boolean parameter Sec_Stack in calls to + Establish_Transient_Scope. + 2013-10-15 Thomas Quinot * exp_pakd.adb (Expand_Packed_Element_Set, diff --git a/gcc/ada/a-exexpr-gcc.adb b/gcc/ada/a-exexpr-gcc.adb index e98a15a7f396..a9d9e4b77337 100644 --- a/gcc/ada/a-exexpr-gcc.adb +++ b/gcc/ada/a-exexpr-gcc.adb @@ -45,11 +45,10 @@ package body Exception_Propagation is -- Entities to interface with the GCC runtime -- ------------------------------------------------ - -- These come from "C++ ABI for Itanium: Exception handling", which is - -- the reference for GCC. + -- These come from "C++ ABI for Itanium: Exception handling", which is the + -- reference for GCC. - -- Return codes from the GCC runtime functions used to propagate - -- an exception. + -- Return codes from GCC runtime functions used to propagate an exception type Unwind_Reason_Code is (URC_NO_REASON, @@ -226,9 +225,8 @@ package body Exception_Propagation is UW_Argument : System.Address) return Unwind_Reason_Code; pragma Import (C, CleanupUnwind_Handler, "__gnat_cleanupunwind_handler"); - -- Hook called at each step of the forced unwinding we perform to - -- trigger cleanups found during the propagation of an unhandled - -- exception. + -- Hook called at each step of the forced unwinding we perform to trigger + -- cleanups found during the propagation of an unhandled exception. -- GCC runtime functions used. These are C non-void functions, actually, -- but we ignore the return values. See raise.c as to why we are using @@ -295,7 +293,9 @@ package body Exception_Propagation is --------------------------------------------------------------------------- -- Currently, these only have their address taken and compared so there is - -- no real point having whole exception data blocks allocated. + -- no real point having whole exception data blocks allocated. Note that + -- there are corresponding declarations in gigi (trans.c) which must be + -- kept properly synchronized. Others_Value : constant Character := 'O'; pragma Export (C, Others_Value, "__gnat_others_value"); @@ -315,6 +315,7 @@ package body Exception_Propagation is function Allocate_Occurrence return EOA is Res : GNAT_GCC_Exception_Access; + begin Res := new GNAT_GCC_Exception' @@ -432,6 +433,7 @@ package body Exception_Propagation is is begin -- Simply propagate it + Propagate_GCC_Exception (GCC_Exception); end Reraise_GCC_Exception; @@ -467,9 +469,10 @@ package body Exception_Propagation is -- unwinding hook calls Unhandled_Exception_Terminate when end of -- stack is reached. - Unwind_ForcedUnwind (GCC_Exception, - CleanupUnwind_Handler'Address, - System.Null_Address); + Unwind_ForcedUnwind + (GCC_Exception, + CleanupUnwind_Handler'Address, + System.Null_Address); -- We get here in case of error. The debugger has been notified before -- the second step above. @@ -503,7 +506,7 @@ package body Exception_Propagation is declare GNAT_Occurrence : constant GNAT_GCC_Exception_Access := - To_GNAT_GCC_Exception (GCC_Exception); + To_GNAT_GCC_Exception (GCC_Exception); begin Save_Occurrence (Excep.all, GNAT_Occurrence.Occurrence); end; diff --git a/gcc/ada/exp_pakd.adb b/gcc/ada/exp_pakd.adb index 7a27b7a58f8d..273baf082945 100644 --- a/gcc/ada/exp_pakd.adb +++ b/gcc/ada/exp_pakd.adb @@ -2135,10 +2135,16 @@ package body Exp_Pakd is -- Swap back if necessary Set_Etype (Arg, Ctyp); - if Byte_Swapped and then Reverse_Storage_Order (Ctyp) then - Arg := Byte_Swap (Arg, - Left_Justify => not Bytes_Big_Endian, - Right_Justify => False); + + if Byte_Swapped + and then (Is_Record_Type (Ctyp) or else Is_Array_Type (Ctyp)) + and then Reverse_Storage_Order (Ctyp) + then + Arg := + Byte_Swap + (Arg, + Left_Justify => not Bytes_Big_Endian, + Right_Justify => False); end if; -- We needed to analyze this before we do the unchecked convert diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index 430766d25bcc..9409972ec54e 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -3602,7 +3602,7 @@ package body Sem_Res is and then Full_Expander_Active and then (Is_Controlled (Etype (F)) or else Has_Task (Etype (F))) then - Establish_Transient_Scope (A, False); + Establish_Transient_Scope (A, Sec_Stack => False); Resolve (A, Etype (F)); -- A small optimization: if one of the actuals is a concatenation @@ -3621,7 +3621,7 @@ package body Sem_Res is and then Chars (Nam) = Name_Asm) and then not Static_Concatenation (A) then - Establish_Transient_Scope (A, False); + Establish_Transient_Scope (A, Sec_Stack => False); Resolve (A, Etype (F)); else @@ -3680,7 +3680,7 @@ package body Sem_Res is if (Is_Controlled (DDT) or else Has_Task (DDT)) and then Full_Expander_Active then - Establish_Transient_Scope (A, False); + Establish_Transient_Scope (A, Sec_Stack => False); end if; end;