diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2013-10-17 12:28:53 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2013-10-17 12:28:53 +0200 |
commit | 13b2f7fd6317e9858dcbaa3917dfc65629d6eed2 (patch) | |
tree | 838481e4a8a085857e86d1310288229c87194c20 | |
parent | f4bed77be41f90e53463f8bf7a71ff503402a963 (diff) | |
download | gcc-13b2f7fd6317e9858dcbaa3917dfc65629d6eed2.zip gcc-13b2f7fd6317e9858dcbaa3917dfc65629d6eed2.tar.gz gcc-13b2f7fd6317e9858dcbaa3917dfc65629d6eed2.tar.bz2 |
[multiple changes]
2013-10-17 Tristan Gingold <gingold@adacore.com>
* a-exexpr-gcc.adb: Synchronize declarations of other/all others.
2013-10-17 Thomas Quinot <quinot@adacore.com>
* 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
-rw-r--r-- | gcc/ada/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/ada/a-exexpr-gcc.adb | 27 | ||||
-rw-r--r-- | gcc/ada/exp_pakd.adb | 14 | ||||
-rw-r--r-- | gcc/ada/sem_res.adb | 6 |
4 files changed, 40 insertions, 19 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 41fd986..822e880 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,15 @@ +2013-10-17 Tristan Gingold <gingold@adacore.com> + + * a-exexpr-gcc.adb: Synchronize declarations of other/all others. + +2013-10-17 Thomas Quinot <quinot@adacore.com> + + * 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 <quinot@adacore.com> * exp_pakd.adb (Expand_Packed_Element_Set, diff --git a/gcc/ada/a-exexpr-gcc.adb b/gcc/ada/a-exexpr-gcc.adb index e98a15a..a9d9e4b 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 7a27b7a..273baf0 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 430766d..9409972 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; |