+2015-10-20 Yannick Moy <moy@adacore.com>
+
+ * exp_ch9.adb (Expand_Entry_Barrier): Default initialize local variable
+ Func.
+
+2015-10-20 Jerome Lambourg <lambourg@adacore.com>
+
+ * init.c (__gnat_error_handler for vxworks): Force
+ SPE bit in the MSR when handling signals
+
+2015-10-20 Arnaud Charlet <charlet@adacore.com>
+
+ * einfo.ads, sem_ch12.adb, sem_ch6.adb, table.ads, s-stposu.ads,
+ g-table.ads, g-dyntab.ads, makeutl.ads, a-crdlli.ads: Fix typos.
+
+2015-10-20 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch5.adb (Analyze_Loop_Statement): Element iterators
+ over multidimensional arrays create additional loops during
+ expansion. For such loops we create a label as a scope
+ name. Attach this label properly to tree, for use in GNATProve
+ over such element iterators.
+ * sem_attr.adb (Analyze_Attribute, case Loop_Entry): The loop to
+ which the attribute applies comes from source, not from expansion
+ of an element iterator or a quantified expression.
+ * exp_attr.adb (Expand_N_Attribute_Reference): Ditto.
+
2015-10-20 Ed Schonberg <schonberg@adacore.com>
* exp_ch6.adb (Expand_Call): Check for a call to a function
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2015, 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- --
Before : Cursor;
Position : in out Cursor);
-- If Before is associated with a list object different from Container,
- -- then Program_Error is raised. If Position equals No_element, then
+ -- then Program_Error is raised. If Position equals No_Element, then
-- Constraint_Error is raised; if it associated with a list object
-- different from Container, then Program_Error is raised. Otherwise, the
-- node designated by Position is relinked immediately prior to Before. If
-- their subtypes have unknown discriminants and can have declared ones
-- as well. Private types declared with unknown discriminants may have a
-- full view that has explicit discriminants, and both flag will be set
--- on the partial view, to insure that discriminants are properly
+-- on the partial view, to ensure that discriminants are properly
-- inherited in certain contexts.
-- Has_Visible_Refinement (Flag263)
-- Next_Inlined_Subprogram (Node12)
-- Defined in subprograms. Used to chain inlined subprograms used in
-- the current compilation, in the order in which they must be compiled
--- by the backend to insure that all inlinings are performed.
+-- by the backend to ensure that all inlinings are performed.
-- Next_Literal (synthesized)
-- Applies to enumeration literals, returns the next literal, or
Loop_Stmt := Label_Construct (Parent (Loop_Id));
-- Climb the parent chain to find the nearest enclosing loop. Skip all
- -- internally generated loops for quantified expressions.
+ -- internally generated loops for quantified expressions and for
+ -- element iterators over multidimensional arrays: pragma applies to
+ -- source loop.
else
Loop_Stmt := N;
while Present (Loop_Stmt) loop
if Nkind (Loop_Stmt) = N_Loop_Statement
- and then Present (Identifier (Loop_Stmt))
+ and then Comes_From_Source (Loop_Stmt)
then
exit;
end if;
Condition (Entry_Body_Formal_Part (N));
Prot : constant Entity_Id := Scope (Ent);
Spec_Decl : constant Node_Id := Parent (Prot);
- Func : Entity_Id;
+ Func : Entity_Id := Empty;
B_F : Node_Id;
Body_Decl : Node_Id;
S := Scope (E);
if Ekind (E) = E_Variable then
+
+ -- If the variable is local to the barrier function generated
+ -- during expansion, it is ok. If expansion is not performed,
+ -- then Func is Empty so this test cannot succeed.
+
if Scope (E) = Func then
null;
-- --
-- S p e c --
-- --
--- Copyright (C) 2000-2013, AdaCore --
+-- Copyright (C) 2000-2015, AdaCore --
-- --
-- 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- --
package GNAT.Dynamic_Tables is
-- Table_Component_Type and Table_Index_Type specify the type of the
- -- array, Table_Low_Bound is the lower bound. Index_type must be an
+ -- array, Table_Low_Bound is the lower bound. Table_Index_Type must be an
-- integer type. The effect is roughly to declare:
-- Table : array (Table_Low_Bound .. <>) of Table_Component_Type;
-- --
-- S p e c --
-- --
--- Copyright (C) 1998-2013, AdaCore --
+-- Copyright (C) 1998-2015, AdaCore --
-- --
-- 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- --
pragma Elaborate_Body;
-- Table_Component_Type and Table_Index_Type specify the type of the
- -- array, Table_Low_Bound is the lower bound. Index_type must be an
+ -- array, Table_Low_Bound is the lower bound. Table_Index_Type must be an
-- integer type. The effect is roughly to declare:
-- Table : array (Table_Index_Type range Table_Low_Bound .. <>)
that the __vxworks header appear before any other include. */
#ifdef __vxworks
#include "vxWorks.h"
+#include "version.h" /* for _WRS_VXWORKS_MAJOR */
#endif
#ifdef __ANDROID__
{
sigset_t mask;
+ /* VxWorks 7 on e500v2 clears the SPE bit of the MSR when entering CPU
+ exception state. To allow the handler and exception to work properly
+ when they contain SPE instructions, we need to set it back before doing
+ anything else. */
+#if (CPU == PPCE500V2) && (_WRS_VXWORKS_MAJOR == 7)
+ register unsigned msr;
+ /* Read the MSR value */
+ asm volatile ("mfmsr %0" : "=r" (msr));
+ /* Force the SPE bit */
+ msr |= 0x02000000;
+ /* Store to MSR */
+ asm volatile ("mtmsr %0" : : "r" (msr));
+#endif
+
/* VxWorks will always mask out the signal during the signal handler and
will reenable it on a longjmp. GNAT does not generate a longjmp to
return from a signal handler so the signal will still be masked unless
-- least equal to Minimum_Verbosity, then print Prefix to standard output
-- followed by N1 and S1. If N2 /= No_Name then N2 is printed after S1. S2
-- is printed last. Both N1 and N2 are printed in quotation marks. The two
- -- forms differ only in taking Name_Id or File_name_Type arguments.
+ -- forms differ only in taking Name_Id or File_Name_Type arguments.
-------------------------
-- Program termination --
-- --
-- S p e c --
-- --
--- Copyright (C) 2011-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 2011-2015, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
(Pool : in out Root_Storage_Pool_With_Subpools)
return not null Subpool_Handle;
-- Return a common subpool which is used for object allocations without a
- -- Subpool_Handle_name in the allocator. The default implementation of this
+ -- Subpool_Handle_Name in the allocator. The default implementation of this
-- routine raises Program_Error.
function Pool_Of_Subpool
-- Locate the enclosing loop (if any). Note that Ada 2012 array
-- iteration may be expanded into several nested loops, we are
- -- interested in the outermost one which has the loop identifier.
+ -- interested in the outermost one which has the loop identifier,
+ -- and comes from source.
elsif Nkind (Stmt) = N_Loop_Statement
and then Present (Identifier (Stmt))
+ and then Comes_From_Source (Original_Node (Stmt))
+ and then Nkind (Original_Node (Stmt)) = N_Loop_Statement
then
Enclosing_Loop := Stmt;
end loop;
if No (Renaming_Decl) then
- Append (Unit_Renaming, Renaming_List);
+ Append (Unit_Renaming, Renaming_List);
end if;
end Build_Subprogram_Renaming;
end if;
end if;
- -- Case of no identifier present
+ -- Case of no identifier present. Create one and attach it to the
+ -- loop statement for use as a scope and as a reference for later
+ -- expansions. Indicate that the label does not come from source.
else
Ent := New_Internal_Entity (E_Loop, Current_Scope, Loc, 'L');
Set_Etype (Ent, Standard_Void_Type);
- Set_Parent (Ent, N);
+ Set_Identifier (N, New_Occurrence_Of (Ent, Loc));
+ Set_Has_Created_Identifier (N);
end if;
-- Iteration over a container in Ada 2012 involves the creation of a
Next_Formal (Formal);
end loop;
- -- If Extra_formals were already created, don't do it again. This
+ -- If Extra_Formals were already created, don't do it again. This
-- situation may arise for subprogram types created as part of
-- dispatching calls (see Expand_Dispatching_Call)
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2015, 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- --
package Table is
-- Table_Component_Type and Table_Index_Type specify the type of the
- -- array, Table_Low_Bound is the lower bound. Index_type must be an
- -- integer type. The effect is roughly to declare:
+ -- array, Table_Low_Bound is the lower bound. Table_Index_Type must be
+ -- an integer type. The effect is roughly to declare:
-- Table : array (Table_Index_Type range Table_Low_Bound .. <>)
-- of Table_Component_Type;