diff options
-rw-r--r-- | gcc/ada/ChangeLog | 37 | ||||
-rw-r--r-- | gcc/ada/adaint.c | 14 | ||||
-rw-r--r-- | gcc/ada/adaint.h | 7 | ||||
-rw-r--r-- | gcc/ada/exp_ch5.adb | 31 | ||||
-rw-r--r-- | gcc/ada/exp_ch7.adb | 51 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/Make-lang.in | 313 | ||||
-rw-r--r-- | gcc/ada/gnat_ugn.texi | 4 | ||||
-rw-r--r-- | gcc/ada/s-osinte-linux.ads | 10 | ||||
-rw-r--r-- | gcc/ada/s-taprop-linux.adb | 37 | ||||
-rw-r--r-- | gcc/ada/s-vaflop-vms-alpha.adb | 5 | ||||
-rw-r--r-- | gcc/ada/sem_attr.adb | 53 | ||||
-rw-r--r-- | gcc/ada/sem_ch8.adb | 6 |
12 files changed, 302 insertions, 266 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 2e15011..7a2516e 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,40 @@ +2011-09-01 Jose Ruiz <ruiz@adacore.com> + + * s-taprop-linux.adb (Create_Task, Set_Task_Affinity): Use the linux + macros for handling CPU sets (CPU_ZERO, CPU_SET) instead of modifying + directly the bit array. + * s-osinte-linux.ads (CPU_ZERO, CPU_SET): Import these wrappers around + the linux macros with the same name. + * adaint.h, adaint.c (__gnat_cpu_zero, __gnat_cpu_set): Create these + wrappers around the CPU_ZERO and CPU_SET linux macros. + +2011-09-01 Hristian Kirtchev <kirtchev@adacore.com> + + * exp_ch7.adb (Find_Insertion_List): Removed. + (Process_Transient_Objects): Insert the declarations of the hook + access type and the hook object before the associated transient object. + +2011-09-01 Jose Ruiz <ruiz@adacore.com> + + * sem_ch8.adb (Attribute_Renaming): Add missing check to avoid loading + package System.Aux_Dec when using restricted run-time libraries which + do not have this package. + +2011-09-01 Tristan Gingold <gingold@adacore.com> + + * s-vaflop-vms-alpha.adb: Remove pragma optimize, useless. + +2011-09-01 Bob Duff <duff@adacore.com> + + * sem_attr.adb (Analyze_Access_Attribute): Do not call + Kill_Current_Values for P'Unrestricted_Access, where P is library level + +2011-09-01 Thomas Quinot <quinot@adacore.com> + + * exp_ch5.adb: Minor reformatting + * gnat_ugn.texi: Fix minor typos. + * gcc-interface/Make-lang.in: Update dependencies. + 2011-09-01 Robert Dewar <dewar@adacore.com> * inline.adb, sem_aggr.adb: Minor reformatting. diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c index 556101d..26c6289 100644 --- a/gcc/ada/adaint.c +++ b/gcc/ada/adaint.c @@ -3770,6 +3770,20 @@ void *__gnat_lwp_self (void) { return (void *) syscall (__NR_gettid); } + +#include <sched.h> + +void __gnat_cpu_zero (cpu_set_t *set) +{ + CPU_ZERO (set); +} + +void __gnat_cpu_set (int cpu, cpu_set_t *set) +{ + /* Ada handles CPU numbers starting from 1, while C identifies the first + CPU by a 0, so we need to adjust. */ + CPU_SET (cpu - 1, set); +} #endif #ifdef __cplusplus diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h index 3ceecaa..45f1203 100644 --- a/gcc/ada/adaint.h +++ b/gcc/ada/adaint.h @@ -247,6 +247,13 @@ extern void __gnat_os_filename (char *, char *, char *, int *, char *, int *); #if defined (linux) extern void *__gnat_lwp_self (void); + +/* Routines for interface to required CPU set primitives */ + +#include <sched.h> + +extern void __gnat_cpu_zero (cpu_set_t *); +extern void __gnat_cpu_set (int, cpu_set_t *); #endif #if defined (_WIN32) diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb index 0f18455..291d68e 100644 --- a/gcc/ada/exp_ch5.adb +++ b/gcc/ada/exp_ch5.adb @@ -62,17 +62,17 @@ with Validsw; use Validsw; package body Exp_Ch5 is function Change_Of_Representation (N : Node_Id) return Boolean; - -- Determine if the right hand side of the assignment N is a type - -- conversion which requires a change of representation. Called - -- only for the array and record cases. + -- Determine if the right hand side of assignment N is a type conversion + -- which requires a change of representation. Called only for the array + -- and record cases. procedure Expand_Assign_Array (N : Node_Id; Rhs : Node_Id); -- N is an assignment which assigns an array value. This routine process -- the various special cases and checks required for such assignments, -- including change of representation. Rhs is normally simply the right - -- hand side of the assignment, except that if the right hand side is - -- a type conversion or a qualified expression, then the Rhs is the - -- actual expression inside any such type conversions or qualifications. + -- hand side of the assignment, except that if the right hand side is a + -- type conversion or a qualified expression, then the RHS is the actual + -- expression inside any such type conversions or qualifications. function Expand_Assign_Array_Loop (N : Node_Id; @@ -3026,21 +3026,16 @@ package body Exp_Ch5 is -- If the container type is a derived type, the cursor type is -- found in the package of the parent type. + if Is_Derived_Type (Container_Typ) then + Pack := Scope (Root_Type (Container_Typ)); + else + Pack := Scope (Container_Typ); + end if; + Iter_Type := Etype (Name (I_Spec)); if Is_Iterator (Iter_Type) then - if Is_Derived_Type (Container_Typ) then - Pack := Scope (Scope (Root_Type (Container_Typ))); - else - Pack := Scope (Scope (Container_Typ)); - end if; - - else - if Is_Derived_Type (Container_Typ) then - Pack := Scope (Root_Type (Container_Typ)); - else - Pack := Scope (Container_Typ); - end if; + Pack := Scope (Pack); end if; -- The "of" case uses an internally generated cursor whose type diff --git a/gcc/ada/exp_ch7.adb b/gcc/ada/exp_ch7.adb index 30abe6c..73ae23d 100644 --- a/gcc/ada/exp_ch7.adb +++ b/gcc/ada/exp_ch7.adb @@ -4198,32 +4198,6 @@ package body Exp_Ch7 is Last_Object : Node_Id; Related_Node : Node_Id) is - function Find_Insertion_List return List_Id; - -- Return the statement list of the enclosing sequence of statements - - ------------------------- - -- Find_Insertion_List -- - ------------------------- - - function Find_Insertion_List return List_Id is - Par : Node_Id; - - begin - -- Climb up the tree looking for the enclosing sequence of - -- statements. - - Par := N; - while Present (Par) - and then Nkind (Par) /= N_Handled_Sequence_Of_Statements - loop - Par := Parent (Par); - end loop; - - return Statements (Par); - end Find_Insertion_List; - - -- Local variables - Requires_Hooking : constant Boolean := Nkind_In (N, N_Function_Call, N_Procedure_Call_Statement); @@ -4242,8 +4216,6 @@ package body Exp_Ch7 is Stmts : List_Id; Temp_Id : Entity_Id; - -- Start of processing for Process_Transient_Objects - begin -- Examine all objects in the list First_Object .. Last_Object @@ -4296,11 +4268,8 @@ package body Exp_Ch7 is if Requires_Hooking then declare - Ins_List : constant List_Id := Find_Insertion_List; - Expr : Node_Id; - Ptr_Decl : Node_Id; - Ptr_Id : Entity_Id; - Temp_Decl : Node_Id; + Expr : Node_Id; + Ptr_Id : Entity_Id; begin -- Step 1: Create an access type which provides a @@ -4310,7 +4279,7 @@ package body Exp_Ch7 is Ptr_Id := Make_Temporary (Loc, 'A'); - Ptr_Decl := + Insert_Action (Stmt, Make_Full_Type_Declaration (Loc, Defining_Identifier => Ptr_Id, Type_Definition => @@ -4318,7 +4287,7 @@ package body Exp_Ch7 is All_Present => Ekind (Obj_Typ) = E_General_Access_Type, Subtype_Indication => - New_Reference_To (Desig_Typ, Loc))); + New_Reference_To (Desig_Typ, Loc)))); -- Step 2: Create a temporary which acts as a hook to -- the transient object. Generate: @@ -4327,19 +4296,11 @@ package body Exp_Ch7 is Temp_Id := Make_Temporary (Loc, 'T'); - Temp_Decl := + Insert_Action (Stmt, Make_Object_Declaration (Loc, Defining_Identifier => Temp_Id, Object_Definition => - New_Reference_To (Ptr_Id, Loc)); - - -- Analyze the access type and the hook declarations - - Prepend_To (Ins_List, Temp_Decl); - Prepend_To (Ins_List, Ptr_Decl); - - Analyze (Ptr_Decl); - Analyze (Temp_Decl); + New_Reference_To (Ptr_Id, Loc))); -- Mark the temporary as a transient hook. This signals -- the machinery in Build_Finalizer to recognize this diff --git a/gcc/ada/gcc-interface/Make-lang.in b/gcc/ada/gcc-interface/Make-lang.in index 386ad4d..3d30c71 100644 --- a/gcc/ada/gcc-interface/Make-lang.in +++ b/gcc/ada/gcc-interface/Make-lang.in @@ -1609,27 +1609,27 @@ ada/cstand.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/errout.ads ada/errout.adb ada/erroutc.ads ada/erroutc.adb \ ada/exp_ch11.ads ada/exp_disp.ads ada/exp_tss.ads ada/exp_util.ads \ ada/fname.ads ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads \ - ada/gnat.ads ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads \ - ada/interfac.ads ada/layout.ads ada/lib.ads ada/lib-util.ads \ - ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/nlists.ads \ - ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \ - ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \ - ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \ - ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_ch8.ads \ - ada/sem_disp.ads ada/sem_eval.ads ada/sem_mech.ads ada/sem_res.ads \ - ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sinfo.ads \ - ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \ - ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \ - ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-crc32.ads \ - ada/s-crc32.adb ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \ - ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \ - ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \ - ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \ - ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \ - ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \ - ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \ - ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \ - ada/widechar.ads + ada/gnat.ads ada/g-byorma.ads ada/g-htable.ads ada/gnatvsn.ads \ + ada/hostparm.ads ada/interfac.ads ada/layout.ads ada/lib.ads \ + ada/lib-util.ads ada/lib-xref.ads ada/namet.ads ada/namet.adb \ + ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \ + ada/output.ads ada/put_alfa.ads ada/restrict.ads ada/restrict.adb \ + ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/scn.ads ada/scn.adb \ + ada/scng.ads ada/scng.adb ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads \ + ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads ada/sem_mech.ads \ + ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \ + ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \ + ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \ + ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \ + ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads ada/s-htable.ads \ + ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \ + ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \ + ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \ + ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \ + ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \ + ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \ + ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \ + ada/urealp.ads ada/urealp.adb ada/widechar.ads ada/debug.o : ada/debug.ads ada/debug.adb ada/system.ads @@ -2765,35 +2765,35 @@ ada/frontend.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/exp_ch7.ads ada/exp_code.ads ada/exp_dbug.ads ada/exp_pakd.ads \ ada/exp_tss.ads ada/exp_util.ads ada/expander.ads ada/fmap.ads \ ada/fname.ads ada/fname-uf.ads ada/freeze.ads ada/frontend.ads \ - ada/frontend.adb ada/get_targ.ads ada/gnat.ads ada/g-dyntab.ads \ - ada/g-dyntab.adb ada/g-hesorg.ads ada/g-htable.ads ada/gnatvsn.ads \ - ada/hlo.ads ada/hostparm.ads ada/inline.ads ada/inline.adb \ - ada/interfac.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \ - ada/lib-load.ads ada/lib-sort.adb ada/live.ads ada/namet.ads \ - ada/namet.adb ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \ - ada/opt.ads ada/osint.ads ada/output.ads ada/par.ads ada/par_sco.ads \ - ada/prep.ads ada/prep.adb ada/prepcomp.ads ada/restrict.ads \ - ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/scans.ads \ - ada/scil_ll.ads ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads \ - ada/sem.adb ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb \ - ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads ada/sem_ch13.ads \ - ada/sem_ch2.ads ada/sem_ch3.ads ada/sem_ch4.ads ada/sem_ch5.ads \ - ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads \ - ada/sem_elab.ads ada/sem_eval.ads ada/sem_prag.ads ada/sem_res.ads \ - ada/sem_scil.ads ada/sem_util.ads ada/sem_warn.ads ada/sem_warn.adb \ - ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \ - ada/sinput-l.ads ada/snames.ads ada/sprint.ads ada/stand.ads \ - ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \ - ada/stylesw.ads ada/system.ads ada/s-carun8.ads ada/s-crc32.ads \ - ada/s-crc32.adb ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \ - ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \ - ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \ - ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \ - ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \ - ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \ - ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \ - ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \ - ada/urealp.ads ada/validsw.ads ada/widechar.ads + ada/frontend.adb ada/get_targ.ads ada/gnat.ads ada/g-byorma.ads \ + ada/g-dyntab.ads ada/g-dyntab.adb ada/g-hesorg.ads ada/g-htable.ads \ + ada/gnatvsn.ads ada/hlo.ads ada/hostparm.ads ada/inline.ads \ + ada/inline.adb ada/interfac.ads ada/lib.ads ada/lib.adb \ + ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb ada/live.ads \ + ada/namet.ads ada/namet.adb ada/nlists.ads ada/nlists.adb ada/nmake.ads \ + ada/nmake.adb ada/opt.ads ada/osint.ads ada/output.ads ada/par.ads \ + ada/par_sco.ads ada/prep.ads ada/prep.adb ada/prepcomp.ads \ + ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \ + ada/scans.ads ada/scil_ll.ads ada/scn.ads ada/scn.adb ada/scng.ads \ + ada/scng.adb ada/sem.ads ada/sem.adb ada/sem_attr.ads ada/sem_aux.ads \ + ada/sem_aux.adb ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads \ + ada/sem_ch13.ads ada/sem_ch2.ads ada/sem_ch3.ads ada/sem_ch4.ads \ + ada/sem_ch5.ads ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads \ + ada/sem_ch9.ads ada/sem_elab.ads ada/sem_eval.ads ada/sem_prag.ads \ + ada/sem_res.ads ada/sem_scil.ads ada/sem_util.ads ada/sem_warn.ads \ + ada/sem_warn.adb ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \ + ada/sinput.adb ada/sinput-l.ads ada/snames.ads ada/sprint.ads \ + ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \ + ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \ + ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads ada/s-htable.ads \ + ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \ + ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \ + ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \ + ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \ + ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \ + ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \ + ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \ + ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads ada/g-byorma.o : ada/gnat.ads ada/g-byorma.ads ada/g-byorma.adb \ ada/system.ads @@ -3037,25 +3037,26 @@ ada/lib-load.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \ ada/einfo.adb ada/elists.ads ada/err_vars.ads ada/errout.ads \ ada/errout.adb ada/erroutc.ads ada/erroutc.adb ada/fname.ads \ - ada/fname-uf.ads ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads \ - ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads ada/lib.ads \ - ada/lib.adb ada/lib-list.adb ada/lib-load.ads ada/lib-load.adb \ - ada/lib-sort.adb ada/namet.ads ada/namet.adb ada/nlists.ads \ - ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/osint.ads \ - ada/osint-c.ads ada/output.ads ada/par.ads ada/restrict.ads \ - ada/restrict.adb ada/rident.ads ada/scans.ads ada/scn.ads ada/scng.ads \ - ada/scng.adb ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \ - ada/sinput.adb ada/sinput-l.ads ada/snames.ads ada/stand.ads \ - ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \ - ada/stylesw.ads ada/system.ads ada/s-crc32.ads ada/s-crc32.adb \ - ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \ - ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \ - ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \ - ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \ - ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \ - ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \ - ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \ - ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads + ada/fname-uf.ads ada/gnat.ads ada/g-byorma.ads ada/g-hesorg.ads \ + ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads \ + ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-load.ads \ + ada/lib-load.adb ada/lib-sort.adb ada/namet.ads ada/namet.adb \ + ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \ + ada/osint.ads ada/osint-c.ads ada/output.ads ada/par.ads \ + ada/restrict.ads ada/restrict.adb ada/rident.ads ada/scans.ads \ + ada/scn.ads ada/scn.adb ada/scng.ads ada/scng.adb ada/sem_aux.ads \ + ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \ + ada/sinput-l.ads ada/snames.ads ada/stand.ads ada/stringt.ads \ + ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \ + ada/system.ads ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads \ + ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \ + ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \ + ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \ + ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \ + ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \ + ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \ + ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \ + ada/unchdeal.ads ada/urealp.ads ada/widechar.ads ada/lib-util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \ @@ -3081,15 +3082,15 @@ ada/lib-writ.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \ ada/err_vars.ads ada/errout.ads ada/errout.adb ada/erroutc.ads \ ada/erroutc.adb ada/fname.ads ada/fname-uf.ads ada/gnat.ads \ - ada/g-hesorg.ads ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads \ - ada/interfac.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \ - ada/lib-sort.adb ada/lib-util.ads ada/lib-util.adb ada/lib-writ.ads \ - ada/lib-writ.adb ada/lib-xref.ads ada/namet.ads ada/namet.adb \ - ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \ - ada/osint.ads ada/osint-c.ads ada/output.ads ada/par.ads \ + ada/g-byorma.ads ada/g-hesorg.ads ada/g-htable.ads ada/gnatvsn.ads \ + ada/hostparm.ads ada/interfac.ads ada/lib.ads ada/lib.adb \ + ada/lib-list.adb ada/lib-sort.adb ada/lib-util.ads ada/lib-util.adb \ + ada/lib-writ.ads ada/lib-writ.adb ada/lib-xref.ads ada/namet.ads \ + ada/namet.adb ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \ + ada/opt.ads ada/osint.ads ada/osint-c.ads ada/output.ads ada/par.ads \ ada/par_sco.ads ada/put_alfa.ads ada/restrict.ads ada/restrict.adb \ - ada/rident.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \ - ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \ + ada/rident.ads ada/scans.ads ada/scn.ads ada/scn.adb ada/scng.ads \ + ada/scng.adb ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \ ada/sinput.adb ada/snames.ads ada/stand.ads ada/stringt.ads \ ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \ ada/stylesw.ads ada/system.ads ada/s-casuti.ads ada/s-crc32.ads \ @@ -3277,33 +3278,33 @@ ada/par.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \ ada/einfo.adb ada/elists.ads ada/elists.adb ada/err_vars.ads \ ada/errout.ads ada/errout.adb ada/erroutc.ads ada/erroutc.adb \ ada/exp_tss.ads ada/fname.ads ada/fname-uf.ads ada/gnat.ads \ - ada/g-hesorg.ads ada/g-htable.ads ada/g-speche.ads ada/gnatvsn.ads \ - ada/hostparm.ads ada/interfac.ads ada/lib.ads ada/lib.adb \ - ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb ada/namet.ads \ - ada/namet.adb ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \ - ada/nmake.ads ada/nmake.adb ada/opt.ads ada/osint.ads ada/output.ads \ - ada/par.ads ada/par.adb ada/par-ch10.adb ada/par-ch11.adb \ - ada/par-ch12.adb ada/par-ch13.adb ada/par-ch2.adb ada/par-ch3.adb \ - ada/par-ch4.adb ada/par-ch5.adb ada/par-ch6.adb ada/par-ch7.adb \ - ada/par-ch8.adb ada/par-ch9.adb ada/par-endh.adb ada/par-labl.adb \ - ada/par-load.adb ada/par-prag.adb ada/par-sync.adb ada/par-tchk.adb \ - ada/par-util.adb ada/par_sco.ads ada/restrict.ads ada/restrict.adb \ - ada/rident.ads ada/scans.ads ada/scans.adb ada/scn.ads ada/scng.ads \ - ada/scng.adb ada/sem_aux.ads ada/sem_util.ads ada/sinfo.ads \ - ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/sinput.adb \ - ada/sinput-l.ads ada/snames.ads ada/snames.adb ada/stand.ads \ - ada/stringt.ads ada/stringt.adb ada/style.ads ada/style.adb \ - ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \ - ada/s-carun8.ads ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads \ - ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \ - ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \ - ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \ - ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \ - ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \ - ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \ - ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \ - ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \ - ada/widechar.ads + ada/g-byorma.ads ada/g-hesorg.ads ada/g-htable.ads ada/g-speche.ads \ + ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads ada/lib.ads \ + ada/lib.adb ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb \ + ada/namet.ads ada/namet.adb ada/namet-sp.ads ada/nlists.ads \ + ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/osint.ads \ + ada/output.ads ada/par.ads ada/par.adb ada/par-ch10.adb \ + ada/par-ch11.adb ada/par-ch12.adb ada/par-ch13.adb ada/par-ch2.adb \ + ada/par-ch3.adb ada/par-ch4.adb ada/par-ch5.adb ada/par-ch6.adb \ + ada/par-ch7.adb ada/par-ch8.adb ada/par-ch9.adb ada/par-endh.adb \ + ada/par-labl.adb ada/par-load.adb ada/par-prag.adb ada/par-sync.adb \ + ada/par-tchk.adb ada/par-util.adb ada/par_sco.ads ada/restrict.ads \ + ada/restrict.adb ada/rident.ads ada/scans.ads ada/scans.adb ada/scn.ads \ + ada/scn.adb ada/scng.ads ada/scng.adb ada/sem_aux.ads ada/sem_util.ads \ + ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \ + ada/sinput.adb ada/sinput-l.ads ada/snames.ads ada/snames.adb \ + ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \ + ada/style.adb ada/styleg.ads ada/styleg.adb ada/stylesw.ads \ + ada/system.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-crc32.adb \ + ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads \ + ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \ + ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \ + ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \ + ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \ + ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \ + ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \ + ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \ + ada/validsw.ads ada/widechar.ads ada/par_sco.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \ @@ -3347,28 +3348,28 @@ ada/prepcomp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/atree.ads ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads \ ada/einfo.ads ada/einfo.adb ada/err_vars.ads ada/errout.ads \ ada/errout.adb ada/erroutc.ads ada/erroutc.adb ada/fname.ads \ - ada/fname-uf.ads ada/gnat.ads ada/g-dyntab.ads ada/g-dyntab.adb \ - ada/g-hesorg.ads ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads \ - ada/interfac.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \ - ada/lib-sort.adb ada/lib-util.ads ada/lib-writ.ads ada/lib-writ.adb \ - ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/nlists.ads \ - ada/nlists.adb ada/opt.ads ada/osint.ads ada/osint-c.ads ada/output.ads \ - ada/par.ads ada/par_sco.ads ada/prep.ads ada/prep.adb ada/prepcomp.ads \ - ada/prepcomp.adb ada/put_alfa.ads ada/restrict.ads ada/restrict.adb \ - ada/rident.ads ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \ - ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \ - ada/sinput.adb ada/sinput-l.ads ada/snames.ads ada/stand.ads \ - ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \ - ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-casuti.ads \ - ada/s-carun8.ads ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads \ - ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \ - ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \ - ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \ - ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \ - ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \ - ada/tbuild.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \ - ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \ - ada/urealp.ads ada/widechar.ads + ada/fname-uf.ads ada/gnat.ads ada/g-byorma.ads ada/g-dyntab.ads \ + ada/g-dyntab.adb ada/g-hesorg.ads ada/g-htable.ads ada/gnatvsn.ads \ + ada/hostparm.ads ada/interfac.ads ada/lib.ads ada/lib.adb \ + ada/lib-list.adb ada/lib-sort.adb ada/lib-util.ads ada/lib-writ.ads \ + ada/lib-writ.adb ada/lib-xref.ads ada/namet.ads ada/namet.adb \ + ada/nlists.ads ada/nlists.adb ada/opt.ads ada/osint.ads ada/osint-c.ads \ + ada/output.ads ada/par.ads ada/par_sco.ads ada/prep.ads ada/prep.adb \ + ada/prepcomp.ads ada/prepcomp.adb ada/put_alfa.ads ada/restrict.ads \ + ada/restrict.adb ada/rident.ads ada/scans.ads ada/scn.ads ada/scn.adb \ + ada/scng.ads ada/scng.adb ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb \ + ada/sinput.ads ada/sinput.adb ada/sinput-l.ads ada/snames.ads \ + ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \ + ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \ + ada/s-casuti.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-crc32.adb \ + ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \ + ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \ + ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \ + ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \ + ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \ + ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/types.ads \ + ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \ + ada/unchdeal.ads ada/urealp.ads ada/widechar.ads ada/put_alfa.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads \ ada/alfa.ads ada/alfa.adb ada/gnat.ads ada/g-table.ads ada/g-table.adb \ @@ -3648,17 +3649,17 @@ ada/scn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \ ada/restrict.adb ada/rident.ads ada/scans.ads ada/scn.ads ada/scn.adb \ ada/scng.ads ada/scng.adb ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb \ ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \ - ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \ - ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \ - ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads ada/s-htable.ads \ - ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \ - ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \ - ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \ - ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-utf_32.adb \ - ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \ - ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \ - ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \ - ada/urealp.adb ada/widechar.ads + ada/stringt.ads ada/stringt.adb ada/style.ads ada/style.adb \ + ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \ + ada/s-carun8.ads ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads \ + ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \ + ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \ + ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \ + ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \ + ada/s-utf_32.adb ada/s-wchcon.ads ada/table.ads ada/table.adb \ + ada/targparm.ads ada/tree_io.ads ada/types.ads ada/types.adb \ + ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \ + ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads ada/scng.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \ @@ -4820,25 +4821,25 @@ ada/sinput-l.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/atree.adb ada/casing.ads ada/csets.ads ada/debug.ads ada/einfo.ads \ ada/einfo.adb ada/err_vars.ads ada/errout.ads ada/errout.adb \ ada/erroutc.ads ada/erroutc.adb ada/fname.ads ada/fname-uf.ads \ - ada/gnat.ads ada/g-dyntab.ads ada/g-dyntab.adb ada/g-hesorg.ads \ - ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads \ - ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb ada/namet.ads \ - ada/namet.adb ada/nlists.ads ada/nlists.adb ada/opt.ads ada/osint.ads \ - ada/output.ads ada/prep.ads ada/prep.adb ada/prepcomp.ads \ - ada/restrict.ads ada/restrict.adb ada/rident.ads ada/scans.ads \ - ada/scn.ads ada/scng.ads ada/scng.adb ada/sem_aux.ads ada/sinfo.ads \ - ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/sinput-l.ads \ - ada/sinput-l.adb ada/snames.ads ada/stand.ads ada/stringt.ads \ - ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \ - ada/system.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-crc32.adb \ - ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \ - ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \ - ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \ - ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \ - ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \ - ada/targparm.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \ - ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \ - ada/urealp.ads ada/widechar.ads + ada/gnat.ads ada/g-byorma.ads ada/g-dyntab.ads ada/g-dyntab.adb \ + ada/g-hesorg.ads ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads \ + ada/interfac.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \ + ada/lib-sort.adb ada/namet.ads ada/namet.adb ada/nlists.ads \ + ada/nlists.adb ada/opt.ads ada/osint.ads ada/output.ads ada/prep.ads \ + ada/prep.adb ada/prepcomp.ads ada/restrict.ads ada/restrict.adb \ + ada/rident.ads ada/scans.ads ada/scn.ads ada/scn.adb ada/scng.ads \ + ada/scng.adb ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \ + ada/sinput.adb ada/sinput-l.ads ada/sinput-l.adb ada/snames.ads \ + ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \ + ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \ + ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads ada/s-htable.ads \ + ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \ + ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \ + ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \ + ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \ + ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \ + ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \ + ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads ada/sinput.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \ diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 62c426e..2a2618c 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -5732,7 +5732,7 @@ as shown in the following example. @emph{Activate warnings on unnecessary Warnings Off pragmas} @cindex @option{-gnatw.w} (@command{gcc}) @cindex Warnings Off control -This switch activates warnings for use of @code{pragma Warnings (Off, entity} +This switch activates warnings for use of @code{pragma Warnings (Off, entity)} where either the pragma is entirely useless (because it suppresses no warnings), or it could be replaced by @code{pragma Unreferenced} or @code{pragma Unmodified}.The default is that these warnings are not given. @@ -5742,7 +5742,7 @@ activated explicitly. @item -gnatw.W @emph{Suppress warnings on unnecessary Warnings Off pragmas} @cindex @option{-gnatw.W} (@command{gcc}) -This switch suppresses warnings for use of @code{pragma Warnings (Off, entity}. +This switch suppresses warnings for use of @code{pragma Warnings (Off, entity)}. @item -gnatwx @emph{Activate warnings on Export/Import pragmas.} diff --git a/gcc/ada/s-osinte-linux.ads b/gcc/ada/s-osinte-linux.ads index 0221308..8e07f38 100644 --- a/gcc/ada/s-osinte-linux.ads +++ b/gcc/ada/s-osinte-linux.ads @@ -7,7 +7,7 @@ -- S p e c -- -- -- -- Copyright (C) 1991-1994, Florida State University -- --- Copyright (C) 1995-2010, Free Software Foundation, Inc. -- +-- Copyright (C) 1995-2011, Free Software Foundation, Inc. -- -- -- -- 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- -- @@ -482,6 +482,14 @@ package System.OS_Interface is end record; pragma Convention (C, cpu_set_t); + procedure CPU_ZERO (cpuset : access cpu_set_t); + pragma Import (C, CPU_ZERO, "__gnat_cpu_zero"); + -- Wrapper around the CPU_ZERO C macro + + procedure CPU_SET (cpu : int; cpuset : access cpu_set_t); + pragma Import (C, CPU_SET, "__gnat_cpu_set"); + -- Wrapper around the CPU_SET C macro + function pthread_setaffinity_np (thread : pthread_t; cpusetsize : size_t; diff --git a/gcc/ada/s-taprop-linux.adb b/gcc/ada/s-taprop-linux.adb index a8f1568..eced89a 100644 --- a/gcc/ada/s-taprop-linux.adb +++ b/gcc/ada/s-taprop-linux.adb @@ -869,9 +869,12 @@ package body System.Task_Primitives.Operations is elsif T.Common.Base_CPU /= System.Multiprocessors.Not_A_Specific_CPU then declare - CPU_Set : aliased cpu_set_t := (bits => (others => False)); + CPU_Set : aliased cpu_set_t; + begin - CPU_Set.bits (Integer (T.Common.Base_CPU)) := True; + System.OS_Interface.CPU_ZERO (CPU_Set'Access); + System.OS_Interface.CPU_SET + (int (T.Common.Base_CPU), CPU_Set'Access); Result := pthread_attr_setaffinity_np (Attributes'Access, @@ -905,14 +908,18 @@ package body System.Task_Primitives.Operations is Multiprocessors.Number_Of_CPUs => True)) then declare - CPU_Set : aliased cpu_set_t := (bits => (others => False)); + CPU_Set : aliased cpu_set_t; begin + System.OS_Interface.CPU_ZERO (CPU_Set'Access); + -- Set the affinity to all the processors belonging to the -- dispatching domain. for Proc in T.Common.Domain'Range loop - CPU_Set.bits (Integer (Proc)) := T.Common.Domain (Proc); + if T.Common.Domain (Proc) then + System.OS_Interface.CPU_SET (int (Proc), CPU_Set'Access); + end if; end loop; Result := @@ -1394,8 +1401,9 @@ package body System.Task_Primitives.Operations is then declare type cpu_set_t_ptr is access all cpu_set_t; + CPU_Set : aliased cpu_set_t; + CPU_Set_Ptr : cpu_set_t_ptr := null; - CPU_Set : cpu_set_t_ptr := null; Result : Interfaces.C.int; begin @@ -1406,16 +1414,17 @@ package body System.Task_Primitives.Operations is if T.Common.Base_CPU /= Multiprocessors.Not_A_Specific_CPU then -- Set the affinity to an unique CPU - - CPU_Set := new cpu_set_t'(bits => (others => False)); - CPU_Set.bits (Integer (T.Common.Base_CPU)) := True; + System.OS_Interface.CPU_ZERO (CPU_Set'Access); + System.OS_Interface.CPU_SET + (int (T.Common.Base_CPU), CPU_Set'Access); + CPU_Set_Ptr := CPU_Set'Access; -- Handle Task_Info elsif T.Common.Task_Info /= null and then T.Common.Task_Info.CPU_Affinity /= Task_Info.Any_CPU then - CPU_Set := T.Common.Task_Info.CPU_Affinity'Access; + CPU_Set_Ptr := T.Common.Task_Info.CPU_Affinity'Access; -- Handle dispatching domains @@ -1431,11 +1440,13 @@ package body System.Task_Primitives.Operations is -- domain other than the default one, or when the default one -- has been modified. - CPU_Set := new cpu_set_t'(bits => (others => False)); + System.OS_Interface.CPU_ZERO (CPU_Set'Access); for Proc in T.Common.Domain'Range loop - CPU_Set.bits (Integer (Proc)) := T.Common.Domain (Proc); + System.OS_Interface.CPU_SET (int (Proc), CPU_Set'Access); end loop; + + CPU_Set_Ptr := CPU_Set'Access; end if; -- We set the new affinity if needed. Otherwise, the new task @@ -1443,10 +1454,10 @@ package body System.Task_Primitives.Operations is -- the documentation of pthread_setaffinity_np), which is -- consistent with Ada's required semantics. - if CPU_Set /= null then + if CPU_Set_Ptr /= null then Result := pthread_setaffinity_np - (T.Common.LL.Thread, CPU_SETSIZE / 8, CPU_Set); + (T.Common.LL.Thread, CPU_SETSIZE / 8, CPU_Set_Ptr); pragma Assert (Result = 0); end if; end; diff --git a/gcc/ada/s-vaflop-vms-alpha.adb b/gcc/ada/s-vaflop-vms-alpha.adb index ba607f6..d03b047 100644 --- a/gcc/ada/s-vaflop-vms-alpha.adb +++ b/gcc/ada/s-vaflop-vms-alpha.adb @@ -35,11 +35,6 @@ with System.Machine_Code; use System.Machine_Code; package body System.Vax_Float_Operations is - -- Ensure this gets compiled with -O to avoid extra (and possibly - -- improper) memory stores. - - pragma Optimize (Time); - -- Declare the functions that do the conversions between floating-point -- formats. Call the operands IEEE float so they get passed in -- FP registers. diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index 26fdcfa..b3546c6 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -601,30 +601,35 @@ package body Sem_Attr is Build_Access_Subprogram_Type (P); - -- For unrestricted access, kill current values, since this - -- attribute allows a reference to a local subprogram that - -- could modify local variables to be passed out of scope - - if Aname = Name_Unrestricted_Access then - - -- Do not kill values on nodes initializing dispatch tables - -- slots. The construct Prim_Ptr!(Prim'Unrestricted_Access) - -- is currently generated by the expander only for this - -- purpose. Done to keep the quality of warnings currently - -- generated by the compiler (otherwise any declaration of - -- a tagged type cleans constant indications from its scope). - - if Nkind (Parent (N)) = N_Unchecked_Type_Conversion - and then (Etype (Parent (N)) = RTE (RE_Prim_Ptr) - or else - Etype (Parent (N)) = RTE (RE_Size_Ptr)) - and then Is_Dispatching_Operation - (Directly_Designated_Type (Etype (N))) - then - null; - else - Kill_Current_Values; - end if; + -- For P'Access or P'Unrestricted_Access, where P is a nested + -- subprogram, we might be passing P to another subprogram (but we + -- don't check that here), which might call P. P could modify + -- local variables, so we need to kill current values. It is + -- important not to do this for library-level subprograms, because + -- Kill_Current_Values is very inefficient in the case of library + -- level packages with lots of tagged types. + + if Is_Library_Level_Entity (Entity (Prefix (N))) then + null; + + -- Do not kill values on nodes initializing dispatch tables + -- slots. The construct Prim_Ptr!(Prim'Unrestricted_Access) + -- is currently generated by the expander only for this + -- purpose. Done to keep the quality of warnings currently + -- generated by the compiler (otherwise any declaration of + -- a tagged type cleans constant indications from its scope). + + elsif Nkind (Parent (N)) = N_Unchecked_Type_Conversion + and then (Etype (Parent (N)) = RTE (RE_Prim_Ptr) + or else + Etype (Parent (N)) = RTE (RE_Size_Ptr)) + and then Is_Dispatching_Operation + (Directly_Designated_Type (Etype (N))) + then + null; + + else + Kill_Current_Values; end if; return; diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb index 4f5de3f..3a58a8f 100644 --- a/gcc/ada/sem_ch8.adb +++ b/gcc/ada/sem_ch8.adb @@ -3290,10 +3290,12 @@ package body Sem_Ch8 is -- type is still not frozen). We exclude from this processing generic -- formal subprograms found in instantiations and AST_Entry renamings. - -- We must exclude VM targets because entity AST_Handler is defined in - -- package System.Aux_Dec which is not available in those platforms. + -- We must exclude VM targets and restricted run-time libraries because + -- entity AST_Handler is defined in package System.Aux_Dec which is not + -- available in those platforms. if VM_Target = No_VM + and then not Restricted_Profile and then not Present (Corresponding_Formal_Spec (N)) and then Etype (Nam) /= RTE (RE_AST_Handler) then |