2017-10-10  Release Manager

	* GCC 5.5.0 released.

2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu): Do not apply special handling
	of boolean rvalues to function calls.

2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (return_value_ok_for_nrv_p): Add sanity check.

2016-11-22  Uros Bizjak  <ubizjak@gmail.com>

	* gcc-interface/Make-lang.in (check-acats): Fix detection
	of -j argument.

2016-11-13  Bob Duff  <duff@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): In assertion about known
	Esize, protect with !is_type and change !Unknown_Esize to Known_Esize.

2016-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	Backport from mainline
	2016-10-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Make-lang.in (lang_checks_parallelized): New target.
	(check_gnat_parallelize): Likewise.

2016-10-17  Eric Botcazou  <ebotcazou@adacore.com>

	* system-darwin-ppc64.ads (Support_64_Bit_Divides): Delete.
	* system-linux-armeb.ads (Support_64_Bit_Divides): Likewise.
	* system-linux-mips.ads (Support_64_Bit_Divides): Likewise.
	* system-linux-mips64el.ads (Support_64_Bit_Divides): Likewise.
	* system-linux-mipsel.ads (Support_64_Bit_Divides): Likewise.
	* system-linux-sparcv9.ads (Support_64_Bit_Divides): Likewise.
	* system-rtems.ads (Support_64_Bit_Divides): Likewise.

2016-10-16  Eric Botcazou  <ebotcazou@adacore.com>

	* system-aix.ads (Always_Compatible_Rep): Change to False.
	* system-aix64.ads (Always_Compatible_Rep): Likewise.
	* system-hpux-ia64.ads (Always_Compatible_Rep): Likewise.
	* system-hpux.ads (Always_Compatible_Rep): Likewise.
	* system-linux-alpha.ads (Always_Compatible_Rep): Likewise.
	* system-linux-hppa.ads (Always_Compatible_Rep): Likewise.
	* system-linux-ia64.ads (Always_Compatible_Rep): Likewise.
	* system-linux-mips.ads (Always_Compatible_Rep): Likewise.
	* system-linux-mips64el.ads (Always_Compatible_Rep): Likewise.
	* system-linux-mipsel.ads (Always_Compatible_Rep): Likewise.
	* system-linux-s390.ads (Always_Compatible_Rep): Likewise.
	* system-linux-s390x.ads (Always_Compatible_Rep): Likewise.
	* system-linux-sh4.ads (Always_Compatible_Rep): Likewise.
	* system-linux-sparc.ads (Always_Compatible_Rep): Likewise.
	* system-linux-sparcv9.ads (Always_Compatible_Rep): Likewise.
	* system-rtems.ads (Always_Compatible_Rep): Likewise.

2016-10-11  Eric Botcazou  <ebotcazou@adacore.com>

	Backport from mainline
	2016-10-11  Eric Botcazou  <ebotcazou@adacore.com>

	* system-linux-armeb.ads (Backend_Overflow_Checks): Change to True.
	* system-linux-mips.ads (Backend_Overflow_Checks): Likewise.
	* system-linux-mips64el.ads (Backend_Overflow_Checks): Likewise.
	* system-linux-mipsel.ads (Backend_Overflow_Checks): Likewise.
	* system-linux-sparcv9.ads (Backend_Overflow_Checks): Likewise.
	* system-rtems.ads (Always_Compatible_Rep): Likewise.

	2016-10-11  Eric Botcazou  <ebotcazou@adacore.com>
		    Tristan Gingold  <gingold@adacore.com>

	* system-linux-ppc64.ads: Delete.
	* system-linux-ppc.ads: Make 32-bit/64-bit neutral.
	* gcc-interface/Makefile.in (PowerPC/Linux): Simplify.

2016-10-10  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (convert): For a biased input type, convert
	the bias itself to the base type before adding it.

2016-06-03  Release Manager

	* GCC 5.4.0 released.

2016-05-31  Eric Botcazou  <ebotcazou@adacore.com>

	* s-osinte-kfreebsd-gnu.ads (clock_getres): Define.

2016-05-31  Jan Sommer  <soja-lists@aries.uberspace.de>

	PR ada/71317
	* s-osinte-rtems.ads (clock_getres): Define.

2016-05-06  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/70969
	* system-darwin-ppc64.ads: Add pragma No_Elaboration_Code_All.
	* system-linux-armeb.ads: Likewise.
	* system-linux-mips64el.ads: Likewise.
	* system-linux-mips.ads: Likewise.
	* system-linux-mipsel.ads: Likewise.
	* system-linux-ppc64.ads: Likewise.
	* system-linux-sparcv9.ads: Likewise.
	* system-rtems.ads: Likewise.

2016-05-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
	Honor DESTDIR.

2016-04-28  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/70786
	* a-textio.adb (Get_Immediate): Add missing 'not' in expression.

2016-04-02  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Restrict the previous
	change to fields with variable size.

2016-03-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Add special case for
	single field with representation clause at offset 0.

2016-02-17  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Expand_N_Indexed_Component): Activate synchronization if
	the prefix denotes an entity which Has_Atomic_Components.

2016-02-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_enum_underlying_base_type): New function.
	(LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): Define to above.

2016-01-18  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/69219
	* gcc-interface/trans.c (check_inlining_for_nested_subprog): Consider
	the parent function instead of the current function in order to issue
	the warning or the error.  Add guard for ignored functions.

2015-12-06  Piotr Trojanek  <piotr.trojanek@gmail.com>

	PR ada/60164
	* doc/gnat_ugn/gnat_and_program_execution.rst (gnatmem): Fix typo.

2015-12-06  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/56274
	* s-osinte-kfreebsd-gnu.ads (pthread_rwlock_t): New subtype.
	(pthread_rwlockattr_t): Likewise.

2015-12-06  Ludovic Brenta  <ludovic@ludovic-brenta.org>

	PR ada/49944
	* s-osinte-freebsd.ads: Minor reformatting.
	(Stack_Base_Available): Correct comments.
	* s-osinte-kfreebsd-gnu.ads (Time_Slice_Supported, nanosleep,
	clock_id_t, clock_gettime, Stack_Base_Available, Get_Page_Size,
	mprotect, pthread_mutexattr_setprotocol,pthread_mutexattr_getprotocol
	pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling,
	pthread_attr_setscope, pthread_attr_getscope,
	pthread_attr_setinheritsched, pthread_attr_getinheritsched,
	Time_Slice_Supported): Copy from s-osinte-freebsd.ads.
	* gcc-interface/Makefile.in (x86/kfreebsd): Use the POSIX version of
	the System.Task_Primitives.Operations package.

2015-12-06  Ludovic Brenta  <ludovic@ludovic-brenta.org>

	PR ada/49940
	* s-osinte-kfreebsd-gnu.ads (lwp_self): New imported function.

2015-12-04  Jan Sommer <soja-lists@aries.uberspace.de>

	PR ada/68169
	* s-oscons-tmplt.c: Generate pthread constants for RTEMS
	* s-osinte-rtems.ads: Declare pthread structs as opaque types in Ada

2015-12-04  Release Manager

	* GCC 5.3.0 released.

2015-11-29  Matthias Klose  <doko@ubuntu.com>

	PR ada/68564
	* gcc-interface/Makefile.in: Fix powerpc/powerpc64* and
	mipsel/mips64el bitness detection.
	Merge the mipsel/mips64el definitions into one.

2015-11-28  Matthias Klose  <doko@ubuntu.com>

	PR ada/68564
	* gcc-interface/Makefile.in: Fix sparc/sparc64 bitness detection.

2015-11-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (is_cplusplus_method): Check that the type of
	the first parameter (indirectly) has C++ convention too.

2015-11-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (fold_constant_decl_in_expr) <ARRAY_REF>: If
	the index is not itself constant then bail out.

2015-10-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in: Make sure that GNAT1_OBJS and not just
	GNAT1_ADA_OBJS are compiled only after generated files are created.

2015-07-16  Release Manager

	* GCC 5.2.0 released.

2015-06-11  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/utils.c (get_global_context): Register the main
	translation unit through the new debug hook.

2015-06-04  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Function>: If
	processing a definition, create definitions for padding types
	around return types.

2015-06-01  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in: Fix ARM/Darwin configuration.

2015-04-22  Release Manager

	* GCC 5.1.0 released.

2015-04-09  Iain Sandoe  <iain@codesourcery.com>

	* gcc-interface/Makefile.in (darwin, powerpc): Enable atomics.

2015-04-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Function>: Do not make
	a function returning an unconstrained type 'const' for the middle-end.

	* gcc-interface/trans.c (Pragma_to_gnu) <case Pragma_Warning>: Use
	exact condition to detect Reason => "..." pattern.

2015-03-31  Tom de Vries  <tom@codesourcery.com>

	PR ada/65490
	* terminals.c (child_setup_tty): Fix warning 'argument to sizeof in
	bzero call is the same expression as the destination'.

2015-03-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Deref>: New case.

2015-03-24  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb: Minor typo fix (missing paren).

2015-03-24  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads: Update comment.

2015-03-24  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb: Add entry for typ'Deref.
	* sem_attr.adb (Deref): New GNAT attribute.
	* sem_attr.ads: Add entry for new GNAT attribute Deref.
	* snames.ads-tmpl: Add entries for new attribute Deref.

2015-03-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Rep_Item_Too_Early): allow pragma Convention
	on generic type.

2015-03-24  Gary Dismukes  <dismukes@adacore.com>

	* inline.adb: Minor typo fix.

2015-03-24  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_ugn/gnat_utility_programs.rst
	doc/gnat_rm/implementation_defined_attributes.rst
	doc/gnat_rm/implementation_defined_pragmas.rst
	doc/gnat_rm/representation_clauses_and_pragmas.rst
	doc/gnat_rm/about_this_guide.rst
	doc/gnat_rm/implementation_of_ada_2012_features.rst: Doc improvements.
	* gnat_rm.texi, gnat_ugn.texi: Regenerate.

2015-03-23  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/65522
	* adadecode.c (ada_demangle): Guard with IN_RTS instead of IN_GCC.

2015-03-20  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/65451
	* gcc-interface/utils.c (gnat_pushdecl): Tidy up and improve comment.
	Make sure to chain only main variants through TYPE_NEXT_PTR_TO.

	* gcc-interface/trans.c (Attribute_to_gnu): Revert latest change.

2015-03-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (gnat_invariant_expr): Return null if the type
	of the expression ends up being composite.

2015-03-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (is_from_limited_with_of_main): New predicate.
	(gnat_to_gnu_entity) <E_Subprogram_Type>: Invoke it on return and
	parameter types to detect circularities in ASIS mode.
	* gcc-interface/trans.c (Attribute_to_gnu): Mention AI05-0151.

2015-03-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Abstract_State>: Do not
	short-circuit the regular handling.

2015-03-13  Robert Dewar  <dewar@adacore.com>

	* exp_unst.adb (Note_Uplevel_Reference): Eliminate duplicate
	references.
	(Actual_Ref): New function.
	(AREC_String): Minor reformatting.
	(Unnest_Subprogram): Use Actual_Ref.
	* frontend.adb (Frontend): Turn off Unnest_Subprogram_Mode
	before call to Instantiate_Bodies.

2015-03-13  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Profile): If the return type of a function
	being frozen is an untagged limited view and the function is
	abstract, mark the type as frozen because there is no later
	point at which the profile of the subprogram will be elaborated.

2015-03-13  Robert Dewar  <dewar@adacore.com>

	* einfo.adb, einfo.ads, atree.adb, atree.ads, atree.h: Add seventh
	component to entities. Add new fields Field36-41 and Node36-41.

2015-03-13  Claire Dross  <dross@adacore.com>

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Rewrite after review.

2015-03-13  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb (Is_Volatile_Reference): Compile time known
	value is never considered to be a volatile reference.

2015-03-13  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb (Analyze_Object_Contract): Suppress "constant
	cannot be volatile" for internally generated object (such as
	FIRST and LAST constants).

2015-03-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Validate_Access_Subprogram_Instance): If a
	convention is specified for the formal parameter, verify that
	the actual has the same convention.
	* sem_prag.adb (Set_Convention_From_Pragma): Allow convention
	pragma to be set on a generic formal type.
	* sem_util.adb (Set_Convention): Ignore within an instance,
	as it has already been verified in the generic unit.

2015-03-13  Claire Dross  <dross@adacore.com>

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not inline
	subprograms with unconstrained record parameters containing
	Itype declarations.
	* sinfo.ads Document GNATprove assumption that type should match
	in the AST.
	* sem_ch6.adb (Analyze_Subprogram_Body_Contract):
	Do not check for Refined_Depends and Refined_Globals contracts
	as they are optional.

2015-03-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Instantiate_Type): For a floating-point type,
	capture dimension info if any, because the generated subtype
	declaration does not come from source and will not process dimensions.
	* sem_dim,adb (Analyze_Dimension_Extension_Or_Record_Aggregate):
	Do not analyze expressions with an initialization procedure
	because aggregates will have been checked at the point of record
	declaration.

2015-03-13  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb: Add entries for aspect Unimplemented.
	* einfo.ads, einfo.adb (Is_Unimplemented): New flag.
	* sem_ch13.adb: Add dummy entry for aspect Unimplemented.
	* snames.ads-tmpl: Add entry for Name_Unimplemented.

2015-03-13  Gary Dismukes  <dismukes@adacore.com>

	* style.adb (Missing_Overriding): Apply the
	Comes_From_Source test to the Original_Node of the subprogram
	node, to handle the case of a null procedure declaration that
	has been rewritten as an empty procedure body.

2015-03-13  Robert Dewar  <dewar@adacore.com>

	* exp_util.ads: Minor fix to comment.
	* sem_ch3.adb (Constrain_Index): Correct pasto from previous
	change.

2015-03-13  Robert Dewar  <dewar@adacore.com>

	* exp_util.ads, exp_util.adb (Force_Evaluation): Add Related_Id and
	Is_Low/High_Bound params.
	* sem_ch3.adb (Constrain_Index): Use new Force_Evaluation calling
	sequence to simplify generation of FIRST/LAST temps for bounds.

2015-03-12  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/trans.c (Attribute_to_gnu) <Code_Address case>:
	On targets where a function symbol designates a function descriptor,
	fetch the function code address from the descriptor.
	(USE_RUNTIME_DESCRIPTORS): Provide a default definition.

2015-03-04  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb: Minor reformatting.
	* init.c: Minor tweaks.

2015-03-04  Dmitriy Anisimko  <anisimko@adacore.com>

	* a-coinho-shared.adb: Fix clear of already empty holder.

2015-03-04  Robert Dewar  <dewar@adacore.com>

	* exp_unst.adb (Check_Dynamic_Type): Ignore library level types.
	(Check_Uplevel_Reference_To_Type): Ignore call inside generic.
	(Note_Uplevel_Reference): Ignore call inside generic.
	(Note_Uplevel_Reference): Fix check for no entity field.
	(Unnest_Subprogram): Ignore call inside generic.
	(Find_Current_Subprogram): Use Defining_Entity, not Defining_Unit_Name.
	(Visit_Node): Ignore calls to Imported subprograms.
	(Visit_Node): Fix problem in finding subprogram body in some cases.
	(Add_Form_To_Spec): Use Defining_Entity, not Defining_Unit_Name.

2015-03-04  Robert Dewar  <dewar@adacore.com>

	* einfo.adb (Is_ARECnF_Entity): Removed.
	(Last_Formal): Remove special handling of Is_ARECnF_Entity.
	(Next_Formal): Remove special handling of Is_ARECnF_Entity.
	(Next_Formal_With_Extras): Remove special handling of Is_ARECnF_Entity.
	(Number_Entries): Minor reformatting.
	* einfo.ads (Is_ARECnF_Entity): Removed.
	* exp_unst.adb (Unnest_Subprogram): Remove setting of
	Is_ARECnF_Entity.
	(Add_Extra_Formal): Use normal Extra_Formal circuit.
	* sprint.adb (Write_Param_Specs): Properly handle case where
	there are no source formals, but we have at least one Extra_Formal
	present.

2015-03-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Record_Aggregate,
	Add_Discriminant_Values): If the value is a reference to the
	current instance of an enclosing type, use its base type to check
	against prefix of attribute reference, because the target type
	may be otherwise constrained.

2015-03-04  Robert Dewar  <dewar@adacore.com>

	* atree.h: Add entries for Flag287-Flag309.
	* einfo.adb: Add (unused) flags Flag287-Flag309.

2015-03-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Collect_Interfaces, Collect): When gathering
	interfaces of ancestors, handle properly a subtype of a private
	extension.

2015-03-04  Robert Dewar  <dewar@adacore.com>

	* einfo.adb (Is_ARECnF_Entity): New flag (ARECnF is an extra formal).
	(Next_Formal): Don't return ARECnF formal.
	(Last_Formal): Don't consider ARECnF formal.
	(Next_Formal_With_Extras): Do consider ARECnF formal.
	* einfo.ads (Is_ARECnF_Entity): New flag (ARECnF is an extra formal).
	* exp_unst.adb (Create_Entities): Set Is_ARECnF_Entity flag.

2015-03-04  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_Simple_Function_Return): When the returned
	object is a class-wide interface object and we generate the
	accessibility described in RM 6.5(8/3) then displace the pointer
	to the object to reference the base of the object (to get access
	to the TSD of the object).

2015-03-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Abstract_State): Use routine
	Malformed_State_Error to issue general errors.
	(Analyze_Pragma): Diagnose a syntax error related to a state
	declaration with a simple option.
	(Malformed_State_Error): New routine.

2015-03-04  Robert Dewar  <dewar@adacore.com>

	* a-strsup.adb (Super_Slice): Deal with super flat case.
	* einfo.ads: Minor reformatting.
	* s-imgdec.adb (Set_Decimal_Digits): Add comment about possibly
	redundant code.

2015-03-04  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads,
	a-cforse.ads, a-cofove.ads: Use Default_Initial_Condition on formal
	containers.

2015-03-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Check_References): When checking for an unused
	in-out parameter of a class- wide type, use its type to determine
	whether it is private, in order to avoid a spurious warning when
	subprogram spec and body are in different units.

2015-03-04  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb: Improve warning messages.

2015-03-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb (Expand_N_Subprogram_Body): Avoid trying to unnest
	generic subprograms.
	* exp_unst.adb (Check_Dynamic_Type): Handle record types properly
	(Note_Uplevel_Reference): Ignore uplevel references to non-types
	(Get_Level): Consider only subprograms, not blocks.
	(Visit_Node): Set proper condition for generating ARECnF entity.
	Ignore indirect calls. Ignore calls to subprograms
	outside our nest.
	(Unnest_Subprogram): Minor changes in dealing with ARECnF entity.
	(Add_Form_To_Spec): Properly set Last_Entity field.
	(Unnest_Subprogram): Set current subprogram scope for analyze calls.
	Handle case of no uplevel refs in outer subprogram
	Don't mark uplevel entities as aliased.
	Don't deal with calls with no ARECnF requirement.

2015-03-04  Robert Dewar  <dewar@adacore.com>

	* s-valrea.adb (Scan_Real): Remove redundant tests from scaling loops.
	* s-imgdec.adb (Set_Decimal_Digits): Remove redundant Max
	operation in computing LZ.
	* sem_attr.adb: Minor typo fix

2015-03-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb: Minor reformatting.
	* exp_unst.adb (Build_Tables): Fix minor glitch for no separate
	spec case.
	* erroutc.adb (Delete_Msg): add missing decrement of info msg counter.

2015-03-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Build_Pragma_Check_Equivalent): Suppress
	references to formal parameters subject to pragma Unreferenced.
	(Suppress_Reference): New routine.
	* sem_attr.adb (Analyze_Attribute): Reimplement the analysis
	of attribute 'Old. Attributes 'Old and 'Result now share
	common processing.
	(Analyze_Old_Result_Attribute): New routine.
	(Check_Placement_In_Check): Removed.
	(Check_Placement_In_Contract_Cases): Removed.
	(Check_Placement_In_Test_Case): Removed.
	(Check_Use_In_Contract_Cases): Removed.
	(Check_Use_In_Test_Case): Removed.
	(In_Refined_Post): Removed.
	(Is_Within): Removed.
	* sem_warn.adb (Check_Low_Bound_Tested): Code cleanup.
	(Check_Low_Bound_Tested_For): New routine.

2015-03-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration):
	Generate a runtime check to test the expression of pragma
	Default_Initial_Condition when the object is default initialized.

2015-03-02  Robert Dewar  <dewar@adacore.com>

	* scng.adb (Scan): Ignore illegal character in relaxed
	semantics mode.

2015-03-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Set_Membership); Retain Overloaded flag
	on left operand, so it can be properly resolved with type of
	alternatives of right operand.
	* sem_res.adb (Resolve_Set_Membership): Handle properly an
	overloaded left-hand side when the alternatives on the right
	hand side are literals of some universal type.	Use first
	non-overloaded alternative to find expected type.

2015-03-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch7.adb (Make_Set_Finalize_Address_Call): Use underlying
	type to retrieve designated type, because the purported access
	type may be a partial (private) view, when it is declared in
	the private part of a nested package, and finalization actions
	are generated when completing compilation of enclosing unit.

2015-03-02  Robert Dewar  <dewar@adacore.com>

	* back_end.adb (Call_Back_End): Remove previous patch,
	the back end now gets to see the result of -gnatd.1
	(Unnest_Subprogram_Mode) processing.
	* elists.ads, elists.adb (List_Length): New function.
	* exp_unst.ads, exp_unst.adb: Major changes, first complete version.
	* sem_util.adb (Check_Nested_Access): Handle formals in
	Unnest_Subprogram_Mode.
	(Adjust_Named_Associations): Minor reformatting.
	* sprint.adb (Sprint_Node_Actual): Fix failure to print aliased
	for parameters.

2015-03-02  Robert Dewar  <dewar@adacore.com>

	* atree.ads, atree.adb (Uint24): New function
	(Set_Uint24): New procedure.
	* atree.h (Uint24): New macro for field access.
	* back_end.adb (Call_Back_End): For now, don't call back end
	if unnesting subprogs.
	* einfo.adb (Activation_Record_Component): New field
	(Subps_Index): New field.
	* einfo.ads (Activation_Record_Component): New field
	(Subps_Index): New field Minor reordering of comments into alpha order.
	* exp_unst.ads, exp_unst.adb: Continued development.

2015-03-02  Gary Dismukes  <dismukes@adacore.com>

	* exp_disp.ads: Minor reformatting.

2015-03-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Chain_Use_Clause): Do not chain use clause from
	ancestor to list of use clauses active in descendant unit if we
	are within the private part of an intervening parent, to prevent
	circularities in use clause list.

2015-03-02  Javier Miranda  <miranda@adacore.com>

	* exp_ch9.adb (Build_Corresponding_Record): Propagate type
	invariants to the corresponding record type.
	* exp_disp.ad[sb] (Set_DT_Position_Value): New subprogram
	which sets the value of the DTC_Entity associated with a given
	primitive of a tagged type and propagates the value to the
	wrapped subprogram.
	(Set_DTC_Entity_Value): Propagate the DTC
	value to the wrapped entity.
	* sem_ch13.adb (Build_Invariant_Procedure): Append the code
	associated with invariants of progenitors.
	* sem_ch3.adb (Build_Derived_Record_Type): Inherit type invariants
	of parents and progenitors.
	(Process_Full_View): Check hidden inheritance of class-wide type
	invariants.
	* sem_ch7.adb (Analyze_Package_Specification): Do not generate
	the invariant procedure for interface types; build the invariant
	procedure for tagged types inheriting invariants from their
	progenitors.
	* sem_prag.adb (Pragma_Invariant) Allow invariants in interface
	types but do not build their invariant procedure since their
	invariants will be propagated to the invariant procedure of
	types covering the interface.
	* exp_ch6.adb, exp_disp.adb, sem_ch3.adb, sem_ch7.adb,
	sem_ch8.adb, sem_disp.adb: Replace all calls to Set_DT_Position
	by calls to Set_DT_Position_Value.

2015-03-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Factor out heavily indented
	code in Denote_Same_Function.  Do not analyze attribute 'Result
	when it is inside procedure _Postconditions.  Remove a misplaced
	warning diagnostic. Code cleanup.
	(Denote_Same_Function): New routine.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Code
	cleanup. Warn on pre/postconditions on an inlined subprogram.
	(Analyze_Pragma, Refined_Post case): Warn on pre/postconditions on
	an inlined subprogram.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Code cleanup. Warn on
	pre/post condition on an inlined subprogram.
	(Analyze_Test_Case_In_Decl_Part): Code cleanup. Warn on
	pre/postconditions on an inlined subprogram.
	(Check_Postcondition_Use_In_Inlined_Subprogram): New routine.

2015-03-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Ensure_Aggregate_Form):
	Ensure that the name denoted by the Chars of a pragma argument
	association has the proper Sloc when converted into an aggregate.

2015-03-02  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Check_Private_Overriding): Capture
	Incomplete_Or_Partial_View in a constant. This is cleaner and
	more efficient.

2015-03-02  Gary Dismukes  <dismukes@adacore.com>

	* einfo.ads, exp_unst.ads: Minor reformatting.

2015-03-02  Ed Schonberg  <schonberg@adacore.com>

	* a-strsea.adb (Find_Token): Ensure that the range of iteration
	does not perform any improper character access. This prevents
	erroneous access in the unusual case of an empty string target
	and a From parameter less than Source'First.

2015-03-02  Robert Dewar  <dewar@adacore.com>

	* elists.adb (List_Length): Fix incorrect result.

2015-03-02  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Check_Private_Overriding): Refine the legality
	checks here. It used to check that the function is merely
	overriding SOMEthing. Now it checks that the function is
	overriding a corresponding public operation. This is a correction
	to the implementation of the rule in RM-3.9.3(10).

2015-03-02  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Document new debug flag -gnatd.1.
	* einfo.ads, einfo.adb (Has_Nested_Subprogram): New flag.
	(Has_Uplevel_Reference): New flag (Is_Static_Type): New flag.
	(Uplevel_Reference_Noted):New flag (Uplevel_References): New field.
	* elists.ads elists.adb (List_Length): New function.
	* exp_ch6.adb (Expand_N_Subprogram_Body): Call Unnest_Subprogram
	when appropriate (Process_Preconditions): Minor code
	reorganization and reformatting
	* exp_unst.ads, exp_unst.adb: New files.
	* gnat1drv.adb (Adjust_Global_Switches): Set
	Unnest_Subprogram_Mode if -gnatd.1
	* namet.ads, namet.adb (Name_Find_Str): New version of Name_Find with
	string argument.
	* opt.ads (Unnest_Subprogram_Mode): New flag.
	* par-ch3.adb (P_Identifier_Declarations): Fixes to -gnatd.2 handling.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Set
	Has_Nested_Subprogram flag.
	* sem_ch8.adb (Find_Direct_Name): New calling sequence for
	Check_Nested_Access.
	(Find_Selected_Component): Minor comment addition.
	* sem_util.adb (Check_Nested_Access): New version for use with Exp_Unst.
	(Note_Possible_Modification): New calling sequence for
	Check_Nested_Access.
	* sem_util.ads (Check_Nested_Access): New version for use with Exp_Unst.
	* gcc-interface/Make-lang.in (GNAT1_OBJS): Add exp_unst.o

2015-03-02  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/utils.c (gnat_pushdecl): For non-artificial pointer
	types, preserve the original type and create copies just like the C
	front-end does.  For artificial ones, do not define a name for
	the original type.
	(create_type_decl): When gnat_pushdecl made the input type the
	original type for the new declaration, do not define a stub
	declaration for it.
	* gcc-interface/utils2.c (build_binary_op): Accept two different
	pointer types when they point to the same type.

2015-03-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Possible_Bit_Aligned_Component): Do not process
	an unanalyzed node.
	* sem_util.adb (Kill_Current_Values): Do not invalidate and
	de-null a constant.

2015-03-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, exp_attr.adb, checks.adb, exp_aggr.adb: Minor
	reformatting.

2015-03-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb: extend use of Available_Subtype.

2015-03-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Duplication_Error): Remove the special handling
	of 'Class or _Class in the context of pre/postconditions.
	(Process_Class_Wide_Condition): Remove the special handling of
	'Class or _Class in the context of pre/postconditions.
	* sem_util.adb (Original_Aspect_Pragma_Name): Names Pre_Class
	and Post_Class no longer need to be converted to _Pre and _Post.
	* sem_util.ads (Original_Aspect_Pragma_Name): Update the comment
	on usage.

2015-03-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Process_Preconditions): Modify the
	mechanism that find the first source declaration to correct exit
	the loop once it has been found.

2015-03-02  Gary Dismukes  <dismukes@adacore.com>

	* a-strsea.adb: Minor typo fix.

2015-03-02  Bob Duff  <duff@adacore.com>

	* einfo.ads: Minor comment fixes.

2015-03-02  Gary Dismukes  <dismukes@adacore.com>

	* einfo.adb, checks.adb: Minor reformatting and typo fixes.

2015-03-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Get_Assoc_Expr): If the Default_Component_Value
	is defined for the array type, use it instead of a Default_Value
	specified for the component type itself.

2015-03-02  Thomas Quinot  <quinot@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, case Input): When
	expanding a 'Input attribute reference for a class-wide type,
	do not generate a separate object declaration for the controlling
	tag dummy object; instead, generate the expression inline in the
	dispatching call. Otherwise, the declaration (which involves a
	call to String'Input, returning a dynamically sized value on the
	secondary stack) will be expanded outside of proper secondary
	stack mark/release operations, and will thus cause a secondary
	stack leak.

2015-03-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Add_Validity_Check): Change the names of all
	formal parameters to better illustrate their purpose. Update
	the subprogram documentation. Update all occurrences of the
	formal parameters. Generate a pre/postcondition pragma by
	calling Build_Pre_Post_Condition.
	(Build_PPC_Pragma): Removed.
	(Build_Pre_Post_Condition): New routine.
	* einfo.adb Node8 is no longer used as Postcondition_Proc. Node14
	is now used as Postconditions_Proc. Flag240 is now renamed to
	Has_Expanded_Contract.	(First_Formal): The routine can now
	operate on generic subprograms.
	(First_Formal_With_Extras): The routine can now operate on generic
	subprograms.
	(Has_Expanded_Contract): New routine.
	(Has_Postconditions): Removed.
	(Postcondition_Proc): Removed.
	(Postconditions_Proc): New routine.
	(Set_Has_Expanded_Contract): New routine.
	(Set_Has_Postconditions): Removed.
	(Set_Postcondition_Proc): Removed.
	(Set_Postconditions_Proc): New routine.
	(Write_Entity_Flags): Remove the output of Has_Postconditions. Add
	the output of Has_Expanded_Contract.
	(Write_Field8_Name): Remove the output of Postcondition_Proc.
	(Write_Field14_Name): Add the output of Postconditions_Proc.
	* einfo.ads New attributes Has_Expanded_Contract and
	Postconditions_Proc along with occurrences in entities.
	Remove attributes Has_Postconditions and Postcondition_Proc
	along with occurrences in entities.
	(Has_Expanded_Contract): New routine along with pragma Inline.
	(Has_Postconditions): Removed along with pragma Inline.
	(Postcondition_Proc): Removed along with pragma Inline.
	(Postconditions_Proc): New routine along with pragma Inline.
	(Set_Has_Expanded_Contract): New routine along with pragma Inline.
	(Set_Has_Postconditions): Removed along with pragma Inline.
	(Set_Postcondition_Proc): Removed along with pragma Inline.
	(Set_Postconditions_Proc): New routine along with pragma Inline.
	* exp_ch6.adb (Add_Return): Code cleanup. Update the
	generation of the call to the _Postconditions routine of
	the procedure.	(Expand_Non_Function_Return): Reformat the
	comment on usage. Code cleanup.  Update the generation of
	the call to the _Postconditions routine of the procedure or
	entry [family].
	(Expand_Simple_Function_Return): Update the
	generation of the _Postconditions routine of the function.
	(Expand_Subprogram_Contract): Reimplemented.
	* exp_ch6.ads (Expand_Subprogram_Contract): Update the parameter
	profile along the comment on usage.
	* exp_ch9.adb (Build_PPC_Wrapper): Code cleanup.
	(Expand_N_Task_Type_Declaration): Generate pre/postconditions
	wrapper when the entry [family] has a contract with
	pre/postconditions.
	* exp_prag.adb (Expand_Attributes_In_Consequence): New routine.
	(Expand_Contract_Cases): This routine and its subsidiaries now
	analyze all generated code.
	(Expand_Old_In_Consequence): Removed.
	* sem_attr.adb Add with and use clause for Sem_Prag.
	(Analyze_Attribute): Reimplment the analysis of attribute 'Result.
	(Check_Use_In_Test_Case): Use routine Test_Case_Arg to obtain
	"Ensures".
	* sem_ch3.adb (Analyze_Declarations): Analyze the contract of
	a generic subprogram.
	(Analyze_Object_Declaration): Do not create a contract node.
	(Derive_Subprogram): Do not create a contract node.
	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Do
	not create a contract node.
	(Analyze_Completion_Contract): New routine.
	(Analyze_Function_Return): Alphabetize.
	(Analyze_Generic_Subprogram_Body): Alphabetize. Do not create a
	contract node.	Do not copy pre/postconditions to the original
	generic template.
	(Analyze_Null_Procedure): Do not create a contract node.
	(Analyze_Subprogram_Body_Contract): Reimplemented.
	(Analyze_Subprogram_Body_Helper): Do not mark the enclosing scope
	as having postconditions. Do not create a contract node. Analyze
	the subprogram body contract of a body that acts as a compilation
	unit. Expand the subprogram contract after the declarations have
	been analyzed.
	(Analyze_Subprogram_Contract): Reimplemented.
	(Analyze_Subprogram_Specification): Do not create a contract node.
	(List_Inherited_Pre_Post_Aspects): Code cleanup.
	* sem_ch6.adb (Analyze_Subprogram_Body_Contract): Update the
	comment on usage.
	(Analyze_Subprogram_Contract): Update the
	parameter profile and the comment on usage.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Do not create a
	contract node.
	(Analyze_Package_Declaration): Do not create a
	contract node.
	(Is_Subp_Or_Const_Ref): Ensure that the prefix has an entity.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Do not create a
	contract node.
	* sem_ch9.adb (Analyze_Entry_Declaration): Do not create a
	contract node.
	* sem_ch10.adb (Analyze_Compilation_Unit): Move local variables to
	their proper section and alphabetize them. Analyze the contract of
	a [generic] subprogram after all Pragmas_After have been analyzed.
	(Analyze_Subprogram_Body_Stub_Contract): Alphabetize.
	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Do not
	create a contract node.
	(Analyze_Generic_Subprogram_Declaration):
	Alphabetize local variables. Do not create a contract
	node. Do not generate aspects out of pragmas for ASIS.
	(Analyze_Subprogram_Instantiation): Instantiate
	the contract of the subprogram.  Do not create a
	contract node.	(Instantiate_Contract): New routine.
	(Instantiate_Subprogram_Body): Alphabetize local variables.
	(Save_Global_References_In_Aspects): New routine.
	(Save_References): Do not save the global references found within
	the aspects of a generic subprogram.
	* sem_ch12.ads (Save_Global_References_In_Aspects): New routine.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Do not use
	Original_Node for establishing linkages.
	(Insert_Pragma): Insertion in a subprogram body takes precedence over
	the case where the subprogram body is also a compilation unit.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Use
	Get_Argument to obtain the proper expression. Install the generic
	formals when the related context is a generic subprogram.
	(Analyze_Depends_In_Decl_Part): Use Get_Argument to obtain
	the proper expression. Use Corresponding_Spec_Of to obtain
	the spec. Install the generic formal when the related context
	is a generic subprogram.
	(Analyze_Global_In_Decl_Part): Use Get_Argument to obtain the proper
	expression. Use Corresponding_Spec_Of to obtain the spec. Install the
	generic formal when the related context is a generic subprogram.
	(Analyze_Initial_Condition_In_Decl_Part): Use Get_Argument
	to obtain the proper expression. Remove the call to
	Check_SPARK_Aspect_For_ASIS as the analysis is now done
	automatically.
	(Analyze_Pragma): Update all occurrences
	to Original_Aspect_Name. Pragmas Contract_Cases, Depends,
	Extensions_Visible, Global, Postcondition, Precondition and
	Test_Case now carry generic templates when the related context
	is a generic subprogram. The same pragmas are no longer
	forcefully fully analyzed when the context is a subprogram
	that acts as a compilation unit. Pragmas Abstract_State,
	Initial_Condition, Initializes and Refined_State have been clean
	up. Pragmas Post, Post_Class, Postcondition, Pre, Pre_Class
	and Precondition now use the same routine for analysis. Pragma
	Refined_Post does not need to check the use of 'Result or
	the lack of a post-state in its expression. Reimplement the
	analysis of pragma Test_Case.
	(Analyze_Pre_Post_Condition): New routine.
	(Analyze_Pre_Post_Condition_In_Decl_Part):
	Reimplemented.
	(Analyze_Refined_Depends_In_Decl_Part): Use Get_Argument to obtain the
	proper expression.
	(Analyze_Refined_Global_In_Decl_Part): Use Get_Argument to obtain
	the proper expression.
	(Analyze_Test_Case_In_Decl_Part): Reimplemented.
	(Check_Pre_Post): Removed.
	(Check_Precondition_Postcondition): Removed.
	(Check_SPARK_Aspect_For_ASIS): Removed.
	(Check_Test_Case): Removed.
	(Collect_Subprogram_Inputs_Outputs): Use Get_Argument
	to obtain the proper expression. Use Corresponding_Spec_Of to
	find the proper spec.
	(Create_Generic_Template): New routine.
	(Duplication_Error): New routine.
	(Expression_Function_Error): New routine.
	(Find_Related_Subprogram_Or_Body): Moved to the spec
	of Sem_Prag. Emit precise error messages. Account for cases of
	rewritten expression functions, generic instantiations, handled
	sequence of statements and pragmas from aspects.
	(Get_Argument): New routine.
	(Make_Aspect_For_PPC_In_Gen_Sub_Decl): Removed.
	(Preanalyze_CTC_Args): Removed.
	(Process_Class_Wide_Condition): New routine.
	* sem_prag.ads (Analyze_Test_Case_In_Decl_Part): Update
	the parameter profile along with the comment on usage.
	(Find_Related_Subprogram_Or_Body): Moved from the body of Sem_Prag.
	(Make_Aspect_For_PPC_In_Gen_Sub_Decl): Removed.
	(Test_Case_Arg): New routine.
	* sem_util.adb Add with and use clauses for Sem_Ch6.
	(Add_Contract_Item): This routine now creates a contract
	node the first time an item is added. Remove the duplicate
	aspect/pragma checks.
	(Check_Result_And_Post_State): Reimplemented.
	(Corresponding_Spec_Of): New routine.
	(Get_Ensures_From_CTC_Pragma): Removed.
	(Get_Requires_From_CTC_Pragma): Removed.
	(Has_Significant_Contract): New routine.
	(Inherit_Subprogram_Contract): Inherit only if the source
	has a contract.
	(Install_Generic_Formals): New routine.
	(Original_Aspect_Name): Removed.
	(Original_Aspect_Pragma_Name): New routine.
	* sem_util.ads (Check_Result_And_Post_State): Reimplemented.
	(Corresponding_Spec_Of): New routine.
	(Get_Ensures_From_CTC_Pragma): Removed.
	(Get_Requires_From_CTC_Pragma): Removed.
	(Has_Significant_Contract): New routine.
	(Install_Generic_Formals): New routine.
	(Original_Aspect_Name): Removed.
	(Original_Aspect_Pragma_Name): New routine.
	* sem_warn.adb Add with and use clauses for Sem_Prag.
	(Within_Postcondition): Use Test_Case_Arg to extract "Ensures".

2015-03-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Available_Subtype): Optimization in
	Find_Selected_Component: when safe, use existing subtype of
	array component, possibly discriminant-dependent, rather than
	creating new subtype declaration for it. In this fashion different
	occurrences of the component have the same subtype, rather than
	just equivalent ones. Simplifies value tracing in GNATProve.

2015-03-01  Arnaud Charlet  <charlet@adacore.com>

	PR ada/65259

	* doc/gnat_ugn/gnat_project_manager.rst,
	doc/gnat_ugn/platform_specific_information.rst: Remove reference to
	image, too troublesome with texi format.
	* gnat_ugn.texi: Regenerate.

2015-02-24  Thomas Schwinge  <thomas@codesourcery.com>

	PR libgomp/64625
	* gcc-interface/utils.c (DEF_FUNCTION_TYPE_VAR_8): Remove.
	(DEF_FUNCTION_TYPE_VAR_12): Likewise.
	(DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros.

2015-02-23  Thomas Schwinge  <thomas@codesourcery.com>

	* gcc-interface/utils.c (DEF_FUNCTION_TYPE_VAR_8): Fix number of
	arguments parameter.
	(DEF_FUNCTION_TYPE_VAR_12): Likewise.

2015-02-22  Arnaud Charlet  <charlet@adacore.com>

	* doc/Makefile: postprocess texinfo files to update @dircategory
	and update texi files under gcc/ada.
	* gnat_ugn.texi, gnat_rm.texi: Regenerated.

2015-02-22  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/project-manager-figure.png,
	doc/gnat_ugn/rtlibrary-structure.png: New.

2015-02-22  Tom de Vries  <tom@codesourcery.com>

	PR ada/65100
	* gnat-style.texi (@subsection Loop Statements): Replace @noindent by
	@item, and fix warning '@itemize has text but no @item'.

2015-02-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Obsolescent): Pragma
	legally applies to an abstract subprogram declaration.
	* freeze.adb: Minor comment addition.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* errout.ads: Document replacement of Name_uPre/Post/Type_Invariant.
	* erroutc.adb (Set_Msg_Str): Replace _xxx.
	(Pre/Post/Type_Invariant) by xxx'Class.
	* erroutc.ads (Set_Msg_Str): Replace _xxx.
	(Pre/Post/Type_Invariant) by xxx'Class.
	* sem_prag.adb (Fix_Error): Remove special casing of
	Name_uType_Invariant.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Remove special casing of
	Name_uPre and Name_uPost in aspect case (done in Errout now).

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* g-alveop.adb: Minor style fixes.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Warn_Overlay): Guard against blow up with address
	clause.

2015-02-20  Bob Duff  <duff@adacore.com>

	* exp_attr.adb (May_Be_External_Call): Remove this. There is no need
	for the compiler to guess whether the call is internal or external --
	it is always external.
	(Expand_Access_To_Protected_Op): For P'Access, where P
	is a protected subprogram, always create a pointer to the
	External_Subprogram.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* a-dispat.adb, a-stcoed.ads: Minor reformatting.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Build_Discrete_Static_Predicate): Allow static
	predicate for non-static subtype.
	(Build_Predicate_Functions): Do not assume subtype associated with a
	static predicate must be static.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Set_Msg_Node): Better handling of internal names
	(Set_Msg_Node): Kill message when we cannot eliminate internal name.
	* errout.ads: Document additional case of message deletion.
	* namet.adb (Is_Internal_Name): Refined to consider wide
	strings in brackets notation and character literals not to be
	internal names.
	* sem_ch8.adb (Find_Selected_Component): Give additional error
	when selector name is a subprogram whose first parameter has
	the same type as the prefix, but that type is untagged.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* g-allein.ads, g-alveop.adb, g-alveop.ads, opt.ads: Minor reformatting

2015-02-20  Tristan Gingold  <gingold@adacore.com>

	* opt.ads (GNAT_Mode_Config): New variable.
	* opt.adb (Set_Opt_Config_Switches): Consider GNAT_Mode_Config
	to set Assertions_Enabled.
	* switch-c.adb (Scan_Front_End_Switches): Set GNAT_Mode_Config
	for -gnatg.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* s-valllu.ads (Scan_Raw_Long_Long_Unsigned): Add an additional
	comment regarding the handling of unterminated fixed-point
	constants.
	* s-valuns.ads (Scan_Raw_Unsigned): Add comments
	corresponding to those previously added for
	System.Val_LLU.Scan_Raw_Long_Long_Unsigned.

2015-02-20  Olivier Hainque  <hainque@adacore.com>

	* g-allein.ads, g-alveop.ads, g-alveop.adb: Code clean ups.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor comment clarification.

2015-02-20  Olivier Hainque  <hainque@adacore.com>

	* g-allein.ads (vec_ctf, vec_vcsfx, vec_vcfux): Remove.
	* g-alleve.ads, g-alleva.adb (vcfux): Likewise.
	* g-alveop.ads (vec_vcfsx, vec_vcfux): Just rename the ll versions.
	(vec_ctf): Now renamings as well.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* switch-c.adb, bindgen.adb: Minor reformatting.

2015-02-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Type_Invariant):
	Invariant'class is allowed on an abstract type.

2015-02-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Definition): If the access definition is
	for a protected component and defines an access to protected
	subprogram, do not create an itype reference for it because a
	full type declaration will be built in order to generate the
	proper equivalent type.
	(Analyze_Subtype_Declaration): Add information of incomplete
	subtypes, for Ada 2012 extended uses of incomplete types.

2015-02-20  Gary Dismukes  <dismukes@adacore.com>

	* sem_res.adb: Minor reformatting.

2015-02-20  Vincent Celier  <celier@adacore.com>

	* switch-c.adb (Scan_Front_End_Switches): When comparing runtime
	path name for several switches --RTS, use the normalized path
	names.

2015-02-20  Vincent Celier  <celier@adacore.com>

	* bindgen.adb: Minor reformatting and code reorganization.

2015-02-20  Jose Ruiz  <ruiz@adacore.com>

	* a-stcoed.ads: Add spec for this package (Unimplemented_Unit).
	* impunit.adb (Non_Imp_File_Names_12): Mark unit a-stcoed.ads as
	defined by Ada 2012.

2015-02-20  Arnaud Charlet  <charlet@adacore.com>

	* sysdep.c, expect.c, s-oscons-tmplt.c, gsocket.h, adaint.c: Remove
	obsolete references to RTX, nucleus, VMS.

2015-02-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Fix_Error): For an illegal Type_Invariant'Class
	aspect, use name that mentions Class explicitly, rather than
	compiler-internal name.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Add documentation for -gnatd.2 (allow statements
	in decl sequences).
	* par-ch3.adb (P_Identifier_Declarations): Handle
	statement appearing where declaration expected more cleanly.
	(Statement_When_Declaration_Expected): Implement debug flag
	-gnatd.2.

2015-02-20  Jose Ruiz  <ruiz@adacore.com>

	* a-dinopr.ads: Add spec for this package (Unimplemented_Unit).
	* a-dispat.ads (Yield): Include procedure added in Ada 2012.
	* a-dispat.adb (Yield): Implement procedure added in Ada 2012.
	* impunit.adb (Non_Imp_File_Names_05): Mark unit a-dinopr.ads as
	defined by Ada 2005.
	* snames.ads-tmpl (Name_Non_Preemptive_FIFO_Within_Priorities):
	This is the correct name for the dispatching policy (FIFO was
	missing).

2015-02-20  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): If the type of the
	operand is the limited-view of a class-wide type then recover
	the class-wide type of the non-limited view.

2015-02-20  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in: Remove references to nucleus.
	* gcc-interface/decl.c (gnat_to_gnu_entity, case E_Procedure): Set
	extern_flag to true for Inline_Always subprograms with
	Intrinsic convention.

2015-02-20  Yannick Moy  <moy@adacore.com>

	* sem_prag.ads: Minor typo in comment.

2015-02-20  Pascal Obry  <obry@adacore.com>

	* s-osprim-mingw.adb: Fix Get_Base_Time parameter mode.

2015-02-20  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Get_Directories.Add_Dir): Add a directory only
	if it exists.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* sem_eval.ads: Minor reformatting.

2015-02-20  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Size_Known): Do not set the packed size for
	independent type or component.
	(Freeze_Array_Type): Check for Independent[_Components] with packing
	or explicit component size clause.
	* gnat1drv.adb (Post_Compilation_Validation_Checks): Do the validation
	of independence pragmas only for non-GCC back-ends.
	* sem_ch13.adb (Initialize): Likewise for the initialization.
	* sem_prag.adb (Record_Independence_Check): New procedure to record an
	independence check in the table.
	(Analyze_Pragma): Use it throughout instead of doing it manually.
	* gcc-interface/decl.c (gnat_to_gnu_field): Add support for
	independent type or component.

2015-02-20  Thomas Quinot  <quinot@adacore.com>

	* adaint.c (__gnat_readdir): For Solaris, use 64 bit variants of
	struct direct and readdir. This is required for NFS filesystems
	mounted from servers that use 64-bit cookies.

2015-02-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Subprogram_Instantiaion): New subprogram
	Build_Subprogram_Renaming, to create renaming of subprogram
	instance in the the declaration of the wrapper package rather
	than in its body, so that it is available for analysis of aspects
	propagated from generic to instantiation.
	(Check_Mismatch): An actual for a formal package that is an
	incomplete type matches a formal type that is incomplete.
	(Instantiate_Package_Body): Move code that builds subprogram
	renaming to Analyze_Subprogram_Instantiation.
	(Instantiate_Type): The generated subtype is a limited view if
	the actual is a limited view.
	(Load_Parent_Of_Generic): Retrieve instance declaration from
	its new position within wrapper package.

2015-02-20  Arnaud Charlet  <charlet@adacore.com>

	* s-parame-vxworks.adb, s-os_lib.ads: Update comments.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* s-osinte-vxworks.ads (To_Timespec): Add comment about the
	issue of negative arguments.

2015-02-20  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat1drv.adb: Minor consistency fix.

2015-02-20  Pascal Obry  <obry@adacore.com>

	* s-osprim-mingw.adb (Get_Base_Time): Properly release lock in all
	paths.

2015-02-20  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Expand_Inlined_Call): Skip again calls to subprogram
	renamings.
	* exp_ch6.adb (Expand_Call): Use back-end inlining
	instead of expansion for simple subprogram renamings.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb: Minor reformatting.

2015-02-20  Vincent Celier  <celier@adacore.com>

	* switch-c.adb (Scan_Front_End_Switches): Do not fail when --RTS=
	is specified several times with different values that indicates
	the same runtime directory.

2015-02-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Check_Not_Incomplete_Type): Clean up code to
	handle properly illegal uses of attributes on prefixes on an
	incomplete type, both when the type of the prefix is locally
	incomplete, and when it is a limited view of a type whose
	non-limited view is not available.
	(Analyze_Attribute): Add calls to Check_Not_Incomplete_Type for
	'Address and others.

2015-02-20  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb: Fix minor typo in comment.

2015-02-20  Eric Botcazou  <ebotcazou@adacore.com>

	* sinfo.ads: Add comment.

2015-02-20  Olivier Hainque  <hainque@adacore.com>

	* opt.ads: Replace Opt.Suppress_All_Inlining by two separate
	flags controlling the actual FE inlining out of pragma Inline
	and pragma Inline_Always.
	* adabkend.adb (Scan_Compiler_Arguments): Set both flags to True
	on -fno-inline, which disables all inlining in compilers with
	an Ada back-end and without back-end inlining support.
	* back_end.adb (Scan_Back_End_Switches): Set the Inline related
	flag to True on -fno-inline and leave Inline_Always alone for
	gcc back-ends.
	* back_end.ads (Scan_Compiler_Arguments): Adjust spec wrt the
	names of the Opt flags it sets.
	* gnat1drv.adb (Adjust_Global_Switches): Remove test on
	Opt.Suppress_All_Inlining in the Back_End_Inlining computation.
	* sem_prag.adb (Make_Inline): Remove early return conditioned
	on Opt.Suppress_All_Inlining.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Use the flags to
	disable the calls to Build_Body_To_Inline otherwise triggered
	by pragma Inline or Inline_Always. This will prevent actual
	front-end inlining of the subprogram on calls.

2015-02-20  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch3.adb (Default_Initialize_Object): Call Add_Inlined_Body on the
	Abort_Undefer_Direct function.
	* exp_ch5.adb (Expand_N_Assignment_Statement): Likewise.
	* exp_intr.adb (Expand_Unc_Deallocation): Likewise.
	* exp_prag.adb (Expand_Pragma_Abort_Defer): Likewise.
	* exp_ch4.adb (Expand_N_Selected_Component): Adjust call to
	Add_Inlined_Body.
	* exp_ch6.adb (Expand_Call): Adjust calls to Add_Inlined_Body.
	 Remove call to Register_Backend_Call and move code resetting
	Needs_Debug_Info on inlined subprograms to...
	* inline.ads (Add_Inlined_Body): Add N parameter.
	(Register_Backend_Call): Delete.
	* inline.adb (Add_Inlined_Body): ...here and simplify.
	 Register the call with Backend_Calls directly.
	(Register_Backend_Call): Delete.
	* s-stalib.ads (Abort_Undefer_Direct): Restore pragma Inline.

2015-02-20  Eric Botcazou  <ebotcazou@adacore.com>

	* s-stalib.ads: Fix typo.

2015-02-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Default_Initialize_Object): If the object has a
	delayed freeze, the actions associated with default initialization
	must be part of the freeze actions, rather that being inserted
	directly after the object declaration.

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* lib-load.adb: Minor comment update.

2015-02-20  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb (Process_Case_Construction): When there are
	incomplete withed projects and the case variable is unknown,
	skip the case construction.

2015-02-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Actuals): Add caller-side invariant checks
	when an actual is a view conversion, either because the call is
	to an inherited operation, or because the actual is an explicit
	type conversion to an ancestor type.  Fixes ACATS 4.0D: C732001

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* einfo.ads: Minor comment updates Fix missing pragma Inline
	for Set_Partial_View_Has_Unknown_Discr.
	* einfo.adb (Write_Entity_Flags): Add missing entry for
	Partial_View_Has_Unknown_Discr.
	* sem_ch3.adb: Minor reformatting.

2015-02-20  Vincent Celier  <celier@adacore.com>

	* opt.ads: Minor cleanup: remove mention of gprmake.
	* s-stalib.ads (Abort_Undefer_Direct): Do not inline.
	* s-tataat.adb: Do not call System.Tasking.Self but directly
	System.Task_Primitives.Operations.Self.

2015-02-20  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Now automatically generated from
	sphinx in the doc directory.
	* doc: New directory containing sphinx versions of gnat_rm and gnat_ugn

2015-02-20  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb: Minor reformatting.
	* exp_ch9.adb (Build_Protected_Spec): Copy Aliased setting when
	building spec.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Exclude Boolean
	aspects from circuitry setting delay required to false if the
	argument is an integer literal.

2015-02-20  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads. einfo.adb (Partial_View_Has_Unknown_Discr):  New flag
	on type entities, to enforce AI12-0133: default initialization
	of types whose partial view has unknown discriminants does not
	get an invariant check, because clients of the unit can never
	declare objects of such types.
	* sem_ch3.adb (Find_Type_Name); Set new flag
	Partial_View_Has_Unknown_Discr when needed.
	* exp_ch3.adb (Expand_N_Object_Declaration): Use flag to suppress
	generation of invariant call on default-initialized object.

2015-02-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_param): Do not strip the padding
	if the parameter either is passed by reference or if the alignment
	would be lowered.

2015-02-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (is_cplusplus_method): Use Is_Primitive flag to
	detect primitive operations of tagged and untagged types.

2015-02-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not bother about alias
	sets in presence of derivation for subprogram types.

2015-02-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (begin_subprog_body): Assert that the body is
	present in the same context as the declaration.

2015-02-07  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/64340
	* gcc-interface/trans.c (gigi): Recreate optimization_default_node
	and optimization_current_node after tweaking global_options.

2015-02-05  Robert Dewar  <dewar@adacore.com>

	* prj-proc.adb, sem_aux.adb, exp_ch9.adb, errout.adb, prj-dect.adb,
	prj-nmsc.adb: Minor reformatting.

2015-02-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Covers): In ASIS_Mode the Corresponding_Record
	of a protected type may not be available, so to check conformance
	with an interface type, examine the interface list in the type
	declaration directly.
	(Write_Overloads): Improve information for indirect calls,
	for debugger use.

2015-02-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Make_Tag_Assignment): Do not perform this
	expansion activity in ASIS mode.

2015-02-05  Javier Miranda  <miranda@adacore.com>

	* errout.adb (Error_Msg_PT): Add missing error.
	* sem_ch6.adb (Check_Synchronized_Overriding): Check the missing
	RM rule.  Code cleanup.
	* exp_ch9.adb (Build_Wrapper_Spec): Propagate "constant" in
	anonymous access types.  Found working on the tests. Code cleanup.

2015-02-05  Vincent Celier  <celier@adacore.com>

	* prj-dect.adb (Parse_Attribute_Declaration): Continue scanning
	when there are incomplete withs.
	* prj-nmsc.adb (Process_Naming): Do not try to get the value
	of an element when it is nil.
	(Check_Naming): Do not check a nil suffix for illegality
	* prj-proc.adb (Expression): Do not process an empty term.
	* prj-strt.adb (Attribute_Reference): If attribute cannot be
	found, parse a possible index to avoid cascading errors.

2015-02-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.adb (Is_Derived_Type): A subprogram_type generated
	for an access_to_subprogram declaration is not a derived type.

2015-02-05  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Error_Msg_Internal): For non-serious error set
	Fatal_Error to Ignored.
	* lib-load.adb (Load_Unit): Minor comment updates.
	* sem_ch10.adb (Analyze_With_Clause): Propagate Fatal_Error
	setting from with'ed unit to with'ing unit.
	* sem_prag.adb (Analyze_Pragma, case Warnings): Document handling
	of ambiguity.

2015-02-05  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb, par-prag.adb: Minor code clean up.

2015-02-05  Yannick Moy  <moy@adacore.com>

	* par-prag.adb (Pragma_Warnings): Update for extended form
	of pragma Warnings. The "one" argument case may now have 2 or
	3 arguments.
	* sem_prag.adb (Analyze_Pragma/Pragma_Warnings): Update for
	extended form of pragma Warnings. Pragma with tool name is either
	rewritten as null or as an equivalent form without tool name,
	before reanalysis.
	* snames.ads-tmpl (Name_Gnatprove): New name.

2015-02-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Add_Invariants): Don't assume invariant is
	standard Boolean.
	* sem_prag.adb (Analyze_Pragma, case Check): Don't assume
	condition is standard Boolean, it can be non-standard derived
	Boolean.

2015-02-05  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Enable_Range_Check): Disconnect attempted
	optimization for the case of range check for subscript of
	unconstrained array.

2015-02-05  Robert Dewar  <dewar@adacore.com>

	* par-ch13.adb (With_Present): New function
	(Aspect_Specifications_Present): Handle WHEN in place of WITH
	(Get_Aspect_Specifications): Comment update.
	* par.adb: Comment updates.

2015-02-05  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Handle_Serious_Error): New setting of Fatal_Error.
	* frontend.adb (Frontend): New setting of Fatal_Error.
	* lib-load.adb (Create_Dummy_Package_Unit): New setting of
	Fatal_Error.
	(Load_Main_Source): New setting of Fatal_Error
	(Load_Unit): New setting of Fatal_Error.
	* lib-writ.adb (Add_Preprocessing_Dependency): New setting of
	Fatal_Error.
	(Ensure_System_Dependency): New setting of Fatal_Error.
	* lib.adb (Fatal_Error): New setting of Fatal_Error
	(Set_Fatal_Error): New setting of Fatal_Error.
	* lib.ads: New definition of Fatal_Error and associated routines.
	* par-ch10.adb (P_Compilation_Unit): New setting of Fatal_Error.
	* par-load.adb (Load): New setting of Fatal_Error.
	* rtsfind.adb (Load_RTU): New setting of Fatal_Error.
	* sem_ch10.adb (Analyze_Compilation_Unit): New setting of
	Fatal_Error.
	(Optional_Subunit): New setting of Fatal_Error.
	(Analyze_Proper_Body): New setting of Fatal_Error.
	(Load_Needed_Body): New setting of Fatal_Error.

2015-02-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Call): If the function being called has
	out parameters do not check for language version if the function
	comes from a predefined unit, as those are always compiled in
	Ada 2012 mode.

2015-02-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Process_Full_View): Verify that the full view
	of a type extension must carry an explicit limited keyword if
	the partial view does (RM 7.3 (10.1)).

2015-02-05  Robert Dewar  <dewar@adacore.com>

	* g-rannum.adb, g-rannum.ads, s-rannum.adb, s-rannum.ads,
	sem_warn.ads: Minor reformatting.
	* exp_ch13.adb (Expand_N_Freeze_Entity): Add guard for aspect
	deleted by -gnatI.
	* sem_prag.adb (Analyze_Pragma, case Type_Invariant): Give
	error for abstract type.

2015-02-05  Yannick Moy  <moy@adacore.com>

	* opt.ads (Warn_On_Suspicious_Contract): Update comment
	describing use.
	* sem_attr.adb (Analyze_Attribute/Attribute_Update): Warn on
	suspicious uses of 'Update.
	* sem_warn.adb, sem_warn.ads (Warn_On_Suspicious_Update): New
	function issues warning on suspicious uses of 'Update.
	* g-rannum.adb, g-rannum.ads, s-rannum.adb, s-rannum.ads: Mark
	package spec and body as SPARK_Mode Off.

2015-02-05  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Set_Elab_Unit_Name): New name for Set_Unit_Name
	(Analyze_Pragma): Change Set_Unit_Name to Set_Elab_Unit_Name
	(Set_Elab_Unit_Name): Generate reference for Elaborate[_All]
	* sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning
	for exported entity.

2015-02-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Pragma_Conformance): Add
	local variable Arg. Ensure that all errors are associated with
	the pragma if it appears without an argument. Add comments on
	various cases.

2015-02-05  Robert Dewar  <dewar@adacore.com>

	* lib-xref.adb: Minor reformatting.

2015-02-05  Tristan Gingold  <gingold@adacore.com>

	PR ada/64349da/64349
	* env.c: Fix thinko: handle Darwin case before default one.

2015-01-30  Robert Dewar  <dewar@adacore.com>

	* a-assert.adb: Minor reformatting.
	* sem_ch13.adb: Minor comment clarification.
	* types.ads: Minor comment update.
	* sem_eval.adb (Real_Or_String_Static_Predicate_Matches): Avoid blow up
	when we have a predicate that is nothing but an inherited dynamic
	predicate.

2015-01-30  Jerome Guitton  <guitton@adacore.com>

	* gcc-interface/Makefile.in (x86-vxworks): Update GCC_SPEC_FILES to
	include cert link spec.

2015-01-30  Robert Dewar  <dewar@adacore.com>

	* einfo.ads: Minor comment fix.
	* freeze.adb (Freeze_Profile): Add test for suspicious import
	in pure unit.
	* sem_prag.adb (Process_Import_Or_Interface): Test for suspicious
	use in Pure unit is now moved to Freeze (to properly catch
	Pure_Function exemption).

2015-01-30  Bob Duff  <duff@adacore.com>

	* sem_res.ads: Minor comment fix.
	* sem_type.adb: sem_type.adb (Remove_Conversions): Need to
	check both operands of an operator.

2015-01-30  Yannick Moy  <moy@adacore.com>

	* a-assert.ads, a-assert.adb: Mark package spec in SPARK. Set assertion
	policy for Pre to Ignore.
	(Assert): Add precondition.

2015-01-30  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Process_Import_Or_Interface): Warn if used in
	Pure unit.
	* s-valllu.ads (Scan_Raw_Long_Long_Unsigned): Clarify
	documentation for some special cases of invalid attempts at
	based integers.

2015-01-30  Gary Dismukes  <dismukes@adacore.com>

	* errout.ads: Minor reformatting.

2015-01-30  Yannick Moy  <moy@adacore.com>

	* inline.adb (Process_Formals): Use the sloc of
	the inlined node instead of the sloc of the actual parameter,
	when replacing formal parameters by the actual one.

2015-01-30  Arnaud Charlet  <charlet@adacore.com>

	* g-expect.adb (Get_Command_Output): Use infinite timeout when
	calling Expect.

2015-01-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Associations): If an in-parameter is
	defaulted in an instantiation, add an entry in the list of actuals
	to indicate the default value of the formal (as is already done
	for defaulted subprograms).

2015-01-30  Javier Miranda  <miranda@adacore.com>

	* errout.adb (Error_Msg_PT): Minor error phrasing update.

2015-01-30  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb (Warn_On_Known_Condition): Improve error message
	for object case.

2015-01-30  Pierre-Marie de Rodat  <derodat@adacore.com>

	* exp_dbug.adb (Get_Encoded_Name): When
	-fgnat-encodings=minimal, do not generate names for biased types.

2015-01-30  Tristan Gingold  <gingold@adacore.com>

	PR ada/64349
	* env.c: Move vxworks and darwin includes out of #ifdef IN_RTS.

2015-01-30  Gary Dismukes  <dismukes@adacore.com>

	* freeze.adb: Minor reformatting.

2015-01-30  Javier Miranda  <miranda@adacore.com>

	* errout.ads (Error_Msg_PT): Replace Node_Id by Entity_Id and
	improve its documentation.
	* errout.adb (Error_Msg_PT): Improve the error message.
	* sem_ch6.adb (Check_Conformance): Update call to Error_Msg_PT.
	(Check_Synchronized_Overriding): Update call to Error_Msg_PT.
	* sem_ch3.adb (Check_Abstract_Overriding): Code cleanup.

2015-01-30  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb (Warn_On_Known_Condition): Do special casing of
	message for False case.

2015-01-30  Doug Rupp  <rupp@adacore.com>

	* s-vxwext-kernel.ads (Task_Cont): Remove imported subprogram body.
	* s-vxwext-kernel.adb (Task_Cont): New subpprogram body specialized for
	kernel.

2015-01-30  Gary Dismukes  <dismukes@adacore.com>

	* sem_attr.adb (Declared_Within_Generic_Unit):
	New function to test whether an entity is declared within the
	declarative region of a given generic unit.
	(Resolve_Attribute): For checking legality of subprogram'Access within
	a generic unit, call new Boolean function Declared_Within_Generic_Unit
	instead of simply comparing the results of Enclosing_Generic_Unit on
	the prefix and access type.  Correct minor comment typos.

2015-01-30  Robert Dewar  <dewar@adacore.com>

	* freeze.adb, exp_util.ads: Update comment.
	* exp_util.adb, exp_ch3.adb: Minor code reorganization and reformatting.
	* sem_util.adb: Minor: fix typo.

2015-01-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Ensure that
	the check concerning Refined_Post takes precedence over the
	other cases.

2015-01-30  Gary Dismukes  <dismukes@adacore.com>

	* sem_prag.adb: Minor typo fixes and reformatting.

2015-01-30  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb: Code clean up.

2015-01-30  Robert Dewar  <dewar@adacore.com>

	* ali.adb (Scan_ALI): Set Serious_Errors flag in Unit record.
	* ali.ads (Unit_Record): Add new field Serious_Errors.
	* lib-writ.adb (Write_Unit_Information): Set SE (serious errors)
	attribute in U line.
	* lib-writ.ads: New attribute SE (serious erors) in unit line.

2015-01-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb Update the usage of attributes Entry_Bodies_Array,
	Lit_Indexes, Scale_Value, Storage_Size_Variable,
	String_Literal_Low_Bound along associated routines and
	Write_FieldX_Name.
	(Pending_Access_Types): New routine.
	(Set_Pending_Access_Types): New routine.
	(Write_Field15_Name): Add an entry for Pending_Access_Types.
	* einfo.ads Add new attribute Pending_Access_Types along
	with usage in nodes.  Update the usage of attributes
	Entry_Bodies_Array, Lit_Indexes, Scale_Value,
	Storage_Size_Variable, String_Literal_Low_Bound.
	(Pending_Access_Types): New routine along with pragma Inline.
	(Set_Pending_Access_Types): New routine along with pragma Inline.
	* exp_ch3.adb (Expand_Freeze_Array_Type): Add new local variable
	Ins_Node. Determine the insertion node for anonynous access type
	that acts as a component type of an array. Update the call to
	Build_Finalization_Master.
	(Expand_Freeze_Record_Type): Update
	the calls to Build_Finalization_Master.
	(Freeze_Type): Remove
	local variable RACW_Seen. Factor out the code that deals with
	remote access-to-class-wide types. Create a finalization master
	when the designated type contains a private component. Fully
	initialize all pending access types.
	(Process_RACW_Types): New routine.
	(Process_Pending_Access_Types): New routine.
	* exp_ch4.adb (Expand_Allocator_Expression): Allocation no longer
	needs to set primitive Finalize_Address.
	(Expand_N_Allocator): Allocation no longer sets primitive
	Finalize_Address.
	* exp_ch6.adb (Add_Finalization_Master_Actual_To_Build_In_Place_Call):
	Update the call to Build_Finalization_Master.
	(Make_Build_In_Place_Call_In_Allocator): Allocation no longer
	needs to set primitive Finalize_Address.
	* exp_ch7.adb (Add_Pending_Access_Type): New routine.
	(Build_Finalization_Master): New parameter profile. Associate
	primitive Finalize_Address with the finalization master if the
	designated type has been frozen, otherwise treat the access
	type as pending. Simplify the insertion of the master and
	related initialization code.
	(Make_Finalize_Address_Body): Allow Finalize_Address for class-wide
	abstract types.
	(Make_Set_Finalize_Address_Call): Remove forlam parameter Typ.
	Simplify the implementation.
	* exp_ch7.ads (Build_Finalization_Master): New parameter profile
	along with comment on usage.
	(Make_Set_Finalize_Address_Call): Remove formal parameter Typ. Update
	the comment on usage.
	* exp_util.adb (Build_Allocate_Deallocate_Proc): Use routine
	Finalize_Address to retrieve the primitive.
	(Finalize_Address): New routine.
	(Find_Finalize_Address): Removed.
	* exp_util.ads (Finalize_Address): New routine.
	* freeze.adb (Freeze_All): Remove the generation of finalization
	masters.
	* sem_ch3.adb (Analyze_Full_Type_Declaration): Propagate any
	pending access types from the partial to the full view.

2015-01-30  Robert Dewar  <dewar@adacore.com>

	* sem_disp.adb: Minor reformatting.
	* sem_disp.ads: Documentation update.

2015-01-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Is_Dynamically_Tagged): when applied to an entity
	or a function call, return True if type is class-wide.
	* sem_res.adb (Resolve_Case_Expression, Resolve_If_Expression);
	Apply RM 4.5.7 (17/3): all or none of the dependent expression
	of a conditional expression must be dynamically tagged.

2015-01-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Function_Return): In an extended return
	statement, apply accessibility check to result object when there
	is no initializing expression (Ada 2012 RM 6.5 (5.4/3))

2015-01-30  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb (Analyze_If_Expression): Allow for non-standard
	Boolean for case where ELSE is omitted.
	* sem_res.adb: Minor reformatting.

2015-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	Fix build under cygwin/64.
	* adaint.h: Add check for __CYGWIN__.
	* mingw32.h: Prevent windows.h from including x86intrin.h in GCC.

2015-01-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	PR ada/64640
	* adaint.c: Handle __CYGWIN__ like __MINGW32__ here.
	* mingw32.h: Don't include <tchar.h> under cygwin.
	(_O_U8TEXT, _O_U16TEXT, _O_WTEXT): Set to _O_TEXT if not yet defined.

2015-01-15  Thomas Schwinge  <thomas@codesourcery.com>

	* gcc-interface/utils.c (DEF_FUNCTION_TYPE_VAR_8)
	(DEF_FUNCTION_TYPE_VAR_12): New macros.

2015-01-09  Michael Collison  <michael.collison@linaro.org>

	* gcc-interface/cuintp.c: Include hash-set.h, machmode.h,
	vec.h, double-int.h, input.h, alias.h, symtab.h,
	fold-const.h, wide-int.h, and inchash.h due to
	flattening of tree.h.
	* gcc-interface/decl.c: Ditto.
	* gcc-interface/misc.c: Ditto.
	* gcc-interface/targtyps.c: Include hash-set.h, machmode.h,
	vec.h, double-int.h, input.h, alias.h, symtab.h, options.h,
	fold-const.h, wide-int.h, and inchash.h due to
	flattening of tree.h.
	* gcc-interface/trans.c: Include hash-set.h, machmode.h,
	vec.h, double-int.h, input.h, alias.h, symtab.h, real.h,
	fold-const.h, wide-int.h, inchash.h due to
	flattening of tree.h.
	* gcc-interface/utils.c: Include hash-set.h, machmode.h,
	vec.h, double-int.h, input.h, alias.h, symtab.h,
	fold-const.h, wide-int.h, and inchash.h due to
	flattening of tree.h.
	* gcc-interface/utils2.c: Ditto.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb (Check_One_Unit): Don't give unused entities
	warning for a package which is used as a generic parameter.

2015-01-07  Bob Duff  <duff@adacore.com>

	* usage.adb (Usage): Correct documentation of
	-gnatw.f switches.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* s-fileio.adb: Minor reformatting.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Instantiate_Object): If formal is an anonymous
	access to subprogram, replace its formals with new entities when
	building the object declaration, both if actual is present and
	when it is defaulted.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assignment): If left-hand side is a view
	conversion and type of expression has invariant, apply invariant
	check on expression.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Create_Constrained_Components): A call to
	Gather_Components may detect an error if an inherited discriminant
	that controls a variant is non-static.
	* sem_aggr.adb (Resolve_Record_Aggregate, Step 5): The call to
	Gather_Components may report an error if an inherited discriminant
	in a variant in non-static.
	* sem_util.adb (Gather_Components): If a non-static discriminant
	is inherited do not report error here, but let caller handle it.
	(Find_Actual): Small optimization.

2015-01-07  Bob Duff  <duff@adacore.com>

	* usage.adb (Usage): Document -gnatw.f switch.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Code clean up and minor reformatting.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): Add guard for
	Raise_Accessibility_Error call.
	* s-valllu.ads (Scan_Raw_Long_Long_Unsigned): Add documentation
	on handling of invalid digits in based constants.
	* s-fatgen.ads: Minor reformatting.
	* sem_attr.adb (Analyze_Attribute, case Unrestricted_Access):
	Avoid noting bogus modification for Valid test.
	* snames.ads-tmpl (Name_Attr_Long_Float): New Name.
	* einfo.ads: Minor reformatting.
	* sem_warn.adb: Minor comment clarification.
	* sem_ch12.adb: Minor reformatting.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Predicated_Loop): Handle properly loops
	over static predicates when the loop parameter specification
	carries a Reverse indicator.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Instantiate_Object): If formal has a default,
	actual is missing and formal has an anonymous access type, copy
	access definition in full so that tree for instance is properly
	formatted for ASIS use.

2015-01-07  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Give a warning
	for P'Access, where P is a subprogram in the same package as
	the P'Access, and the P'Access is evaluated at elaboration
	time, and occurs before the body of P. For example, "X : T :=
	P'Access;" would allow a subsequent call to X.all to be an
	access-before-elaboration error; hence the warning. This warning
	is enabled by the -gnatw.f switch.
	* opt.ads (Warn_On_Elab_Access): New flag for warning switch.
	* warnsw.adb (Set_Dot_Warning_Switch): Set Warn_On_Elab_Access.
	* gnat_ugn.texi: Document the new warning.

2015-01-07  Johannes Kanig  <kanig@adacore.com>

	* lib-xref-spark_specific.adb (Collect_SPARK_Xrefs): Skip unneeded
	cross ref files.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* s-taprop-linux.adb, clean.adb: Minor reformatting.

2015-01-07  Arnaud Charlet  <charlet@adacore.com>

	* s-tassta.adb: Relax some overzealous assertions.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Return_Type): An call that returns a limited
	view of a type is legal when context is a thunk generated for
	operation inherited from an interface.
	* exp_ch6.adb (Expand_Simple_Function_Return): If context is
	a thunk and return type is an incomplete type do not continue
	expansion; thunk will be fully elaborated when generating code.

2015-01-07  Doug Rupp  <rupp@adacore.com>

	* s-osinte-mingw.ads (LARGE_INTEGR): New subtype.
	(QueryPerformanceFrequency): New imported procedure.
	* s-taprop-mingw.adb (RT_Resolution): Call above and return
	resolution vice a hardcoded value.
	* s-taprop-solaris.adb (RT_Resolution): Call clock_getres and return
	resolution vice a hardcoded value.
	* s-linux-android.ads (clockid_t): New subtype.
	* s-osinte-aix.ads (clock_getres): New imported subprogram.
	* s-osinte-android.ads (clock_getres): Likewise.
	* s-osinte-freebsd.ads (clock_getres): Likewise.
	* s-osinte-solaris-posix.ads (clock_getres): Likewise.
	* s-osinte-darwin.ads (clock_getres): New subprogram.
	* s-osinte-darwin.adb (clock_getres): New subprogram.
	* thread.c (__gnat_clock_get_res) [__APPLE__]: New function.
	* s-taprop-posix.adb (RT_Resolution): Call clock_getres to
	calculate resolution vice hard coded value.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Make_CW_Equivalent_Type): If root type is a
	limited view, use non-limited view when available to create
	equivalent record type.

2015-01-07  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Remove command Sync and any data and processing
	related to this command. Remove project processing for gnatstack.
	* prj-attr.adb: Remove package Synchonize and its attributes.

2015-01-07  Vincent Celier  <celier@adacore.com>

	* clean.adb: Minor error message change.

2015-01-07  Tristan Gingold  <gingold@adacore.com>

	PR ada/64349  
	* env.c (__gnat_environ): Adjust for darwin9/darwin10.

2015-01-07  Javier Miranda  <miranda@adacore.com>

	* sem_ch10.adb (Analyze_With_Clause): Compiling under -gnatq
	protect the frontend against never ending recursion caused by
	circularities in the sources.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* a-reatim.adb, make.adb, exp_pakd.adb, i-cpoint.adb, sem_ch8.adb,
	exp_ch3.adb: Minor reformatting.

2015-01-07  Doug Rupp  <rupp@adacore.com>

	* s-linux.ads (clockid_t): New subtype.
	* s-osinte-linux.ads (pragma Linker Options): Add -lrt.
	(clockid_t): New subtype.
	(clock_getres): Import system call.
	* s-taprop-linux.adb (System.OS_Constants): With and rename.
	(RT_Resolution): Remove
	hardcoded value and call clock_getres.
	* s-linux-sparc.ads, s-linux-mipsel.ads, s-linux-hppa.ads,
	s-linux-alpha.ads, s-linux-x32.ads (clockid_t): Add new subtype.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb (Check_One_Unit): Guard against context item
	with no Entity field.

2015-01-07  Vincent Celier  <celier@adacore.com>

	* clean.adb (Gnatclean): Warn that 'gnatclean -P' is obsolete.
	* make.adb (Initialize): Warn that 'gnatmake -P' is obsolete.

2015-01-07  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Parse_Project_And_Apply_Config): Always finalize
	errors/warnings in the first parsing of the project files,
	to display the warnings when there is no errors.

2015-01-07  Tristan Gingold  <gingold@adacore.com>

	* i-cpoint.adb (Copy_Terminated_Array): Nicely handle null target.

2015-01-07  Doug Rupp  <rupp@adacore.com>

	* s-taprop-vxworks.adb (Stop_All_Tasks): Pass return
	value from Int_Lock as parameter to Int_Unlock.
	* s-osinte-vxworks.ads (Int_Unlock): Add parameter.
	* s-vxwext.ads (Int_Unlock): Likewise.
	* s-vxwext-kernel.adb (intUnlock, Int_Unlock): Likewise.
	* s-vxwext-kernel.ads (Int_Unlock): Likewise.
	* s-vxwext-rtp.adb (Int_Unlock): Likewise.
	* s-vxwext-rtp.ads (Int_Unlock): Likewise.

2015-01-07  Pierre-Marie de Rodat  <derodat@adacore.com>

	* exp_pakd.adb: Add a comment in exp_pakd.adb to explain why we
	keep ___XP suffixes

2015-01-07  Tristan Gingold  <gingold@adacore.com>

	* i-cpoint.adb (Copy_Terminated_Array): Use Copy_Array to
	handle overlap.

2015-01-07  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Analyze_Full_Type_Declaration): Do not
	automatically set No_Strict_Aliasing on access types.
	* fe.h (No_Strict_Aliasing_CP): Declare.
	* gcc-interface/trans.c (gigi): Force flag_strict_aliasing to 0 if
	No_Strict_Aliasing_CP is set.

2015-01-07  Johannes Kanig  <kanig@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming) do
	not build function wrapper in gnatprove mode when the package
	is externally axiomatized.

2015-01-07  Jose Ruiz  <ruiz@adacore.com>

	* a-reatim.adb (Time_Of): Reduce the number of spurious overflows in
	intermediate computations when the parameters have different signs.

2015-01-07  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Build_Init_Procedure): For derived types,
	improve the code which takes care of identifying and moving to
	the beginning of the init-proc the call to the init-proc of the
	parent type.

2015-01-07  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu, <N_Expression_With_Action>):
	Elaborate the expression as part of the same stmt group as the actions.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor error message change.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Preelaborable_Initialization):
	Following AI05-028, the pragam applies legally to any composite type.

2015-01-07  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-vxworks.adb, s-osinte-vxworks.ads
	(sigwait, sigwaitinfo): Removed, not needed after all on any
	VxWorks configurations.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, freeze.adb, exp_disp.adb: Minor reformatting.

2015-01-07  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Conversion): Adding missing
	generation of accessibility check.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Derived_Type_Declaration): In the case of an
	illegal completion from a class- wide type, set etype of the
	derived type properly to prevent cascaded errors.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* prj.ads, i-cpoint.adb, freeze.adb, ghost.adb, prj-err.adb: Minor
	reformatting.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* restrict.adb (Check_Restriction_No_Use_Of_Attribute):
	New procedure.
	(OK_No_Use_Of_Entity_Name): New function.
	(Set_Restriction_No_Use_Of_Entity): New procedure.
	* restrict.ads (Check_Restriction_No_Use_Of_Attribute):
	New procedure.
	(OK_No_Use_Of_Entity_Name): New function.
	(Set_Restriction_No_Use_Of_Entity): New procedure.
	* sem_ch8.adb (Find_Direct_Name): Add check for violation of
	No_Use_Of_Entity.
	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Add processing for new restriction No_Use_Of_Entity.

2015-01-07  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Freeze_Array_Type): Apply same handling to Is_Atomic
	component type as to Has_Atomic_Components type.  Remove useless
	test on Is_Aliased component type.

2015-01-07  Hristian Kirtchev  <kirtchev@adacore.com>

	* alloc.ads Alphabetize several declarations. Add constants
	Ignored_Ghost_Units_Initial and Ignored_Ghost_Units_Increment.
	* atree.adb Add with and use clauses for Opt.
	(Allocate_Initialize_Node): Mark a node as ignored Ghost
	if it is created in an ignored Ghost region.
	(Ekind_In): New variant.
	(Is_Ignored_Ghost_Node): New routine.
	(Set_Is_Ignored_Ghost_Node): New routine.
	* atree.adb Aplhabetize several subprograms declarations. Flag
	Spare0 is now known as Is_Ignored_Ghost_Node.
	(Ekind_In): New variant.
	(Is_Ignored_Ghost_Node): New routine.
	(Set_Is_Ignored_Ghost_Node): New routine.
	* einfo.adb: Flag 279 is now known as Contains_Ignored_Ghost_Code.
	(Contains_Ignored_Ghost_Code): New routine.
	(Set_Contains_Ignored_Ghost_Code): New routine.
	(Set_Is_Checked_Ghost_Entity, Set_Is_Ignored_Ghost_Entity):
	It is now possible to set this property on an unanalyzed entity.
	(Write_Entity_Flags): Output the status of flag
	Contains_Ignored_Ghost_Code.
	* einfo.ads New attribute Contains_Ignored_Ghost_Code along with
	usage in nodes.
	(Contains_Ignored_Ghost_Code): New routine
	along with pragma Inline.
	(Set_Contains_Ignored_Ghost_Code): New routine along with pragma Inline.
	* exp_ch3.adb Add with and use clauses for Ghost.
	(Freeze_Type): Capture/restore the value of Ghost_Mode on entry/exit.
	Set the Ghost_Mode in effect.
	(Restore_Globals): New routine.
	* exp_ch7.adb (Process_Declarations): Do not process a context
	that invoves an ignored Ghost entity.
	* exp_dbug.adb (Qualify_All_Entity_Names): Skip an ignored Ghost
	construct that has been rewritten as a null statement.
	* exp_disp.adb Add with and use clauses for Ghost.
	(Make_DT): Capture/restore the value of Ghost_Mode on entry/exit. Set
	the Ghost_Mode in effect.
	(Restore_Globals): New routine.
	* exp_util.adb (Requires_Cleanup_Actions): An ignored Ghost entity
	does not require any clean up. Add two missing cases that deal
	with block statements.
	* freeze.adb Add with and use clauses for Ghost.
	(Freeze_Entity): Capture/restore the value of Ghost_Mode on entry/exit.
	Set the Ghost_Mode in effect.
	(Restore_Globals): New routine.
	* frontend.adb Add with and use clauses for Ghost. Remove any
	ignored Ghost code from all units that qualify.
	* ghost.adb New unit.
	* ghost.ads New unit.
	* gnat1drv.adb Add with clause for Ghost. Initialize and lock
	the table in package Ghost.
	* lib.ads: Alphabetize several subprogram declarations.
	* lib-xref.adb (Output_References): Do not generate reference
	information for ignored Ghost entities.
	* opt.ads Add new type Ghost_Mode_Type and new global variable
	Ghost_Mode.
	* rtsfind.adb (Load_RTU): Provide a clean environment when
	loading a runtime unit.
	* sem.adb (Analyze): Capture/restore the value of Ghost_Mode on
	entry/exit as the node may set a different mode.
	(Do_Analyze):
	Capture/restore the value of Ghost_Mode on entry/exit as the
	unit may be withed from a unit with a different Ghost mode.
	* sem_ch3.adb Add with and use clauses for Ghost.
	(Analyze_Full_Type_Declaration, Analyze_Incomplete_Type_Decl,
	Analyze_Number_Declaration, Analyze_Private_Extension_Declaration,
	Analyze_Subtype_Declaration): Set the Ghost_Mode in effect. Mark
	the entity as Ghost when there is a Ghost_Mode in effect.
	(Array_Type_Declaration): The implicit base type inherits the
	"ghostness" from the array type.
	(Derive_Subprogram): The
	alias inherits the "ghostness" from the parent subprogram.
	(Make_Implicit_Base): The implicit base type inherits the
	"ghostness" from the parent type.
	* sem_ch5.adb Add with and use clauses for Ghost.
	(Analyze_Assignment): Set the Ghost_Mode in effect.
	* sem_ch6.adb Add with and use clauses for Ghost.
	(Analyze_Abstract_Subprogram_Declaration, Analyze_Procedure_Call,
	Analyze_Subprogram_Body_Helper, Analyze_Subprogram_Declaration):
	Set the Ghost_Mode in effect. Mark the entity as Ghost when
	there is a Ghost_Mode in effect.
	* sem_ch7.adb Add with and use clauses for Ghost.
	(Analyze_Package_Body_Helper, Analyze_Package_Declaration,
	Analyze_Private_Type_Declaration): Set the Ghost_Mode in
	effect. Mark the entity as Ghost when there is a Ghost_Mode
	in effect.
	* sem_ch8.adb Add with and use clauses for Ghost.
	(Analyze_Exception_Renaming, Analyze_Generic_Renaming,
	Analyze_Object_Renaming, Analyze_Package_Renaming,
	Analyze_Subprogram_Renaming): Set the Ghost_Mode in effect. Mark
	the entity as Ghost when there is a Ghost_Mode in effect.
	(Find_Type): Check the Ghost context of a type.
	* sem_ch11.adb Add with and use clauses for Ghost.
	(Analyze_Exception_Declaration): Set the Ghost_Mode in
	effect. Mark the entity as Ghost when there is a Ghost_Mode
	in effect.
	* sem_ch12.adb Add with and use clauses for Ghost.
	(Analyze_Generic_Package_Declaration,
	Analyze_Generic_Subprogram_Declaration): Set the Ghost_Mode in effect.
	Mark the entity as Ghost when there is a Ghost_Mode in effect.
	* sem_prag.adb Add with and use clauses for Ghost.
	(Analyze_Pragma): Ghost-related checks are triggered when there
	is a Ghost mode in effect.
	(Create_Abstract_State): Mark the
	entity as Ghost when there is a Ghost_Mode in effect.
	* sem_res.adb Add with and use clauses for Ghost.
	(Check_Ghost_Context): Removed.
	* sem_util.adb (Check_Ghost_Completion): Removed.
	(Check_Ghost_Derivation): Removed.
	(Incomplete_Or_Partial_View):
	Add a guard in case the entity has not been analyzed yet
	and does carry a scope.
	(Is_Declaration): New routine.
	(Is_Ghost_Entity): Removed.
	(Is_Ghost_Statement_Or_Pragma):
	Removed.
	(Is_Subject_To_Ghost): Removed.
	(Set_Is_Ghost_Entity):
	Removed.
	(Within_Ghost_Scope): Removed.
	* sem_util.adb (Check_Ghost_Completion): Removed.
	(Check_Ghost_Derivation): Removed.
	(Is_Declaration): New routine.
	(Is_Ghost_Entity): Removed.
	(Is_Ghost_Statement_Or_Pragma): Removed.
	(Is_Subject_To_Ghost): Removed.
	(Set_Is_Ghost_Entity): Removed.
	(Within_Ghost_Scope): Removed.
	* sinfo.ads Add a section on Ghost mode.
	* treepr.adb (Print_Header_Flag): New routine.
	(Print_Node_Header): Factor out code. Output flag
	Is_Ignored_Ghost_Node.
	* gcc-interface/Make-lang.in: Add dependency for unit Ghost.

2015-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Freeze_Array_Type) <Complain_CS>: Remove always
	true test and unreachable 'else' arm.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Check_Target): Improve error message when
	there are mismatched targets between the on in the configuration
	project file and the specified one, either in the main project
	file or in the --target= switch.

2015-01-06  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb, projects.texi, snames.ads-tmpl: Add Mode and
	Install_Name attribute definitions.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Wrap_Imported_Subprogram): Indicate that the
	generated Import pragma for the internal imported procedure does
	not come from an aspect, so that Is_Imported can be properly
	set for it.

2015-01-06  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch12.adb (Might_Inline_Subp): Record whether
	any subprograms in the generic package are marked with
	pragma Inline_Always (setting flag Has_Inline_Always).
	(Analyze_Package_Instantiation): Add test of Has_Inline_Always
	alongside existing test of Front_End_Inlining as alternative
	conditions for setting Inline_Now. Also add test of
	Has_Inline_Always along with Front_End_Inlining test as an
	alternative condition for setting Needs_Body to False.

2015-01-06  Tristan Gingold  <gingold@adacore.com>

	* i-cpoint.adb (Copy_Array): Handle overlap.

2015-01-06  Pascal Obry  <obry@adacore.com>

	* bindgen.adb: Minor style fix.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads, sem_util.adb: Minor reformatting.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Parse_Project_And_Apply_Config): Reset incomplete
	with flags before parsing the projects.
	* prj-err.adb (Error_Msg): Do nothing if there are incomplete withs.
	* prj-part.adb (Post_Parse_Context_Clause): Set Incomplete_Withs
	to True in the flags, when Ignore_Missing_With is True and an
	imported project cannot be found.
	* prj-proc.adb (Expression): When there are incomplete withs and
	a variable or attribute is not found, set the variable/attribute
	to unknown.
	* prj.ads (Processing_Flags): New flag Incomplete_Withs,
	defaulted to False.

2015-01-06  Vasiliy Fofanov  <fofanov@adacore.com>

	* prj-proc.adb, prj-part.adb, prj.adb, prj.ads, prj-conf.adb,
	prj-err.adb: Add new switch --no-command-line.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Sloc of wrapper is that of instantiation.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch11.adb: Minor reformatting.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Get_Assoc_Expr): New routine internal to
	Build_Array_Aggr_Code, used to initialized components covered
	by a box association. If the component type is scalar and has
	a default aspect, use it to initialize such components.

2015-01-06  Pascal Obry  <obry@adacore.com>

	* rtinit.c (__gnat_runtime_initialize): Add a parameter to
	control the setup of the exception handler.
	* initialize.c: Remove unused declaration.
	* bindgen.adb: Always call __gnat_runtime_initialize and pass
	whether the exeception handler must be set or not.

2015-01-06  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Set_SSO_From_Defaults): When setting scalar storage
	order to native from default, make sure to also adjust bit order.
	* exp_aggr.adb: Minor reformatting.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-valllu.adb, s-valllu.ads, s-valuti.ads, s-valuns.adb, s-valuns.ads,
	s-valrea.adb, s-valrea.ads: Add some additional guards for
	Str'Last = Positive'Last.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb, sem_ch8.adb: Ongoing work for wrappers for actual
	subprograms.

2015-01-06  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Conversion): Reapply patch.

2015-01-06  Thomas Quinot  <quinot@adacore.com>

	* sem_util.ads: Minor reformatting.
	* sem_cat.adb (In_RCI_Visible_Declarations): Change back to...
	(In_RCI_Declaration) Return to old name, as proper checking of
	entity being in the visible part depends on entity kind and must
	be done by the caller.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb, sem_ch12.ads, sem_ch8.adb: Ongoing work for wrappers
	for operators in SPARK.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Get_Value): In ASIS mode, preanalyze the
	expression in an others association before making copies for
	separate resolution and accessibility checks. This ensures that
	the type of the expression is available to ASIS in all cases,
	in particular if the expression is itself an aggregate.

2015-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Has_Independent_Components): Document extended
	usage.
	* einfo.adb (Has_Independent_Components): Remove obsolete assertion.
	(Set_Has_Independent_Components): Adjust assertion.
	* sem_prag.adb (Analyze_Pragma): Also set Has_Independent_Components
	for pragma Atomic_Components.  Set Has_Independent_Components
	on the object instead of the type for an object declaration with
	pragma Independent_Components.

2015-01-06  Olivier Hainque  <hainque@adacore.com>

	* set_targ.adb (Read_Target_Dependent_Values): Set
	Long_Double_Index when "long double" is read.
	(elaboration code): Register_Back_End_Types only when not reading from
	config files. Doing otherwise is pointless and error prone.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-valrea.adb (Value_Real): Check for Str'Last = Positive'Last

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* a-wtgeau.adb, a-ztgeau.adb, a-tigeau.adb (String_Skip): Raise PE if
	Str'Last = Positive'Last.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Matches_Limited_View): Handle properly the case
	where the non-limited type is a generic actual and appears as
	a subtype of the non-limited view of the other.
	* freeze.adb (Build_Renamed_Body): If the return type of the
	declaration that is being completed is a limited view and the
	non-limited view is available, use it in the specification of
	the generated body.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Find_Type_Name): If there is a previous tagged
	incomplete view, the type of the classwide type common to both
	views is the type being declared.

2015-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Is_Independent): Further document extended usage.

2015-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Is_Independent): Document extended usage.
	* einfo.adb (Is_Independent): Remove obsolete assertion.
	(Set_Is_Independent): Likewise.
	* sem_prag.adb (Process_Atomic_Shared_Volatile): Rename into...
	(Process_Atomic_Independent_Shared_Volatile): ...this.
	Deal with pragma Independent here.
	(Analyze_Pragma): Adjust
	to above renaming and also invoke it for pragma Independent.
	Adjust comment for Independent_Components.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* snames.ads-tmpl: Remove entries for attribute Enum_Image.
	* exp_attr.adb: Remove reference to Attribute_Enum_Image.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-vallli.adb (Value_Long_Long_Integer): Handle case of Str'Last
	= Positive'Last.
	* s-valllu.adb (Value_Long_Long_Unsigned): Handle case of
	Str'Last = Positive'Last.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Process_Inline): Remove redundant construct
	warning (-gnatw.r) for an ineffective pragma Inline.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-valint.adb: Fix typo in last checkin.
	* s-valuns.adb (Value_Unsigned): More efficient fix for
	Positive'Last case.
	* sem_attr.adb (Analyze_Attribute): Minor reformatting
	(Eval_Attribute): Static ervaluation of 'Img for enumeration types.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-valint.adb, s-valuns.adb (Value_Integer): Deal with case where
	Str'Last = Positive'Last

2015-01-06  Thomas Quinot  <quinot@adacore.com>

	* xoscons.adb: Display exception information and return non-zero
	exit status in top level exception handler.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb: Code clean up.

2015-01-06  Tristan Gingold  <gingold@adacore.com>

	* targparm.ads: Remove obsolete comment.

2015-01-06  Olivier Hainque  <hainque@adacore.com>

        * gcc-interface/decl.c (gnat_to_gnu_entity, case E_Variable): When
        constructing a ref to variable, update inner_const_flag from the
        variable TREE_READONLY attribute.
        * gcc-interface/targtyps.c (WIDEST_HARDWARE_FP_SIZE): Remove default
        definition.
        (get_target_float_size): Remove.
        (get_target_double_size): Remove.
        (get_target_long_double_size): Remove.

2015-01-06  Pascal Obry  <obry@adacore.com>

	* adaint.c (ProcListEvt): Set to NULL.
	* rtinit.c: New file.
	(__gnat_rt_init_count): New reference counter set to 0.
	(__gnat_runtime_initialize): Move code here from __gnat_initialize when
	this code is actually needed for the runtime initialization. This
	routine returns immediately if the initialization has already been done.
	* final.c: Revert previous change.
	* rtfinal.c: New file.
	(__gnat_runtime_finalize)[Win32]: Add finalization of the critical
	section and event. The default version of this routine is empty (except
	for the reference counting code). This routine returns immediately if
	some others libraries are referencing the runtime.
	* bindgen.adb (Gen_Adainit): Generate call to Runtime_Initialize
	remove circuitry to initialize the signal handler as this is
	now done by the runtime initialization routine.
	(Gen_Adafinal): Generate call to Runtime_Finalize.
	* gnat_ugn.texi: Update documentation about concurrency and
	initialization/finalization of the run-time.
	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Add
	references to rtfinal.o and rtinit.o

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Add dummy entry
	for Enum_Image.
	* sem_attr.adb: Implement Enum_Image attribute.
	* snames.ads-tmpl: Add entries for Enum_Image attribute.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* namet.ads: Document use of Boolean2 for No_Use_Of_Entity.
	* restrict.ads (No_Use_Of_Entity): New table.
	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Ignore No_Use_Of_Entity (will be processed in parser).
	* snames.ads-tmpl: Add entry for Name_No_Use_Of_Entity.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* prj-tree.adb (Imported_Or_Extended_Project_Of): Do not try
	to check for an extended project, if a project does not have
	yet a project declaration.

2015-01-06  Pierre-Marie Derodat  <derodat@adacore.com>

	* scos.ads: Update documentation about the SCO table build
	process and about table records format.
	* par_sco.ads (SCO_Record): Rename to SCO_Record_Raw.
	(SCO_Record_Filtered): New procedure.
	(Set_SCO_Logical_Operator): New procedure.
	(dsco): Update documentation.
	* par_sco.adb: Update library-level comments.
	(SCO_Generation_State_Type): New type.
	(SCO_Generation_State): New variable.
	(SCO_Raw_Table): New package instanciation.
	(Condition_Pragma_Hash_Table): Rename to SCO_Raw_Hash_Table.
	("<"): New.
	(Tristate): New type.
	(Is_Logical_Operator): Return Tristate and update documentation.
	(Has_Decision): Update call to Is_Logical_Operator and complete
	documentation.
	(Set_Table_Entry): Rename to Set_Raw_Table_Entry, update
	comment, add an assertion for state checking and change
	references to SCO_Table into SCO_Raw_Table.
	(dsco): Refactor to dump the raw and the filtered tables.
	(Process_Decisions.Output_Decision_Operand): Handle putative
	short-circuit operators.
	(Process_Decisions.Output_Element): Update references
	to Set_Table_Entry and to Condition_Pragma_Hash_Table.
	(Process_Decisions.Process_Decision_Operand): Update call
	to Is_Logical_Operator.
	(Process_Decisions.Process_Node): Handle putative short-circuit
	operators and change references to
	SCO_Table into SCO_Raw_Table.
	(SCO_Output): Add an assertion
	for state checking and remove code that used to stamp out SCO entries.
	(SCO_Pragma_Disabled): Change reference to SCO_Table
	into SCO_Raw_Table.
	(SCO_Record): Rename to SCO_Record_Raw,
	add an assertion for state checking and change references
	to SCO_Table into SCO_Raw_Table.
	(Set_SCO_Condition): Add an assertion for state checking, update
	references to Condition_Pragma_Hash_Table and change references to
	SCO_Table into SCO_Raw_Table.
	(Set_SCO_Pragma_Enabled): Add an assertion for state checking and
	change references to SCO_Table into SCO_Raw_Table.
	(Set_SCO_Logical_Operator): New procedure.
	(Traverse_Declarations_Or_Statements.Set_Statement_Entry): Update
	references to Set_Table_Entry and to Condition_Pragma_Hash_Table.
	(SCO_Record_Fildered): New procedure.
	* gnat1drv.adb (Gnat1drv): Invoke the SCO filtering pass.
	* lib-writ.adb (Write_ALI): Invoke the SCO filtering pass and
	output SCOs.
	* par-load.adb (Load): Update reference to SCO_Record.
	* par.adb (Par): Update reference to SCO_Record.
	* put_scos.adb (Put_SCOs): Add an assertion to check that no
	putative SCO condition reaches this end.
	* sem_ch10.adb (Analyze_Proper_Body): Update reference to SCO_Record.
	* sem_res.adb (Resolve_Logical_Op): Validate putative SCOs
	when corresponding to an "and"/"or" operator affected by the
	Short_Circuit_And_Or pragma.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb (Analyze_Use_Package): Give more specific error
	msg for attempted USE of generic subprogram or subprogram.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-valllu.adb, a-tiinau.adb, a-timoau.adb, a-ztinau.adb, a-ztmoau.adb,
	s-valuns.adb, s-valrea.adb, a-wtflau.adb, a-tiflau.adb, a-ztflau.adb,
	a-wtinau.adb, a-wtmoau.adb: Document recognition of : in place of #.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): For aspects
	that specify stream subprograms, if the prefix is a class-wide
	type then the generated attribute definition clause must apply
	to the same class-wide type.
	(Default_Iterator): An iterator defined by an aspect of some
	container type T must have a first parameter of type T, T'class,
	or an access to such (from code reading RM 5.5.1 (2/3)).

2015-01-06  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb: Minor: complete previous change.

2015-01-06  Olivier Hainque  <hainque@adacore.com>

	* set_targ.ads (C_Type_For): New function. Return the name of
	a C type supported by the back-end and suitable as a basis to
	construct the standard Ada floating point type identified by
	the T parameter. This is used as a common ground to feed both
	ttypes values and the GNAT tree nodes for the standard floating
	point types.
	* set_targ.adb (Long_Double_Index): The index at which "long
	double" gets registered in the FPT_Mode_Table. This is useful to
	know whether we have a "long double" available at all and get at
	it's characteristics without having to search the FPT_Mode_Table
	when we need to decide which C type should be used as the
	basis for Long_Long_Float in Ada.
	(Register_Float_Type): Fill Long_Double_Index.
	(FPT_Mode_Index_For): New function. Return the index in
	FPT_Mode_Table that designates the entry corresponding to the
	provided C type name.
	(FPT_Mode_Index_For): New function. Return the index in
	FPT_Mode_Table that designates the entry for a back-end type
	suitable as a basis to construct the standard Ada floating point
	type identified by the input T parameter.
	(elaboration code): Register_Back_End_Types unconditionally,
	so C_Type_For can operate regardless of -gnateT. Do it
	early so we can query it for the floating point sizes, via
	FPT_Mode_Index_For. Initialize Float_Size, Double_Size and
	Long_Double_Size from the FPT_Mode_Table, as cstand will do.
	* cstand.adb (Create_Float_Types): Use C_Type_For to determine
	which C type should be used as the basis for the construction
	of the Standard Ada floating point types.
	* get_targ.ads (Get_Float_Size, Get_Double_Size,
	Get_Long_Double_Size): Remove.
	* get_targ.adb: Likewise.

2015-01-06  Thomas Quinot  <quinot@adacore.com>

	* sem_cat.adb (In_RCI_Declaration): Remove unnecessary
	parameter and rename to...
	(In_RCI_Visible_Declarations): Fix handling of private part of nested
	package.
	(Validate_RCI_Subprogram_Declaration): Reject illegal function
	returning anonymous access in RCI unit.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (New_Overloaded_Entity): In GNATprove mode, a
	function wrapper may be a homonym of another local declaration.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): In GNATprove mode,
	build function and operator wrappers after the actual subprogram
	has been resolved, and replace the standard renaming declaration
	with the declaration of wrapper.
	* sem_ch12.ads (Build_Function_Wrapper, Build_Operator_Wraooer):
	make public for use elsewhere.
	* sem_ch12.adb (Build_Function_Wrapper, Build_Operator_Wraooer):
	rewrite, now that actual is fully resolved when wrapper is
	constructed.

2015-01-06  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb: Revert previous change.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb: Change name Name_Table_Boolean to
	Name_Table_Boolean1.
	* namet.adb: Change name Name_Table_Boolean to Name_Table_Boolean1
	Introduce Name_Table_Boolean2/3.
	* namet.ads: Change name Name_Table_Boolean to Name_Table_Boolean1
	Introduce Name_Table_Boolean2/3.
	* par-ch13.adb: Change name Name_Table_Boolean to
	Name_Table_Boolean1.

2015-01-06  Bob Duff  <duff@adacore.com>

	* gnat_rm.texi: Improve documentation regarding No_Task_Termination.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Record_Aggregte, Get_Value): For an
	others choice that covers multiple components, analyze each
	copy with the type of the component even in compile-only mode,
	to detect potential accessibility errors.

2015-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Is_Assignment_Or_Object_Expression): New routine.
	(Resolve_Actuals): An effectively volatile out
	parameter cannot act as an in or in out actual in a call.
	(Resolve_Entity_Name): An effectively volatile out parameter
	cannot be read.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): If the body is
	the expansion of an expression function it may be pre-analyzed
	if a 'access attribute is applied to the function, in which case
	last_entity may have been assigned already.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_One_Call): If formal has an incomplete
	type and actual has the corresponding full view, there is no
	error, but a case of use of incomplete type in a predicate or
	invariant expression.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Insert_No_Roots): Make sure that the same source
	in two different project tree is checked in both trees, if they
	are sources of two different projects, extended or not.

2015-01-06  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb: Minor code clean up.
	(Adjust_Global_Switches): Ignore gnatprove_mode in codepeer_mode.

2015-01-06  Bob Duff  <duff@adacore.com>

	* osint.adb (Read_Source_File): Don't print out
	file name unless T = Source.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Variable, Is_OK_Variable_For_Out_Formal):
	recognize improper uses of constant_reference types as actuals
	for in-out parameters.
	(Check_Function_Call): Do not collect identifiers if function
	name is missing because of previous error.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* ali-util.adb, sem_prag.adb, rtsfind.adb, sem_util.adb, sem_res.adb,
	ali.adb, binde.adb, namet.adb, namet.ads, gnatls.adb, bcheck.adb:
	Minor change of name Name_Table_Info => Name_Table_Int.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* exp_strm.adb (Build_Elementary_Input_Call): Clarify comments
	in previous checkin.
	* freeze.adb (Freeze_Fixed_Point_Type): Add warning for shaving
	of bounds.
	* sem_prag.adb, sem_ch10.adb, sem_ch6.adb: Minor reformatting.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* a-strsup.adb (Times (Natural;String;Positive)): Raise
	Length_Error, not Index_Error, when the result is too long.

2015-01-06  Thomas Quinot  <quinot@adacore.com>

	* a-direct.adb (Create_Path): Minor error handling and
	performance improvement.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* checks.ads, sem_ch12.adb: Minor reformatting.
	* exp_ch4.adb (Expand_N_Op_Divide): Generate explicit divide by
	zero check for fixed-point case if Backend_Divide_Checks_On_Target
	is False.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case No_Elaboration_Code_All):
	Do not set restriction No_Elaboration_Code unless the pragma
	appears in the main unit).

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Is_Regular_With_Clause): Add guard to verify
	that with clause has already been analyzed before checking kind
	of with_clause.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* exp_strm.adb (Build_Elementary_Input_Call): Return base type
	(as required by RM).

2015-01-06  Arnaud Charlet  <charlet@adacore.com>

	* a-reatim.adb ("/"): Add explicit pragma Unsuppress (Division_Check).

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Process_Suppress_Unsuppress): Add extra warning
	for ignoring pragma Suppress (Elaboration_Check) in SPARK mode.

2015-01-06  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Conversion): No displacement
	of the pointer to the object needed when the type of the operand
	is not an interface type and the interface is one of its parent
	types (since they share the primary dispatch table).

2015-01-06  Vincent Celier  <celier@adacore.com>

	* prj-env.adb: Minor comment update.

2015-01-06  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Valid_Conversion): Restrict the checks on anonymous
	access types whose target type is an interface type to operands
	that are access types; required to report an error when the
	operand is not an access type.

2015-01-06  Bob Duff  <duff@adacore.com>

	* a-cfinve.adb (Copy): Set the discriminant to the Length when
	Capacity = 0.
	* a-cofove.ads (Capacity): Add a postcondition.
	* a-cfinve.ads (Capacity): Add a postcondition.
	(Reserve_Capacity): Correct the postcondition in the case where
	Capacity = 0; that means "Capacity => Length (Container)".
	* a-cofove.adb (Elems[c]): Add a comment
	explaining the dangers and how to avoid them.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Code clean up.

2015-01-06  Arnaud Charlet  <charlet@adacore.com>

	* gnatvsn.ads: Bump copyright year.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-taskin.ads, s-traces.ads: Minor reformatting.
	* exp_util.adb: Minor typo fix.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* gnatls.adb (Search_RTS): Invoke Initialize_Default_Project_Path
	with the runtime name.
	* prj-env.adb (Initialize_Default_Project_Path): When both
	Target_Name and Runtime_Name are not empty string, add to the
	project path the two directories .../lib/gnat and .../share/gpr
	related to the runtime.
	* prj-env.ads (Initialize_Default_Project_Path): New String
	parameter Runtime_Name, defaulted to the empty string.

2015-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* frontend.adb: Guard against the case where a configuration
	pragma may be split into multiple pragmas and the original
	rewritten as a null statement.
	* sem_prag.adb (Analyze_Pragma): Insert a brand new Check_Policy
	pragma using Insert_Before rather than Insert_Action. This
	takes care of the configuration pragma case where Insert_Action
	would fail.

2015-01-06  Bob Duff  <duff@adacore.com>

	* a-coboho.ads (Element_Access): Add "pragma
	No_Strict_Aliasing (Element_Access);". This is needed because
	we are unchecked-converting from Address to Element_Access.
	* a-cofove.ads, a-cofove.adb (Elems,Elemsc): Fix bounds of the
	result to be 1.

2015-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Actuals): Remove the
	restriction which prohibits volatile actual parameters with
	enabled external propery Async_Writers to act appear in procedure
	calls where the corresponding formal is of mode OUT.

2015-01-05  Jakub Jelinek  <jakub@redhat.com>

	* gnat_ugn.texi: Bump @copying's copyright year.

2015-01-05  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/64492
	* gcc-interface/Makefile.in (../stamp-tools): Reinstate dropped code.

2015-01-04  Uros Bizjak  <ubizjak@gmail.com>

	* gcc-interface/misc.c (internal_error_function): Use xasprintf instead
	of unchecked asprintf.


Copyright (C) 2015 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
