2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-03-24 12:31:25 +08:00

[Ada] VxWorks: call s-tpopsp.Self only when needed

2019-08-12  Jerome Lambourg  <lambourg@adacore.com>

gcc/ada/

	* libgnarl/s-taprop__vxworks.adb (Abort_Handler): Only call
	s-tpopsp.Self when actually needed.

From-SVN: r274283
This commit is contained in:
Jerome Lambourg 2019-08-12 08:59:08 +00:00 committed by Pierre-Marie de Rodat
parent 43eb2bb696
commit 96a8b7050b
2 changed files with 11 additions and 1 deletions

@ -1,3 +1,8 @@
2019-08-12 Jerome Lambourg <lambourg@adacore.com>
* libgnarl/s-taprop__vxworks.adb (Abort_Handler): Only call
s-tpopsp.Self when actually needed.
2019-08-12 Eric Botcazou <ebotcazou@adacore.com>
* exp_ch4.adb (Discrete_Range_Check): Return if checks are

@ -192,7 +192,10 @@ package body System.Task_Primitives.Operations is
procedure Abort_Handler (signo : Signal) is
pragma Unreferenced (signo);
Self_ID : constant Task_Id := Self;
-- Do not call Self at this point as we're in a signal handler
-- and it may not be available, in particular on targets where we
-- support ZCX and where we don't do anything here anyway.
Self_ID : Task_Id;
Old_Set : aliased sigset_t;
Unblocked_Mask : aliased sigset_t;
Result : int;
@ -208,6 +211,8 @@ package body System.Task_Primitives.Operations is
return;
end if;
Self_ID := Self;
if Self_ID.Deferral_Level = 0
and then Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level
and then not Self_ID.Aborting