2001-10-02 15:55:47 +02:00
|
|
|
------------------------------------------------------------------------------
|
|
|
|
-- --
|
|
|
|
-- GNAT RUN-TIME COMPONENTS --
|
|
|
|
-- --
|
|
|
|
-- A D A . T A S K _ I D E N T I F I C A T I O N --
|
|
|
|
-- --
|
|
|
|
-- S p e c --
|
|
|
|
-- --
|
2015-10-26 16:44:32 +01:00
|
|
|
-- Copyright (C) 1992-2015, Free Software Foundation, Inc. --
|
2001-10-02 15:55:47 +02:00
|
|
|
-- --
|
|
|
|
-- This specification is derived from the Ada Reference Manual for use with --
|
|
|
|
-- GNAT. The copyright notice above, and the license provisions that follow --
|
|
|
|
-- apply solely to the contents of the part following the private keyword. --
|
|
|
|
-- --
|
|
|
|
-- GNAT is free software; you can redistribute it and/or modify it under --
|
|
|
|
-- terms of the GNU General Public License as published by the Free Soft- --
|
2009-04-09 17:00:19 +02:00
|
|
|
-- ware Foundation; either version 3, or (at your option) any later ver- --
|
2001-10-02 15:55:47 +02:00
|
|
|
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
|
|
|
|
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
|
2009-04-09 17:00:19 +02:00
|
|
|
-- or FITNESS FOR A PARTICULAR PURPOSE. --
|
|
|
|
-- --
|
|
|
|
-- As a special exception under Section 7 of GPL version 3, you are granted --
|
|
|
|
-- additional permissions described in the GCC Runtime Library Exception, --
|
|
|
|
-- version 3.1, as published by the Free Software Foundation. --
|
|
|
|
-- --
|
|
|
|
-- You should have received a copy of the GNU General Public License and --
|
|
|
|
-- a copy of the GCC Runtime Library Exception along with this program; --
|
|
|
|
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
|
|
|
|
-- <http://www.gnu.org/licenses/>. --
|
2001-10-02 15:55:47 +02:00
|
|
|
-- --
|
|
|
|
-- GNAT was originally developed by the GNAT team at New York University. --
|
2002-10-23 09:33:35 +02:00
|
|
|
-- Extensive contributions were provided by Ada Core Technologies Inc. --
|
2001-10-02 15:55:47 +02:00
|
|
|
-- --
|
|
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
with System;
|
|
|
|
with System.Tasking;
|
|
|
|
|
2015-10-20 14:24:52 +02:00
|
|
|
package Ada.Task_Identification with
|
|
|
|
SPARK_Mode,
|
2015-10-26 16:44:32 +01:00
|
|
|
Abstract_State => (Tasking_State with Synchronous,
|
|
|
|
External => (Async_Readers,
|
2016-04-20 11:04:48 +02:00
|
|
|
Async_Writers)),
|
|
|
|
Initializes => Tasking_State
|
2015-10-20 14:24:52 +02:00
|
|
|
is
|
[multiple changes]
2014-06-11 Robert Dewar <dewar@adacore.com>
* make.adb, sem_res.adb: Minor reformatting.
2014-06-11 Thomas Quinot <quinot@adacore.com>
* a-astaco.ads, a-tags.ads, s-excdeb.ads, a-tgdico.ads, a-stmaco.ads,
a-except-2005.ads, s-except.ads, a-taside.ads, a-dynpri.ads,
a-chahan.ads, a-sytaco.ads, s-stalib.ads, a-strmap.ads: Change pragmas
Preelaborate_05 to just Preelaborate in runtime units, and similarly
change Pure_05 to just Pure.
From-SVN: r211457
2014-06-11 14:31:56 +02:00
|
|
|
pragma Preelaborate;
|
a-calend-mingw.adb: Add call to OS_Primitives.Initialize;
* a-calend-mingw.adb: Add call to OS_Primitives.Initialize;
* s-taprop-mingw.adb, s-taprop-vms.adb, s-taprop-solaris.adb,
s-taprop-os2.adb, s-taprop-irix-athread.adb, s-taprop-linux.adb,
s-taprop-hpux-dce.adb, s-taprop-irix.adb, s-taprop-tru64.adb,
s-taprop-lynxos.adb: Move with clauses outside Warnings Off now that
dependent units are Preelaborate.
(Initialize): Call Interrupt_Managemeent.Initialize and
OS_Primitives.Initialize to ensure proper initialization of this unit.
Remove use of System.Soft_Links
Make this unit Preelaborate.
* s-stache.ads, s-taspri-vxworks.ads, s-taspri-mingw.ads,
s-taspri-vms.ads, s-tasinf-solaris.ads, s-taspri-os2.ads,
s-taspri-lynxos.ads, s-taspri-hpux-dce.ads, s-taspri-tru64.ads,
s-tasinf-tru64.ads, s-tasinf-irix.ads, s-tasinf-irix-athread.ads,
s-proinf-irix-athread.adb, s-proinf-irix-athread.ads,
s-tratas.ads, s-tasinf.ads: Minor reformatting.
Add pragma Preelaborate, since these packages are suitable for this
categorization.
Update comments.
* s-traent-vms.ads, s-intman-dummy.adb,
s-taprop-dummy.adb: Make this unit Preelaborate.
* s-osprim-vxworks.adb, s-osprim-vms.adb, s-osprim-vms.ads,
s-osprim-mingw.adb, s-intman-vxworks.ads, s-intman-vxworks.adb,
s-intman-vms.adb, s-intman-mingw.adb, s-intman-vms.ads,
s-osprim-unix.adb, s-osprim-os2.adb, s-osprim-solaris.adb,
s-intman-solaris.adb, s-intman-irix-athread.adb,
s-intman-irix.adb: Mark this unit Preelaborate.
(Initialize): New procedure.
Update comments.
* s-taspri-linux.ads: Removed.
* s-tpopsp-solaris.adb (Initialize): Create the key in this procedure,
as done by other implementations (e.g. posix).
* s-taprop.ads (Timed_Delay): Update spec since the caller now is
responsible for deferring abort.
Mark this unit Preelaborate.
* s-taprob.adb, s-tarest.adb: Call System.Tasking.Initialize to ensure
proper initialization of the tasking run-time.
* s-tasdeb.ads: Mark this unit Preelaborate.
(Known_Tasks): Add explicit default value to avoid elaboration code.
* s-inmaop-vms.adb (Elaboration code): Add call to
Interrupt_Management.Initialize since the elaboration code depends on
proper initialization of this package.
* s-intman.ads, s-inmaop-posix.adb, s-intman-posix.adb,
s-osprim.ads, s-taprop-posix.adb, s-taspri-posix.ads,
s-osprim-posix.adb: Make this unit Preelaborate.
* a-calend.adb: Add call to OS_Primitives.Initialize
* a-elchha.adb: Update use of Except.Id.Full_Name.
Minor reformatting.
Remove use of Ada.Exceptions.Traceback when possible, cleaner.
* a-dynpri.adb, a-sytaco.adb, a-sytaco.ads:
Move with clauses outside Warnings Off now that dependent units are
Preelaborate.
Use raise xxx with "..."; Ada 2005 form.
* a-taside.ads, a-taside.adb:
Remove some dependencies, to make it easier to make this unit truly
Preelaborate.
Rewrite some code to be conformant with Preelaborate rules.
* g-os_lib.adb: Remove non-preelaborate code so that this unit can be
marked Preelaborate in the future.
* s-proinf.ads, g-string.ads, s-auxdec.ads, s-auxdec-vms_64.ads: Make
these units Preelaborate.
* s-exctab.adb: Update use of Except.Id.Full_Name.
* s-soflin.ads, s-soflin.adb: Mark this unit Preelaborate_05.
(Set_Exc_Stack_Addr_Soft, Get_Exc_Stack_Addr_NT, Set_Exc_Stack_Addr_NT,
Set_Exc_Stack_Addr): Removed, no longer used.
Remove reference to *Machine_State_Addr*, no longer needed.
* s-stalib.ads: Mark this unit as Preelaborate[_05].
(Exception_Data): Full_Name is now a System.Address so that this unit
can be made Preelaborate.
Clean up/simplify code thanks to Full_Name being a System.Address.
Remove obsolete pragma Suppress (All_Checks), no longer needed.
* s-taskin.ads, s-taskin.adb:
Move with clauses outside Warnings Off now that dependent units are
Preelaborate.
Make this unit Preelaborate.
(Initialize): New proceduure, replace elaboration code and makes the
set up of the tasking run-time cleaner.
(Detect_Blocking): Now a function instead of a deferred boolean, to
obey Preelaborate rules.
* s-tassta.adb (Finalize_Global_Tasks): Remove Get/Set_Exc_Stack_Addr
soft links, no longer used.
* s-traces.ads, s-traent.ads: Add pragma Preelaborate, since these
packages are suitable for this categorization.
* s-solita.adb: Replace use of Ada.Exception by raise xxx with "..."
since we compile run-time sources in Ada 2005 mode.
(Timed_Delay_T): Call Abort_Defer/Undefer around Timed_Delay, to
avoid having s-taprop*.adb depend on s-soflin and to avoid code
duplication.
Remove reference to *Machine_State_Addr*, no longer needed.
From-SVN: r103847
2005-09-05 09:46:06 +02:00
|
|
|
-- In accordance with Ada 2005 AI-362
|
2001-10-02 15:55:47 +02:00
|
|
|
|
|
|
|
type Task_Id is private;
|
lib.adb, lib.ads: (In_Predefined_Unit): New functions
2006-10-31 Robert Dewar <dewar@adacore.com>
* lib.adb, lib.ads: (In_Predefined_Unit): New functions
* a-finali.ads, a-ngcoty.ads, a-strbou.ads, a-stream.ads, a-strmap.ads,
a-strunb.ads, a-stwibo.ads, a-stwima.ads, a-stwiun.ads, a-taside.ads,
a-coorse.ads, a-convec.ads, a-coinve.ads, a-cohama.ads, a-ciorse.ads,
a-cihama.ads, a-cihase.ads, a-cohase.ads, a-ciorma.ads, a-coorma.ads,
a-ciormu.ads, a-coormu.ads, a-stzbou.ads, a-stzmap.ads, a-stzunb.ads,
a-except-2005.ads: Add pragma Preelaborable_Warning
From-SVN: r118242
2006-10-31 18:49:05 +01:00
|
|
|
pragma Preelaborable_Initialization (Task_Id);
|
2001-10-02 15:55:47 +02:00
|
|
|
|
|
|
|
Null_Task_Id : constant Task_Id;
|
|
|
|
|
2015-10-23 12:49:44 +02:00
|
|
|
function "=" (Left, Right : Task_Id) return Boolean with
|
|
|
|
Global => null;
|
2001-10-02 15:55:47 +02:00
|
|
|
pragma Inline ("=");
|
|
|
|
|
2015-10-23 12:49:44 +02:00
|
|
|
function Image (T : Task_Id) return String with
|
|
|
|
Global => null;
|
2001-10-02 15:55:47 +02:00
|
|
|
|
2015-10-20 14:24:52 +02:00
|
|
|
function Current_Task return Task_Id with
|
|
|
|
Volatile_Function,
|
|
|
|
Global => Tasking_State;
|
2001-10-02 15:55:47 +02:00
|
|
|
pragma Inline (Current_Task);
|
|
|
|
|
2015-10-20 14:24:52 +02:00
|
|
|
function Environment_Task return Task_Id with
|
2015-10-23 12:49:44 +02:00
|
|
|
SPARK_Mode => Off,
|
|
|
|
Global => null;
|
[multiple changes]
2014-01-24 Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb (Analyze_Attribute, case 'Update): Analyze
expressions in each component association, and for records note
the entity in each association choice, for subsequent resolution.
(Resolve_Attribute, case 'Update): Complete resolution of
expressions in each component association.
2014-01-24 Robert Dewar <dewar@adacore.com>
* sem.adb (Sem): Avoid premature reference to Current_Sem_Unit
(this was causing Is_Main_Unit_Or_Main_Unit_Spec to be set wrong,
leading to wrong handling of SPARK_Mode for library units).
2014-01-24 Robert Dewar <dewar@adacore.com>
* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Set SPARK_Mode
on generic instances (do not consider them to be internally
generated)
2014-01-24 Doug Rupp <rupp@adacore.com>
* s-osinte-android.ads (pthread_sigmask): Import sigprocmask
vice pthread_sigmask.
2014-01-24 Vincent Celier <celier@adacore.com>
* prj.adb (Debug_Output (Str, Str2)): Output if verbosity is
not default.
2014-01-24 Vincent Celier <celier@adacore.com>
* prj-ext.adb (Add): Do not output anything when Silent is True,
whatever the verbosity. When Source is From_External_Attribute,
set the corresponding environment variable if it is not already set.
* prj-ext.ads (Add): New Boolean parameter Silent, defaulted
to False
* prj-proc.adb (Process_Expression_For_Associative_Array):
For attribute External, call Prj.Ext.Add with Silent set to
True for the child environment, to avoid useless output in non
default verbosity.
2014-01-24 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb (Set_Slice_Subtype): Handle properly a discrete
range given by a subtype indication, and force evaluation of
the bounds, as for a simple range.
* exp_util.adb (Evaluate_Slice_Bounds): Utility to force evaluation
of bounds of slice for various kinds of discrete ranges.
(Evaluate_Name, Evaluate_Subtype_From_Expr): use
Evaluate_Slice_Bounds.
2014-01-24 Bob Duff <duff@adacore.com>
* s-taskin.ads (Activator): Make this Atomic, because
Activation_Is_Complete reads it, and that can be called
from any task. Previously, this component was only
modified by the activator before activation, and by
Self after activation.
* a-taside.ads, a-taside.adb (Environment_Task,
Activation_Is_Complete): Implement these missing functions.
From-SVN: r207034
2014-01-24 15:27:22 +01:00
|
|
|
pragma Inline (Environment_Task);
|
|
|
|
|
2015-10-23 12:49:44 +02:00
|
|
|
procedure Abort_Task (T : Task_Id) with
|
|
|
|
Global => null;
|
2001-10-02 15:55:47 +02:00
|
|
|
pragma Inline (Abort_Task);
|
a-calend-mingw.adb: Add call to OS_Primitives.Initialize;
* a-calend-mingw.adb: Add call to OS_Primitives.Initialize;
* s-taprop-mingw.adb, s-taprop-vms.adb, s-taprop-solaris.adb,
s-taprop-os2.adb, s-taprop-irix-athread.adb, s-taprop-linux.adb,
s-taprop-hpux-dce.adb, s-taprop-irix.adb, s-taprop-tru64.adb,
s-taprop-lynxos.adb: Move with clauses outside Warnings Off now that
dependent units are Preelaborate.
(Initialize): Call Interrupt_Managemeent.Initialize and
OS_Primitives.Initialize to ensure proper initialization of this unit.
Remove use of System.Soft_Links
Make this unit Preelaborate.
* s-stache.ads, s-taspri-vxworks.ads, s-taspri-mingw.ads,
s-taspri-vms.ads, s-tasinf-solaris.ads, s-taspri-os2.ads,
s-taspri-lynxos.ads, s-taspri-hpux-dce.ads, s-taspri-tru64.ads,
s-tasinf-tru64.ads, s-tasinf-irix.ads, s-tasinf-irix-athread.ads,
s-proinf-irix-athread.adb, s-proinf-irix-athread.ads,
s-tratas.ads, s-tasinf.ads: Minor reformatting.
Add pragma Preelaborate, since these packages are suitable for this
categorization.
Update comments.
* s-traent-vms.ads, s-intman-dummy.adb,
s-taprop-dummy.adb: Make this unit Preelaborate.
* s-osprim-vxworks.adb, s-osprim-vms.adb, s-osprim-vms.ads,
s-osprim-mingw.adb, s-intman-vxworks.ads, s-intman-vxworks.adb,
s-intman-vms.adb, s-intman-mingw.adb, s-intman-vms.ads,
s-osprim-unix.adb, s-osprim-os2.adb, s-osprim-solaris.adb,
s-intman-solaris.adb, s-intman-irix-athread.adb,
s-intman-irix.adb: Mark this unit Preelaborate.
(Initialize): New procedure.
Update comments.
* s-taspri-linux.ads: Removed.
* s-tpopsp-solaris.adb (Initialize): Create the key in this procedure,
as done by other implementations (e.g. posix).
* s-taprop.ads (Timed_Delay): Update spec since the caller now is
responsible for deferring abort.
Mark this unit Preelaborate.
* s-taprob.adb, s-tarest.adb: Call System.Tasking.Initialize to ensure
proper initialization of the tasking run-time.
* s-tasdeb.ads: Mark this unit Preelaborate.
(Known_Tasks): Add explicit default value to avoid elaboration code.
* s-inmaop-vms.adb (Elaboration code): Add call to
Interrupt_Management.Initialize since the elaboration code depends on
proper initialization of this package.
* s-intman.ads, s-inmaop-posix.adb, s-intman-posix.adb,
s-osprim.ads, s-taprop-posix.adb, s-taspri-posix.ads,
s-osprim-posix.adb: Make this unit Preelaborate.
* a-calend.adb: Add call to OS_Primitives.Initialize
* a-elchha.adb: Update use of Except.Id.Full_Name.
Minor reformatting.
Remove use of Ada.Exceptions.Traceback when possible, cleaner.
* a-dynpri.adb, a-sytaco.adb, a-sytaco.ads:
Move with clauses outside Warnings Off now that dependent units are
Preelaborate.
Use raise xxx with "..."; Ada 2005 form.
* a-taside.ads, a-taside.adb:
Remove some dependencies, to make it easier to make this unit truly
Preelaborate.
Rewrite some code to be conformant with Preelaborate rules.
* g-os_lib.adb: Remove non-preelaborate code so that this unit can be
marked Preelaborate in the future.
* s-proinf.ads, g-string.ads, s-auxdec.ads, s-auxdec-vms_64.ads: Make
these units Preelaborate.
* s-exctab.adb: Update use of Except.Id.Full_Name.
* s-soflin.ads, s-soflin.adb: Mark this unit Preelaborate_05.
(Set_Exc_Stack_Addr_Soft, Get_Exc_Stack_Addr_NT, Set_Exc_Stack_Addr_NT,
Set_Exc_Stack_Addr): Removed, no longer used.
Remove reference to *Machine_State_Addr*, no longer needed.
* s-stalib.ads: Mark this unit as Preelaborate[_05].
(Exception_Data): Full_Name is now a System.Address so that this unit
can be made Preelaborate.
Clean up/simplify code thanks to Full_Name being a System.Address.
Remove obsolete pragma Suppress (All_Checks), no longer needed.
* s-taskin.ads, s-taskin.adb:
Move with clauses outside Warnings Off now that dependent units are
Preelaborate.
Make this unit Preelaborate.
(Initialize): New proceduure, replace elaboration code and makes the
set up of the tasking run-time cleaner.
(Detect_Blocking): Now a function instead of a deferred boolean, to
obey Preelaborate rules.
* s-tassta.adb (Finalize_Global_Tasks): Remove Get/Set_Exc_Stack_Addr
soft links, no longer used.
* s-traces.ads, s-traent.ads: Add pragma Preelaborate, since these
packages are suitable for this categorization.
* s-solita.adb: Replace use of Ada.Exception by raise xxx with "..."
since we compile run-time sources in Ada 2005 mode.
(Timed_Delay_T): Call Abort_Defer/Undefer around Timed_Delay, to
avoid having s-taprop*.adb depend on s-soflin and to avoid code
duplication.
Remove reference to *Machine_State_Addr*, no longer needed.
From-SVN: r103847
2005-09-05 09:46:06 +02:00
|
|
|
-- Note: parameter is mode IN, not IN OUT, per AI-00101
|
2001-10-02 15:55:47 +02:00
|
|
|
|
2015-10-20 14:24:52 +02:00
|
|
|
function Is_Terminated (T : Task_Id) return Boolean with
|
|
|
|
Volatile_Function,
|
|
|
|
Global => Tasking_State;
|
2001-10-02 15:55:47 +02:00
|
|
|
pragma Inline (Is_Terminated);
|
|
|
|
|
2015-10-20 14:24:52 +02:00
|
|
|
function Is_Callable (T : Task_Id) return Boolean with
|
|
|
|
Volatile_Function,
|
|
|
|
Global => Tasking_State;
|
2001-10-02 15:55:47 +02:00
|
|
|
pragma Inline (Is_Callable);
|
|
|
|
|
2015-10-20 14:24:52 +02:00
|
|
|
function Activation_Is_Complete (T : Task_Id) return Boolean with
|
|
|
|
Volatile_Function,
|
|
|
|
Global => Tasking_State;
|
[multiple changes]
2014-01-24 Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb (Analyze_Attribute, case 'Update): Analyze
expressions in each component association, and for records note
the entity in each association choice, for subsequent resolution.
(Resolve_Attribute, case 'Update): Complete resolution of
expressions in each component association.
2014-01-24 Robert Dewar <dewar@adacore.com>
* sem.adb (Sem): Avoid premature reference to Current_Sem_Unit
(this was causing Is_Main_Unit_Or_Main_Unit_Spec to be set wrong,
leading to wrong handling of SPARK_Mode for library units).
2014-01-24 Robert Dewar <dewar@adacore.com>
* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Set SPARK_Mode
on generic instances (do not consider them to be internally
generated)
2014-01-24 Doug Rupp <rupp@adacore.com>
* s-osinte-android.ads (pthread_sigmask): Import sigprocmask
vice pthread_sigmask.
2014-01-24 Vincent Celier <celier@adacore.com>
* prj.adb (Debug_Output (Str, Str2)): Output if verbosity is
not default.
2014-01-24 Vincent Celier <celier@adacore.com>
* prj-ext.adb (Add): Do not output anything when Silent is True,
whatever the verbosity. When Source is From_External_Attribute,
set the corresponding environment variable if it is not already set.
* prj-ext.ads (Add): New Boolean parameter Silent, defaulted
to False
* prj-proc.adb (Process_Expression_For_Associative_Array):
For attribute External, call Prj.Ext.Add with Silent set to
True for the child environment, to avoid useless output in non
default verbosity.
2014-01-24 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb (Set_Slice_Subtype): Handle properly a discrete
range given by a subtype indication, and force evaluation of
the bounds, as for a simple range.
* exp_util.adb (Evaluate_Slice_Bounds): Utility to force evaluation
of bounds of slice for various kinds of discrete ranges.
(Evaluate_Name, Evaluate_Subtype_From_Expr): use
Evaluate_Slice_Bounds.
2014-01-24 Bob Duff <duff@adacore.com>
* s-taskin.ads (Activator): Make this Atomic, because
Activation_Is_Complete reads it, and that can be called
from any task. Previously, this component was only
modified by the activator before activation, and by
Self after activation.
* a-taside.ads, a-taside.adb (Environment_Task,
Activation_Is_Complete): Implement these missing functions.
From-SVN: r207034
2014-01-24 15:27:22 +01:00
|
|
|
|
2001-10-02 15:55:47 +02:00
|
|
|
private
|
2015-10-20 14:24:52 +02:00
|
|
|
pragma SPARK_Mode (Off);
|
2001-10-02 15:55:47 +02:00
|
|
|
|
[multiple changes]
2004-05-17 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
Part of function-at-a-time conversion
* misc.c (adjust_decl_rtl): Deleted.
(LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK):
Define.
* gigi.h: (adjust_decl_rtl, kept_level_p, set_block): Deleted.
(add_decl_stmt, add_stmt, block_has_vars): New functions.
(gnat_pushlevel, gnat_poplevel): Renamed from pushlevel and poplevel.
* decl.c (elaborate_expression, maybe_pad_type): Call add_decl_stmt
when making a decl.
(gnat_to_gnu_entity): Likewise.
Use add_stmt to update setjmp buffer.
Set TREE_ADDRESSABLE instead of calling put_var_into_stack and
flush_addressof.
No longer call adjust_decl_rtl.
(DECL_INIT_BY_ASSIGN_P): New macro.
(DECL_STMT_VAR): Likewise.
* trans.c (gigi): Call start_block_stmt to make the outermost
BLOCK_STMT.
(gnat_to_code, gnu_to_gnu, tree_transform, process_decls, process_type):
Call start_block_stmt and end_block_stmt temporarily.
Use gnat_expand_stmt instead of expand_expr_stmt.
(add_decl_stmt): New function.
(tree_transform): Call it.
(add_stmt): Also emit initializing assignment for DECL_STMT if needed.
(end_block_stmt): Set type and NULL_STMT.
(gnat_expand_stmt): Make recursize call instead of calling
expand_expr_stmt.
(gnat_expand_stmt, case DECL_STMT): New case.
(set_lineno_from_sloc): Do nothing if global.
(gnu_block_stmt_node, gnu_block_stmt_free_list): New variables.
(start_block_stmt, add_stmt, end_block_stmt): New functions.
(build_block_stmt): Call them.
(gnat_to_code): Don't expand NULL_STMT.
(build_unit_elab): Rename pushlevel and poplevel to gnat_* and change
args.
(tree_transform): Likewise.
(tree_transform, case N_Null_Statement): Return NULL_STMT.
(gnat_expand_stmt, case NULL_STMT): New case.
(gnat_expand_stmt, case IF_STMT): Allow nested IF_STMT to have no
IF_STMT_TRUE.
* utils2.c (gnat_mark_addressable, case VAR_DECL): Do not set
TREE_ADDRESSABLE.
* utils.c (create_var_decl): Do not call expand_decl or
expand_decl_init.
Set TREE_ADDRESSABLE instead of calling gnat_mark_addressable.
Set DECL_INIT_BY_ASSIGN_P when needed and do not generate MODIFY_EXPR
here.
(struct e_stack): Add chain_next to GTY.
(struct binding_level): Deleted.
(struct ada_binding_level): New struct.
(free_block_chain): New.
(global_binding_level, clear_binding_level): Deleted.
(global_bindings_p): Rework to see if no chain.
(kept_level_p, set_block): Deleted.
(gnat_pushlevel): Renamed from pushlevel and extensive reworked to use
new data structure and work directly on BLOCK node.
(gnat_poplevel): Similarly.
(get_decls): Look at BLOCK_VARS.
(insert_block): Work directly on BLOCK node.
(block_has_var): New function.
(pushdecl): Rework for new binding structures.
(gnat_init_decl_processing): Rename and rework calls to pushlevel and
poplevel.
(build_subprog_body): Likewise.
(end_subprog_body): Likewise; also set up BLOCK in DECL_INITIAL.
* ada-tree.def (DECL_STMT, NULL_STMT): New codes.
* ada-tree.h: (DECL_INIT_BY_ASSIGN_P): New macro.
(DECL_STMT_VAR): Likewise.
2004-05-17 Robert Dewar <dewar@gnat.com>
* restrict.ads, restrict.adb (Process_Restriction_Synonym): New
procedure
* sem_prag.adb (Analyze_Pragma, case Restrictions): Cleanup handling
of restriction synonyums by using
Restrict.Process_Restriction_Synonyms.
* snames.ads, snames.adb: Add entries for Process_Restriction_Synonym
* s-restri.ads (Tasking_Allowed): Correct missing comment
* s-rident.ads: Add entries for restriction synonyms
* ali.adb: Fix some problems with badly formatted ALI files that can
result in infinite loops.
* s-taprop-lynxos.adb, s-tpopsp-lynxos.adb, s-taprop-tru64.adb,
s-tpopsp-posix-foreign.adb, s-taprop-irix.adb, s-interr-sigaction.adb,
s-taprop-irix-athread.adb, s-taprop-hpux-dce.adb, s-taprop-linux.adb,
s-taprop-dummy.adb, s-interr-dummy.adb, s-taprop-os2.adb,
s-taprop-solaris.adb, s-tpopsp-solaris.adb, s-asthan-vms.adb,
s-inmaop-vms.adb, s-interr-vms.adb, s-taprop-vms.adb,
s-tpopde-vms.adb, s-taprop-mingw.adb, s-interr-vxworks.adb,
s-taprop-vxworks.adb, s-tpopsp-vxworks.adb, s-taprop-posix.adb,
s-tpopsp-posix.adb, s-tratas-default.adb, a-dynpri.adb,
a-tasatt.adb, a-taside.adb, a-taside.ads, exp_attr.adb,
exp_ch9.adb, g-thread.adb, rtsfind.ads, sem_attr.adb,
s-interr.adb, s-interr.ads, s-soflin.ads, s-taasde.adb,
s-taasde.ads, s-taenca.adb, s-taenca.ads, s-taprop.ads,
s-tarest.adb, s-tarest.ads, s-tasdeb.adb, s-tasdeb.ads,
s-tasini.adb, s-tasini.ads, s-taskin.adb, s-taskin.ads,
s-tasque.adb, s-tasque.ads, s-tasren.adb, s-tasren.ads,
s-tassta.adb, s-tassta.ads, s-tasuti.adb, s-tasuti.ads,
s-tataat.adb, s-tataat.ads, s-tpinop.adb, s-tpinop.ads,
s-tpoben.adb, s-tpobop.adb, s-tpobop.ads, s-tporft.adb,
s-tposen.adb, s-tposen.ads, s-tratas.adb, s-tratas.ads: Change Task_ID
to Task_Id (minor cleanup).
2004-05-17 Vincent Celier <celier@gnat.com>
* g-os_lib.adb (Normalize_Pathname.Final_Value): Remove trailing
directory separator.
* prj-proc.adb (Recursive_Process): Inherit attribute Languages from
project being extended, if Languages is not declared in extending
project.
2004-05-17 Javier Miranda <miranda@gnat.com>
* sem_ch10.adb (Install_Limited_Withed_Unit): Do not install the
limited view of a visible sibling.
From-SVN: r81935
2004-05-17 15:20:48 +02:00
|
|
|
type Task_Id is new System.Tasking.Task_Id;
|
2001-10-02 15:55:47 +02:00
|
|
|
|
a-calend-mingw.adb: Add call to OS_Primitives.Initialize;
* a-calend-mingw.adb: Add call to OS_Primitives.Initialize;
* s-taprop-mingw.adb, s-taprop-vms.adb, s-taprop-solaris.adb,
s-taprop-os2.adb, s-taprop-irix-athread.adb, s-taprop-linux.adb,
s-taprop-hpux-dce.adb, s-taprop-irix.adb, s-taprop-tru64.adb,
s-taprop-lynxos.adb: Move with clauses outside Warnings Off now that
dependent units are Preelaborate.
(Initialize): Call Interrupt_Managemeent.Initialize and
OS_Primitives.Initialize to ensure proper initialization of this unit.
Remove use of System.Soft_Links
Make this unit Preelaborate.
* s-stache.ads, s-taspri-vxworks.ads, s-taspri-mingw.ads,
s-taspri-vms.ads, s-tasinf-solaris.ads, s-taspri-os2.ads,
s-taspri-lynxos.ads, s-taspri-hpux-dce.ads, s-taspri-tru64.ads,
s-tasinf-tru64.ads, s-tasinf-irix.ads, s-tasinf-irix-athread.ads,
s-proinf-irix-athread.adb, s-proinf-irix-athread.ads,
s-tratas.ads, s-tasinf.ads: Minor reformatting.
Add pragma Preelaborate, since these packages are suitable for this
categorization.
Update comments.
* s-traent-vms.ads, s-intman-dummy.adb,
s-taprop-dummy.adb: Make this unit Preelaborate.
* s-osprim-vxworks.adb, s-osprim-vms.adb, s-osprim-vms.ads,
s-osprim-mingw.adb, s-intman-vxworks.ads, s-intman-vxworks.adb,
s-intman-vms.adb, s-intman-mingw.adb, s-intman-vms.ads,
s-osprim-unix.adb, s-osprim-os2.adb, s-osprim-solaris.adb,
s-intman-solaris.adb, s-intman-irix-athread.adb,
s-intman-irix.adb: Mark this unit Preelaborate.
(Initialize): New procedure.
Update comments.
* s-taspri-linux.ads: Removed.
* s-tpopsp-solaris.adb (Initialize): Create the key in this procedure,
as done by other implementations (e.g. posix).
* s-taprop.ads (Timed_Delay): Update spec since the caller now is
responsible for deferring abort.
Mark this unit Preelaborate.
* s-taprob.adb, s-tarest.adb: Call System.Tasking.Initialize to ensure
proper initialization of the tasking run-time.
* s-tasdeb.ads: Mark this unit Preelaborate.
(Known_Tasks): Add explicit default value to avoid elaboration code.
* s-inmaop-vms.adb (Elaboration code): Add call to
Interrupt_Management.Initialize since the elaboration code depends on
proper initialization of this package.
* s-intman.ads, s-inmaop-posix.adb, s-intman-posix.adb,
s-osprim.ads, s-taprop-posix.adb, s-taspri-posix.ads,
s-osprim-posix.adb: Make this unit Preelaborate.
* a-calend.adb: Add call to OS_Primitives.Initialize
* a-elchha.adb: Update use of Except.Id.Full_Name.
Minor reformatting.
Remove use of Ada.Exceptions.Traceback when possible, cleaner.
* a-dynpri.adb, a-sytaco.adb, a-sytaco.ads:
Move with clauses outside Warnings Off now that dependent units are
Preelaborate.
Use raise xxx with "..."; Ada 2005 form.
* a-taside.ads, a-taside.adb:
Remove some dependencies, to make it easier to make this unit truly
Preelaborate.
Rewrite some code to be conformant with Preelaborate rules.
* g-os_lib.adb: Remove non-preelaborate code so that this unit can be
marked Preelaborate in the future.
* s-proinf.ads, g-string.ads, s-auxdec.ads, s-auxdec-vms_64.ads: Make
these units Preelaborate.
* s-exctab.adb: Update use of Except.Id.Full_Name.
* s-soflin.ads, s-soflin.adb: Mark this unit Preelaborate_05.
(Set_Exc_Stack_Addr_Soft, Get_Exc_Stack_Addr_NT, Set_Exc_Stack_Addr_NT,
Set_Exc_Stack_Addr): Removed, no longer used.
Remove reference to *Machine_State_Addr*, no longer needed.
* s-stalib.ads: Mark this unit as Preelaborate[_05].
(Exception_Data): Full_Name is now a System.Address so that this unit
can be made Preelaborate.
Clean up/simplify code thanks to Full_Name being a System.Address.
Remove obsolete pragma Suppress (All_Checks), no longer needed.
* s-taskin.ads, s-taskin.adb:
Move with clauses outside Warnings Off now that dependent units are
Preelaborate.
Make this unit Preelaborate.
(Initialize): New proceduure, replace elaboration code and makes the
set up of the tasking run-time cleaner.
(Detect_Blocking): Now a function instead of a deferred boolean, to
obey Preelaborate rules.
* s-tassta.adb (Finalize_Global_Tasks): Remove Get/Set_Exc_Stack_Addr
soft links, no longer used.
* s-traces.ads, s-traent.ads: Add pragma Preelaborate, since these
packages are suitable for this categorization.
* s-solita.adb: Replace use of Ada.Exception by raise xxx with "..."
since we compile run-time sources in Ada 2005 mode.
(Timed_Delay_T): Call Abort_Defer/Undefer around Timed_Delay, to
avoid having s-taprop*.adb depend on s-soflin and to avoid code
duplication.
Remove reference to *Machine_State_Addr*, no longer needed.
From-SVN: r103847
2005-09-05 09:46:06 +02:00
|
|
|
Null_Task_Id : constant Task_Id := null;
|
system-unixware.ads, [...]: Minor comment update for AI-362 (unit is Pure).
2005-06-14 Robert Dewar <dewar@adacore.com>
* system-unixware.ads, system-linux-ia64.ads, system-freebsd-x86.ads,
system-lynxos-ppc.ads, system-lynxos-x86.ads, system-linux-x86_64.ads,
system-tru64.ads, system-aix.ads, system-vxworks-sparcv9.ads,
system-vxworks-xscale.ads, system-solaris-x86.ads, system-irix-o32.ads,
system-irix-n32.ads, system-hpux.ads, system-vxworks-m68k.ads,
system-linux-x86.ads, system-vxworks-mips.ads, system-vxworks-mips.ads,
system-os2.ads, system-interix.ads, system-solaris-sparc.ads,
system-solaris-sparcv9.ads, system-vms.ads, system-mingw.ads,
system-vms-zcx.ads, system-vxworks-ppc.ads, system.ads,
system-darwin-ppc.ads, system-vxworks-x86.ads, system-linux-ppc.ads,
system-linux-hppa.ads, system-vms_64.ads,
system-vxworks-alpha.ads: Minor comment update for
AI-362 (unit is Pure).
* a-chahan.ads, a-chahan.adb: Move Wide_Wide functions to Conversions
Add pragma Pure_05 for AI-362
Make remaining conversion functions obsolescent in Ada 95
* impunit.adb: Change a-swunha to a-swuwha and a-szunha to a-szuzha
Make Ada.Wide_Characters[.Unicode] available in Ada 95 mode
Add entries for a-wichun and a-zchuni
Add a-widcha a-zchara for AI-395
Add a-chacon (Ada.Characters.Conversions) to list of Ada 2005 routines
* Makefile.rtl: Change a-swunha to a-swuwha and a-szunha to a-szuzha
Add entries for a-wichun.o and a-zchuni.o
Entries for a-widcha.o and a-zchara.o
Add entry for a-chacon.o
* a-ztenau.adb: Add with of Ada.Characters.Conversions
* a-chacon.ads, a-chacon.adb: New files.
* a-taside.adb, a-exstat.adb, a-excach.adb: Add warnings off to allow
categorization violations.
* a-strmap.ads: Add pragma Pure_05 for AI-362
* a-strmap.ads: Add note on implicit categorization for AI-362
* a-tgdico.ads, a-taside.ads: Add pragma Preelaborate_05 for AI-362
* par-prag.adb: Dummy entry for pragma Persistent_BSS
Set Ada_Version_Explicit, for implementation of AI-362
Add processing for pragma Pure_05 and Preelaborate_05
Add entry for Assertion_Policy pragma
* sem.adb: Make sure predefined units are compiled with GNAT_Mode true
when needed for proper processing of categorization stuff
* sem_cat.adb:
For several cases, make errors in preealborate units warnings,
instead of errors, if GNAT_Mode is set. For AI-362.
* sem_elab.adb (Check_Elab_Call): Call to non-static subprogram in
preelaborate unit is now warning if in GNAT mode
* s-stoele.ads: Document AI-362 for pragma preelaborate
From-SVN: r101016
2005-06-16 10:28:59 +02:00
|
|
|
|
2001-10-02 15:55:47 +02:00
|
|
|
end Ada.Task_Identification;
|