aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/libgnarl/s-taprop__qnx.adb
diff options
context:
space:
mode:
authorPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2017-12-05 12:45:35 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2017-12-05 12:45:35 +0000
commit40c21e918dd15cb03b74aba9893d0a9f7f7f7624 (patch)
treed7b6988c125ecff465230975f6b54d0a5933b820 /gcc/ada/libgnarl/s-taprop__qnx.adb
parentb91f986b2d9cd7c80dea854258a9f078d61345a9 (diff)
downloadgcc-40c21e918dd15cb03b74aba9893d0a9f7f7f7624.zip
gcc-40c21e918dd15cb03b74aba9893d0a9f7f7f7624.tar.gz
gcc-40c21e918dd15cb03b74aba9893d0a9f7f7f7624.tar.bz2
sem_util.adb (Contains_Refined_State): Remove.
gcc/ada/ 2017-12-05 Piotr Trojanek <trojanek@adacore.com> * sem_util.adb (Contains_Refined_State): Remove. 2017-12-05 Ed Schonberg <schonberg@adacore.com> * sem_ch13.adb (Analyze_Aspect_Specifications, case Predicate): A predicate cannot apply to a formal type. 2017-12-05 Arnaud Charlet <charlet@adacore.com> * exp_unst.ads: Fix typos. 2017-12-05 Jerome Lambourg <lambourg@adacore.com> * libgnarl/s-taprop__qnx.adb: Better detect priority ceiling bug in QNX. At startup, the first mutex created has a non-zero ceiling priority whatever its actual policy. This makes some tests fail (c940013 for example). 2017-12-05 Bob Duff <duff@adacore.com> * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Call Expand_Cleanup_Actions for N_Extended_Return_Statement. * exp_ch7.adb (Expand_Cleanup_Actions): Handle N_Extended_Return_Statement by transforming the statements into a block, and (indirectly) calling Expand_Cleanup_Actions on the block. It's too hard for Expand_Cleanup_Actions to operate directly on the N_Extended_Return_Statement, because it has a different structure than the other node kinds that Expand_Cleanup_Actions. * exp_util.adb (Requires_Cleanup_Actions): Add support for N_Extended_Return_Statement. Change "when others => return False;" to "when others => raise ...;" so it's clear what nodes this function handles. Use named notation where appropriate. * exp_util.ads: Mark incorrect comment with ???. 2017-12-05 Javier Miranda <miranda@adacore.com> * exp_ch9.adb (Install_Private_Data_Declarations): Add missing Debug_Info_Needed decoration of internally generated discriminal renaming declaration. 2017-12-05 Arnaud Charlet <charlet@adacore.com> * exp_unst.adb (Unnest_Subprogram): Add handling of 'Access on nested subprograms. 2017-12-05 Sergey Rybin <rybin@adacore.com> * doc/gnat_ugn/gnat_utility_programs.rst: Add description of '--ignore' option for gnatmetric, gnatpp, gnat2xml, and gnattest. 2017-12-05 Piotr Trojanek <trojanek@adacore.com> * sem_util.adb (Contains_Refined_State): Remove. 2017-12-05 Piotr Trojanek <trojanek@adacore.com> * rtsfind.ads: Add new enumeration literals: RE_Clock_Time (for Ada.Real_Time.Clock_Time) and RO_CA_Clock_Time (for Ada.Calendar.Clock_Time). 2017-12-05 Ed Schonberg <schonberg@adacore.com> * sem_ch4.adb (Is_Private_Overriding): If the candidate private subprogram is overloaded, scan the list of homonyms in the same scope, to find the inherited operation that may be overridden by the candidate. * exp_ch11.adb, exp_ch7.adb: Minor reformatting. 2017-12-05 Bob Duff <duff@adacore.com> * exp_ch6.adb (Expand_N_Extended_Return_Statement): If the Init_Assignment is rewritten, we need to set Assignment_OK on the new node. Otherwise, we will get spurious errors when initializing via assignment statement. gcc/testsuite/ 2017-12-05 Ed Schonberg <schonberg@adacore.com> * gnat.dg/private_overriding.adb: New testcase. From-SVN: r255414
Diffstat (limited to 'gcc/ada/libgnarl/s-taprop__qnx.adb')
-rw-r--r--gcc/ada/libgnarl/s-taprop__qnx.adb7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/ada/libgnarl/s-taprop__qnx.adb b/gcc/ada/libgnarl/s-taprop__qnx.adb
index 4ec0330..e5133b7 100644
--- a/gcc/ada/libgnarl/s-taprop__qnx.adb
+++ b/gcc/ada/libgnarl/s-taprop__qnx.adb
@@ -442,16 +442,15 @@ package body System.Task_Primitives.Operations is
-- Workaround bug in QNX on ceiling locks: tasks with priority higher
-- than the ceiling priority don't receive EINVAL upon trying to lock.
- if Result = 0 then
+ if Result = 0 and then Locking_Policy = 'C' then
Result := pthread_getschedparam (Self, Policy'Access, Sched'Access);
pragma Assert (Result = 0);
Result := pthread_mutex_getprioceiling (L.WO'Access, Ceiling'Access);
pragma Assert (Result = 0);
- -- Ceiling = 0 means no Ceiling Priority policy is set on this mutex
- -- Else, Ceiling < current priority means Ceiling violation
+ -- Ceiling < current priority means Ceiling violation
-- (otherwise the current priority == ceiling)
- if Ceiling > 0 and then Ceiling < Sched.sched_curpriority then
+ if Ceiling < Sched.sched_curpriority then
Ceiling_Violation := True;
Result := pthread_mutex_unlock (L.WO'Access);
pragma Assert (Result = 0);