2014-08-12  Joel Sherrill <joel.sherrill@oarcorp.com>

	* socket.c: For RTEMS, use correct prototype of gethostbyname_r().
	* gsocket.h Add include of <unistd.h> on RTEMS.

2014-08-11  Joel Sherrill <joel.sherrill@oarcorp.com>

	* s-osinte-rtems.adb: Correct formatting of line in license block.

2014-07-16  Release Manager

	* GCC 4.9.1 released.

2014-05-19  Eric Botcazou  <ebotcazou@adacore.com>

	Backport from mainline
	2014-04-22  Richard Henderson  <rth@redhat.com>

	* init.c [__linux__] (HAVE_GNAT_ALTERNATE_STACK): New define.
	(__gnat_alternate_stack): Enable for all linux except ia64.

2014-05-18  Eric Botcazou  <ebotcazou@adacore.com>

	* utils.c (gnat_write_global_declarations): Adjust the flags put on
	dummy_global.

2014-05-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Do not
	consider that regular packed arrays can never be superflat.

2014-05-17  Eric Botcazou  <ebotcazou@adacore.com>

	Backport from mainline
	2014-04-28  Richard Henderson  <rth@redhat.com>

	* gcc-interface/Makefile.in: Support aarch64-linux.

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

	* exp_dbug.ads (Get_External_Name): Add 'False' default to Has_Suffix,
	add 'Suffix' parameter and adjust comment.
	(Get_External_Name_With_Suffix): Delete.
	* exp_dbug.adb (Get_External_Name_With_Suffix): Merge into...
	(Get_External_Name): ...here.  Add 'False' default to Has_Suffix, add
	'Suffix' parameter.
	(Get_Encoded_Name): Remove 2nd argument in call to Get_External_Name.
	Call Get_External_Name instead of Get_External_Name_With_Suffix.
	(Get_Secondary_DT_External_Name): Likewise.
	* exp_cg.adb (Write_Call_Info): Likewise.
	* exp_disp.adb (Export_DT): Likewise.
	(Import_DT): Likewise.
	* comperr.ads (Compiler_Abort): Remove Code parameter and add From_GCC
	parameter with False default.
	* comperr.adb (Compiler_Abort): Likewise.  Adjust accordingly.
	* types.h (Fat_Pointer): Rename into...
	(String_Pointer): ...this.  Add comment on interfacing rules.
	* fe.h (Compiler_Abort): Adjust for above renaming.
	(Error_Msg_N): Likewise.
	(Error_Msg_NE): Likewise.
	(Get_External_Name): Likewise.  Add third parameter.
	(Get_External_Name_With_Suffix): Delete.
	* gcc-interface/decl.c (STDCALL_PREFIX): Define.
	(create_concat_name): Adjust call to Get_External_Name, remove call to
	Get_External_Name_With_Suffix, use STDCALL_PREFIX, adjust for renaming.
	* gcc-interface/trans.c (post_error): Likewise.
	(post_error_ne): Likewise.
	* gcc-interface/misc.c (internal_error_function): Likewise.

2014-04-22  Release Manager

	* GCC 4.9.0 released.

2014-04-09  Eric Botcazou  <ebotcazou@adacore.com>
	    Svante Signell <svante.signell@gmail.com>

	PR ada/54040
	PR ada/59346
	* s-osinte-x32.adb: New file.
	* s-linux.ads (Time): New section.
	* s-linux-alpha.ads (Time): Likewise.
	* s-linux-android.ads (Time: Likewise.
	* s-linux-hppa.ads (Time): Likewise.
	* s-linux-mipsel.ads (Time): Likewise.
	* s-linux-sparc.ads (Time): Likewise.
	* s-linux-x32.ads (Time): Likewise.
	* s-osprim-x32.ads (timespec): Adjust.
	(Clock): Likewise.
	(To_Timespec): Likewise.
	* s-osinte-linux.ads (Time): Define local subtypes for those defined
	in System.Linux.
	* s-taprop-linux.adb (Monotonic_Clock): Do not define timeval.
	* s-osinte-hpux.ads (timespec): Revert POSIX breakage.
	* s-osinte-kfreebsd-gnu.ads (timespec): Likewise.
	* s-osinte-solaris-posix.ads (timespec): Likewise.
	* s-osinte-posix.adb (To_Timespec): Likewise.
	* gcc-interface/Makefile.in (x32/Linux): Use s-osinte-x32.adb.

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

	PR ada/60411
	* gcc-interface/Makefile.in (arm% linux-android): Switch to EHABI.
	* s-linux-android.ads: New file.
	* s-intman-android.adb: Likewise.
	* s-osinte-android.ads: Adjust.
	* sigtramp-armdroid.c: Likewise.
	* sigtramp.h: Add Android support.

2014-04-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in (alpha-vms): Add missing line.

2014-03-30  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/60703
	* system-linux-alpha.ads: Adjust for Ada 2005.
	* system-linux-mips.ads: Likewise.
	* system-linux-mips64el.ads: Likewise.
	* system-linux-mipsel.ads: Likewise.
	* system-linux-s390.ads: Likewise.
	* system-linux-s390x.ads: Likewise.
	* system-linux-sparc.ads: Likewise.
	* system-linux-sparcv9.ads: Likewise.
	* system-rtems.ads: Likewise.
	* system-vxworks-arm.ads: Likewise.

2014-03-16  Andreas Schwab  <schwab@linux-m68k.org>

	PR ada/39172
	* gcc-interface/Makefile.in (target_cpu_default): Revert
	2013-10-11 change.

2014-03-13  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/51483
	* cstand.adb (Register_Float_Type): Add 'precision' parameter and use
	it to set the RM size.  Use directly 'size' for the Esize.
	(Create_Back_End_Float_Types): Adjust call to above.
	* get_targ.ads (Register_Type_Proc): Add 'precision' parameter.
	* set_targ.ads (FPT_Mode_Entry): Add 'precision' component.
	(Write_Target_Dependent_Values): Adjust comment.
	* set_targ.adb (Register_Float_Type): Add 'precision' parameter and
	deal with it.
	(Write_Target_Dependent_Values): Write the precision in lieu of size.
	(Initialization): Read the precision in lieu of size and compute the
	size from the precision and the alignment.
	* gcc-interface/gigi.h (enumerate_modes): Add integer parameter.
	* gcc-interface/misc.c (enumerate_modes): Likewise.  Do not register
	types for vector modes, pass the size in addition to the precision.

2014-03-10  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in (ADA_DEPFILES): Fix typo.

2014-03-07  Doug Rupp  <rupp@adacore.com>

	PR ada/60411
	* system-linux-armel.ads (Backend_Overflow_Checks): Set to True.
	(Support_64_Bit_Divides): Removed, no longer used.
	(ZCX_By_Default): Enabled.

2014-02-25  Doug Rupp  <rupp@adacore.com>

	* gcc-interface/Makefile.in (arm-linux):
	(EH_MECHANISM): Use ARM unwinder (-arm)
	(LIBGNAT_TARGET_PAIRS: Override defaults with a-exexpr-gcc.adb and
	s-excmac-arm.ads.
	(EXTRA_LIBGNAT_OBJS): Add raise-gcc.o
	(EXTRA_GNATRTL_NONTASKING_OBJS): Add g-cppexc.o s-excmac.o.
	(arm-wrs-vxworks): Add EH_MECHANISM=-gcc for kernel mode.
	(EXTRA_LIBGNAT_OBJS): Add sigtramp-armvxw.o
	Add dependencies for sigtramp-armvxw.o.

2014-02-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Pragma_to_gnu): Deal with Warning_As_Error.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* rtsfind.adb (Is_RTE): Protect against entity with no scope
	field (previously this call blew up on the Standard entity).
	* sem_attr.adb (Analyze_Attribute, case Access): Remove
	test for No_Abort_Statements, this is now handled in
	Set_Entity_With_Checks.
	* exp_ch6.adb, sem_ch10.adb, sem_ch4.adb, sem_ch8.adb, sem_res.adb:
	Change name Set_Entity_With_Style_Check => Set_Entity_With_Checks.
	* sem_util.ads, sem_util.adb: Change name Set_Entity_With_Style_Check =>
	Set_Entity_With_Checks.
	(Set_Entity_With_Checks): Add checks for No_Dynamic_Attachment,
	Add checks for No_Abort_Statements.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb (Expand_Entry_Barrier): Add comment that call to
	Check_Restriction is OK.

2014-02-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Process_Full_View): Better error message when
	the full view of  a private type without discriminants is an
	unconstrained type.
	* sem_ch7.adb (Uninstall_Declarations): Ditto.

2014-02-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sigtramp-armvxw.c: Also restore r0.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Error_Msg_Internal): Warning_Msg_Char set
	unconditionally (Set_Msg_Insertion_Warning): Warning_Msg_Char
	set unconditionally.
	* erroutc.adb (Get_Warning_Tag): Does not give a leading space
	any more (Output_Msg_Text): Rewritten with new convention on
	output of warnings that are treated as errors.
	* erroutc.ads (Error_Msg_Object): Warn_Chr is always set even
	if Warn is False.
	* gnat_rm.texi: Updates to documentation on pragma
	Warning_As_Error.
	* warnsw.adb (Set_Dot_Warning_Switch): -gnatw.e should not
	set Warning_Doc_Switch.
	* lib-writ.ads: Add documentation note on ALI file generation
	for C.
	* exp_ch6.adb (Expand_Call): Remove check for No_Abort_Statements
	(belongs in Sem).
	* sem_attr.adb (Resolve_Attribute, case Access):
	Abort_Task'Access violates the No_Abort_Statements restriction.
	* sem_res.adb (Resolve_Call): Check restriction
	No_Abort_Statements for call to Abort_Task or a renaming of it.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb (Array_Type_Declaration): Check for case of using
	type name as index.
	* lib.ads: Minor reformatting.
	* einfo.ads: Minor reformatting.

2014-02-25  Doug Rupp  <rupp@adacore.com>

	* sem_mech.adb (Set_Mechanisms): For convention Fortran on VMS
	use Short_Descriptor(S) as the argument passing mechanism.

2014-02-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sigtramp-ppcvxw.c (CFI_COMMON_REGS): Also include r0.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* atree.ads (Warnings_Treated_As_Errors): New variable.
	* errout.adb (Error_Msg_Internal): Set Warn_Err flag in
	error object (Initialize): Initialize Warnings_As_Errors_Count
	(Write_Error_Summary): Include count of warnings treated as errors.
	* erroutc.adb (Warning_Treated_As_Error): New function.
	(Matches): Function moved to outer level of package.
	* erroutc.ads (Error_Msg_Object): Add Warn_Err flag.
	(Warning_Treated_As_Error): New function.
	* gnat_rm.texi: Document pragma Treat_Warning_As_Error.
	* opt.adb: Add handling of Warnings_As_Errors_Count[_Config].
	* opt.ads (Config_Switches_Type): Add entry for
	Warnings_As_Errors_Count.
	(Warnings_As_Errors_Count): New variable.
	(Warnings_As_Errors): New array.
	* par-prag.adb: Add dummy entry for Warning_As_Error.
	* sem_prag.adb (Analyze_Pragma): Implement new pragma
	Warning_As_Error.
	* snames.ads-tmpl: Add entries for Warning_As_Error pragma.

2014-02-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sigtramp.h: Fix minor inaccuracy.

2014-02-25  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi: Added description of kill command.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi (Address_Clauses): Add a section discussing the
	problem of address clauses causing unexpected initialization,
	including the effect of Initialize_Scalars.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* errout.adb: Various changes for better msgs for anonmous access
	subprogram types.
	* erroutc.ads, erroutc.adb (Buffer_Ends_With): Version with character
	argument.
	(Buffer_Remove): Version with character argument.
	* sem_attr.adb (Resolve_Attribute, case Access): Better handling
	of mismatching conventions for access-to-subprogram case.
	* sem_prag.adb (Set_Convention_From_Pragma): Deal with anonymous
	access types in record.
	* sem_util.ads, sem_util.adb (Set_Convention): Handle anonymous access
	types, including in records.

2014-02-25  Doug Rupp  <rupp@adacore.com>

	* sigtramp-ppcvxw.c, sigtramp.h, sigtramp-armvxw.c: Comment
	enhancements and corrections.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: New section "Conventions and Anonymous Access Types"

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: First set of documentation additions for
	predefined RM units.
	* checks.adb: Minor reformatting.
	* sem_elab.adb (Check_Task_Activation): Minor fix to error
	message.
	* sem_util.adb: Minor reformatting.

2014-02-25  Arnaud Charlet  <charlet@adacore.com>

	* usage.adb (Usage): Add help on -gnateC.
	* switch-c.adb (Scan_Front_End_Switches): Add handling of -gnateC.
	* opt.ads (Generate_CodePeer_Messages): New flag.
	* gnat_ugn.texi: Document new switch -gnateC.

2014-02-25  Ben Brosgol  <brosgol@adacore.com>

	* gnat_rm.texi: Corrected minor typos in Implementation Defined
	Aspects.
	* opt.ads: Minor reformatting.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* binde.adb: Change messages to mention -gnatel instead of -gnatwl.
	* gnat_ugn.texi: Update documentation of -gnatwl Add documentation
	of -gnatel/-gnateL.
	* opt.ads (Warn_Info_Messages): New flag.
	* sem_elab.adb: Use Elab_Warnings, Elab_Info_Messages to control
	messages.
	* sem_prag.adb: Use Elab_Warnings, Elab_Info_Messages to control
	messages.
	* switch-m.ad, switch-c.adb: Recognize new -gnatel/EL switches.
	* usage.adb: Add documentation of -gnatel/-gnateL Update
	documentation of -gnatwl/-gnatwL.
	* warnsw.adb: New handling of Elab_Warnings, Elab_Info_Messages
	* warnsw.ads (Elab_Info_Messages): New field in Warning_Record

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (Has_Shift_Operator): New flag.
	* gnat_rm.texi: Document pragma Provide_Shift_Operators.
	* interfac.ads: Minor code reorganization (add pragma
	Compiler_Unit_Warning).
	* par-prag.adb: Add dummy entry for Provide_Shift_Operators.
	* sem_ch3.adb (Build_Derived_Numeric_Type): Copy
	Has_Shift_Operator flag.
	* sem_intr.adb (Check_Intrinsic_Subprogram): Make sure
	Check_Shift is always called (Check_Shift): Set Has_Shift_Operator.
	* sem_prag.adb: Implement pragma Provide_Shift_Operators.
	* snames.ads-tmpl: Add entries for pragma Provide_Shift_Operators
	Add entry for Name_Amount.
	* checks.adb (Selected_Range_Checks): When checking for a null
	range, make sure we use the base type, and not the subtype for
	deciding a range is null.
	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Check
	for suspicious loop bound which is outside the range of the
	loop subtype.
	* gnat_ugn.texi: Add documentation section "Determining the
	Chosen Elaboration Order"
	* sem_ch13.adb (UC_Entry): Add field Act_Unit
	(Validate_Unchecked_Conversion): Store Act_Unit
	(Validate_Unchecked_Conversions): Test Warnings_Off in Act_Unit
	* treepr.adb: Minor reformatting.

2014-02-25  Arnaud Charlet  <charlet@adacore.com>

	* usage.adb: Minor: fix typo.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* lib.ads, s-bitops.adb, s-bitops.ads, s-conca5.adb, gnat_rm.texi,
	s-conca5.ads, s-conca7.adb, s-conca7.ads, s-crc32.adb, s-crc32.ads,
	s-conca9.adb, s-conca9.ads, g-dyntab.adb, s-crtl.ads, g-dyntab.ads,
	s-excdeb.adb, s-addope.adb, s-addope.ads, s-carun8.adb, s-carun8.ads,
	g-htable.adb, g-htable.ads, g-hesora.adb, g-hesora.ads, s-conca2.adb,
	s-conca2.ads, a-comlin.adb, a-chlat1.ads, a-comlin.ads, errout.ads,
	a-except.adb, s-conca4.adb, a-except.ads, s-conca4.ads, s-conca6.adb,
	s-conca6.ads, g-spchge.adb, g-spchge.ads, g-u3spch.adb, g-u3spch.ads,
	a-strhas.ads, restrict.adb, aspects.adb, aspects.ads, s-conca8.adb,
	s-conca8.ads, back_end.adb, par-prag.adb, g-byorma.adb, g-byorma.ads,
	a-elchha.adb, a-elchha.ads, g-speche.adb, g-speche.ads, s-casuti.adb,
	s-assert.adb, s-casuti.ads, s-assert.ads, a-clrefi.adb, a-clrefi.ads,
	s-conca3.adb, s-conca3.ads, a-ioexce.ads: Implement pragma
	Compiler_Unit_Warning, change Compiler_Unit everywhere to
	Compiler_Unit_Warning.

2014-02-25  Sergey Rybin  <rybin@adacore.com frybin>

	* sem_prag.adb (Analyze_Depends_In_Decl_Part): Do not normalize
	in ASIS mode aggregates that are used as aspect definitions.

2014-02-25  Robert Dewar  <dewar@adacore.com>

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

2014-02-25  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): If the return type of a function
	is a limited view, and the non-limited view has not been seen yet,
	defer freezing to some later point.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* s-excdeb.ads, s-except.ads, s-exctab.adb, s-exctab.ads, s-finmas.ads,
	s-htable.adb, s-htable.ads, s-imenne.adb, s-imenne.ads, s-imgenu.adb,
	s-imgenu.ads, s-mastop.adb, s-mastop.ads, s-memory-vms_64.adb,
	s-memory-vms_64.ads, s-memory.adb, s-memory.ads, s-os_lib.adb,
	s-os_lib.ads, s-parame.adb, s-parame.ads, s-purexc.ads, s-restri.adb,
	s-restri.ads, s-rident.ads, s-secsta.adb, s-secsta.ads, s-soflin.adb,
	s-soflin.ads, s-sopco3.adb, s-sopco3.ads, s-sopco4.adb, s-sopco4.ads,
	s-sopco5.adb, s-sopco5.ads, s-spsufi.ads, s-stache.adb, s-stache.ads,
	s-stalib.adb, s-stalib.ads, s-stoele.adb, s-stoele.ads, s-strcom.adb,
	s-strcom.ads, s-strhas.adb, s-string.adb, s-string.ads, s-strops.adb,
	s-strops.ads, s-ststop.adb, s-ststop.ads, s-traceb.adb, s-traceb.ads,
	s-traent.adb, s-traent.ads, s-unstyp.ads, s-utf_32.adb, s-utf_32.ads,
	s-wchcnv.adb, s-wchcnv.ads, s-wchcon.adb, s-wchcon.ads, s-wchjis.adb,
	s-wchjis.ads, sem_ch11.adb, sem_ch4.adb, sem_ch5.adb, sem_prag.adb,
	snames.ads-tmpl: Change Compiler_Unit everywhere to
	Compiler_Unit_Warning.

2014-02-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Add_Or_Save_Precondition): New routine.
	(Collect_Body_Postconditions_In_Decls): New routine.
	(Collect_Body_Postconditions_Of_Kind): Factor out code. Handle
	postcondition aspects or pragmas that appear on a subprogram
	body stub.
	(Collect_Spec_Preconditions): Factor out code. Handle
	precondition aspects or pragmas that appear on a subprogram
	body stub.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): The analysis of
	aspects that apply to a subprogram body stub is no longer delayed,
	the aspects are analyzed on the spot.
	(SPARK_Aspect_Error):
	Aspects that apply to a subprogram declaration cannot appear in
	a subunit.
	* sem_ch10.adb Remove with and use clause for Sem_Ch13.
	(Analyze_Proper_Body): Add local variable Comp_Unit. Unum
	is now a local variable. Code cleanup. Analysis related to
	the aspects of a subprogram body stub is now carried out by
	Analyze_Subprogram_Body_Helper. Do not propagate the aspects
	and/or pragmas of a subprogram body stub to the proper body
	as this is no longer needed. Do not analyze the aspects of a
	subprogram stub when the corresponding source unit is missing.
	(Analyze_Protected_Body_Stub): Flag the illegal use of aspects
	on a stub.
	(Analyze_Task_Body_Stub): Flag the illegal use of
	aspects on a stub.
	(Optional_Subunit): Add local variable Unum.
	* sem_ch13.adb (Insert_Delayed_Pragma): Do not analyze a generated
	pragma when it applies to a subprogram body stub.
	* sem_prag.adb (Analyze_Pragma): Pragmas Contract_Cases,
	Depends and Global can now apply to a subprogram body stub as
	long as it acts as its own spec.
	(Analyze_Refined_Pragma):
	Code reformatting. Refinement pragmas cannot apply to a subunit.

2014-02-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.ads Update the usage of flag
	Uses_Sec_Stack. Uses_Sec_Stack now applies to E_Loop entities.
	* exp_ch5.adb (Expand_Iterator_Loop): The temporary for a cursor
	now starts with the letter 'C'. This makes reading expanded
	code easier.
	* exp_ch7.adb (Establish_Transient_Scope): Add local variable
	Iter_Loop. Signal that an Ada 2012 iterator loop requires
	secondary stack management when creating a transient scope for
	an element reference.
	* exp_util.adb (Process_Statements_For_Controlled_Objects):
	When wrapping the statements of a loop, pass the E_Loop entity
	to the wrapping machinery.
	(Wrap_Statements_In_Block): Add
	formal parameter Scop along with comment on usage. Add local
	variables Block_Id, Block_Nod and Iter_Loop. Mark the generated
	block as requiring secondary stack management when the block is
	created inside an Ada 2012 iterator loop. This ensures that any
	reference objects are reclaimed on each iteration of the loop.
	* sem_ch5.adb (Analyze_Loop_Statement): Mark the generated block
	tasked with the handling of container iterators as requiring
	secondary stack management. This ensures that iterators are
	reclaimed when the loop terminates or is exited in any fashion.
	* sem_util.adb (Add_Block_Identifier): New routine.
	(Find_Enclosing_Iterator_Loop): New routine.
	* sem_util.ads (Add_Block_Identifier): New routine.
	(Find_Enclosing_Iterator_Loop): New routine.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads: Minor reformatting.

2014-02-25  Tristan Gingold  <gingold@adacore.com>

	* s-expllu.ads, s-expuns.ads, s-expmod.ads: Minor comment fix.

2014-02-25  Pascal Obry  <obry@adacore.com>

	* sinput-l.adb, osint.adb, osint.ads: Add Prep_Suffix to factorize code.

2014-02-25  Tristan Gingold  <gingold@adacore.com>

	* sem_ch10.adb: Minor comment fix.

2014-02-25  Bob Duff  <duff@adacore.com>

	* s-tasdeb.adb: Misc cleanup of this package,
	including printing addresses in hexadecimal.
	(Write): Fix minor bug when taking 'Address of an empty string.

2014-02-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Part_Of): Reject state refinement in a
	public child unit when it does not refer to the abstract state
	of a public ancestor.

2014-02-25  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Pragma/Pragma_Validity_Checks): Ignore pragma
	Validity_Checks in GNATprove and CodePeer modes.

2014-02-25  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb, projects.texi, snames.ads-tmpl: Add package Install's
	Artifacts attribute.

2014-02-25  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb: Minor reformatting to get consistent messages.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* checks.adb: Minor reformatting.
	* sinfo.ads (Do_Range_Check): Document that this flag is never
	passed to the back end.

2014-02-25  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb, sem_ch5.adb, sem_ch9.adb, sem_prag.adb, sem_attr.adb,
	sem_ch6.adb: Remove useless references to SPARK RM in error messages.

2014-02-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Appears_In_Check): New routine.
	(Resolve_Entity_Name): Remove local variables Prev and
	Usage_OK. Par is now a constant. Remove the parent chain traversal
	as the placement of a volatile object with enabled property
	Async_Writers and/or Effective_Reads must appear immediately
	within a legal construct.

2014-02-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Apply_Selected_Range_Checks):
	Alphabetize local constants and variables. Add comments.
	Always insert a range check that requires runtime evaluation into
	the tree.

2014-02-25  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb, sem_ch6.adb, par-ch3.adb: Minor reformatting.

2014-02-25  Bob Duff  <duff@adacore.com>

	* s-tassta.adb (Finalize_Global_Tasks): Limit the number of loop
	iterations while waiting for independent tasks to terminate;
	if an independent task does not terminate, we do not want to
	hang here. In that case, the thread will be terminated when the
	process exits.
	* s-taprop-linux.adb (Abort_Task): Fix Assert to allow for ESRCH.

2014-02-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Check_SPARK_Aspect_For_ASIS): New subprogram,
	used to perform pre-analysis of the expression for SPARK
	aspects that have a non-standard syntax, such as GLobal and
	Initializes. The procedure applies to the original expression
	in an aspect specification, prior to the analysis of the
	corresponding pragma, in order to provide semantic information
	for ASIS navigation purposes.
	(Analyze_Global_In_Decl_List, Analyze_Initializes_In_Decl_Part):
	Call new subprogram.

2014-02-25  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb: Remove obsolete reference to SPARK RM in error message.

2014-02-25  Doug Rupp  <rupp@adacore.com>

	* init.c (HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE): Enable for ARM.
	(__gnat_adjust_context_for_raise): Bump the PC by 2.

2014-02-25  Ed Schonberg  <schonberg@adacore.com>

	* par-ch3.adb (P_Basic_Declarative_Items): In the case of a
	misplaced IS, add a statement sequence to improper body only if
	one has not been parsed already.

2014-02-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Update): Check for
	mismatch when multidimensional array is updated with a single
	index.

2014-02-25  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb, sem_ch5.adb, sem_prag.adb, sem_attr.adb, errout.ads,
	sem_ch6.adb: Mark most references to SPARK RM in error messages
	for removal.

2014-02-24  Ed Schonberg  <schonberg@adacore.com>

	* par-ch3.adb (P_Basic_Declarative_Items): If an improper body
	appears in a list of basic declarations, complete the tree with
	an empty statement list, to prevent cascaded errors and crashes
	if semantic analysis is attempted.

2014-02-24  Thomas Quinot  <quinot@adacore.com>

	* g-sercom-mingw.adb (Open): Fix incorrect test for error return
	value.
	* erroutc.adb: Minor reformatting.

2014-02-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Clause_Syntax): Account
	for a solitary input item in a dependency list.

2014-02-24  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Do not
	use validity checks at all in GNATprove_Mode.

2014-02-24  Robert Dewar  <dewar@adacore.com>

	* g-sercom-mingw.adb, g-sercom-linux.adb, sem_prag.adb, freeze.adb,
	atree.adb, atree.ads: Minor reformatting.

2014-02-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Contract): Do not enforce
	global and dependence refinement when SPARK_Mode is off.
	* sem_ch7.adb (Analyze_Package_Body_Contract): Do not enforce
	state refinement when SPARK_Mode is off.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add local
	variable Decl. Insert the generated pragma for Refined_State
	after a potential pragma SPARK_Mode.
	* sem_prag.adb (Analyze_Depends_In_Decl_Part): Add local
	constant Deps. Remove local variable Expr. Check the syntax
	of pragma Depends when SPARK_Mode is off. Factor out the
	processing for extra parenthesis around individual clauses.
	(Analyze_Global_In_Decl_List): Items is now a constant. Check
	the syntax of pragma Global when SPARK_Mode is off.
	(Analyze_Initializes_In_Decl_Part): Check the syntax of pragma
	Initializes when SPARK_Mode is off.
	(Analyze_Part_Of): Check
	the syntax of the encapsulating state when SPARK_Mode is off.
	(Analyze_Pragma): Check the syntax of pragma Abstract_State when
	SPARK_Mode is off. Move the declaration order check with respect
	to pragma Initializes to the end of the processing. Do not verify
	the declaration order for pragma Initial_Condition when SPARK_Mode
	is off. Do not complain about a useless package refinement when
	SPARK_Mode is off.
	(Analyze_Refined_Depends_In_Decl_Part): Refs
	is now a constant. Check the syntax of pragma Refined_Depends
	when SPARK_Mode is off.
	(Analyze_Refined_Global_In_Decl_Part):
	Check the syntax of pragma Refined_Global when SPARK_Mode is off.
	(Analyze_Refined_State_In_Decl_Part): Check the syntax of pragma
	Refined_State when SPARK_Mode is off.
	(Check_Dependence_List_Syntax): New routine.
	(Check_Global_List_Syntax): New routine.
	(Check_Initialization_List_Syntax): New routine.
	(Check_Item_Syntax): New routine.
	(Check_State_Declaration_Syntax): New routine.
	(Check_Refinement_List_Syntax): New routine.
	(Has_Extra_Parentheses): Moved to the top level of Sem_Prag.

2014-02-24  Robert Dewar  <dewar@adacore.com>

	* a-tags.adb, s-os_lib.adb: Minor reformatting.

2014-02-24  Thomas Quinot  <quinot@adacore.com>

	* g-sercom-mingw.adb, g-sercom-linux.adb (Raise_Error): Include
	strerror message, not just numeric errno value.

2014-02-24  Doug Rupp  <rupp@adacore.com>

	* raise-gcc.c (exception_class_eq): Make endian neutral.

2014-02-24  Ed Schonberg  <schonberg@adacore.com>

	* atree.ads, atree,adb (Copy_Separate_Tree): Remove Syntax_Only
	flag, and reset Etype and Analyzed attributes unconditionally
	when copying a tree that may be partly analyzed.
	* freeze.adb: Change calls to Copy_Separate_Tree accordingly.
	* sem_ch6.adb (Check_Inline_Pragma): If the Inline pragma appears
	within a subprogram body and applies to it, remove it from the
	body before making a copy of it, to prevent spurious errors when
	analyzing the copied body.

2014-02-24  Thomas Quinot  <quinot@adacore.com>

	* s-os_lib.adb (Errno_Message): Do not depend on Integer'Image.
	* s-oscons-tmplt.c: On VxWorks, include adaint.h only after
	vxWorks.h has been included.  Also ensure that file attributes
	related definitions are output even in cases where socket support
	is not enabled.
	* a-tags.adb: Code clean up.
	* Make-generated.in (OSCONS_CPP, OSCONS_EXTRACT): Use -iquote
	instead of -I to add the main ada source directory to the header
	search path, in order to avoid conflict between our own "types.h"
	and VxWork's <types.h>.

2014-02-24  Robert Dewar  <dewar@adacore.com>

	* atree.ads, atree.adb (Copy_Separate_Tree): Add Syntax_Only parameter.
	* debug.adb: Remove documentation of -gnatd.X, no longer used.
	* freeze.adb (Wrap_Imported_Subprogram): Fixed and activated.

2014-02-24  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Improve documentation of gnatpp.

2014-02-24  Thomas Quinot  <quinot@adacore.com>

	* g-stheme.adb, g-socthi-vms.adb, g-socthi-vms.ads,
	g-socthi-vxworks.adb, g-socthi-vxworks.ads, g-stseme.adb,
	g-socthi-mingw.adb, g-socthi-mingw.ads, g-socthi.adb,
	g-socthi.ads, g-socket.adb (Host_Error_Message): Return a string, not
	a chars_ptr, because on Windows this is a renaming of
	Socket_Error_Message.

2014-02-24  Robert Dewar  <dewar@adacore.com>

	* a-direct.adb, sem_ch5.adb, a-cfdlli.adb, a-cfhase.adb, a-tags.adb,
	s-filatt.ads, a-cforma.adb, sem_ch6.adb, g-socthi-mingw.adb,
	a-cfhama.adb, a-cforse.adb, a-cofove.adb: Minor reformatting and code
	reorganization.

2014-02-24  Thomas Quinot  <quinot@adacore.com>

	* Make-generated.in (OSCONS_CPP, OSCONS_EXTRACT): Make sure
	that the source directory containing s-oscons-tmplt.c is on the
	include path, so that all internal header files are available.

2014-02-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): If the
	domain of iteration is an attribute reference 'Old, this is an
	Ada 2012 iterator and the loop must be rewritten as such.

2014-02-24  Thomas Quinot  <quinot@adacore.com>

	* s-fileio.adb (Errno_Message): Remove, use shared version from
	s-os_lib instead.
	* s-crtrun.ads, Makefile.rtl: Remove now unused unit.
	* g-stseme (Socket_Error_Message): Reimplement in terms of new
	s-os_lib function.
	* g-socthi.ads, g-socthi.adb: Change profile of
	Socket_Error_Message to return String to allow the above.
	* g-socket.adb, g-socthi-mingw.adb, g-socthi-mingw.ads,
	* g-socthi-vms.adb, g-socthi-vms.ads, g-socthi-vxworks.adb,
	* g-socthi-vxworks.ads: Update to account for the above profile
	change.
	* a-tags.adb: Use strlen builtin binding provided by s-crtl.
	* s-crtl.ads (strncpy): New procedure.
	* s-os_lib.adb (Copy_Attributes): Import just once (strncpy):
	Use import from s-crtl.
	* a-envvar.adb, osint.adb: Use imports of C runtime functions
	from s-crtl instead of re-importing locally.

2014-02-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Global_Item): Emit the
	variable related checks concerning volatile objects only when
	SPARK_Mode is on.

2014-02-24  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): use
	Error_Msg_Ada_2012_Feature.

2014-02-24  Jose Ruiz  <ruiz@adacore.com>

	* s-rident.ads (Profile_Info): For Ravenscar, the restrictions
	No_Local_Timing_Events and No_Specific_Termination_Handlers
	must be set, according to the Ravenscar profile definition
	in D.13(6/3).

2014-02-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): If this is a
	completion, freeze return type and its designated type if needed.

2014-02-24  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case
	'Address): When moving initialization statements to a freeze
	entity, keep them under a single node (i.e. do not unwrap
	expressions with actions), and set the Initialization_Statements
	attribute again so that processing of a later pragma Import can
	still remove them.

2014-02-24  Claire Dross  <dross@adacore.com>

	* a-cfdlli.adb, a-cfdlli.ads, a-cfhama.adb, a-cfhama.ads,
	a-cfhase.adb, a-cfhase.ads, a-cforma.adb, a-cforma.ads,
	a-cforse.adb, a-cforse.ads, a-cofove.adb, a-cofove.ads: Rename
	Left/Right to First_To_Previous/Current_To_Last.

2014-02-24  Thomas Quinot  <quinot@adacore.com>

	* adaint.h (struct file_attributes): New component "error"
	(__gnat_error_attributes): Accessor for the above.
	* adaint.c (__gnat_error_attributes): New subprogram
	(__gnat_stat): Fix returned value (expect errno value)
	(__gnat_stat_to_attr): Add management of error component (set to
	stat errno value, except for missing files where it is set to 0,
	and exists is set to 0).
	* osint.ads (File_Attributes_Size): Update per change above,
	also clarify documentation.
	* s-filatt.ads: New file, binding to file attributes related
	functions.
	* Makefile.rtl (s-filatt): New runtime unit.
	* s-crtl.ads (strlen): Expose binding to GCC builtin (falls back
	to library function if not available on target).
	* s-os_lib.ads, s-os_lib.adb (Errno_Message): New subprogram.
	* s-oscons-tmplt.c (SIZEOF_struct_file_attributes,
	SIZEOF_struct_dirent_alloc): New constants.
	* Make-generated.in (s-oscons.ads): Now requires adaint.h.
	* a-direct.adb (Fetch_Next_Entry): Fix incorrect buffer sizes.
	Perform appropriate error checking if stat fails (do not just
	ignore existing files if stat fails)
	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS, GNATBIND_OBJS): Update
	dependencies.

2014-02-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Global_Item): Move the check concerning
	the use of volatile objects as global items in a function to
	the variable related checks section.
	* sem_util.adb (Async_Readers_Enabled): Directly call
	Has_Enabled_Property.
	(Async_Writers_Enabled): Directly call Has_Enabled_Property.
	(Effective_Reads_Enabled): Directly call Has_Enabled_Property.
	(Effective_Writes_Enabled): Directly call Has_Enabled_Property.
	(Has_Enabled_Property): Rename formal parameter State_Id to Item_Id.
	Update the comment on usage. State_Has_Enabled_Property how handles
	the original logic of the routine. Add processing for variables.
	(State_Has_Enabled_Property): New routine.
	(Variable_Has_Enabled_Property): New routine.

2014-02-24  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads, sem_ch12.adb, sem_res.adb, sem_ch4.adb, par-ch12.adb:
	Minor reformatting.
	* atree.ads, atree.adb (Node35): New function.
	(Set_Node35): New procedure.
	* debug.adb: Define new debug flag -gnatd.X.
	* einfo.ads, einfo.adb (Import_Pragma): New field.
	* freeze.adb (Wrap_Imported_Procedure): New procedure (not
	really active yet, has to be activated with -gnatd.X.
	* sem_prag.adb (Set_Imported): Set new Import_Pragma
	field (Set_Imported): Don't set Is_Public (see
	Freeze.Wrap_Imported_Subprogram)
	* par-ch3.adb (P_Component_List): Handle unexpected null component.

2014-02-24  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb: Correct reference to SPARK RM in error messages.
	* gnat_rm.texi: Correct documentation of attribute Update.

2014-02-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Reject container
	iterator in older versions of Ada.

2014-02-24  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch5.adb, sem_aux.ads, sem_ch12.adb, gnat_ugn.texi, par.adb,
	par-ch12.adb: Change spelling 'parametrization' to 'parameterization'.

2014-02-24  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads, sinfo.adb: New attribute Generalized_Indexing, for
	indexed_components that are instances of Ada 2012 container
	indexing operations. Analysis and resolution of such nodes
	is performed on the attribute, and the original source is
	preserved for ASIS operations. If expansion is enabled, the
	indexed component is replaced by the value of this attribute,
	which is in a call to an Indexing aspect, in most case wrapped
	in a dereference operation.
	* sem_ch4.adb (Analyze_Indexed_Component): Create
	Generalized_Indexing attribute when appropriate.
	(Analyze_Call): If prefix is not overloadable and has an indexing
	aspect, transform into an indexed component so it can be analyzed
	as a potential container indexing.
	(Analyze_Expression): If node is an indexed component with a
	Generalized_ Indexing, do not re-analyze.
	* sem_res.adb (Resolve_Generalized_Indexing): Complete resolution
	of an indexed_component that has been transformed into a container
	indexing operation.
	(Resolve_Indexed_Component): Call the above when required.
	(Resolve): Do not insert an explicit dereference operation on
	an indexed_component whose type has an implicit dereference:
	the operation is inserted when resolving the related
	Generalized_Indexing.

2014-02-24  Olivier Ramonat  <ramonat@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Replace Ada Compiler by Ada Development
	Environment.

2014-02-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Constituent_Usage): Remove leading spaces in
	error messages.
	(Inconsistent_Mode_Error): Remove leading spaces in error messages.
	Merge the expected and available mode errors.
	(Report_Unused_Constituents): Remove leading spaces in error messages.
	(Report_Unused_States): Remove leading spaces in error messages.

2014-02-24  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Traverse_One): Refine categorization of statement
	SCOs.

2014-02-24  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb: Remove aspects Ada_2005 and Ada_2012,
	Pure_05, Pure_12 and Preelaborate_05.
	* gnat_rm.texi: Update accordingly.
	* sem_prag.adb: Document one argument form of Ada_05/Ada_2005
	pragmas Document one argument form of Ada_12/Ada_2012 pragmas
	Recognize one argument form of these pragmas only in GNAT mode
	(-gnatg).

2014-02-24  Ed Schonberg  <schonberg@adacore.com>

	* s-dimmks.ads: Replace symbol for temperature, previously the
	Greek letter Theta, by the ASCII @ sign.
	* s-diflio.ads: ditto.

2014-02-24  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor code reorganization (use OR for boolean
	variables).
	* sem_ch3.adb, sem_prag.adb, freeze.adb: Minor reformatting.

2014-02-24  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi, projects.texi: Added the necessary conditionalization
	so that references to gnatmem and ASIS tools do not appear in the FSF
	edition of the GNAT User's Guide.

2014-02-24  Yannick Moy  <moy@adacore.com>

	* freeze.adb (Freeze_Entity): Do not issue warning
	for pre/post being ignored on imported subprogram in GNATprove
	mode.

2014-02-24  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, sem_ch5.adb, sem_type.adb, sem_res.adb, sem_attr.adb,
	stand.ads, sem_eval.adb: Minor reformatting.

2014-02-24  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb: Minor rewording in error message.

2014-02-24  Johannes Kanig  <kanig@adacore.com>

	* exp_util.adb (Expand_Subtype_From_Expr): Do not expand subtypes in
	GNATprove_mode, gnat2why doesn't need nor use these types.

2014-02-24  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Expon): On the AAMP
	target, in the case of signed integer exponentiation that uses a
	run-time routine, always select the Exp_* versions, since overflow
	checking is automatically done by AAMP arithmetic instructions.

2014-02-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications):
	When the related context is a package instace, insert pragma
	Abstract_State after all internally-generated renamings related
	to the instance "header".

2014-02-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Analyze Contract of abstract
	subprograms.
	* sem_disp.adb (Check_Dispatching_Context): A non-dispatching
	call to an abstract subprogram is legal if it appears in a
	pre/postcondition of another abstract operation.

2014-02-24  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi: Misc updates.

2014-02-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_prag.adb (Expand_Old): Set the type of the generated temporary.

2014-02-24  Gary Dismukes  <dismukes@adacore.com>

	* layout.adb (Layout_Variant_Record): Instantiate
	Generic_Check_Choices and call Check_Choices before calling
	Build_Discr_Checking_Funcs, since we need Others_Discrete_Choices
	set to prevent generating incorrect discriminant-checking
	functions for 'others' variants (functions that unconditionally
	return True rather than accounting for the values covered by the
	'others' choice).
	* sem_eval.ads (Subtypes_Statically_Compatible): Add formal
	Formal_Derived_Matching.
	(Subtypes_Statically_Match): Add formal Formal_Derived_Matching.
	* sem_eval.adb (Subtypes_Statically_Compatible): Pass new
	Formal_Derived_Matching formal to Subtypes_Statically_Match.
	(Subtypes_Statically_Match): Suppress the Object_Size matching
	test in the case where Formal_Derived_Matching is True.
	* sem_ch12.adb (Validate_Derived_Type_Instance): Pass
	True for Formal_Derived_Matching_Formal on the call to
	Subtypes_Statically_Compatible.

2014-02-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in (ADA_TOOLS_FLAGS_TO_PASS): Robustify.

2014-02-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (build_simple_component_ref): Fix formatting.
	Look through a conversion between original and packable version to get
	the base object.
	(build_component_ref): Rework comment and fix formatting.

2014-02-20  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi, vms_data.ads (gnatelim): Add description of
	project-specific options.

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

	* a-cbdlli.adb (Insert): When capacity exceeded, raise Capacity_Error,
	not Constraint_Error.
	* a-cbmutr.adb (Append_Child, Insert_Child, Prepend_Child): Ditto.
	* sem_ch5.adb: Code clean up.

2014-02-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Usage_Error): Remove local
	constant Typ. Remove the specialized diagnostics for unconstrained
	or tagged items as those are not part of the explicit input set
	of the related subprogram and should not be flagged.

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

	* sem_attr.adb: Add guard to preserve all errors.

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

	* switch-m.adb (Normalize_Compiler_Switches): Take into account
	switches that are recorded in ALI files: -gnateA, -gnateE,
	-gnateF, -gnateinn, -gnateu, -gnateV and -gnateY.

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

	* sem_ch5.adb (Analyze_Iterator_Specification): Check legality
	of an element iterator form over a formal container with an
	Iterable aspect.
	* exp_ch5.adb (Build_Formal_Container_Iteration): Utility
	to create declaration and loop statements for both forms of
	container iterators.
	(Expand_Formal_Container_Element_Iterator): New procedure
	to handle loops of the form  "for E of C" when C is a formal
	container.
	(Expand_Formal_Container_Iterator): Code cleanup.

2014-02-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Add_Item_To_Name_Buffer): New routine.
	(Analyze_Contract_Case): Remove the use of
	"may". Replace "aspect Contract_Cases" to avoid categorization
	of aspect vs pragma.
	(Analyze_External_Property_In_Decl_Part): Remove the use of "formal".
	(Analyze_Global_Item): Remove
	the use of "formal", specify the subprogram.  Split the
	error message about a state with visible refinement into
	two. Remove the use of "global" from "volatile global item".
	(Analyze_Initialization_Item): Ensure that the SPARK RM reference
	is on one line.
	(Analyze_Input_Output): Update the call to
	Check_Mode. Specify the duplicated item. Reword the error
	message concerning an input of a null output list. Use "\"
	for error message continuation.
	(Analyze_Part_Of): Remove
	the use of "may". Use "\" for error message continuation.
	(Analyze_Refined_Depends_In_Decl_Part): Update the error
	message concerning a useless refinement to match the format
	of Refined_Global.
	(Analyze_Refined_Global_In_Decl_Part): Reword the error message
	concerning a useless refinement.
	(Analyze_Refinement_Clause): Use "\" for error message continuation.
	(Check_Constituent_Usage): Use "\" for error message continuation.
	(Check_Dependency_Clause): Use "\" for error message continuation.
	(Check_Matching_Constituent): Use "\" for error message continuation.
	(Check_Missing_Part_Of): Use "\" for error message continuation.
	(Check_Mode): Renamed to
	Check_Role. Update the comment on usage. Redo the error reporting
	to use Role_Error.
	(Check_Mode_Restriction_In_Enclosing_Context): Use "\" for error
	message continuation.
	(Find_Mode): Renamed to Find_Role. Update the parameter profile along
	with comment on usage. Update all occurrences of Is_Input and Is_Output.
	(Inconsistent_Mode_Error): Use "\" for error message continuation.
	(Input_Match): Use "\" for error message continuation.
	(Role_Error): New routine.
	(Set_Convention_From_Pragma): Use "\" for error message continuation.
	(Usage_Error): Add local variable Error_Msg. Build specialized error
	message showcasing the offending item kind. Redo the diagnostics for
	unconstrained types.

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

	* exp_util.adb (Is_Iterated_Container): Use high-level primitives
	to determine whether a type is a container type, rather than
	examining only its type declaration, so that subtypes and derived
	types are handled properly.

2014-02-20  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi: gnatmetric: add description of project-specific
	options.

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

	* sem_attr.adb (Analyze_Attribute, case 'Update): Verify that
	all choices in an association for a record type have the same
	type, as is done for record aggregates.

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

	* a-cborma.adb, a-cbhama.adb, a-cbdlli.adb, a-cbmutr.adb: Use pragma
	Unmodified rather than Warnings (Off). Make comments
	uniform in the four affected units.

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

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case
	Object_Size): For non-scalar types allow any value that is a
	multiple of 8.
	* gnat_rm.texi: Document Object_Size for composites more clearly.

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

	* sem_util.ads, sem_util.adb (Default_Initialization): Remove function.

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

	* stand.ads: Raise_Type: new predefined entity, used as the type
	of a Raise_Expression prior to resolution.
	* cstand.adb: Build entity for Raise_Type.
	* sem_ch11.adb (Analyze_Raise_Expression): use Raise_Type as the
	initial type of the node.
	* sem_type.adb (Covers): Raise_Type is compatible with all
	other types.
	* sem_res.adb (Resolve): Remove special handling of Any_Type on
	Raise_Expression nodes.
	(Resolve_Raise_Expression): Signal ambiguity if the type of the
	context is still Raise_Type.

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

	* sem_ch12.adb (Validate_Access_Type_Instance): Add message if
	mismatching predicates.
	* sem_ch6.adb (Check_Conformance): Give better messages on
	predicate mismatch.
	* sem_eval.adb (Predicates_Match): Move to spec.
	* sem_eval.ads (Predicates_Match): Moved here from body.

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

	* a-cbmutr.adb: Use default value in Insert_Child.

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

	* gnatcmd.adb, make.adb, prj-makr.adb, clean.adb: Call
	Stringt.Initialize in all project aware tools.

2014-02-20  Doug Rupp  <rupp@adacore.com>

	* gnat_ugn.texi: Document gnatbind -X option.
	* vms_data.ads: Minor warnings documentation reformatting.

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

	* exp_ch3.adb (Expand_Freeze_Array_Type): Only create invariant
	procedure for a base type.

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

	* sem_ch4.adb (Analyze_Case_Expression): Get type from first
	expression with type info.
	* sem_ch13.adb: Minor reformatting.
	* sem_eval.adb (Subtypes_Statically_Match): Make sure we return
	False if predicates do not match on the two types.

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

	* sem_prag.adb (Analyze_Pragma [pragma Attach_Handler]):
	In Relaxed_RM_Semantics mode, allow any static integer value,
	for compatibility with other compilers.

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

	* errutil.adb (Initialize): Properly initialize entry in table
	Warnings when warnings are suppressed.

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

	* s-os_lib.ads: Add warning about non-portability of Rename_File.
	* sem_util.ads, sem_util.adb (Is_Junk_Name): New function.
	* sem_warn.adb: Use Is_Junk_Name to suppress some warnings.
	* gnat_ugn.texi: Document no warnings on junk variable names.
	* layout.adb: Minor code reorganization (use Ekind_In).
	* stringt.adb: Move initialization of Null_String_Id to Initialize
	routine.

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

	* sem_ch13.adb: Initialize optional Element_Id.

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

	* s-os_lib.ads (Rename_File): Minor commment addition.

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

	* einfo.ads: Minor reformatting.

2014-02-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb (Exchange_Aspects): New routine.
	* aspects.ads (Exchange_Aspects): New routine.
	* atree.adb (Rewrite): Do not check whether the save node has
	aspects as it never will, instead check the node about to be clobbered.
	* einfo.adb (Write_Field25_Name): Abstract_States can appear in
	entities of generic packages.
	* sem_ch6.adb (Analyze_Expression_Function): Fix the parent
	pointer of an aspect specification list after rewriting takes place.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Swap the aspect
	specifications of the generic template and the copy used for analysis.
	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Swap
	the aspect specifications of the generic template and the
	copy used for analysis.
	(Analyze_Package_Instantiation): Propagate the aspect specifications
	from the generic template to the instantiation.
	(Build_Instance_Compilation_Unit_Nodes): Propagate the aspect
	specifications from the generic template to the instantiation.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Handle aspects
	Abstract_State, Initializes and Initial_Condition when they
	apply to a package instantiation.

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

	* stringt.adb: Add call to Initialize in package initialization.

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

	* a-crbtgk.adb, a-cihama.adb, a-coinve.adb, a-ciorse.adb, a-crbtgo.adb,
	a-cidlli.adb, a-cimutr.adb, a-cihase.adb, a-cohama.adb, a-coorse.adb,
	a-chtgke.adb, a-chtgop.adb, a-comutr.adb, a-ciorma.adb, a-cobove.adb,
	a-convec.adb, a-cohase.adb, a-chtgbk.adb, a-chtgbo.adb: Minor
	reformatting.

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

	* s-os_lib.ads: Minor: Remove incorrect comment.

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

	* sem_elab.adb (Check_Elab_Assign): Clearer warning message.

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

	* a-cborma.adb (Assign): When creating a node without a specified
	element, insert an uninitialized element in the map, because
	the instance may provide an element type with a default
	initialization, e.g a scalar with a Default_Value aspect.
	* a-cbhama.adb (Assign_Key): Remove useless Allocate procedure.
	(Insert): In the version without explicit element, provide an
	uninitialized element, as above.
	* a-cbdlli.adb (Append): In the version without explicit element,
	provide an uninitalized element, as above.
	(Allocate): Remove unused version.

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

	* sem_elab.adb: Minor code reorganization (use Nkind_In).
	* stringt.adb: Remove temporary pragma Warnings (Off).
	* stringt.ads: Add pragma Elaborate_Body to ensure initialization
	of Null_String_Id.

2014-02-20  Matthew Heaney  <heaney@adacore.com>

	* a-chtgbk.adb (Replace): Use correct offset when calculating bucket
	index.

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

	* sem_ch5.adb (Analyze_Iterator_Specification): Initialize
	properly the cursor type for subsequent volatile testing in SPARK
	mode, when domain is a formal container with an Iterabe aspect.

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

	* errout.adb (Set_Warnings_Mode_Off): Add Reason argument.
	(Set_Specific_Warning_Off): Add Reason argument.
	* errout.ads (Set_Warnings_Mode_Off): Add Reason argument.
	(Set_Specific_Warning_Off): Add Reason argument.
	* erroutc.adb (Warnings_Entry): Add Reason field
	(Specific_Warning_Entry): Add Reason field.
	(Warnings_Suppressed): return String_Id for Reason.
	(Warning_Specifically_Suppressed): return String_Id for Reason.
	* erroutc.ads (Warnings_Entry): Add Reason field.
	(Specific_Warning_Entry): Add Reason field.
	(Set_Specific_Warning_Off): Add Reason argument.
	(Set_Warnings_Mode_Off): Add Reason argument.
	(Warnings_Suppressed): return String_Id for Reason.
	(Warning_Specifically_Suppressed): return String_Id for Reason.
	* errutil.adb (Warnings_Suppressed): returns String_Id for Reason
	(Warning_Specifically_Suppressed): returns String_Id for Reason
	* gnat_rm.texi: Document that Warning parameter is string literal
	or a concatenation of string literals.
	* par-prag.adb: New handling for Reason argument.
	* sem_prag.adb (Analyze_Pragma, case Warning): New handling
	for Reason argument.
	* sem_util.ads, sem_util.adb (Get_Reason_String): New procedure.
	* sem_warn.ads (Warnings_Off_Entry): Add reason field.
	* stringt.adb: Set Null_String_Id.
	* stringt.ads (Null_String_Id): New constant.

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

	* einfo.ads: Minor comment addition: Etype of package is
	Standard_Void_Type.
	* checks.adb, exp_aggr.adb, exp_atag.adb, exp_attr.adb, exp_ch13.adb,
	exp_ch2.adb, exp_ch3.adb, exp_ch4.adb, exp_ch5.adb, exp_ch6.adb,
	exp_ch7.adb, exp_ch9.adb, exp_dbug.adb, exp_disp.adb, exp_imgv.adb,
	exp_intr.adb, exp_prag.adb, exp_sel.adb, exp_strm.adb, exp_util.adb,
	freeze.adb, rtsfind.adb, sem_aggr.adb, sem_attr.adb, sem_ch10.adb,
	sem_ch12.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb,
	sem_ch6.adb, sem_ch8.adb, sem_dim.adb, sem_prag.adb, sem_res.adb,
	sem_util.adb, tbuild.adb, tbuild.ads: Remove New_Reference_To.
	Replace all calls with calls to New_Occurrence_Of.

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

	* par-util.adb (Ignore, case of right paren): Make this a
	serious error.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb, sem_prag.adb, sem_attr.adb: Minor reformatting.
	* debug.adb: Remove -gnatd.X switch, no longer used.
	* styleg.adb (Check_Then): Remove check of -gnatd.X, check is
	now always made.

2014-02-19  Bob Duff  <duff@adacore.com>

	* g-socket.ads: Minor: Correct some comments.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb: Inhibit iterator rewriting in ASIS mode.

2014-02-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Do not generate
	an error on out of range priorities if Relaxed_RM_Semantics.
	* sem_prag.adb (Analyze_Pragma): Ditto.

2014-02-19  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Resolve_Attribute): Detect the case of F'Access
	where F denotes the renaming of an enumeration literal, and
	issue a specialized error message.

2014-02-19  Matthew Heaney  <heaney@adacore.com>

	* a-chtgop.ads (Checked_Index): New operation.
	(Next): Changed mode of hash table.
	* a-chtgop.adb (Adjust, Delete_Node_Sans_Free): Detect tampering
	(Generic_Read, Reserve_Capacity): Ditto.
	(Generic_Equal): Detect tampering.
	(Next): Changed mode of hash table, detect tampering.
	* a-chtgke.ads (Checked_Index, Checked_Equivalent_Keys): New
	operation.
	(Find): Changed mode of hash table.
	* a-chtgke.adb (Checked_Equivalent_Keys): New operation
	(Delete_Key_Sans_Free, Generic_Conditional_Insert): Detect
	tampering.
	(Find): Changed mode of hash table, check for tampering.
	(Generic_Replace_Element): Check for tampering.
	* a-chtgbk.ads (Checked_Index, Checked_Equivalent_Keys): New operation.
	* a-chtgbk.adb (Checked_Index, Checked_Equivalent_Keys): New
	operation (Delete_Key_Sans_Free, Generic_Conditional_Insert):
	Detect tampering.
	(Find, Generic_Replace_Element): Check for tampering.
	* a-chtgbo.ads (Checked_Index): New operation.
	* a-chtgbo.adb (Checked_Index): New operation
	(Delete_Node_Sans_Free, Generic_Equal): Detect tampering.
	(Generic_Read, Next): Ditto.
	* a-cohase.adb, a-cihase.adb (Is_In): Changed mode of hash
	table (Difference, Intersection): Use variable view of
	source, detect tampering (Find, Is_Subset, Overlap): Use
	variable view of container (Symmetric_Difference, Union):
	Detect tampering (Vet): Use Checked_Index to detect tampering
	(Constant_Reference, Element, Find): Use variable view of
	container.
	(Update_Element_Preserving_Key): Detect tampering.
	* a-cbhase.adb (Difference, Find, Is_In): Use variable view
	of container.
	(Is_Subset): Ditto.
	(Equivalent_Sets, Overlap): Use Node's Next component.
	(Vet): Use Checked_Index to detect tampering.
	(Constant_Reference, Element, Find): Use variable view of container.
	(Update_Element_Preserving_Key): Detect tampering.
	* a-cohama.adb, a-cihama.adb, a-cbhama.adb (Constant_Reference,
	Element, Find): Use variable view of container.
	(Reference): Rename hash table component.
	(Vet): Use Checked_Index to detect tampering.

2014-02-19  Arnaud Charlet  <charlet@adacore.com>

	* adabkend.adb (Scan_Compiler_Arguments): Add missing handling
	of -nostdinc.

2014-02-19  Thomas Quinot  <quinot@adacore.com>

	* tbuild.adb (New_Occurrence_Of, New_Rerefence_To): Guard
	against calls without Def_Id.

2014-02-19  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads, a-cforse.ads,
	a-cofove.ads: Add global annotations to subprograms.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Initial_Condition_In_Decl_Part): Remove
	constants Errors, Pack_Id and Pack_Init. Remove variable Vars.
	Initial_Condition no longer requires the presence of pragma
	Initialized. Do not try to diagnose whether all variables mentioned in
	pragma Initializes also appear in Initial_Condition.
	(Collect_Variables): Removed.
	(Match_Variable): Removed.
	(Match_Variables): Removed.
	(Report_Unused_Variables): Removed.

2014-02-19  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi (pragma Stream_Convert): Minor rewording.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb, sem_util.ads, prj-conf.adb, s-os_lib.adb: Minor
	reformatting.

2014-02-19  Vincent Celier  <celier@adacore.com>

	* prj-part.adb (Parse_Single_Project): Use the fully resolved
	project path, with all symbolic links resolved, to check if the
	same project is imported with a different unresolved path.
	* prj-tree.ads (Project_Name_And_Node): Component Canonical_Path
	changed to Resolved_Path to reflect that all symbolic links
	are resolved.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Get_Cursor_Type): Moved to sem_util
	from sem_ch13, for use elsewhere.
	* sem_ch13.adb (Get_Cursor_Type): Moved to sem_util.
	* sem_ch5.adb (Analyze_Iterator_Specification): Set properly the
	cursor type on the loop variable when the iteration is over o
	formal container.

2014-02-19  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Add_Default_GNAT_Naming_Scheme): Add declaration
	for an empty Target (Check_Target): Never fail when an empty
	target is declared in the configuration project.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Check_Arg_Is_Local_Name): Argument is local if
	the pragma comes fron a predicate aspect and the context is a
	record declaration within the scope that declares the type.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor clarifications.
	* expander.adb, sem_aggr.adb: Add comments.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Check_Arg_Is_Local_Name): For an aspect that
	applies to a subprogram body, the name is the current scope,
	rather than being declared in the current scope.
	(Analyze_Pragma, case No_Return): Handle properly a No_Return
	aspect applied to a subprogram body.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Resolve_Iterable_Operation): Improve resolution
	of overloaded subprograms, and fix bug in handling of primitive
	operation Element.

2014-02-19  Pascal Obry  <obry@adacore.com>

	* s-os_lib.adb: Minor reformatting.

2014-02-19  Yannick Moy  <moy@adacore.com>

	* expander.adb (Expand): Do nothing inside generics.
	* sem_aggr.adb (Aggregate_Constraint_Checks): Do nothing inside
	generics.

2014-02-19  Yannick Moy  <moy@adacore.com>

	* exp_ch2.adb: Remove useless 'with' of unit Uintp.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, style.adb, sem_prag.adb, sem_ch13.adb: Minor reformatting
	* a-sequio.adb: Remove useless pragma Extensions_Allowed (no
	longer needed).

2014-02-19  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads,
	a-cforse.ads, a-cofove.ads: Add Iterable aspect to formal containers.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Analyze
	a package contract at the end of the private declarations (if
	applicable), otherwise analyze it and the end of the visible
	declarations.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* style.adb (Missing_Overriding): If subprogram is an
	instantiation, place warning on the instance node itself,
	without mention of the original generic. Do not emit message
	if explicit Ada version is older than the introduction of the
	overriding indicator.

2014-02-19  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Doc clarifications.

2014-02-19  Yannick Moy  <moy@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Do not remove side-effects
	inside a generic.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Get_Cursor_Type): Obtain cursor type from
	specified First primitive, rather than by name.
	(Validate_Iterable_Aspect, Resolve_Iterable_Operation): Use it,
	and extend error checking for missing primitives and incorrect
	signatures.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Check_Pragma_Implemented): Detect additional
	errors when a Synchronization aspect on an overriding protected
	operation does not match the given aspect on the overridden
	operation of an ancestor interface.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Loop_Pragma_Grouping): New routine.
	(Check_Loop_Pragma_Placement): Update
	comment on usage. Remove local variables Orig_Stmt and
	Within_Same_Sequence. Check that the current Loop_Invariant or
	Loop_Variant pragma is grouped together with other such pragmas.
	(Is_Loop_Pragma): New routine.
	(Prev_In_Loop): Removed.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* par-ch6.adb (P_Return): For extended return, end column lines
	up with RETURN.
	* par.adb: Minor documentation clarification.

2014-02-19  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Check_Loop_Pragma_Placement): Add check
	that Loop_Invariant and Loop_Variant appear consecutively.
	* gnat_rm.texi Update documentation of Loop_Invariant and
	Loop_Variant pragmas.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Document -gnatd.X.
	* par-ch5.adb (P_If_Statement): Always check THEN, even if not
	first token
	(Check_Then_Column): Ditto.
	* styleg.adb (Check_Then): Allow THEN on line after IF.
	(Check_Then): Check THEN placement under control of -gnatd.X
	* styleg.ads (Check_Then): Now called even if THEN is not first
	token on line.
	* stylesw.ads (Style_Check_If_Then_Layout): Document new
	relaxed rules.
	* gnat_ugn.texi: For -gnatyi, THEN can now be on line after IF.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* a-cfhama.adb, a-cfhase.adb, a-cforse.adb, a-cofove.adb, a-ngcefu.adb,
	a-teioed.adb, a-wtedit.adb, a-ztedit.adb, exp_ch5.adb, inline.adb,
	prj-pp.adb, prj-tree.adb, sem_ch12.adb, sem_ch8.adb,
	vms_conv.adb: Fix bad layout of IF statements

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb (Side_Effect_Free): Scalar if expressions can be SEF.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb: Update comments.

2014-02-19  Doug Rupp  <rupp@adacore.com>

	* bindgen.adb (Gen_Adainit) [VMS] New global Float_Format.
	* init.c (__gl_float_format): [VMS] New global.
	(__gnat_set_features): Call FP_CONTROL to set FPSR for the float
	representation in effect.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb Add with and use clause for Exp_Prag.
	(Expand_Contract_Cases): Relocated to Exp_Prag.
	* exp_ch6.ads (Expand_Contract_Cases): Relocated to Exp_Prag.
	* exp_prag.adb Add with and use clauses for Checks and Validsw.
	(Expand_Contract_Cases): Relocated from Exp_Ch6. Update the
	structure of the expanded code to showcase the evaluation of
	attribute 'Old prefixes. Add local variable Old_Evals. Expand
	any attribute 'Old references found within a consequence. Add
	circuitry to evaluate the prefixes of attribute 'Old that
	belong to a selected consequence.
	(Expand_Old_In_Consequence): New routine.
	* exp_prag.ads (Expand_Contract_Cases): Relocated from Exp_Ch6.
	* sem_attr.adb (Check_Use_In_Contract_Cases): Warn that a
	potentially unevaluated prefix is always evaluated.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_Min_Max_Attribute): Use Insert_Declaration
	(Expand_Min_Max_Attribute): Use Matching_Standard_Type.
	* exp_ch4.adb (Expand_N_Expression_With_Actions): Remove special
	handling for the case of Modify_Tree_For_C, this approach did
	not work.
	* exp_util.adb (Matching_Standard_Type): New function
	(Side_Effect_Free): New top level functions (from
	Remove_Side_Effects).
	* exp_util.ads (Side_Effect_Free): New top level functions
	(moved from body).
	* sinfo.ads: Minor comment updates.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Simple_Function_Return): If return
	type is unconstrained and uses the secondary stack, mark the
	enclosing function accordingly, to ensure that the value is not
	prematurely removed.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* par.adb Alphabetize the routines in Par.Sync.
	(Resync_Past_Malformed_Aspect): New routine.
	* par-ch13.adb (Get_Aspect_Specifications): Alphabetize local
	variables. Code and comment reformatting. Detect missing
	parentheses on aspects [Refined_]Global and [Refined_]Depends
	with a non-null definition.
	* par-sync.adb: Alphabetize all routines in this separate unit.
	(Resync_Past_Malformed_Aspect): New routine.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* sem_eval.ads, sem_eval.adb (Subtypes_Statically_Match): Return False
	if Esize values do not match.

2014-02-19  Yannick Moy  <moy@adacore.com>

	* sinfo.ads: Minor comment update.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* atree.ads: Minor reformatting (change Entity_Info to Einfo).

2014-02-19  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb (Find_Node_To_Be_Wrapped): An assignment statement
	that has the No_Ctrl_Actions flag is a suitable node to be
	wrapped if the assigned expression has no finalization actions.
	* sem_eval.adb (Eval_Entity_Name): For a compile time known
	boolean value, mark the corresponding condition SCO as constant.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb: Minor reformatting.
	* exp_util.ads (Matching_Standard_Type): New function.
	* exp_ch7.adb: Minor reformatting.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Get_Cursor_Type): Use scope of iterable type
	to find declaration for Cursor, to handle properly the case of
	a discriminated iterable type.

2014-02-19  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (GNATCmd): Always replace the object dirs of
	imported library projects with the library ALI dirs, when setting
	the object paths.
	* prj-env.ads (Ada_Objects_Path): Correct comments about
	argument Including_Libraries.

2014-02-19  Gary Dismukes  <dismukes@adacore.com>

	* gnat_rm.texi: Minor spelling fixes.

2014-02-19  Doug Rupp  <rupp@adacore.com>

	* init.c: Remove unneeded code.
	* fe.h (Float_Format): New macro
	* gcc-interface/trans.c (gigi): On VMS, set vms_float_format.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Refined_Global_Item):
	A state or variable acts as a constituent only it is part of an
	encapsulating state and the state has visible refinement.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Contract): Do not warn on a
	postcondition for a function when the expression does not mention
	'Result but the function has in-out parameters.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Add documentation on Value_Size forcing biased
	representation.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-xref.ads Remove the small table of letter and symbol usage as we
	already have one.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Emit specific error
	messages depending on the offending misplaced aspect specifications.
	(Diagnose_Misplaced_Aspect_Specifications): New routine.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Get_Cursor): Utility to retrieve cursor type
	for iterable aspect primitives.
	(Resolve_Iterable_Operation): Use expected signature of iterable
	aspect to resolve primitive when overloading is present.
	(Validate_Iterable_Aspect, Analyze_Aspects_At_Freeze_Point): use it.
	(Check_Signature): Removed.

2014-02-19  Yannick Moy  <moy@adacore.com>

	* sem_ch10.adb (Analyze_Proper_Body): Issue error on missing
	subunit in GNATprove_Mode.
	* sinfo.ads (GNATprove_Mode): Document error issued in GNATprove_Mode.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-xref.ads Alphabetize the contents of table
	Xref_Entity_Letters. Add an entry in table Xref_Entity_Letters
	for E_Abstract_State. List all letters and symbols in use.
	* sem_prag.adb (Analyze_Abstract_State): Update all calls
	to Create_Abstract_State to reflect the new signature.
	(Create_Abstract_State): Change subprogram profile and update
	the comment on usage. Use the proper location of the state
	declaration when creating a new abstract state entity. Do not
	generate an external name, but simply reuse the name coming from
	the state declaration.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Expression_With_Actions): Make sure
	declarations get properly inserted in Modify_Tree_For_C mode.
	* sinfo.ads: Minor comment addition.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* par-ch9.adb, exp_ch5.adb, sem_ch5.adb, exp_attr.adb, sem_util.adb,
	sem_util.ads, sem_ch13.adb, sem_ch13.ads: Minor reformatting.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* style.adb (Missing_Overriding): Warning does not apply in
	language versions prior to Ada 2005.
	* snames.ads-tmpl: Add Name_Iterable and Attribute_Iterable.
	* sem_attr.adb: Add Attribute_Iterable where needed.
	* exp_attr.adb: ditto.
	* exp_ch5.adb (Expand_Formal_Container_Loop): New procedure to
	handle loops and quantified expressions over types that have an
	iterable aspect.  Called from Expand_Iterator_Loop.
	* sem_ch5.adb (Analyze_Iterator_Specification): Recognize types
	with Iterable aspect.
	* sem_ch13.adb (Validate_Iterable_Aspect): Verify that the
	subprograms specified in the Iterable aspect have the proper
	signature involving container and cursor.
	(Check_Aspect_At_Freeze_Point): Analyze value of iterable aspect.
	* sem_ch13.ads (Validate_Iterable_Aspect): New subprogram.
	* sem_util.ads, sem_util.adb (Get_Iterable_Type_Primitive):
	New procedure to retrieve one of the primitives First, Last,
	or Has_Element, from the value of the iterable aspect of a
	formal container.
	(Is_Container_Element): Predicate to recognize expressions
	that denote an element of one of the predefined containers,
	for possible optimization.  This subprogram is not currently
	used, pending ARG discussions on the legality of the proposed
	optimization. Worth preserving for eventual use.
	(Is_Iterator): Recognize formal container types.
	* aspects.ads, aspects.adb: Add Aspect_Iterable where needed.

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_Min_Max_Attribute): New procedure
	(Expand_N_Attribute_Reference): Use this procedure for Min and Max.
	* exp_ch4.adb (Expand_N_Expression_With_Actions): Remove object
	declarations from list of actions.
	* output.ads, output.adb (Delete_Last_Char): New procedure.
	* sinfo.ads: Document handling of Mod and expression with actions
	in Modify_Tree_For_C mode.

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* par-ch9.adb (P_Task): Add a null statement to produce a
	well-formed task body when due to a previous syntax error the
	statement list is empty.

2014-02-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Dependency_Clause): Account
	for the case where a state with a non-null refinement matches a
	null output list. Comment reformatting.
	(Inputs_Match): Copy a solitary input to avoid an assertion failure
	when trying to match the same input in multiple clauses.

2014-02-19  Gary Dismukes  <dismukes@adacore.com>

	* sem_attr.adb: Minor typo fix.

2014-02-18  Robert Dewar  <dewar@adacore.com>

	* cstand.adb (Build_Signed_Integer_Type): Minor change of formal
	from Int to Nat (Build_Unsigned_Integer_Type): New procedure
	(Create_Standard): Create new unsigned types.
	* exp_ch4.adb (Expand_N_Op_Mod): Expand mod in Modify_Tree_For_C
	mode (Expand_N_Reference): Removed, problematic and not needed
	for now.
	* exp_ch4.ads (Expand_N_Reference): Removed, problematic and
	not needed for now.
	* exp_util.ads, exp_util.adb (Power_Of_Two): New function.
	* expander.adb: Remove call to Expand_N_Reference (problematic,
	and not needed now).
	* sem_aux.ads, sem_aux.adb (Corresponding_Unsigned_Type): New function.
	* stand.adb: Read and write unsigned type entities.
	* stand.ads: Add new unsigned types.

2014-02-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb (Analyze_Call): Do not mark a function call
	as being inside an assertion expression as the flag is now removed.
	(Check_Ghost_Subprogram_Call): Do not query the
	In_Assertion_Expression flag as it is now removed, instead use
	a predicate function.
	* sem_elab.adb (Check_Internal_Call_Continue): Do not query the
	In_Assertion_Expression flag as it is now removed, instead use
	a predicate function.
	* sem_prag.ads: Add new table Assertion_Expression_Pragma.
	* sem_util.adb Add with and use clause for Sem_Prag.
	(In_Assertion_Expression_Pragma): New routine.
	* sem_util.ads (In_Assertion_Expression_Pragma): New routine.
	* sinfo.adb (In_Assertion_Expression): Removed.
	(Set_In_Assertion_Expression): Removed.
	* sinfo.ads Remove flag In_Assertion_Expression along with its
	use in nodes.
	(In_Assertion_Expression): Removed along with
	pragma Inline.	(Set_In_Assertion_Expression): Removed along
	with pragma Inline.

2014-02-18  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi: gnatpp section: add note that '-j' cannot be
	used together with '-r', '-rf' or '-rnb' options.

2014-02-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Comment
	and code reformatting. Use separate routines to check the
	legality of attribute 'Old in certain pragmas. Verify
	the use of 'Old, 'Result and locally declared entities
	within the prefix of 'Old.
	(Check_References_In_Prefix): New routine.
	(Check_Use_In_Contract_Cases): New routine.
	(Check_Use_In_Test_Case): New routine.

2014-02-18  Vincent Celier  <celier@adacore.com>

	* sem_aux.adb (Is_By_Reference_Type): For each components of
	a record type, check also if the component is volatile as it
	may have an aspect that makes it volatile. If it is, then the
	record type is a by reference type.

2014-02-18  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb: Minor reformatting.
	* exp_ch4.ads, exp_ch4.adb (Expand_N_Reference): New procedure.
	* exp_util.adb (Remove_Side_Effects): Add conditional expressions
	as another case where we don't generate N_Reference nodes for
	primitive types.
	* expander.adb (Expand): Add call to Expand_N_Reference.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Refined_Pragma): Remove
	local variable Pack_Spec. Refinement pragmas may now apply to
	bodies of both visible and private subprograms.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_Loop_Entry_Attribute):
	Minor change (Attr => N) (Expand_Pred_Succ): New name
	Expand_Pred_Succ_Attribute (Expand_N_Attribute_Reference, case
	Max): Expand into if expression if Modify_Tree_For_C mode.
	(Expand_N_Attribute_Reference, case Min): ditto
	* sinfo.ads: Modify_Tree_For_C takes care of expanding Min and
	Max attributes.

2014-02-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): Do not generate
	predicate check if this is an internal declaration with
	No_Initialization set, as for an expanded aggregate component.

2014-02-06  Doug Rupp  <rupp@adacore.com>

	* init.c (__gnat_default_resignal_p) [VMS]: Test for and resignal
	conditions with severity of "SUCCESS" or "INFORMATIONAL".

2014-02-06  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Analyze pragma
	Debug rewritten node before rewriting it as a null statement in
	GNATprove mode.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb (Min_Max): New procedure.
	(Max_Alignment_For_Allocation_Max_Size_In_Storage_Elements): New
	procedure.

2014-02-06  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi, vms_data.ads: Add documentation of '-t' option for
	gnatmetric/gnatpp.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Abstract_State): Update
	all calls to Create_Abstract_State to pass the proper state
	"declaration".
	(Create_Abstract_State): Add new formal parameter
	State_Decl along with comment on usage. Establish a link between
	the abstract state entity and the state declaration.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case Max): Check for improper
	comparison of unordered enumeration type.
	(Analyze_Attribute, case Max): Check for improper comparison of
	unordered enumeration type.
	* sem_res.adb (Bad_Unordered_Enumeration_Reference): Moved to
	sem_util.adb.
	* sem_util.ads, sem_util.adb (Bad_Unordered_Enumeration_Reference):
	Moved here from Sem_Res.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_prag.adb, sem_res.adb, lib-xref.adb: Minor
	reformatting.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Process_Formals): Error message reformatting.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Handle_Late_Controlled_Primitive): Add local
	variable Spec. Do not inherit the null indicator from the
	subprogram body when generating the spec.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* casing.adb (Determine_Casing): Consider SPARK_Mode to be
	mixed case.

2014-02-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Function): Predicate is false
	when the function has a foreign convention, but not if only the
	limited return type has such a convention.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Handle_Late_Controlled_Primitive): Remove local
	variable Spec. Comment reformatting. Use Copy_Separate_Tree
	rather than New_Copy_Tree when building the corresponding
	subprogram declaration.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Global_Item): Remove
	the mode-related checks on abstract states with enabled external
	properties.
	(Property_Error): Removed.

2014-02-06  Javier Miranda  <miranda@adacore.com>

	* lib-xref.adb (Generate_Reference): When
	generating the reference to the first private entity take care
	of handling swapped entities.

2014-02-06  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi, vms_data.ads: Add documentation of -j option for
	gnatmetric.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Shift_Left): Handle shift counts greater
	than the word size when operating in Modify_Tree_For_C mode.
	* sinfo.ads: Add documentation section on Modify_Tree_For_C mode.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* erroutc.adb (Warning_Specifically_Suppressed.Matches):
	compare is case insensitive.
	* gnat_rm.texi: Document that string compare for Warnings Off
	is now case insensitive.

2014-02-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_rm.texi: Small wording tweak.

2014-02-06  Pascal Obry  <obry@adacore.com>

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

2014-02-06  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Set
	SPARK_Mode pragma component for all subprograms, including stubs.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch10.adb (Analyze_Package_Body_Stub): Maintain
	the configuration options of the enclosing context in a
	stack-like fasion.
	(Analyze_Subprogram_Body_Stub): Maintain the
	configuration options of the enclosing context in a stack-like
	fashion.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* debug.adb: -gnatd.u sets Modify_Tree_For C
	* exp_ch4.adb (Expand_N_Op_Rotate_Left): Expand out
	if Modify_Tree_For_C (Expand_N_Op_Rotate_Right): ditto.
	(Expand_N_Op_Arithmetic_Right_Shift): ditto.
	* exp_intr.adb (Expand_Shift): Call expander so we do
	Modify_Tree_For_C expansions.
	* gnat1drv.adb (Adjust_Global_Switches): Set Modify_Tree_For_C
	if -gnatd.u set.

2014-02-06  Fedor Rybin  <frybin@adacore.com>

	* prj-proc.ads (Tree_Loaded_Callback): new type Callback used
	after the phase 1 of the processing of each aggregated project
	to get access to project trees of aggregated projects.
	(Process_Project_Tree_Phase_1): new parameter On_New_Tree_Loaded
	If specified, On_New_Tree_Loaded is called after each aggregated
	project has been processed succesfully.
	(Process): new parameter On_New_Tree_Loaded.
	* prj-proc.adb (Process_Aggregated_Projects): On_New_Tree_Loaded
	callback added after processing of each aggregated project.
	(Recursive_Process): new parameter On_New_Tree_Loaded.
	(Process): new parameter On_New_Tree_Loaded.
	(Process_Project_Tree_Phase_1): new parameter On_New_Tree_Loaded.
	* prj-conf.ads (Parse_Project_And_Apply_Config): new parameter
	On_New_Tree_Loaded.
	* prj-conf.adb (Parse_Project_And_Apply_Config): new parameter
	On_New_Tree_Loaded.

2014-02-06  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Implement --insert-blank-lines and
	--preserve-blank-lines switches.

2014-02-06  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi, vms_data.ads: Add documentation of -j option for
	gnatelim.

2014-02-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_rm.texi (Pragma Optimize_Alignment): Document the effect
	of the pragma on individual objects.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb Node29 is now used as BIP_Initialization_Call.
	(BIP_Initialization_Call): New routine.
	(Set_BIP_Initialization_Call): New routine.
	(Write_Field29_Name): Add an entry for constants and variables.
	* einfo.ads Add new attribute BIP_Initialization_Call and update
	its usage in nodes.
	(BIP_Initialization_Call): New routine along with pragma Inline.
	(Set_BIP_Initialization_Call): New routine along with pragma Inline.
	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
	Add local declaration Res_Decl. Capture the build-in-place
	initialization call when the related object declaration has
	created a transient block.
	* exp_ch7.adb (Process_Transient_Objects): Add local variable
	Fin_Insrt. Recognize a scenario where an object declaration acts
	as a transient context and is initialized by a build-in-place
	function call.

2014-02-06  Pascal Obry  <obry@adacore.com>

	* prj-util.adb (For_Interface_Sources): Fix handling of required
	bodies for aggregate libs.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* nlists.ads: Minor comment clarifications.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Set Modify_Tree_For_C
	if gnatd.V set.
	* opt.ads (Modify_Tree_For_C): New flag.
	* output.ads, output.adb (Last_Char): New function.

2014-02-06  Pascal Obry  <obry@adacore.com>

	* projects.texi, prj-env.adb (Initialize_Default_Project_Path): Add
	share/gpr for cross-builds.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* exp_util.ads, checks.adb, sem_prag.adb, prj-util.adb, sem_ch13.adb:
	Minor reformatting and code clean ups.

2014-02-06  Pascal Obry  <obry@adacore.com>

	* prj-util.adb (For_Interface_Sources): Skip non compilable languages.
	* prj.ads: Minor typo fix in comment.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Depends_In_Decl_Part): Add
	local variable Expr. Flag clauses with extra parenthesis as this
	is not allowed by the syntax of the pragma. Code reformatting.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Alphabetize
	variables. Rename variabme Tnn to Temp. Do not create a temporary
	if assertions are disabled. Find enclosing routine _Postconditions
	and insert the temporary that captures the value of the prefix
	before the routine.
	* exp_ch6.adb (Build_Postconditions_Procedure):
	Insert the generated _Postconditions routine
	before the first source declaration of the related
	subprogram.
	(Insert_After_Last_Declaration): Removed.
	(Insert_Before_First_Source_Declaration): New routine.

2014-02-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb, exp_util.ads (Within_Internal_Subprogram):
	Utility to determine whether current expansion is for the body
	of a predefined primitive operation.
	(Make_Predicate_Check): Use Within_Internal_Subpgram
	* checks.adb (Apply_Predicate_Check): Use
	Within_Internal_Subprogram
	* sem_ch13.adb (Freeze_Entity_Checks): Ditto.

2014-02-06  Pascal Obry  <obry@adacore.com>

	* prj.ads, prj-util.adb: Minor reformatting.

2014-02-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Subprogram_Contract, Append_Enabled_Item):
	Take into account the Split_PPC flag to ensure that conjuncts
	in a composite postcondition aspect are tested in source order.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Generic_Subprogram_Body): Flag illegal
	use of SPARK_Mode.
	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Flag
	illegal use of SPARK_Mode.
	(Instantiate_Subprogram_Body): Flag illegal use of SPARK_Mode.
	* sem_prag.adb (Analyze_Pragma): Code reformatting.
	* sem_util.adb Add with and use clause for Aspects.
	(Check_SPARK_Mode_In_Generic): New routine.
	* sem_util.ads (Check_SPARK_Mode_In_Generic): New routine.

2014-02-06  Thomas Quinot  <quinot@adacore.com>

	* a-calend.adb (Formatting_Operations.Split): Ensure that
	Time_Error is raised for invalid time values.

2014-02-06  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Rewrite as a null statement
	in GNATprove_Mode.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (Is_Discriminant_Check_Function): New flag.
	* exp_ch3.adb (Build_Dcheck_Function): Set
	Is_Discriminant_Check_Function.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Is_Subprogram_Call): Inspect
	the original tree in certain cases where a construct has been
	factored out and replaced by a reference to a temporary.

2014-02-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Process_Full_View): Fix typo in the order of
	parameters when propagating predicate function to full view.
	(Find_Type_Of_Object): Freeze base type of object type to catch
	premature use of discriminated private type without a full view.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* sprint.adb: Minor reformatting.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Process_Transient_Object): Add local variable
	Temp_Ins. When the transient object is initialized by an
	aggregate, the hook must capture the object after the last
	component assignment takes place.
	* exp_ch7.adb (Detect_Subprogram_Call): Expose the subprogram to
	routine Is_Subprogram_Call.
	(Is_Subprogram_Call): Inspect an
	aggregate that has been heavily expanded for subprogram calls.
	(Process_Transient_Objects): Add local variables Expr, Ptr_Id
	and Temp_Ins.  Remove the nested declare block and adjust the
	indentation. When the transient object is initialized by an
	aggregate, the hook must capture the object after the last
	component assignment takes place.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Global_Item): Detect illegal uses of
	external states with enabled properties that do not match the
	global mode.
	(Property_Error): New routine.
	* sem_res.adb (Property_Error): New routine.
	(Resolve_Actuals): Detect illegal uses of external variables with
	enabled properties in procedure calls that do not match the mode of
	the corresponding formal parameter.

2014-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Has_Enabled_Property): Rename
	formal parameter Prop_Nam to Property. Update the comment on usage
	and all occurrences in the body. Add local variable Prop_Nam. When
	inspecting a property with an expression, the property name
	appears as the first choice of the component association.

2014-02-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, einfo.ads, freeze.adb, sem_ch8.adb: Minor reformatting.

2014-02-04  Gary Dismukes  <dismukes@adacore.com>

	* sem_aggr.adb: Change "runtime" to "run time" in warning message,
	for consistency with other messages.

2014-02-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb  (Expand_Iterator_Loop):  For a container element
	iterator, indicate that the element is a constant if the container
	type does not have a variable indexing aspect.
	* sem_ch8.adb (Analyze_Object_Renaming): If the entity is already
	marked as constant, do not reset its Ekind, to ensure that
	container elements in an element loop are not modified if the
	container (e.g. a hashed set) only has a constant indexing aspect.

2014-02-04  Arnaud Charlet  <charlet@adacore.com>

	* g-souinf.ads: Subprograms in this unit are actually not pure.
	* freeze.adb (Freeze_Subprogram): Do not reset Is_Pure for Intrinsics.
	* einfo.ads (Is_Pure): Update doc to match implementation.

2014-02-04  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch13.adb: Minor spelling fix.

2014-02-04  Robert Dewar  <dewar@adacore.com>

	* opt.ads: Minor comment update.

2014-02-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Expression_With_Actions): Use Rewrite
	instead of Replace.

2014-02-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): Suppress warnings
	on null expressions if component type is non-null, when the
	corresponding association covers an empty range of index values.

2014-02-04  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads: Further comments on N_Expression_With_Actions node.

2014-02-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Refined_Depends_In_Decl_Part): Remove global
	variables Out_Items and Ref_Global. Remove local constant
	Body_Id along with dummy variables D1, D2, D3, D4, D5, D6, D7
	and D8. Remove the useless collection of global items as this
	was a leftover from an earlier version of the routine. Move
	several routines out to avoid deep nesting and indentation.
	(Inputs_Match): Add formal parameter Dep_Clause. Rename formal
	parameter Do_Checks to Post_Errors. Update the comment on usage.
	(Is_Matching_Input): Renamed to Input_Match. Add formal parameters
	Ref_Inputs and Do_Checks. Rename formal parameter Do_Checks
	to Post_Errors. Update the comment on usage. Account for the
	case where a self referential state may have a null input_list.
	(Is_Self_Referential): New routine.

2014-02-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): If the
	entity renames an expression, as in the case of an object of
	an unconstrained type initialized by a function call, defer the
	rewriting of the expression to the expander.
	* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
	'Alignment): If the entity renames an expression, introduce
	temporary to capture value, and rewrite original declaration to
	use temporary.

2014-02-04  Gary Dismukes  <dismukes@adacore.com>

	* g-comlin.adb: Minor typo fix.

2014-02-04  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_All): Types derived from a formal
	access_to_classwide type do not have a finalization master.

2014-02-04  Robert Dewar  <dewar@adacore.com>

	* sprint.adb: Minor reformatting.

2014-02-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Expression_With_Actions): Eliminate
	cases where Actions is a null list.
	* sinfo.ads (N_Expression_With_Actions): Actions can be
	temporarily empty during semantic analysis, but must be non-empty
	in the final expanded tree.

2014-01-31  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb: Minor reformatting.

2014-01-31  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb (Set_Command_Line): Take the switches
	configuration from the Command_Line_Config.

2014-01-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Refinement_Clause): Guard against a malformed
	refinement clause.

2014-01-31  Vincent Celier  <celier@adacore.com>

	* projects.texi: Add more documentation about others used as an
	index in indexed attributes.

2014-01-31  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Minor update.
	* gnat_rm.texi: Add example to Restriction_Warnings documentation.
	* exp_util.adb: Minor reformatting.

2014-01-31  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb (Expand_Entry_Barrier): Warn if the barrier
	depends on data that is not private to the protected object,
	and potentially modifiable in unsynchronized fashion.

2014-01-31  Yannick Moy  <moy@adacore.com>

	* erroutc.adb (Validate_Specific_Warnings): Remove special case for
	GNATprove_Mode.

2014-01-31  Robert Dewar  <dewar@adacore.com>

	* prj-attr.ads (First_Attribute_Of): Returns Empty_Attribute
	for Unknown_Package.
	* sem_ch6.adb, sem_attr.adb: Minor comment addition.

2014-01-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Build_Allocate_Deallocate_Proc): Rewrite
	the logic that generates a runtime check to determine the
	controlled status of the object about to be allocated or
	deallocated. Class-wide types now always use a runtime check
	even if they appear as generic actuals.
	(Find_Object): Detect
	a special case that involves interface class-wide types because
	the object appears as a complex expression.

2014-01-31  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_Formals): In Ada2012 mode, place
	subprogram with an incomplete untagged formals on the list of
	private dependents, to verify that the type is properly completed
	in the private part.
	* sem_attr.adb: Code clean up.

2014-01-31  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb: Minor reformatting.

2014-01-31  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb (First_Attribute_Of): Return Unknown_Attribute
	when Pkg is unknown.

2014-01-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Entity_Name): Comment
	reformatting. Allow volatile objects in various generated checks.

2014-01-31  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Update): For a record
	component association, set the etype of the identifier, for
	SPARK use.

2014-01-31  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Has_Visibility_Of_Subprogram): If type is not
	declared in a package, not checks can apply to the subprogram.

2014-01-31  Robert Dewar  <dewar@adacore.com>

	* erroutc.adb (Validate_Specific_Warnings): Warnings are
	controlled -gnatw.W.
	* gnat_ugn.texi: Document new warnings controlled by -gnatw.w.
	* opt.ads (Warn_On_Warnings_Off): Now controls more cases.

2014-01-31  Arnaud Charlet  <charlet@adacore.com>

	* exp_disp.adb: Update comments.

2014-01-31  Yannick Moy  <moy@adacore.com>

	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration,
	Save_Global_References): Guard access to expression in aspect.

2014-01-31  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Pragma/Pragma_SPARK_Mode):
	Issue an error when the pragma is applied to a generic unit,
	a generic declaration, or inside a generic.

2014-01-31  Yannick Moy  <moy@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Set SPARK_Mode on renaming
	entity.

2014-01-31  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, s-tassta.adb, s-tposen.adb, s-tposen.ads: Minor
	reformatting.

2014-01-31  Tristan Gingold  <gingold@adacore.com>

	* exp_disp.adb: Add a historic note.

2014-01-31  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb (Warn_On_Useless_Assignments): Add call to
	Process_Deferred_References.

2014-01-31  Yannick Moy  <moy@adacore.com>

	* erroutc.adb (Validate_Specific_Warnings): Do not issue a message for
	ineffective pragma Warnings(Off) in GNATprove_Mode.

2014-01-31  Bob Duff  <duff@adacore.com>

	* s-taskin.ads: Minor comment fix.
	* s-tassta.adb (Abort_Dependents): Don't abort all dependents;
	just direct dependents. If this is actually an abort, each task
	will take care of aborting its dependents, so all dependents will
	get aborted, as before. However, when this is called the second
	time from Vulnerable_Complete_Master "for convenience" (i.e. to
	kill off tasks waiting at terminate alternatives), aborting
	indirect dependents is wrong, because it causes some unrelated
	tasks to get aborted.

2014-01-31  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2014-01-31  Robert Dewar  <dewar@adacore.com>

	* exp_ch2.adb: New calling sequence for Is_LHS.
	* frontend.adb: Add call to Process_Deferred_References.
	* lib-xref.ads, lib-xref.adb (Process_Deferred_References): New.
	(Deferred_References): New table.
	* sem_ch8.adb (Find_Direct_Name): Make deferred reference table
	entries.
	(Find_Expanded_Name): Ditto.
	* sem_res.adb: New calling sequence for Is_LHS.
	* sem_util.ads, sem_util.adb (Is_LHS): New calling sequence.
	* sem_warn.adb: Call Process_Deferred_References before issuing
	warnings.

2014-01-31  Tristan Gingold  <gingold@adacore.com>

	* exp_util.adb (Corresponding_Runtime_Package): Restrict the
	use of System_Tasking_Protected_Objects_Single_Entry.
	* exp_ch9.adb (Build_Simple_Entry_Call): Remove Mode parameter
	of Protected_Single_Entry_Call.
	(Expand_N_Timed_Entry_Call): Remove single_entry case.
	* exp_disp.adb (Make_Disp_Asynchronous_Select_Body): Remove
	single_entry case.
	(Make_Disp_Timed_Select_Body): Likewise.
	* rtsfind.ads (RE_Timed_Protected_Single_Entry_Call): Remove.
	* s-tposen.adb (Send_Program_Error, PO_Do_Or_Queue): Remove
	Self_Id parameter.
	(Wakeup_Entry_Caller): Remove Self_ID and New_State parameters.
	(Wait_For_Completion_With_Timeout): Remove.
	(Protected_Single_Entry_Call): Remove Mode parameter
	(always Simple_Call).
	(Service_Entry): Remove Self_Id constant (not used anymore).
	(Timed_Protected_Single_Entry_Call): Remove.
	* s-tposen.ads (Timed_Protected_Single_Entry_Call): Remove.
	(Protected_Single_Entry_Call): Remove Mode parameter.

2014-01-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Get_Pragma): Handle the retrieval of pragma Refined_Post.
	* einfo.ads (Get_Pragma): Update the comment on special pragmas
	handled by this routine.
	* sem_prag.adb (Analyze_Pragma): Add a legal pragma Refined_Post
	to the contract of the related subprogram body.
	* sem_util.adb (Add_Contract_Item): Handle the insertion of
	pragma Refined_Post into the contract of a subprogram body.
	* sinfo.ads Update the documentation of node N_Contract.
	* sem_res.adb (Resolve_Entity_Name): Add a guard
	to detect abstract states and variables only when checking the
	SPARK 2014 rules concerning volatile object placement.

2014-01-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Find_Equality_Types, Try_One_Interp): within an instance,
	null is compatible with any access type.

2014-01-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Find_Placement_In_State_Space): Assume that the default
	placement is not in a package.

2014-01-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Has_Enabled_Property): Compare the character field of
	the sole property.

2014-01-29  Robert Dewar  <dewar@adacore.com>

	* sem_intr.adb, a-ztexio.ads, sinfo.ads, sem_res.adb, gnatlink.adb,
	vms_conv.adb, a-except.ads, a-except-2005.ads, a-teioed.adb,
	sem_warn.ads, treepr.ads, erroutc.ads, a-excach.adb: Minor reformatting.

2014-01-29  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads, sem_util.adb (In_Pragma_Expression): New function.
	* sem_warn.adb (Check_References): Suppress warnings if inside
	Initial_Condition pragma.

2014-01-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Missing_Part_Of): List all values of
	State_Space_Kind for readability reasons. Do not emit an error on
	a private item when the enclosing package lacks aspect/pragma
	Abstract_State. Do not emit an error on a private package
	instantiation when the corresponding generic template lacks
	visible state.
	(Has_Visible_State): New routine.
	* sem_util.adb (Find_Placement_In_State_Space): The visible
	declarations of any kind of child units in general act as proper
	placement location.

2014-01-29  Robert Dewar  <dewar@adacore.com>

	* a-except-2005.adb, a-except.adb, a-excpol-abort.adb, a-exstat.adb,
	ali.adb, a-numaux.ads, a-numaux-darwin.ads, a-numaux-libc-x86.ads,
	a-numaux-vms.ads, a-numaux-vxworks.ads, a-numaux-x86.ads, aspects.ads,
	a-taside.adb, a-teioed.adb, a-textio.adb, a-textio.ads, atree.adb,
	atree.ads, a-witeio.adb, a-witeio.ads, a-wtedit.adb, a-ztedit.adb,
	a-ztexio.adb, bcheck.adb, binde.adb, checks.adb, comperr.adb,
	cstand.adb, debug_a.adb, einfo.ads, errout.adb, erroutc.adb,
	eval_fat.adb, exp_aggr.adb, exp_attr.adb, exp_ch11.adb, exp_ch3.adb,
	exp_ch4.adb, exp_ch5.adb, exp_ch6.adb, exp_ch9.adb, exp_dbug.adb,
	exp_disp.adb, exp_fixd.adb, exp_imgv.adb, exp_intr.adb, exp_util.adb,
	freeze.adb, frontend.adb, g-comlin.ads, g-mbdira.adb, gnat1drv.adb,
	gprep.adb, g-spipat.adb, i-cpp.ads, i-vxwork.ads, i-vxwork-x86.ads,
	krunch.ads, layout.adb, lib-load.adb, lib-writ.adb, lib-writ.ads,
	live.adb, namet.ads, osint.adb, osint-c.adb, output.ads, par.adb,
	par-ch10.adb, par-ch13.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb,
	par-ch6.adb, par-ch9.adb, par-endh.adb, par-labl.adb, par-prag.adb,
	par-sync.adb, par-tchk.adb, par-util.adb, prj.adb, repinfo.adb,
	rtsfind.adb, s-arit64.adb, s-asthan-vms-alpha.adb,
	s-asthan-vms-ia64.adb, s-bignum.adb, scans.adb, scng.adb, s-dimmks.ads,
	sem_aggr.adb, sem_attr.adb, sem_aux.adb, sem_cat.adb, sem_ch10.adb,
	sem_ch12.adb, sem_ch13.adb, sem_ch13.ads, sem_ch3.adb, sem_ch4.adb,
	sem_ch5.adb, sem_ch6.adb, sem_ch8.adb, sem_disp.adb, sem_elab.adb,
	sem_elim.adb, sem_eval.adb, sem_intr.adb, sem_prag.adb, sem_res.adb,
	sem_type.adb, sem_util.adb, sem_warn.adb, set_targ.adb, s-fatgen.adb,
	s-fatgen.ads, s-fileio.adb, s-imgcha.adb, s-imgrea.adb, sinfo.ads,
	sinput-c.adb, snames.ads-tmpl, s-os_lib.adb, sprint.adb,
	s-regpat.adb, s-secsta.adb, s-stalib.ads,
	s-stchop.adb, s-stoele.ads, stand.ads, s-taprop-solaris.adb,
	s-tasdeb-vms.adb, s-tasini.adb, s-tassta.adb, s-valdec.adb,
	s-valuti.adb, s-wchjis.adb, s-wchwts.adb, system.ads, system-vms_64.ads,
	system-vms-ia64.ads, treepr.adb, types.ads, uintp.adb, uname.adb,
	urealp.adb, usage.adb, vxaddr2line.adb: Minor reformatting.

2014-01-29  Robert Dewar  <dewar@adacore.com>

	* expander.adb: Minor reformatting.

2014-01-29  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Predefined_Primitive_Bodies): Adding documentation to
	previous patch.

2014-01-29  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Predefined_Primitive_Bodies): Complete the code
	that checks if an interface types defines the predefined "="
	function because the compiler was erroneously not generating the
	predefined "=" primitive as soon as the name of some interface
	primitive is "=" (formals were not checked).

2014-01-29  Ed Schonberg  <schonberg@adacore.com>

	* expander.adb (Expander): In GNATprove mode, do not process
	transient scopes: they are in general not created in this mode,
	and an attempt to examine them will lead to constraint errors when
	processing configuration pragmas that have analyzable expressions.

2014-01-29  Vincent Celier  <celier@adacore.com>

	* clean.adb (Gnatclean): Fail if main project is an aggregate
	project or if there is an aggregate library project in the
	project tree.
	* gnatcmd.adb: Fail if the main project is an aggregate project
	or if there is an aggegate library project in the project tree.
	* make.adb (Initialize): : Fail if main project is an aggregate
	project or if there is an aggregate library project in the
	project tree.
	* makeutl.ads (Aggregate_Libraries_In): New Boolean function.
	* prj-makr.adb (Initialize): Fail if the main project is an
	aggregate project or an aggregate library project.

2014-01-29  Vincent Celier  <celier@adacore.com>

	* prj-part.adb (Check_Import_Aggregate): New procedure
	to check if an imported project is an aggregate project.
	(Parse_Single_Project): Call Check_Import_Aggregate
	* projects.texi: Document that aggregate projects cannot be
	extended or imported.

2014-01-29  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, sem_ch7.ads, s-regexp.adb, sem_ch13.adb: Minor
	reformatting and code clean up.
	* gnat_ugn.texi: Add documentation section on Atomic Variables
	and Optimization.

2014-01-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb Flag264 is now unused.
	(Has_Body_References): Removed.
	(Set_Has_Body_References): Removed.
	(Write_Entity_Flags): Remove the output for flag Has_Body_References.
	* einfo.ads Update the comment on usage of attribute
	Body_References. Remove attribute Has_Body_References and its
	usage in nodes.
	(Has_Body_References): Removed along with pragma Inline.
	(Set_Has_Body_References): Removed along with pragma Inline.
	* sem_prag.adb (Analyze_Global_Item): Move the call to
	Record_Possible_Body_Reference in the state related checks
	section. Add a comment intended function.
	(Analyze_Input_Output): Move the call to Record_Possible_Body_Reference
	in the state related checks section. Add a comment intended function.
	(Analyze_Refinement_Clause): Cleanup the illegal body reference
	reporting. Add a comment on timing of error reporting.
	(Record_Possible_Body_Reference): Reimplement the routine.

2014-01-29  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Mains.Find_File_Add_Extension): Only look for specs for
	unit-based languages.
	(Mains.Complete_Mains.Do_Complete): Use the source file project
	tree when calling Find_File_Add_Extension. Use the correct
	project name when reporting an error.

2014-01-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb Add an entry for aspect Part_Of in table
	Canonical_Aspect.
	* aspects.ads Add an entry for aspect Part_Of in tables Aspect_Id,
	Aspect_Argument, Aspect_Names and Aspect_Delay.
	* atree.h Define Elist9.
	* atree.adb (Elist9): New routine.
	(Set_Elist9): New routine.
	* atree.ads (Elist9): New routine.
	(Set_Elist9): New routine.
	* einfo.adb Add Part_Of_Constituents and Encapsulating_State to
	the list of node usage.  Remove Refined_State from the list of
	node usage.
	(Encapsulating_State): New routine.
	(Get_Pragma):
	Handle pragma Part_Of; (Part_Of_Constituents): New routine.
	(Refined_State): Removed.
	(Set_Encapsulating_State): New routine.
	(Set_Part_Of_Constituents): New routine.
	(Set_Refined_State): Removed.
	(Write_Field9_Name): Add an entry
	for Part_Of_Constituents (Write_Field10_Name): Add an entry for
	Encapsulating_State. Remove the entry for Refined_State.
	* einfo.ads Add new attributes Encapsulating_State
	and Part_Of_Constituents alond with their usage in
	entities. Remove attribute Refined_State along with its
	usage in entities.
	(Encapsulating_State): New routine and
	pragma Inline.	(Get_Pragma): Update the comment on usage.
	(Part_Of_Constituents): New routine and pragma Inline.
	(Refined_State): Removed along with pragma Inline.
	(Set_Encapsulating_State): New routine and pragma Inline.
	(Set_Part_Of_Constituents): New routine and pragma Inline.
	(Set_Refined_State): Removed along with pragma Inline.
	* par-prag.adb Pragma Part_Of does not need any special processing
	by the parser.
	* sem_ch3.adb (Analyze_Declarations): Remove local variables
	Body_Id and Prag. Call separate routines to analyze the
	contract of a package [body].
	(Analyze_Object_Contract):
	Update the comment on usage. Remove local variables
	Items and Nam. Use Get_Pragma rather than traversing the
	classification list.  Verify whether the lack of indicator
	Part_Of agrees with the placement of the variable in state space.
	(Analyze_Object_Declaration): Initialize the encapsulating state
	of a variable.	(Requires_State_Refinement): Moved to sem_util.
	* sem_ch7.adb (Analyze_Package_Body_Contract): New routine.
	(Analyze_Package_Contract): New routine.
	* sem_ch7.ads (Analyze_Package_Body_Contract): New routine.
	(Analyze_Package_Contract): New routine.
	* sem_ch10.adb (Decorate_State): Initialize the encapsulating
	state and Part_Of constituents.
	* sem_ch13.adb (Analyze_Aspect_Specifications):
	Add processing for aspect Part_Of. Update all
	calls to Decorate_Delayed_Aspect_And_Pragma.
	(Check_Aspect_At_Freeze_Point): Aspect Part_Of does
	not need any special processing at freeze time.
	(Decorate_Delayed_Aspect_And_Pragma): Renamed to
	Decorate_Aspect_And_Pragma.  Add formal parameter Delayed and
	update the associated comment.
	* sem_prag.adb Add an entry for pragma Part_Of in table Sig_Flags.
	(Analyze_Abstract_State): Add new global variable State_Id. Remove
	local constants Errors and Loc. Remove local variables Is_Null
	and State_Nam. Create the entity of the abstract state on the
	spot, before all remaining checks are performed. Verify that a
	missing Part_Of option agrees with the placement of the abstract
	state within the state space.
	(Analyze_Depends_In_Decl_Part):
	Add new global variables Constits_Seen and States_Seen. Check
	that a state and a corresponding constituent do not appear
	in pragma [Refined_]Depends.
	(Analyze_Global_In_Decl_Part):
	Add new global variables Constits_Seen and States_Seen. Check
	that a state and a corresponding constituent do not appear
	in pragma [Refined_]Global.
	(Analyze_Global_Item):
	Remove the now obsolete code that deals with Part_Of.
	Add the entity of the global item to the list of processed
	items.	(Analyze_Initializes_In_Decl_Part): Add new global
	variables Constits_Seen and States_Seen. Check that a state
	and a corresponding constituent do not appear in pragma
	Initializes.
	(Analyze_Initialization_Item): Add the entity
	of the initialization item to the list of processed items.
	(Analyze_Input_Item): Add the entity of the initialization
	item to the list of processed items.
	(Analyze_Input_Output):
	Remove the now obsolete code that deals with Part_Of.  Add the
	entity of the input/output to the list of processed items.
	(Analyze_Part_Of): New routine.
	(Analyze_Part_Of_Option): Remove
	local constant Par_State. Add local constant Encaps and local
	variables Encaps_Id and Legal. Use Analyze_Part of to analyze
	the option. Turn the related state into a Part_Of constituent
	if the option is legal.
	(Analyze_Pragma): Add processing
	for pragma Part_Of.
	(Analyze_Refined_State_In_Decl_Part):
	Remove global constants Pack_Body and Spec_Id. Remove
	global variables Abstr_States and Hidden_States. Add new
	global variables Available_States, Body_Id, Body_States and
	Spec_Id. Add new local constant Body_Decl. Reimplement the
	logic that extracts the states available for refinement from
	the related package and the body hidden states of the said
	package.
	(Analyze_Refinement_Clause): Add local variable Part_Of_Constits.
	(Check_Applicable_Policy): Alphabetize body.
	(Check_Dependency_Clause): Replace Refined_State
	with Encapsulating_State.
	(Check_Matching_Constituent):
	Reimplement the logic that determines whether an item is a valid
	/ invalid constituent of the current refined state. Return when
	a construct does not denote a valid abstract state. Extract the
	list of Part_Of constituents for further analysis. Check that all
	Part_Of constituents of a state have been used in its refinement.
	(Check_Matching_State): Update the comment on usage. Operate
	on the list of available states.
	(Check_Missing_Part_Of): New routine.
	(Check_Refined_Global_Item): Replace Refined_State
	with Encapsulating_State.
	(Check_State_And_Constituent_Use): New routine.
	(Create_Abstract_State): New routine.
	(Is_Matching_Input): Replace Refined_State with Encapsulating_State.
	(Is_Part_Of): Removed.
	(Collect_Body_States): New routine.
	(Collect_Constituent): Replace Refined_State with Encapsulating_State.
	(Collect_Hidden_States): Removed.
	(Report_Unrefined_States): Change the profile of the procedure along
	with the comment on usage.
	(Report_Unused_Constituents): New routine.
	(Report_Unused_Hidden_States): Removed.
	(Report_Unused_States): New routine.
	* sem_prag.ads (Check_Missing_Part_Of): New routine.
	* sem_util.adb (Add_Contract_Item): Pragma Part_Of can now
	appear in the classification pragmas of a package instantiation
	or a variable.
	(Find_Placement_In_State_Space): New routine.
	(Is_Child): Removed.
	(Is_Child_Or_Sibling): Remove formal
	parameter Private_Child. Remove the private child checks.
	(Requires_State_Refinement): Moved from sem_ch3.
	* sem_util.ads Add new type State_Space_Kind along with
	comment on its usage and values.
	(Add_Contract_Item): Update the comment on usage.
	(Find_Body_Discriminal): Alphabetize spec.
	(Find_Placement_In_State_Space): New routine.
	(Is_Child_Or_Sibling): Remove formal parameter Private_Child
	and update the comment on usage.
	(Requires_State_Refinement): Moved from sem_ch3.
	* sinfo.ads: Update the documentation of N_Contract.
	* snames.ads-tmpl The predefined name for Part_Of is now used
	to denote a pragma. Add Pragma_Id for Part_Of.

2014-01-29  Emmanuel Briot  <briot@adacore.com>

	* s-regexp.adb (Create_Secondary_Table): Automatically grow the state
	machine as needed.
	(Dump): New subprogram.

2014-01-29  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Add
	Expand_Entry_Declaration to factorize code.

2014-01-29  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb: minor clarification.
	* sem_ch7.adb (Declare_Inherited_Private_Subprograms): Limit
	search for primitive operations to the entities that immediately
	follow the type declaration.

2014-01-29  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Build_Protected_Entry): Do not call
	Complete_Entry_Body anymore.
	* rtsfind.ads (RE_Complete_Single_Entry_Body): Remove.
	* s-tposen.ads, s-tposen.adb (Complete_Single_Entry_Body): Remove.

2014-01-29  Pierre-Marie Derodat  <derodat@adacore.com>

	* s-os_lib.adb, s-os_lib.ads (Normalize_Pathname): Return an empty
	string when the Name input bigger than allowed. Adapt the function
	specification.

2014-01-29  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Install_Null_Excluding_Check): Do not emit warning
	if expression is within a case_expression of if_expression.

2014-01-29  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, inline.ads: Minor reformatting.

2014-01-29  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Is_Exception_Safe): Return true if no exceptions.

2014-01-29  Yannick Moy  <moy@adacore.com>

	* inline.ads (Pending_Body_Info): Add SPARK_Mode and
	SPARK_Mode_Pragma components to be able to analyze generic
	instance.
	* sem_ch12.adb (Analyze_Package_Instantiation,
	Inline_Instance_Body, Need_Subprogram_Instance_Body,
	Load_Parent_Of_Generic): Pass in SPARK_Mode from instantiation
	for future analysis of the instance.
	(Instantiate_Package_Body,
	Instantiate_Subprogram_Body, Set_Instance_Inv): Set SPARK_Mode
	from instantiation to analyze the instance.

2014-01-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch7.adb, sem_prag.adb, sem_ch4.adb, sem_ch6.adb: Minor code
	reorganization.

2014-01-29  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Update description of SPARK_Mode pragma.

2014-01-29  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Expand_N_Protected_Body): Remove Num_Entries.

2014-01-29  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb (Find_Component_In_Instance): Update comment.

2014-01-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Build_Task_Image_Prefix): Indicate that the
	resulting string is an internal entity. and thus requires no
	initialization. This is relevant when Initialize_ Scalars is
	enabled, because the resultant spurious initialization may lead to
	secondary stack anomalies that produce a mangled name for a task.

2014-01-29  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): SPARK_Mode
	not inherited from spec anymore. Check consistency
	rules after processing of declarations.
	* sem_ch7.adb (Analyze_Package_Body_Helper): SPARK_Mode not inherited
	from spec anymore. Check consistency rules after processing of
	declarations.
	(Analyze_Package_Declaration): Set SPARK_Mode only for non-generic
	packages.
	* sem_prag.adb (Analyze_Pragma/Pragma_SPARK_Mode): Implement new
	consistency rules.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Comparison_Op): Add type name/location
	to unordered msg.
	(Resolve_Range): Add type name/location to unordered msg.

2014-01-27  Claire Dross  <dross@adacore.com>

	* a-cofove.adb/s (Copy): Add precondition so that Copy (Source,
	Capacity) is only called with Capacity >= Length (Source) and
	Capacity in Capacity_Range.
	* a-cfdlli.adb/s, a-cfhase.adb/s, a-cfhama.adb/s, a-cforse.adb/s,
	a-cforma.adb/s (Copy): Add precondition so that Copy (Source, Capacity)
	is only called with Capacity >= Source.Capacity. Raise Capacity_Error
	in the code is this is not the case.

2014-01-27  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Fix handling of
	selected component in an instance where the component of the
	actual is not visibile at instantiation.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: sem_ch6.adb (Set_Actual_Subtypes): If the type
	has a dynamic predicate, generate freeze node for Actual_Subtype
	at once, because the declaration of the corresponding predicate
	function will make reference to it.

2014-01-27  Tristan Gingold  <gingold@adacore.com>

	* exp_ch7.adb, exp_ch9.adb: Adjust comments.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Expon): Remove unsigned type test
	for 2**X optimization.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* a-suenst.adb: strings.utf_encoding.strings (Decode): Check
	explicitly whether value is in range of Character, because the
	library is typically compiled with range checks disabled, and
	we cannot rely on the implicit check on the argument of 'Val.

2014-01-27  Vincent Celier  <celier@adacore.com>

	* a-ciorma.adb, a-cihama.adb (Assign): Copy the Source to the Target,
	not the Target to itself.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* vms_conv.ads, ali.adb, sem_ch6.ads, opt.ads, vms_cmds.ads: Minor
	changes to avoid incorrect use of unordered enum types.

2014-01-27  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* scn.adb (Check_End_Of_Line): Removed.
	(Error_Long_Line): Removed.
	(Determine_License): Use versions of above routines from Scanner.
	* scng.adb (Check_End_Of_Line): Moved to spec.
	(Error_Long_Line): Removed, no longer used.
	* scng.ads (Check_End_Of_Line): Moved here from body.

2014-01-27  Tristan Gingold  <gingold@adacore.com>

	* exp_ch7.adb (Build_Cleanup_Statements): Call
	Build_Protected_Subprogram_Call_Cleanup to insert the cleanup
	for protected body.
	* exp_ch9.adb (Build_Protected_Subprogram_Body): Likewise.
	 Remove Service_Name variable.
	(Build_Protected_SUbprogam_Call_Cleanup): New procedure that
	factorize code from the above subprograms.
	* exp_ch9.ads (Build_Protected_Subprogram_Call_Cleanup): New procedure.

2014-01-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Has_Option): Reimplemented.
	* sem_prag.adb (Analyze_Refinement_Clause): Add global
	variables AR_Constit, AW_Constit, ER_Constit, EW_Constit,
	External_Constit_Seen and State. Add local variables Body_Ref,
	Body_Ref_Elmt and Extra_State. Reimplement part of the logic to
	avoid a cumbersome while pool. Verify the legality of an external
	state and relevant properties.
	(Check_External_Property): New routine.
	(Check_Matching_State): Remove parameter profile
	and update comment on usage.
	(Collect_Constituent): Store the
	relevant external property of a constituent.
	* sem_util.adb (Async_Readers_Enabled): Update the call to
	Has_Enabled_Property.
	(Async_Writers_Enabled): Update the call to Has_Enabled_Property.
	(Effective_Reads_Enabled): Update the call to Has_Enabled_Property.
	(Effective_Writes_Enabled): Update the call to Has_Enabled_Property.
	(Has_Enabled_Property): Rename formal parameter Extern to State_Id.
	Update comment on usage. Reimplement the logic to recognize the various
	formats of properties.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* par-ch5.adb: Minor reformatting.

2014-01-27  Tristan Gingold  <gingold@adacore.com>

	* s-tposen.ads: Harmonize style and comments.

2014-01-27  Vincent Celier  <celier@adacore.com>

	* projects.texi: Document that shared library projects, by
	default, cannot import projects that are not shared library
	projects.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb (Find_Selected_Component): Use Replace instead
	of Rewrite.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* a-suenco.adb, a-suenst.adb (Decode): Raise encoding error if
	any other exception is raised.
	(Convert): If both Input_Scheme and Output_Scheme are UTF_8 it is
	still necessary to perform a conversion in order to remove overlong
	encodings.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* exp_smem.adb: Minor reformatting.

2014-01-27  Thomas Quinot  <quinot@adacore.com>

	* a-calfor.ads: Fix incorrect reference to operator "-" in comment.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Make_Call_Into_Operator): In ASIS mode, relocate
	nodes for operands to the original node for the call, to preserve
	Original_Node pointers within the resolved operands, given that
	they may have been rewritten as well. Previous approach copied
	the operands into a new tree and lost those pointers.

2014-01-27  Claire Dross  <dross@adacore.com>


	* a-cofove.adb, a-cofove.ads: Add Strict_Equal function to the API.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Check_Internal_Protected_Use): A call through
	an anonymous access parameter of the current protected function
	is not a potential modification of the current object.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* a-cobove.adb (Reserve_Capacity): Procedure raises
	Capacity_Error, not Constraint_Error, when request cannot be
	satisfied.

2014-01-27  Vincent Celier  <celier@adacore.com>

	* a-coorma.adb, a-cohama.adb (Assign): Copy the Source to the Target,
	not the Target to itself.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_Concatenate): If the target of the
	concatenation is a library-level entity, always use the off-line
	version of concatenation, regardless of optimization level. This
	is space-efficient, and prevents linking problems when some
	units are compiled with different optimization levels.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb: Code clean up.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* par-ch5.adb (P_Iterator_Specification): Improve error recovery
	when an array or container iterator includes a subtype indication,
	which is only legal in an element iterator.

2014-01-27  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb: Minor reformatting.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* opt.adb (SPARK_Mode): Default for library units is None rather
	than Off.
	* opt.ads: Remove AUTO from SPARK_Mode_Type SPARK_Mode_Type is
	no longer ordered.
	* sem_prag.adb (Analyze_Pragma, case SPARK_Mode): Remove AUTO
	possibility.
	* snames.ads-tmpl (Name_Auto): Removed, no longer used.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* par-ch5.adb (P_Sequence_Of_Statements): Make entry in
	Suspicious_Labels table if we have identifier; followed by loop
	or block.
	* par-endh.adb (Evaluate_End_Entry): Search Suspicious_Labels table.
	* par.adb (Suspicious_Labels): New table.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* exp_aggr.adb (Check_Bounds): Reason is range check, not
	length check.

2014-01-27  Yannick Moy  <moy@adacore.com>

	* get_spark_xrefs.adb (Get_SPARK_Xrefs): Accept new type 'c' for
	reference.
	* lib-xref-spark_specific.adb (Is_Global_Constant): Remove useless
	function now.
	(Add_SPARK_Xrefs): Include references to constants.
	* spark_xrefs.ads Document new character 'c' for references to
	constants.

2014-01-27  Thomas Quinot  <quinot@adacore.com>

	* exp_smem.adb (Add_Write_After): For a function call, insert write as
	an after action in a transient scope.

2014-01-27  Thomas Quinot  <quinot@adacore.com>

	* exp_smem.adb (Expand_Shared_Passive_Variable): For a reference
	to a shared variable as an OUT formal in a call to an init proc,
	the 'Read call must be emitted after, not before, the call.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Remove mention of AUTO mode for SPARK_Mode pragma.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* a-wichha.adb (Character_Set_Version): Change to output proper
	value.

2014-01-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Is_Input_Only_State): Removed.
	(Is_Non_Volatile_State): Removed.
	(Is_Output_State): Removed.
	* einfo.ads (Is_Input_Only_State): Remove attribute and
	subprogram. Update related entity.
	(Is_Non_Volatile_State):
	Remove attribute and subprogram. Update related entity.
	(Is_Output_State): Removed attribute and subprogram. Update
	related entity.
	* exp_ch6.adb (Expand_Subprogram_Contract): Update comment on
	generated code.
	* sem_ch3.adb (Analyze_Declarations): Analyze the contract of
	an object, not just variables.
	(Analyze_Object_Contract): New routine.
	(Analyze_Variable_Contract): Removed.
	(Process_Discriminants): Detect an illegal use of volatile
	discriminant in SPARK mode.
	* sem_ch5.adb (Analyze_Iterator_Specification):
	Detect an illegal use of volatile loop variable.
	(Analyze_Loop_Parameter_Specification): Detect an illegal use
	of volatile loop variable.
	* sem_ch6.adb (Process_Formals): Update the volatile object
	detection. Detect an illegal formal of mode IN OUT or OUT in
	SPARK mode. Enhance the error messages with references.
	* sem_ch12.adb (Instantiate_Object): Update the volatile object
	detection. Enhance the error messages with references.
	* sem_prag.adb (Analyze_Abstract_State): Enhance the error
	messages with references.
	(Analyze_Contract_Case): Enhance the error messages with references.
	(Analyze_External_Property): Call Check_Duplicate_Property to process
	an external property.
	(Analyze_External_Property_In_Decl_Part): New routine.
	(Analyze_External_State_In_Decl_Part): Removed.
	(Analyze_Global_Item): Detect an illegal
	use of a volatile constant. Detect an illegal use
	of a variable with enabled Effective_Reads. Enhance
	the error messages with references. Remove obsolete
	checks concerning Input_Only and Output_Only states.
	(Analyze_Initialization_Item): Enhance the error messages
	with references.
	(Analyze_Initializes_In_Decl_Part): Do not
	collect the states and variables when the initialization list
	is null.
	(Analyze_Input_Item): Enhance the error messages with references.
	(Analyze_Input_Output): Enhance the error messages with references.
	(Analyze_Pragma): Enhance the error messages with references.
	(Analyze_Refinement_Clause): Code reformatting.
	(Analyze_Refined_Depends_In_Decl_Part):
	Rename global variable Global to Reg_Global and update all
	occurrences. Add local variables D7 and D8. Update the error
	messages with references. Update the call to Collect_Global_Items.
	(Analyze_Refined_Global_In_Decl_Part): Add local variables
	Has_Proof_In_State, Proof_In_Constits and Proof_In_Items. Update
	the call to Collect_Global_Items.  Account for a Proof_In state
	in null / useless refinement checks. Verify the coverage of
	Proof_In states.
	(Check_Dependency_Clause): Remove local variable
	Out_Constits. Remove the retrieval and removal of constituents
	for an Output_Only state. Remove the reporting of unused
	Output_Only state constituents.
	(Check_Duplicate_Mode): Enhance
	the error message with a reference.
	(Check_Duplicate_Property): New routine.
	(Check_Duplicate_Option): Enhance the error message with a reference.
	(Check_External_Properties): Enhance the error message with a reference.
	(Check_Function_Return): Enhance the error message with a reference.
	(Check_In_Out_States): Update
	comment on usage. Add a specialized error message for Proof_In
	constituents. Enhance the error message with a reference.
	(Check_Input_States): Update comment on usage. Account for
	possible Proof_In constituents. Enhance the error message
	with a areference.
	(Check_Matching_Constituent): Enhance the error message with a
	reference.
	(Check_Matching_State): Enchance the error message with a reference.
	(Check_Mode): Add local variable From_Global. Update the call to
	Find_Mode.  Emit more precise error messages concerning extra items
	(Check_Mode_Restriction_In_Enclosing_Context): Consider
	pragma Refined_Global.	Enhance the error message with a
	reference.
	(Check_Mode_Restriction_In_Function): Enhance the error message with
	a reference.
	(Check_Output_States): Update comment on usage. Add local variable
	Posted.  Account for possible Proof_In constituents. Produce a detailed
	list of missing constituents.
	(Check_Proof_In_States): New routine.
	(Check_Refined_Global_Item): Handle Proof_In
	constituents. Enchance the error message with a reference.
	(Collect_Global_Items): Add formal parameters Proof_In_Items
	and Has_Proof_In_State. Update the comment on usage. Account
	for Proof_In items.
	(Create_Or_Modify_Clause): Enchance
	the error message with a reference.
	(Find_Mode): Add
	formal parameter From_Global. Update the comment on usage.
	Detect when the mode is governed by pragma [Refined_]Global.
	(Output_Constituents): Removed.
	(Report_Extra_Constituents):
	Report extra Proof_In constituents.
	(Report_Unused_Constituents): Removed.
	(Usage_Error): Code reformatting. Enhance the error
	messages with reference.
	* sem_prag.ads (Analyze_External_Property_In_Decl_Part): New routine.
	(Analyze_External_State_In_Decl_Part): Removed.
	* sem_res.adb (Resolve_Actuals): Update the volatile object
	detection. Enhance the error message with a reference.
	(Resolve_Entity_Name): Update the volatile object
	detection. Enhance the error message with a reference.
	* sem_util.adb (Is_Refined_State): Add a guard to avoid a crash.
	(Is_SPARK_Volatile_Object): New routine.
	(Has_Volatile_Component): New routine.
	* sem_util.ads (Is_Delegate): Alphabetized.
	(Is_SPARK_Volatile_Object): New routine.
	(Has_Volatile_Component): New routine.
	* snames.ads-tmpl: Remove names Name_Input_Only and Name_Output_Only.

2014-01-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: Resolve fully prefix of 'Update.

2014-01-27  Ben Brosgol  <brosgol@adacore.com>

	* gnat_rm.texi: Minor clarifications.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Avoid complaining
	about call that is generated as part of an Initial_Condition
	check.
	* sem_prag.adb: Minor spelling correction.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Set_Convention_From_Pragma): Check that
	convention Ghost can only apply to functions.
	* einfo.ads, einfo.adb (Is_Ghost_Subprogram): Add clarifying comment.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add Short_Enums to documentation of
	-gnatet/-gnateT.

2014-01-27  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Input_Item): Correct check for input
	item in same package.
	* sem_util.ads, sem_util.adb (Within_Scope): New function.

2014-01-26  Arnaud Charlet  <charlet@adacore.com>

	* a-intnam-lynxos.ads, mlib-tgt-specific-lynxos.adb,
	s-osinte-lynxos-3.adb, s-osinte-lynxos-3.ads, s-osinte-lynxos.adb,
	s-osinte-lynxos.ads, s-taprop-lynxos.adb, s-tpopsp-lynxos.adb,
	system-lynxos-ppc.ads, system-lynxos-x86.ads: Removed, no longer
	maintained.

2014-01-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in: Fix oversight.

2014-01-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (convert_to_fat_pointer): Un-obfuscate the
	conversion from a thin pointer with a shifted value.
	* gcc-interface/utils2.c (gnat_build_constructor): Propagate the
	read-only flag from the values onto the result.
	(gnat_invariant_expr): Accept read-only CONSTRUCTORs.

2014-01-25  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Always build a variable
	for E_Variable with a pragma Linker_Section.

2014-01-25  Robert Dewar  <dewar@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_param): Make sure an Out parameter
	with Default_Value aspect is passed in by copy.

2014-01-24  Eric Botcazou  <ebotcazou@adacore.com>

	* set_targ.adb: Set Short_Enums.
	* gcc-interface/lang.opt (fshort-enums): New option.
	* gcc-interface/misc.c (gnat_handle_option): Handle it.
	(gnat_post_options): Do not modify the global settings.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* g-rannum.ads, g-rannum.adb (Random_Ordinary_Fixed): New generic
	function.
	(Random_Decimal_Fixed): New generic function.
	* s-rannum.ads: Minor comment clarifications.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* back_end.adb: Remove Short_Enums handling (handled in
	Ttypes/Get_Targ now) Minor added comments.
	* freeze.adb: Change name Short_Enums_On_Target to
	Target_Short_Enums.
	* get_targ.ads, get_targ.adb (Get_Short_Enums): New function.
	* opt.ads: Minor comment updates.
	* sem_ch13.adb: Change name Short_Enums_On_Target to
	Target_Short_Enums.
	* set_targ.adb: Set Short_Enums from gcc back end.
	* set_targ.ads (Short_Enums): New variable.
	* targparm.ads, targparm.adb: Remove Short_Enums entries (handled in
	Ttypes/Get_Targ now).
	* ttypes.ads (Target_Short_Enums): New constant boolean switch

2014-01-24  Pascal Obry  <obry@adacore.com>

	* g-sercom-mingw.adb: Fix serial port name for port number > 10.

2014-01-24  Gary Dismukes  <dismukes@adacore.com>

	* exp_disp.adb (Expand_Dispatching_Call): Call Unqualify on Param when
	comparing it with Ctrl_Arg, since Ctrl_Arg may have had qualification
	stripped off.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads, make.adb, prj-env.adb: Minor reformatting.

2014-01-24  Vincent Celier  <celier@adacore.com>

	* prj.adb (Add_Aggregated_Project): Do not add a project in
	the list if it is already there.

2014-01-24  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb (Enclosing_Subprogram_Or_Package):
	Correct the search for a subrogram declaration to which a pragma is
	attached.

2014-01-24  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Document --decimal-grouping and
	--based-grouping switches in gnatpp.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads: Documentation update.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Constant_Redeclaration): New declaration is
	illegal if previous one has an initial expression that is an
	aggregate expanded into assignments.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Small
	code reorganization to remove spurious warning on a loop with
	an array element iterator that has a null range.

2014-01-24  Vincent Celier  <celier@adacore.com>

	* make.adb (Binding_Phase): When setting the Ada paths, use
	the library ALI dir, not the object dir in libraries.

2014-01-24  Yannick Moy  <moy@adacore.com>

	* sinfo.ads: Add documentation of check flag fields.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Actuals): If an actual is a view
	conversion of a discriminated object, and the formal type is
	discriminated and constrained, apply a discriminant check to
	the object itself.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* prj.adb, prj-env.adb, back_end.adb: Add comment, minor code clean ups.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): At the end of an
	appropriate declarative part, call Freeze_All from the first
	declaration in the scope, not from the first unfrozen one. This
	is necessary to apply visibility checks to entities with delayed
	aspects. Otherwise, in the presence of instantiations and cleanups
	that they may generate, the delayed aspects may be analyzed too
	late and produce spurious visibility errors.
	* sem_attr.adb: Place etype on range.
	* sem_ch6.adb: Documentation expression functions.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb: Minor change of Indices to Indexes (preferred
	terminology in compiler).

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* scans.ads: Remove Tok_Raise from Sterm, Eterm, After_SM
	categories, now that Ada 95 supports raise expressions.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Enumeration_Type): Use new target parameter
	Short_Enums_On_Target.
	* sem_ch13.adb (Set_Enum_Esize): Take Short_Enums_On_Target
	into account.
	* targparm.ads, targparm.adb: Add new target parameter Short_Enums.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): If subtype
	indication is given explicity, check that it matches the array
	component type or the container element type of the domain
	of iteration.

2014-01-24  Tristan Gingold  <gingold@adacore.com>

	* back_end.adb (Scan_Compiler_Arguments): Set Short_Enums_On_Target.
	* gcc-interface/misc.c (flag_short_enums): Declare.
	(gnat_post_options): Set it.

2014-01-24  Vincent Celier  <celier@adacore.com>

	* prj-env.adb (Ada_Objects_Path): Use Ada_Objects_Path_No_Libs
	to cache the result when Including_Libraries is False.
	* prj-env.ads (Ada_Objects_Path): Update documentation
	* prj.adb (Free (Project_Id)): Also free Ada_Objects_Path_No_Libs
	(Get_Object_Directory): Return the Library_Ali_Dir only when
	when Including_Libraries is True.
	* prj.ads (Get_Object_Directory): Fix and complete documentation
	(Project_Data): New component Ada_Objects_Path_No_Libs

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Expr_Known_Valid): Result of fpt operator never
	considered valid.

2014-01-24  Eric Botcazou  <ebotcazou@adacore.com>

	* back_end.adb: Minor fix in comment.

2014-01-24  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Check_Abstract_Overriding): Code reestructuration
	required to report the error in case of task types.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: Additional index checking.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Update): Analyze
	expressions in each component association, and for records note
	the entity in each association choice, for subsequent resolution.
	(Resolve_Attribute, case 'Update): Complete resolution of
	expressions in each component association.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* sem.adb (Sem): Avoid premature reference to Current_Sem_Unit
	(this was causing Is_Main_Unit_Or_Main_Unit_Spec to be set wrong,
	leading to wrong handling of SPARK_Mode for library units).

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Set SPARK_Mode
	on generic instances (do not consider them to be internally
	generated)

2014-01-24  Doug Rupp  <rupp@adacore.com>

	* s-osinte-android.ads (pthread_sigmask): Import sigprocmask
	vice pthread_sigmask.

2014-01-24  Vincent Celier  <celier@adacore.com>

	* prj.adb (Debug_Output (Str, Str2)): Output if verbosity is
	not default.

2014-01-24  Vincent Celier  <celier@adacore.com>

	* prj-ext.adb (Add): Do not output anything when Silent is True,
	whatever the verbosity. When Source is From_External_Attribute,
	set the corresponding environment variable if it is not already set.
	* prj-ext.ads (Add): New Boolean parameter Silent, defaulted
	to False
	* prj-proc.adb (Process_Expression_For_Associative_Array):
	For attribute External, call Prj.Ext.Add with Silent set to
	True for the child environment, to avoid useless output in non
	default verbosity.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Set_Slice_Subtype): Handle properly a discrete
	range given by a subtype indication, and force evaluation of
	the bounds, as for a simple range.
	* exp_util.adb (Evaluate_Slice_Bounds): Utility to force evaluation
	of bounds of slice for various kinds of discrete ranges.
	(Evaluate_Name, Evaluate_Subtype_From_Expr): use
	Evaluate_Slice_Bounds.

2014-01-24  Bob Duff  <duff@adacore.com>

	* s-taskin.ads (Activator): Make this Atomic, because
	Activation_Is_Complete reads it, and that can be called
	from any task. Previously, this component was only
	modified by the activator before activation, and by
	Self after activation.
	* a-taside.ads, a-taside.adb (Environment_Task,
	Activation_Is_Complete): Implement these missing functions.

2014-01-24  Doug Rupp  <rupp@adacore.com>

	* init.c: Add a handler section for Android.

2014-01-24  Arnaud Charlet  <charlet@adacore.com>

	* i-cexten.ads (Unsigned_33..64, Unsigned_33..64): New types.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Operator_Check): If one operand is a
	Raise_Expression, set its type to that of the other operand.
	* sem_res.adb (Resolve_Raise_Expression): new procedure.
	(Resolve_Actuals): For an actual that is a Raise_Expression,
	set the type to that of the formal.
	* sem_type.adb (Find_Unique_Type): If one of the operands is a
	Raise_Expression, return type of the other operand.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Record_Aggregate): If a scalar
	component of the record has a type with a default aspect, and
	the corresponding aggregate component is initiaized with a box,
	use the default value in the rewritten aggregate.

2014-01-24  Tristan Gingold  <gingold@adacore.com>

	* s-interr.ads, s-interr.adb, s-interr-hwint.adb, s-interr-vms.adb,
	s-interr-sigaction.adb,
	s-interr-dummy.adb (Install_Restricted_Handlers): Add Prio parameter.
	* exp_ch9.adb (Make_Initialize_Protection): Add Prio parameter
	to the call to Install_Restricted_Handlers.

2014-01-24  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb (Check_File): Add protection when the source is
	not fully initialized.

2014-01-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Post_State): In a postcondition, a selected
	component that denotes an implicit dereference is a reference
	to the post state of the subprogram.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): SPARK_Mode OFF
	for generated subprograms.
	(Analyze_Subprogram_Specification): Ditto.

2014-01-24  Vincent Celier  <celier@adacore.com>

	* prj-dect.adb (Check_Attribute_Allowed): Detect more forbidden
	attributes in package Builder of aggregate and aggregate library
	projects.
	* prj-nmsc.adb (Process_Naming_Scheme.Check.Check_Aggregate):
	Remove procedure (Process_Naming_Scheme.Check.Check_Aggregated):
	Remove parameters.  Change error message from "... externally
	build library ..." to "... externally built project ...".
	(Process_Naming_Scheme.Check): Do not do any check in aggregate
	project, as attribute Library_Dir and Library_Name have already
	been detected as forbidden.

2014-01-24  Vincent Celier  <celier@adacore.com>

	* prj-env.adb (Find_Project): If cached project path is not in
	project directory, look in current directory first and use cached
	project path only if project is not found in project directory.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb, lib-xref.adb: Correct false positive warnings.

2014-01-24  Vincent Celier  <celier@adacore.com>

	* projects.texi: Document that aggregate projects are only
	supported by gprbuild, but not by gnatmake.  Document that the
	only attribute Switches in package Binder of aggregate projects
	will be ignored if its index is not others.  Document that
	attribute Global_Config_File is allowed in package Binder of
	aggregate projects.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor code reorganization.
	* sem_util.adb: Minor fix of potential latent bug in Is_LHS.

2014-01-24  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb, projects.texi, snames.ads-tmpl: Add Excluded_Patterns
	attribute definition.

2014-01-24  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Queue.Insert_No_Roots): In gprbuild, do not put
	in the Queue the same source (same path, same multi-source index)
	from the same project file, to avoid compiling several times
	the same source.

2014-01-24  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (First_Rep_Item): Remove obsolete stuff.
	(Has_Gigi_Rep_Item): Likewise.
	* sem_prag.adb (Analyze_Pragma) <Pragma_Linker_Section>: Do not set
	Has_Gigi_Rep_Item for objects.
	* gcc-interface/decl.c (prepend_one_attribute_to): Rename into...
	(prepend_one_attribute): ...this.
	(prepend_one_attribute_pragma): New function extracted from...
	(prepend_attributes): ...here.  Swap the parameters for consistency.
	(gnat_to_gnu_entity): Adjust calls to prepend_one_attribute_to and to
	prepend_attributes.
	<object>: Deal with a pragma Linker_Section on a constant
	or variable.  <E_Function>: Deal with a pragma Linker_Section
	on a subprogram.
	(get_minimal_subprog_decl): Adjust calls to prepend_one_attribute_to.

2014-01-24  Vincent Celier  <celier@adacore.com>

	* opt.ads: Minor comment update.

2014-01-24  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Input_Output): Add missing error check
	for junk operand.
	* sem_util.adb (Is_Refined_State): Add defense against junk
	tree from error.

2014-01-24  Pascal Obry  <obry@adacore.com>

	* projects.texi: Removes Build_Slaves attribute documentation.

2014-01-23  Robert Dewar  <dewar@adacore.com>

	* opt.adb (Register_Opt_Config_Switches): Save SPARK_Mode_Pragma
	setting.

2014-01-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Potentially_Unevaluated): Predicate only
	applies to expressions that come from source.
	* sem_attr.adb (Analyze_Attribute, case 'Old): Improve error
	message.
	(Analyze_Attribute, case 'Loop_Entry): Apply SPARK 2014 legality
	rule regarding potentially unevaluated expressions, to prefix
	of attribute.

2014-01-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Make_Invqriant_Call): If type of expression is
	a private extension, get invariant from base type.

2014-01-23  Robert Dewar  <dewar@adacore.com>

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

2014-01-23  Robert Dewar  <dewar@adacore.com>

	* opt.adb (Save_Opt_Config_Switches): Save SPARK_Mode_Pragma
	(Restore_Opt_Config_Switches): Restore SPARK_Mode_Pragma.
	* sem.adb (Semantics): Remove save/restore of
	SPARK_Mode[_Pragma]. Not needed since already done in
	Save/Restore_Opt_Config_Switches.

2014-01-23  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi, einfo.adb, einfo.ads, sem_prag.adb, gnat_ugn.texi,
	freeze.adb, repinfo.adb, aspects.adb, aspects.ads, sem_ch13.adb:
	Linker_Section enhancements.

2014-01-23  Tristan Gingold  <gingold@adacore.com>

	* gnat_rm.texi: Minor editing.

2014-01-23  Robert Dewar  <dewar@adacore.com>

	* opt.adb (Set_Opt_Config_Switches): Reset SPARK mode for
	with'ed internal units.
	* sem.adb (Semantics): Save and restore SPARK_Mode[_Pragma].

2014-01-23  Javier Miranda  <miranda@adacore.com>

	* lib-xref.adb (Generate_Reference): As part of processing the
	"end-of-spec" reference generate an extra reference to the first
	private entity of the package.
	* xr_tabls.adb (Add_Reference): No action needed for the extra
	'E' reference associated; similar to the processing of the
	'e' reference.

2014-01-23  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Change "--&pp off" to "--!pp off".

2014-01-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Is_Potentially_Unevaluated): new
	predicate to implement rule given in 6.1.1 (20/3).
	* sem_attr.adb (Analyze_Attribute, case 'Old): Reject prefix of
	'Old in a postcondition, if it is potentially unevaluated and
	it is not an entity name.

2014-01-23  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Document the new "--&pp off" feature of gnatpp.

2014-01-23  Robert Dewar  <dewar@adacore.com>

	* gnatlink.adb (Gnatlink): Fix problem of generating bad name
	msg on VMS.

2014-01-23  Bob Duff  <duff@adacore.com>

	* g-dynhta.ads: Minor comment fix.

2014-01-23  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Inherit SPARK_Mode
	from spec on body only when not already inherited on spec. Set
	SPARK_Mode from context on body without previous spec.	*
	* sem_prag.adb (Analyze_Pragma): Check placement of pragma on
	library-level entities.  Correct retrieval of entity from
	declaration, for cases where the declaration is not a unit.
	* sem_ch12.adb (Instantiate_Object): Avoid
	calling Is_Volatile_Object on an empty node.

2014-01-23  Robert Dewar  <dewar@adacore.com>

	* gnatlink.adb (Gnatlink): Check for suspicious executable file
	names on windows.

2014-01-23  Robert Dewar  <dewar@adacore.com>

	* a-ngelfu.ads: Remove bad uses of AND which should be AND THEN.
	* sem_res.adb (Check_No_Direct_Boolean_Operators): Don't give
	style errors in instances.
	* g-dynhta.ads (Static_HTable): Comment updates.

2014-01-23  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Get_Or_Create_Configuration_File): Do not attempt
	to find a configuration project file when Config_File_Name is
	No_Configuration_File.
	* prj-conf.ads (No_Configuration_File): New constant String.
	* prj-pars.adb (Parse): Call Get_Or_Create_Configuration_File
	with Config_File_Name set to No_Configuration_File, so that
	no existing configuration project file will be used, and the
	configuration project will be only created in memory when
	Add_Default_GNAT_Naming_Scheme is called.
	* projects.texi: Minor reformatting.

2014-01-23  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Get_Or_Create_Configuration_File): Never parse
	a config project file if On_Load_Config is not null.
	* prj-pars.adb: Minor comment changes.

2014-01-23  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb (Output_References): Output progenitors of
	synchronized tagged types, for source navigation.

2014-01-23  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb, sinfo.adb, sinfo.ads, sem.adb, sem_res.adb,
	expander.adb, exp_ch11.adb, exp_ch11.ads, sem_ch11.adb, sem_ch11.ads,
	sprint.adb, sprint.ads: Remove unused node N_Subprogram_Info.

2014-01-23  Emmanuel Briot  <briot@adacore.com>

	* prj-conf.adb (Get_Or_Create_Configuration_File): call
	On_Load_Config later.

2014-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Do not
	generate the spec of the late primitive in ASIS mode. Add two
	comments to explain the special cases when the expansion is
	not performed.

2014-01-23  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb (Note_Possible_Modification): Fix error of
	misbehaving for implicit dereference cases in -gnatc mode.

2014-01-23  Emmanuel Briot  <briot@adacore.com>

	* prj-pars.adb: Minor reformatting.

2014-01-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): A subprogram
	body generated for an expression function within a protected body
	needs a set of renaming declarations if the expression function
	comes from source.

2014-01-22  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb (Get_Type_Reference): In semantics-only mode,
	list interface progenitor of a tagged concurrent type, for better
	source navigation.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* lib.adb (In_Extended_Main_Code_Unit): Return False for
	Standard_Location.
	(In_Extended_Main_Source_Unit): Return False for Standard_Location.
	* lib.ads (In_Extended_Main_Code_Unit): Add documentation on
	treatment of Slocs No_Location and Standard_Location.
	* restrict.adb (Check_Restriction_No_Dependence): Explicitly
	check for entity with Standard_Location Sloc, rather than relying
	on Lib routines to do that.
	* sem_res.adb (Resolve_Call): Implement SPARK_05 restriction
	that a call cannot occur before a later occuring body within
	the same unit.

2014-01-22  Thomas Quinot  <quinot@adacore.com>

	* rtsfind.adb: Update comment.

2014-01-22  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aux.ads, sem_aux.adb (Is_Body): New routine.
	* sem_ch3.adb (Analyze_Declarations): Add local variable
	Body_Seen. Generate the spec of a late controlled
	primitive body that is about to freeze its related type.
	(Handle_Late_Controlled_Primitive): New routine.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* a-stream.adb: Minor reformatting.

2014-01-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (From_Actual_Package): Introduce a recursive
	sub-procedure Declared_In_Actual to handle properly the visibility
	of actuals in actual packages, that are themselves actuals to a
	actual package of the current instance. This mimics properly the
	visibility of formals of formal packages declared with a box,
	within the corresponding generic unit.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* checks.adb: Do not assume that a volatile variable is valid.

2014-01-22  Thomas Quinot  <quinot@adacore.com>

	* g-catiio.ads (Image, Value): Clarify that these functions
	operate in the local time zone.  Minor documentation update.

2014-01-22  Thomas Quinot  <quinot@adacore.com>

	* csets.adb, csets.ads, opt.ads: Minor documentation fixes.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* sem_aux.adb, sem_aux.ads, sem_ch3.adb (Has_Unconstrained_Elements):
	Moved to sem_aux.adb.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* vms_data.ads: Minor reformatting.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Document messages affected by -gnatd.E including
	the new ones that relate to late definition of equality.
	* sem_ch6.adb (Check_Untagged_Equality): In Ada 2012 mode, if
	debug flag -gnatd.E is set, then generate warnings rather than
	errors.
	(Check_Untagged_Equality): In earlier versions of Ada,
	generate warnings if Warn_On_Ada_2012_Incompatibility flag is set.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Usage_Error): Output additional messages for
	unconstrained OUT parameters lacking an input dependency.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* restrict.ads: Minor reformatting.
	* sem_res.adb (Resolve_Call): Check for SPARK_05 restriction that
	forbids a call from within a subprogram to the same subprogram.

2014-01-22  Thomas Quinot  <quinot@adacore.com>

	* a-stream.ads (Read_SEA, Write_SEA): New subprograms, optimized
	stream attributes for Stream_Element_Array.
	* a-stream.adb (Read_SEA, Write_SEA): Bodies for the above.
	* rtsfind.adb (Check_CRT): Do not reject a reference to an entity
	defined in the current scope.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* debug.adb, exp_ch4.adb, erroutc.adb: Minor reformatting.

2014-01-22  Thomas Quinot  <quinot@adacore.com>

	* sem_ch7.adb, sem_ch8.adb, exp_ch3.adb: Minor reformatting.

2014-01-22  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): For a constant
	declaration initialized with a function call, whose type
	has variable size, need to remove side effects so that the
	initialization expression becomes a dereference of a temporary
	reference to the function result.

2014-01-22  Yannick Moy  <moy@adacore.com>

	* errout.adb (Initialize): Remove trick to add dummy entry
	in Warnings table.
	* erroutc.adb (Set_Warnings_Mode_Off,
	Set_Warnings_Mode_On): Do nothing if warnings are suppressed by
	command line switch.
	* opt.ads (Warning_Mode): Document behavior
	wrt pragma Warnings, in normal mode and in GNATprove_Mode.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, errout.adb, erroutc.adb: Minor reformatting.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Check_Pool_Size_Clash): New procedure
	(Analyze_Attribute_Definition_Clause, case Storage_Pool): call
	Check_Pool_Size_Clash (Analyze_Attribute_Definition_Clause,
	case Storage_Size): call Check_Pool_Size_Clash.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, exp_util.adb, sem_dim.adb, sem_elab.adb, sem_ch8.adb,
	sem_eval.ads: Minor reformatting.

2014-01-22  Thomas Quinot  <quinot@adacore.com>

	* sem_eval.adb (Compile_Time_Known_Bounds): Return False for
	Any_Composite to prevent cascaded errors.

2014-01-22  Yannick Moy  <moy@adacore.com>

	* errout.adb (Initialize): Do not insert special entry in Warnings
	table in GNATprove_Mode.
	* erroutc.adb (Set_Warnings_Mode_On): Add info in Warnings table in
	GNATprove_Mode.
	* gnat1drv.adb (Adjust_Global_Switches): Do not suppress frontend
	warnings anymore.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Initializes_In_Decl_Part): Handle null
	initializes case.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* snames.ads-tmpl: Update header.

2014-01-22  Thomas Quinot  <quinot@adacore.com>

	* exp_util.adb (Insert_Actions): When inserting actions on a
	short circuit operator that has already been analyzed, do not park
	actions in node; instead introduce an N_Expression_With_Actions
	and insert actions immediately.
	Add guard for unexpected case of climbing up through statement
	in Actions list of an N_Expression_With_Actions.
	* sem_elab.adb (Insert_Elab_Check): Remove complex
	specialized circuitry for the case where the context is already
	analyzed, as it is not needed and introduces irregularities in
	finalization. Instead rely on the above change to Insert_Actions
	to ensure that late insertion on short circuit operators works
	as expected.

2014-01-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Operator_Check): Improve error message when an
	operand of concatenation is an access type.

2014-01-22  Thomas Quinot  <quinot@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Identifier): Add guard against
	cascaded error.

2014-01-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Selected_Component): Handle properly the case
	of an expanded name in a proper body, whose prefix is a package
	in the context of the proper body, when there is a homonym of
	the package declared in the parent unit.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb (Check_Use_Clause): Don't give no entities used
	msg if errors found.
	(Check_One_Unit): Same change.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* ug_words: Add missing/wrong entries for VMS warning switches.
	* sem_prag.adb (Check_Duplicate_Pragma): Avoid flagging parent type.

2014-01-22  Jerome Guitton  <guitton@adacore.com>

	* mlib-tgt-specific-vxworks.adb (Get_Target_Suffix): Replace xscale by
	arm.

2014-01-22  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Document passive task optimization

2014-01-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in: Minor fixes.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* par-ch4.adb (P_If_Expression): Rewritten to improve error recovery.
	* par-ch5.adb (P_Condition): New version with expression prescanned.
	* par.adb (P_Condition): New version with expression prescanned.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document that Allow_Integer_Address is ignored
	if Address is not a private type.
	* sem_prag.adb (Analyze_Pragma, case Allow_Integer_Address):
	Ignore pragma if System.Address is not a private type.

2014-01-21  Arnaud Charlet  <charlet@adacore.com>

	* namet.ads (Name_Len): Initialize to 0 to avoid accessing an
	uninitialized value.

2014-01-21  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi (Scalar_Storage_Order): Update documentation.

2014-01-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Set_Instance_Env): In Ada 2012 mode, preserve
	the value of Assertions_Enabled flag when compiling an instance of
	an internal unit. This facilitates the use of pre/postconditions
	in generic internal units, such as the new elementary function
	libraries.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* exp_aggr.adb: Minor reformatting.
	* sem_attr.adb: Minor reformatting.
	* sem_res.adb: Minor comment addition.
	* einfo.adb: Minor comment updates.
	* freeze.adb: Minor reformatting and code reorganization.

2014-01-21  Ed Schonberg  <schonberg@adacore.com>

	* par-ch4.adb (P_If_Expression): Handle more gracefully an
	elsif clause that does not have an else part.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* checks.adb, sem_util.ads, sem_ch4.adb: Minor reformatting.
	* gcc-interface/Makefile.in: clean up target pairs.

2014-01-21  Pascal Obry  <obry@adacore.com>

	* projects.texi: Minor typo fix.

2014-01-21  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Check_Component_Storage_Order): If a record type
	has an explicit Scalar_Storage_Order attribute definition clause,
	reject any component that itself is of a composite type and does
	not have one.

2014-01-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Generate_Parent_Reference): Make public so it
	can be used to generate proper cross-reference information for
	the parent units of proper bodies.

2014-01-21  Thomas Quinot  <quinot@adacore.com>

	* exp_pakd.adb (Expand_Packed_Element_Set,
	Expand_Packed_Element_Reference): No byte swapping required in
	the front-end for the case of a reverse storage order array,
	as this is now handled uniformly in the back-end.  However we
	still need to swap back an extracted element if it is itself a
	nested composite with reverse storage order.

2014-01-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_External_Property): Add processing for "others".
	(Analyze_Pragma): Update the grammar of pragma Abstract_State to
	include "others".

2014-01-21  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Minor updates.

2014-01-21  Thomas Quinot  <quinot@adacore.com>

	* exp_pakd.adb: Update comment, minor reformatting.

2014-01-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Analyze_Variable_Contract): Trigger the volatile
	object check when SPARK_Mode is on.
	* sem_ch6.adb (Process_Formals): Trigger the volatile object
	check when SPARK_Mode is on.
	* sem_ch12.adb (Instantiate_Object): Trigger the volatile object
	check when SPARK_Mode is on.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Insert the
	corresponding pragma of aspect SPARK_Mode in the visible
	declarations of a package declaration.
	* sem_prag.adb (Analyze_Pragma): Trigger the volatile object
	check when SPARK_Mode is on.
	* sem_res.adb (Resolve_Actuals): Trigger the volatile object
	check when SPARK_Mode is on.
	(Resolve_Entity_Name): Trigger
	the volatile object check when SPARK_Mode is on.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_prag.adb, sem_prag.ads, sem_ch12.adb, sem_res.adb,
	sem_ch6.adb, a-except-2005.adb: Minor reformatting.

2014-01-21  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): When a class-wide
	object is declared, it is rewritten as a renaming of an dynamic
	expression that wraps the initial value.  The renaming declaration
	is first given an internal name, to prevent collisions with the
	entity already declared, and then the name is modified to reflect
	the original one. the modification of the name must preserve
	the source location of the original, to prevent spurious errors
	when compiling with style checks if the declaration involves
	more than one entity.

2014-01-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb Add entries for Async_Readers, Async_Writers,
	Effective_Reads and Effective_Writes in table Canonical_Aspect.
	* aspects.ads Add entries for Async_Readers, Async_Writers,
	Effective_Reads and Effective_Writes in tables Aspect_Id,
	Aspect_Names, Aspect_Delay and Implementation_Defined_Aspect.
	* atree.adb (Ekind_In): New version with 8 parameters.
	(Node34): New routine.
	(Set_Node34): New routine.
	* atree.ads (Ekind_In): New version with 8 parameters.
	(Node34): New routine.
	(Set_Node34): New routine.
	* einfo.adb Contract is now Node34.
	(Contract): Update the assertion and node usage.
	(Get_Pragma): Include pragmas Async_Readers, Async_Writers,
	Effective_Reads and Effective_Writes.
	(Set_Contract): Update the assertion and node usage.
	(Write_Field24_Name): Remove the output for a contract.
	(Write_Field34_Name): Add output for a contract.
	* einfo.ads Contract is now Node34. Update the comment on
	attribute usage and related node structures.
	(Get_Pragma): Update the comment on usage.
	* par-prag.adb (Prag): Pragmas Async_Readers, Async_Writers,
	Effective_Reads and Effective_Writes do not require special
	processing by the parser.
	* sem_ch3.adb (Analyze_Variable_Contract): New routine.
	(Analyze_Declarations): Analyze the contract of a variable at
	the end of the declarative region.
	(Analyze_Object_Declaration): Create a contract for a variable.
	* sem_ch6.adb (Analyze_Subprogram_Contract): Update the retrieval
	of classification pragmas.
	(Process_Formals): Detect an illegal
	use of a volatile object as a formal in a function.
	* sem_ch12.adb (Instantiate_Object): Detect an illegal use of
	a volatile object as an actual in generic instantiation.
	* sem_prag.adb Add entries for Async_Readers, Async_Writers,
	Effective_Reads and Effective_Writes in table Sig_Flags.
	(Analyze_External_State_In_Decl_Part): New routine.
	(Analyze_Global_Item): Detect an illegal use of a volatile object
	as a global item of a function.
	(Analyze_Pragma): Reimplement
	pragma Abstract_State. Add support for pragmas Async_Readers,
	Async_Writers, Effective_Reads and Effective_Writes.
	(Check_External_Properties): New routine.
	* sem_prag.ads (Analyze_External_State_In_Decl_Part): New routine.
	(Check_External_Properties): New routine.
	* sem_res.adb (Resolve_Actuals): Detect an illegal use of a
	volatile object as an actual in a call.
	(Resolve_Entity_Name):
	Add local variables Par, Prev and Usage_OK. Detect illegal
	contexts of volatile objects.
	* sem_util.adb (Add_Contract_Item): Add support for
	pragmas associated with the contract of a variable.
	(Async_Readers_Enabled): New routine.
	(Async_Writers_Enabled): New routine.
	(Effective_Reads_Enabled): New routine.
	(Effective_Writes_Enabled): New routine.
	(Has_Enabled_Property):
	New routine.
	(Is_Unchecked_Conversion_Instance): New routine.
	(Is_Volatile_Object): Add support for entities that may denote
	a volatile object.
	* sem_util.ads (Add_Contract_Item): Update the
	comment on usage.
	(Async_Readers_Enabled): New routine.
	(Async_Writers_Enabled): New routine.
	(Effective_Reads_Enabled): New routine.
	(Effective_Writes_Enabled): New routine.
	(Is_Unchecked_Conversion_Instance): New routine.
	* sinfo.ads Update the comment on the structure of N_Contract.
	* snames.ads-tmpl Add predefined names for Async_Readers,
	Async_Writers, Effective_Reads and Effective_Writes. Add
	pragma ids for Async_Readers, Async_Writers, Effective_Reads
	and Effective_Writes.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Eval_Op_Expon): Use CRT_Safe_Compile_Time_Known_Value
	* sem_eval.adb (Compile_Time_Known_Value): Remove special
	handling of CRT mode (CRT_Safe_Compile_Time_Known_Value): New
	function (Eval_Op_Expon): Add CRT_Safe in call to Test_Foldable
	(Test_Foldable): Add CRT_Safe parameter
	* sem_eval.ads (Compile_Time_Known_Value): Remove special
	handling of CRT mode.
	(CRT_Safe_Compile_Time_Known_Value): New function.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case SPARK_Mode): Fix problem
	with pragma or aspect that applies to package spec or subprogram
	spec.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* exp_aggr.adb: Minor reformatting.

2014-01-21  Johannes Kanig  <kanig@adacore.com>

	* gnat1drv.adb (Gnat1drv) remove obsolete reference to -gnatd.H.

2014-01-21  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Document the "checks" attribute in gnat2xml.

2014-01-21  Steve Baird  <baird@adacore.com>

	* gnat_rm.texi: Improve description of SPARK_Mode pragma.

2014-01-21  Vincent Celier  <celier@adacore.com>

	* prj-part.adb (Parse_Single_Project): Accept to extend a project
	if it has only be imported by an project being extended. When a
	project that has only been imported by a project being extended
	is imported by another project that is not being extended,
	reset the previous indication, so that it will be an error if
	this project is extended later.
	* prj-tree.adb (Create_Project): Include component From_Extended
	in table Projects_HT
	* prj-tree.ads (Project_Name_And_Node): New Boolean component
	From_Extended

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* atree.ads, atree.adb: Add Node33 and Set_Node33.
	* einfo.ads, einfo.adb (SPARK_Pragma): New field (SPARK_Aux_Pragma):
	New field (SPARK_Pragma_Inherited): New flag
	(SPARK_Aux_Pragma_Inherited): New flag (SPARK_Mode_Pragmas):
	Removed.
	* lib.ads, lib.adb: Remove SPARK_Mode_Pragma, no longer used.
	* opt.ads (SPARK_Mode_Pragma): New global variable.
	* sem.ads: Add Save_SPARK_Mode_Pragma field to Scope_Stack_Entry.
	* sem_ch3.adb: Use new SPARK_Mode data structures.
	* sem_ch6.adb: Set SPARK_Mode fields in subprogram specs and bodies.
	* sem_ch7.adb: Set SPARK_Mode fields in package spec and body entities.
	* sem_ch8.adb (Push_Scope): Save SPARK_Mode_Pragma.
	(Pop_Scope): Restore SPARK_Mode_Pragma.
	* sem_prag.adb (Analyze_Pragma, case SPARK_Mode): Rewrite for
	new data structures.

2014-01-21  Arnaud Charlet  <charlet@adacore.com>

	* back_end.adb: Undo previous change, not needed. Minor reformatting.

2014-01-21  Thomas Quinot  <quinot@adacore.com>

	* exp_ch5.adb: Fix comment.
	* switch-c.adb: Minor comment update.
	* exp_ch3.adb: Minor reformatting.

2014-01-21  Arnaud Charlet  <charlet@adacore.com>

	* back_end.adb (Scan_Compiler_Arguments): Do not store object
	filename in gnatprove mode.

2014-01-21  Thomas Quinot  <quinot@adacore.com>

	* sinfo.ads (No_Ctrl_Actions): Clarify documentation (flag also
	suppresses usage of primitive _assign for tagged types).
	* exp_aggr.adb (Build_Array_Aggr_Code.Gen_Assign): Set
	No_Ctrl_Actions for a tagged type that does not require
	finalization, as we want to disable usage of _assign (which
	may cause undesirable discriminant checks on an uninitialized,
	invalid target).

2014-01-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb: Reject invariant'class on completion.

2014-01-21  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Build_Init_Procedure): For
	derivations of interfaces, do not move the the initialization
	of the _parent field since such assignment is not generated.

2014-01-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Rewrite_Renamed_Operator): Do not replace entity
	with the operator it renames if we are within an expression of
	a pre/postcondition, because the expression will be reanalyzed
	at a later point, and the analysis of the renaming may affect
	the visibility of the operator when in an instance.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads, sinfo.adb: Change Do_Discriminant_Check to use new Flag1.
	Add this flag to type conversion nodes and assignment nodes.
	* treepr.adb: Deal properly with Flag 1,2,3.
	* treeprs.adt: Minor comment update.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb (Compile_Time_Known_Value): Add Ignore_CRT
	parameter.
	* sem_eval.ads (Compile_Time_Known_Value): Add Ignore_CRT
	parameter, completely rewrite spec.

2014-01-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Install_Withed_Unit): If the unit is a subprogram
	instance that is inlined, it may have been rewritten as a wrapper
	package. In that case the unit that must be made visible is the
	related instance of the package.

2014-01-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch9.adb (Expand_N_Selective_Accept.Add_Accept): Refine
	previous change in codepeer mode.

2014-01-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch9.adb (Expand_N_Selective_Accept.Add_Accept): Always add
	call to Abort_Undefer, as expected by the runtime.
	* s-tasren.adb (Local_Complete_Rendezvous): Replace
	Defer_Abort_Nestable by Defer_Abort, since we do not expect abort to be
	deferred at this point. Update comments.

2014-01-21  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb, exp_ch5.adb, checks.adb: Minor reformatting.

2014-01-21  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb, usage.adb, gnat_ugn.texi: Mark -gnates as internal,
	remove from doc.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* switch-c.adb, usage.adb, atree.adb, atree.ads: Minor reformatting.

2014-01-21  Thomas Quinot  <quinot@adacore.com>

	* atree.adb, atree.ads (Num_Extension_Nodes): Switch to Node_Id, since
	this is value is used in Node_Id arithmetic operations.
	(Copy_Node, Exchange_Entities): Use loops indexed by Num_Extension_Nodes
	instead of hard-coded unrolled code.

2014-01-21  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb: Minor code cleanup, removing useless code.

2014-01-21  Arnaud Charlet  <charlet@adacore.com>

	* opt.ads (SPARK_Switches_File_Name): New.
	* switch-c.adb (Scan_Front_End_Switches): Add handling of -gnates=xxx *
	* usage.adb (Usage): Document -gnates, in gnatprove mode only.
	* gnat_ugn.texi: Document -gnates.

2014-01-21  Yannick Moy  <moy@adacore.com>

	* errout.adb (Special_Msg_Delete): Update comment. Remove
	special case for GNATprove which should not ignore mismatch
	in sizes for representation clauses.
	* sem_prag.adb (Analyze_Pragma): Remove special case for GNATprove
	which should not ignore pragma Pack.

2014-01-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb: Code clean up.

2014-01-21  Steve Baird  <baird@adacore.com>

	* gnat_rm.texi: Improve GNAT RM description of SPARK_Mode pragma.

2014-01-21  Robert Dewar  <dewar@adacore.com>

	* gcc-interface/gigi.h: Get Flags array address.
	* gcc-interface/trans.c: Acquire Flags array address.
	* atree.adb: Add support for Flags array and Flag0,1,2,3.
	* atree.ads: Add support for Flags array and Flag0,1,2,3.
	* atree.h: Add support for Flags array and Flag0,1,2,3.
	* back_end.adb: Pass Flags array address to gigi.

2014-01-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Attribute_Renaming): Transfer original attribute
	reference to generated body so that legality checks on stream
	attributes are properly applied. If type is tagged and already
	frozen, insert generated body at the point of the renaming
	declaration.

2014-01-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Code clean up.
	* sem_ch8.adb: Minor reformatting

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* checks.adb: Check SPARK_Mode instead of GNATProve_Mode for
	converting warnings on inevitable exceptions to errors.
	* exp_ch4.adb: Check SPARK_Mode instead of GNATProve_Mode for
	converting warnings on inevitable exceptions to errors.
	* opt.adb (SPARK_Mode_Config): Handled like other config flags
	* opt.ads (SPARK_Mode_Type): Moved here from types (renamed from
	SPARK_Mode_Id) (SPARK_Mode_Type): Add pragma Ordered, remove
	SPARK_ from names (SPARK_Mode): New flag (SPARK_Mode_Config):
	New flag (Config_Switches_Type): Add SPARK_Mode field
	* sem.adb: Minor code reorganization (remove unnecessary with)
	* sem.ads (Scope_Stack_Entry): Add Save_SPARK_Mode field
	* sem_aggr.adb: Check SPARK_Mode instead of GNATProve_Mode for
	converting warnings on inevitable exceptions to errors.
	* sem_attr.adb: Check SPARK_Mode instead of GNATProve_Mode for
	converting warnings on inevitable exceptions to errors.
	* sem_ch3.adb: Check SPARK_Mode instead of GNATProve_Mode for
	converting warnings on inevitable exceptions to errors.
	* sem_ch4.adb: Check SPARK_Mode instead of GNATProve_Mode for
	converting warnings on inevitable exceptions to errors.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Reset SPARK_Mode
	from spec if needed
	* sem_ch7.adb (Analyze_Package_Body_Helper): Reset SPARK_Mode
	from spec if needed
	* sem_ch8.adb (Push_Scope): Save SPARK_Mode (Pop_Scope):
	Restore SPARK_Mode
	* sem_elab.adb: Check SPARK_Mode instead of GNATProve_Mode for
	converting warnings on inevitable exceptions to errors.
	* sem_prag.adb (Get_SPARK_Mode_From_Pragma): New function
	(Get_SPARK_Mode_Id): Removed (Get_SPARK_Mode_Type): New name
	of Get_SPARK_Mode_Id
	* sem_prag.ads (Get_SPARK_Mode_From_Pragma): New function
	* sem_res.adb: Check SPARK_Mode instead of GNATProve_Mode for
	converting warnings on inevitable exceptions to errors.
	* sem_util.adb: Check SPARK_Mode instead of GNATProve_Mode for
	converting warnings on inevitable exceptions to errors.
	* types.ads (SPARK_Mode_Id): Moved to opt.ads and renamed
	SPARK_Mode_Type

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Add semantic information to rewritten type
	reference.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): If both sides
	are of a type with unknown discriminants, convert both to the
	underlying view of the type, so that the proper constraint check
	can be applied to the right-hand side.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* atree.adb (Copy_Node): Fix failure to copy last component
	(Exchange_Entities): Fix failure to exchange last entity

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Code clean up.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi, sem_ch4.adb: Minor reformatting.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Quantified_Expression): If after
	pre-analysis  the loop parameter specification has been
	rewritten as a iterator specification, propagate the change to
	the quantified expression, for ASIS navigtion needs.

2014-01-20  Vincent Celier  <celier@adacore.com>

	* par-ch10.adb: Minor error message change: escape [ and ].

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* checks.adb: Make warnings on exceptions into errors in GNATprove mode.
	* errout.adb: Implement [ and ] insertion characters.
	* errout.ads: Document new [ and ] insertion characters.
	* sem_ch12.adb, restrict.adb, frontend.adb, exp_ch7.adb: Minor
	addition of ??? comment.
	* lib-xref.adb, exp_util.adb, gnat1drv.adb: Minor reformatting
	* exp_ch4.adb, sem_ch3.adb, sem_ch4.adb, sem_ch6.adb, sem_elab.adb,
	sem_eval.adb, sem_res.adb, sem_util.adb, sem_attr.adb, sem_aggr.adb:
	Make warnings on exceptions into errors in GNATprove mode.
	* sem_dim.adb: Minor reformatting throughout Quote [ and ]
	in error messages.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Code clean up.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* errout.ads, errout.adb: Implement >? >x? >X? sequences in error
	messages.
	* sem_ch6.adb (Check_Statement_Sequence): Missing return is an
	error in GNATprove mode.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* par-ch4.adb (Is_Parameterless_Attribute): The Ada2012 attribute
	reference 'Old takes no parameters, and thus can appear as a
	prefix of a slice.

2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_aggr.adb: Fix minor typos.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Constrained): In an
	instance the attribute is legal, and its value is determined
	statically if the type has no discriminants. This choice is
	more useful than rechecking the legality rule in the instance,
	is consistent with older usage, and is also consistent with all
	existing tests.

2014-01-20  Arnaud Charlet  <charlet@adacore.com>

	* sem_cat.adb (Validate_Static_Object_Name): Change error into
	warning in Relaxed_Semantic_Mode.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: Code and comments cleanup.

2014-01-20  Yannick Moy  <moy@adacore.com>

	* debug.adb Free debug flags -gnatd.D, -gnatd.G and -gnatd.V *
	* errout.adb (Compilation_Errors): Remove special handling in
	GNATprove mode.
	* gnat1drv.adb (Adjust_Global_Switches): Remove handling of the
	removed debug flags.
	* gnat_rm.texi: Initial documentation for Abstract_State, Depends,
	Global, Initial_Condition, Initializes and Refined_State pragmas and
	aspects.
	* opt.ads (Frame_Condition_Mode, Formal_Extensions,
	SPARK_Strict_Mode): Remove global flags.
	* sem_ch3.adb (Analyze_Object_Declaration): Check of no hidden state
	always performed now, on packages declaring a null state.
	(Signed_Integer_Type_Declaration): Remove ill-designed attempt
	at providing pedantic mode for bounds of integer types.
	* sem_ch4.adb (Analyze_Quantified_Expression): Warning on suspicious
	"some" quantified expression now issued under control of -gnatw.t,
	like the other warning on unused bound variable.
	* sem_prag.adb (Check_Precondition_Postcondition): Remove useless test
	on removed flag.
	(Analyze_Pragma): Remove tests for SPARK 2014
	pragmas, not officially allowed by GNAT.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Ensure that
	the sole argument of pragmas Abstract_State, Contract_Cases,
	Depends, Global and Initializes in in aggregate form.
	(Analyze_Refined_Pragma): Ensure that the sole argument of
	pragmas Refined_Depends, Refined_Global and Refined_State is in
	aggregate form.
	(Ensure_Aggregate_Form): New routine.

2014-01-20  Doug Rupp  <rupp@adacore.com>

	* sem_attr.adb (Analyze_Attribute): case
	Attribute_Constrained => treat all prefixes as legal for Declib
	compatibility.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Mode): Reimplement the routine.
	(Find_Mode): New routine.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb (Operator_Check): Handle additional
	Allow_Integer_Address cases.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi (Allow_Integer_Address): Remove note about not
	allowed if address is non-private, no longer true.
	* sem_prag.adb (Analyze_Pragma, case Allow_Integer_Address):
	Remove check for address being private, causes difficulty when
	pragma used in gnat.adc file and is not needed, since we guard
	this in Address_Integer_Convert_OK.
	* exp_ch7.adb: Minor reformatting.
	* sem_ch4.adb: Handle operator operands in Allow_Integer_Address mode.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Apply_Range_Check): Remove gnatprove special
	casing of exponentiation.
	* sem_res.adb (Resolve_Op_Expon): Apply range check to right
	operand for integer case to check range against Natural.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* s-tataat.adb: Minor reformatting.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* einfo.adb (Is_Descendent_Of_Address): Now applies to all
	entities, and also fix documentation to remove mention of visible
	integer type, since this is not what the implementation does.
	* einfo.ads (Is_Descendent_Of_Address): Now applies to all
	entities, and also fix documentation to remove mention of visible
	integer type, since this is not what the implementation does.
	* gnat_rm.texi: Minor clarification of Allow_Integer_Address
	function.
	* sem_ch4.adb (Analyze_One_Call): Handle Allow_Integer_Address
	case for parameter type check.
	* sem_res.adb (Resolve): Use new function
	Address_Integer_Convert_OK.
	* sem_type.adb: Minor code reorganization (use Ekind_In) Minor
	reformatting throughout.
	* sem_util.adb (Address_Integer_Convert_OK): New function.
	* sem_util.ads: Minor reformatting (put specs in alpha order)
	(Address_Integer_Convert_OK): New function.

2014-01-20  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb (Wrap_Transient_Expression):
	Insertion extra conditional expression only if
	Opt.Suppress_Control_Flow_Optimizations is set.

2014-01-20  Arnaud Charlet  <charlet@adacore.com>

	* s-tataat.adb (Initialize_Attributes): Abort might already be
	deferred in Create_Task.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Flag
	the exponent as requiring a range check when the expression is
	an exponentiation.

2014-01-20  Fedor Rybin  <frybin@adacore.com>

	* gnat_ugn.texi: Documenting --passed-tests option for gnattest.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Default_Initialization): New routine.
	* sem_util.ads: Add new type Default_Initialization_Kind.
	(Default_Initialization): New routine.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Mode): Correct all error
	message logic dealing with in/in out parameters that may appear
	as inputs or have a self reference.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, checks.adb, exp_intr.adb: Minor reformatting.
	* sem_res.adb (Resolve): Fix error causing infinite loop for
	integer used as address. Allow addresses as integers.

2014-01-20  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-linux.ads (struct_sigaction): Fix rep clause.

2014-01-20  Bob Duff  <duff@adacore.com>

	* par-ch8.adb (P_Use_Type_Clause): Detect syntax
	error when "use all" is not followed by "type".

2014-01-20  Bob Duff  <duff@adacore.com>

	* exp_intr.adb (Expand_Unc_Deallocation): Remove warning on abort
	followed by free.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Address_Clause_Check): If there is an
	alignment check on the expression in an address clause, and there
	is no local exception propagation, add an additional explanatory
	message to clarify the cause of previous warning.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb: Minor reformatting.
	* opt.ads: Minor comment updates.
	* sem.adb: Minor name change Is_Main_Unit =>
	Is_Main_Unit_Or_Main_Unit_Spec.
	* sem_ch6.adb: Minor reformatting and code reorganization.

2014-01-20  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Update gnatpp switches.

2014-01-20  Thomas Quinot  <quinot@adacore.com>

	* exp_ch9.adb: Minor comment edit.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document that Allow_Integer_Address is permitted
	only if System.Address is a private type.
	* opt.ads (Allow_Integer_Address): No longer set by -gnates.
	* sem_prag.adb (Analyze_Pragma, case Allow_Integer_Address):
	Allowed only if type System.Address is private, since otherwise
	it makes no sense.
	* sem_res.adb: Fix failure to properly Analyze unchecked
	conversions that were introduced by Allow_Integer_Address.
	* switch-c.adb: Remove -gnates switch.
	* usage.adb: Remove -gnates switch.
	* gnat_ugn.texi: Remove documentation of -gnates flag.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Pre-analyze and
	resolve expression to perform proper name capture.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem.adb (Semantics): When saving/restoring configuration
	switches, the spec of a pre- defined unit that is the main unit
	must be treated as a predefined unit as well.

2014-01-20  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb (Wrap_Transient_Expression): For a Boolean
	expression, insert an extra conditional expression when saving
	the value of the expression, for the benefit of control flow
	graph based coverage analysis.
	* exp_ch3.adb: Minor reformatting.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb: Set Allow_Integer_Address in relaxed semantics mode.
	* gnat_rm.texi: Document pragma Allow_Integer_Address.
	* gnat_ugn.texi: Document pragma Allow_Integer_Address, -gnates.
	* opt.ads: New flag Allow_Integer_Address.
	* par-prag.adb: Dummy entry for pragma Allow_Integer_Address.
	* sem_ch5.adb: Minor reformatting.
	* sem_prag.adb: Implement pragma Allow_Integer_Address.
	* sem_res.adb (Resolve): Allow integer address value if
	switch set.
	* sem_util.adb: Minor reformatting.
	* snames.ads-tmpl: Add entry for pragma Allow_Integer_Address.
	* switch-c.adb: Recognize flag -gnates.
	* usage.adb: Document flag -gnates.

2014-01-20  Thomas Quinot  <quinot@adacore.com>

	* s-tadeca.adb: Fix minor typos in comment.

2014-01-20  Pascal Obry  <obry@adacore.com>

	* s-win32.ads (FreeLibrary): New import.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb, sem_cat.adb: Minor reformatting.
	* sem_ch11.adb (Analyze_Raise_Statement): Only give warning about
	assigning to OUT parameters for the current subprogram scope.
	* exp_ch4.adb: Minor reformatting.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Process_Transient_Object,
	Find_Enclosing_Contexts): If the top-level if-expression that
	generated the transient object is an actual in a call, the proper
	Hook_Context is a construct enclosing the call.
	* einfo.ads: Indicate that Related_Expression is used to link a
	loop variable to the container expression over which the loop
	takes place.
	(Analyze_Iterator_Specification): Set the Related_Expression of
	the loop variable in a container element iterator.
	(Note_Possible_Modification): If the variable is the loop
	variable in a container element iterator, indicate that the
	enclosing container is also modified.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb (Move_Or_Merge_Aspects): Reimplemented.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* s-taasde.ads, gnat_ugn.texi, s-tadeca.adb, sem_res.adb, s-tadeca.ads:
	Minor reformatting and code clean up.

2014-01-20  Arnaud Charlet  <charlet@adacore.com>

	* sem_cat.adb (Validate_Object_Declaration): Relax semantics
	of objects of private type if Relaxed_RM_Semantics.

2014-01-20  Claire Dross  <dross@adacore.com>

	* a-cofove.ads (Vector): Capacity discriminant
	should be in range of the index.

2014-01-20  Thomas Quinot  <quinot@adacore.com>

	* a-caldel.ads(To_Duration), s-taasde.ads(Time_Enqueue):
	Clarify specs s-tadeca.adb(Enqueue_Calendar): Compensate for
	possible difference between epoch of Ada.Calendar clock and Ada
	real-time/tasking clock.
	* s-taprop-posix.adb: Minor comment fix.

2014-01-20  Doug Rupp  <rupp@adacore.com>

	* sysdep.c [vxworks]: Remove Vxworks version noise for RTP.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Generate validity
	checks on the prefix of attribute 'Old.
	* sem_ch3.adb (Process_Range_Expr_In_Decl): Suppress the
	generation of validity checks on a range that belongs to the
	iteration scheme of a quantified expression.
	* sem_ch5.adb (One_Bound): Suppress the generation of validity
	checks on a bound that belongs to the iteration scheme of a
	quantified expression, generate the check in all other cases.

2014-01-20  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Enable --pp-new by default. Minor reorganization.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve): When compiling a predefined unit, ignore
	interpretations that do not come from other predefined units,
	to prevent spurious ambiguities in the presence of user-defined
	operators in the context of (an instance of) a predefined unit.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document that Loop_Variant is included in
	Statement_Assertions.
	* sem_prag.adb (Check_Kind): Add Loop_Variant to
	Statement_Assertions (Check_Applicable_Policy): Add Loop_Variant
	to Statement_Assertions.

2014-01-20  Doug Rupp  <rupp@adacore.com>

	* sysdep.c (__gnat_is_file_not_found_error) [vxworks6]: Add case
	for errno ENOENT from RTP on NFS mounted file system.

2014-01-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Check_Function_Writable_Actuals): 1) Do not
	examine code that does not come from source. The check does not
	apply to code generated for constraint checks, and such code may
	generate spurious error messages when compiled with expansion
	disabled (as in a generic unit) because side effects may not
	have been removed.
	2) Make error messages more explicit: indicate the component
	of the	construct whose value is indeterminate because of a
	call to a function with in-out parameter in another component,
	when there is no mandated order of execution between the two
	components (actuals, aggregate components, alternatives).

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor cleanup.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Attributes 'Old and 'Result
	can now apply to a refined postcondition.
	* sem_ch6.adb (Analyze_Subprogram_Contract): Remove local
	variable Result_Seen. Add variables Case_Prag, Post_Prag,
	Seen_In_Case and Seen_In_Post. Update the mechanism that detects
	whether postconditions and/or constract-cases mention attribute
	'Result and introduce a post-state when applied to functions.
	(Check_Result_And_Post_State): Removed.
	* sem_prag.adb (Analyze_Pragma): Add local variable
	Result_Seen. Verify that the expression of pragma Refined_Post
	mentions attribute 'Result and introduces a post-state.
	* sem_util.ads, sem_util.adb (Check_Result_And_Post_State): New routine.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Is_Subprogram_Call): New routine.
	(Process_Transient_Objects): Make variable Must_Hook global with
	respect to all locally declared subprograms. Search the context
	for at least one subprogram call.
	(Requires_Hooking): Removed.

2014-01-20  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads a-cfhama.ads a-cfhase.ads a-cforma.ads
	* a-cforse.ads a-cofove.ads: Add pragma Annotate (GNATprove,
	External_Axiomatization);

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case Loop_Entry): Allow
	Loop_Entry in Assert, Assert_And_Cut, and Assume pragmas.
	* sem_prag.adb (Analyze_Pragma, case Assert[_And_Cut], Assume):
	Allow Loop_Entry to be used in these pragmas if they appear in
	an appropriate context.
	(Placement_Error): Specialize error
	message for pragma Assert[_And_Cut] or pragma Assume containing
	Loop_Entry attribute.
	* a-exexpr-gcc.adb, sinput.adb: Minor reformatting.
	* s-excmac-arm.ads, s-except.ads, s-excmac-gcc.ads: Minor reformatting
	and code clean ups.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb: Minor comment update.

2014-01-20  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c (PERSONALITY_FUNCTION/arm): Remove unused
	variables, comment out unused code.
	* a-exexpr-gcc.adb: Move declarations to s-excmac-gcc.ads
	* s-excmac-gcc.ads: New file, extracted from a-exexpr-gcc.adb
	* s-excmac-arm.ads: New file.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Slice): Remove constant D and variables
	Drange and Index_Typ. Remove the circuitry which creates a
	range check to compare the index type of the array against the
	discrete_range.
	* sem_res.adb (Resolve_Slice): Add local variable Dexpr. Update
	the circuitry which creates a range check to handle a
	discrete_range denoted by a subtype indication.

2014-01-20  Pierre-Marie Derodat  <derodat@adacore.com>

	* sinput.adb, sinput.ads (Sloc_Range): Traverse the tree of original
	nodes to get the original sloc range.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Use Defining_Entity to obtain the
	entity of a [library level] package.

2014-01-20  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c (exception_class_eq): New function.
	(is_handled_by): Use it to compare exception classes.
	(PERSONALITY_STORAGE): Define.	(continue_unwind): New function to
	be called to return URC_CONTINUE_UNWIND.
	(personality_body): New function, extracted from PERSONALITY_ROUTINE.
	(PERSONALITY_ROUTINE): Add an implementation for the ARM unwinder.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* opt.ads: Minor comment update.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Slice): Relocate some variables and
	constants to the "Local variables" area. Add new constant D. Add
	new variables Drange and Index_Typ.  Rename Pfx to Rep and Ptp
	to Pref_Typ and update all occurrences. Add circuitry to extract
	the discrete_range and the index type and build a range check.

2014-01-20  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Enable
	Treat_Categorization_Errors_As_Warnings when Relaxed_RM_Semantics
	is set.

2014-01-20  Thomas Quinot  <quinot@adacore.com>

	* sem_ch5.adb, sem_ch4.adb: Minor reformatting.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications):
	When aspect SPARK_Mode appears on a package body, insert the
	generated pragma at the top of the body declarations.

2014-01-20  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb, exp_prag.adb, sem_aux.adb, sinfo.ads, sem_ch10.adb,
	checks.adb, sem_prag.adb, sem_ch12.adb, freeze.adb, g-arrspl.adb,
	expander.adb, gnat1drv.adb, exp_ch4.adb, sem_ch6.adb,
	sem_ch8.adb, exp_dist.adb: Minor reformatting.

2014-01-20  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Gnat1drv): Call Write_ALI with Object=True in GNATprove
	mode.

2014-01-20  Pascal Obry  <obry@adacore.com>

	* g-arrspl.ads (Slice_Set): New definition (will use a copy on
	write scheme).
	* g-arrspl.adb: Adapt all routine to this new implementation.
	(Set): Copy the Slice_Set definition before reusing it.

2014-01-20  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Process_Import_Or_Interface): In
	Relaxed_RM_Semantics, support old Ada 83 style of pragma Import.
	(Analyze_Pragma): Ditto for pragma Export.
	* exp_prag.adb (Expand_Pragma_Import_Or_Interface): Handle old pragma
	Import style.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.ads: E_Abstract_State is now part of the entities that
	can be overloaded. Update type Overloadable_Kind to reflect the
	inclusion of abstract states.
	* sem_ch6.adb (New_Overloaded_Entity): A function can now
	overload an abstract state.
	* sem_prag.adb (Analyze_Constituent): Handle the overloading
	of states by functions. Use Entity_Of to obtain the entity of
	a constituent.	(Analyze_Global_Item): Handle the overloading of
	states by functions.
	(Analyze_Initialization_Item): Handle the
	overloading of states by functions.  Use Entity_Of to obtain the
	entity of an item.
	(Analyze_Input_Item): Handle the overloading
	of states by functions. Use Entity_Of to obtain the entity of an item.
	(Analyze_Input_Output): Handle the overloading of states by functions.
	(Analyze_Refinement_Clause): Handle the overloading
	of states by functions.  Use Entity_Of to obtain the entity of an item.
	(Appears_In): Use Entity_Of to obtain the entity of an element.
	(Check_Usage): Use Entity_Of to obtain the entity of
	an item. Add a guard to prevent a crash due to a previous error.
	(Resolve_State): New routine.

2014-01-20  Yannick Moy  <moy@adacore.com>

	* spark_xrefs.ads, debug.adb, gnat1drv.adb, errout.adb, errout.ads,
	opt.ads: Minor comments updates.

2014-01-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Non_Limited_View): Applies to abstract states.
	(Set_From_Limited_With): Applies to abstract states.
	(Set_Non_Limited_View): Applies to abstract states.
	(Write_Field17): Output the non-limited view of an abstract state.
	* einfo.ads: Update the comment on usage and occurrences in
	nodes for attributes From_Limited_With and Non_Limited_View.
	* sem_aux.adb (Available_View): This routine can now handle
	abstract states.
	* sem_aux.ads (Available_View): This routine can now handle
	abstract states. Update the comment on usage.
	* sem_ch8.adb (Find_Expanded_Name): Handle abstract views
	of states and variables.
	(In_Pragmas_Depends_Or_Global): New routine.
	* sem_ch10.adb (Build_Limited_Views): Implement
	abstract (limited) views of variables and states.
	(Build_Shadow_Entity): This routine is now a procedure. Add
	formal parameter Shadow. Update the comment on usage. Add
	context-specific decoration for states and variables.
	(Decorate_State): New routine.	(Decorate_Variable): New routine.
	(Find_And_Process_States): New routine.
	(Process_Declarations): Renamed to Process_Declarations_And_States.
	(Process_Declarations_And_States): Add formal parameters
	Pack and Create_Abstract_Views. Update the comment on usage.
	(Process_States): New routine.
	* sem_prag.adb (Check_Dependency_Clause): Handle abstract
	views of states and variables. Match the abstract view of a state
	against its corresponding non-abstract view.
	(Is_Matching_Input):
	Handle abstract views of states and variables. Match the abstract
	view of a state against its corresponding non-abstract view.
	(Process_Global_Item): Handle abstract views of states and
	variables.

2014-01-20  Bob Duff  <duff@adacore.com>

	* sem_ch10.adb (Expand_With_Clause): Don't
	recurse on the prefix if the current with-ed name refers to a
	package that renames its own parent, eg "package P.Q renames P;".

2014-01-20  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK_Call): Remove procedure.
	* opt.adb, opt.ads (Full_Expander_Active): Remove function.
	* checks.adb, exp_ch6.adb, exp_ch9.adb, exp_disp.adb, sem_aggr.adb,
	* sem_ch10.adb, sem_ch5.adb, sem_ch6.adb, sem_ch8.adb, sem_ch9.adb,
	* sem_disp.adb, sem_res.adb Replace Full_Expander_Active by
	Expander_Active.

2014-01-20  Yannick Moy  <moy@adacore.com>

	* sinfo.ads Update documentation of GNATprove mode.

2014-01-20  Yannick Moy  <moy@adacore.com>

	* adabkend.adb, ali-util.adb, errout.adb, exp_ch7.adb,
	* exp_dbug.adb, freeze.adb, lib-xref.adb, restrict.adb,
	* sem_attr.adb, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_ch8.adb,
	* sem_prag.adb, sem_res.adb, sem_util.adb Rename SPARK_Mode into
	GNATprove_Mode.
	* sem_ch13.adb: Remove blank.
	* exp_spark.adb, exp_spark.ads (Expand_SPARK_Call): Only replace
	subprograms by alias for renamings, not for inherited primitive
	operations.
	* exp_util.adb (Expand_Subtype_From_Expr): Apply the expansion
	in GNATprove mode.
	(Remove_Side_Effects): Apply the removal in
	GNATprove mode, for the full analysis of expressions.
	* expander.adb (Expand): Call the light SPARK expansion in GNATprove
	mode.
	(Expander_Mode_Restore, Expander_Mode_Save_And_Set): Ignore
	save/restore actions for Expander_Active flag in GNATprove mode,
	similar to what is done in ASIS mode.
	* frontend.adb (Frontend): Generic bodies are instantiated in
	GNATprove mode.
	* gnat1drv.adb (Adjust_Global_Switches): Set operating
	mode to Check_Semantics in GNATprove mode, although a light
	expansion is still performed.
	(Gnat1drv): Set Back_End_Mode to
	Declarations_Only in GNATprove mode, and later on special case
	the GNATprove mode to continue analysis anyway.
	* lib-writ.adb (Write_ALI): Always generate ALI files in
	GNATprove mode.
	* opt.adb, opt.ads (Full_Expander_Active): Make it equivalent to
	Expander_Active.
	(SPARK_Mode): Renamed as GNATprove_Mode.
	* sem_aggr.adb (Aggregate_Constraint_Checks): Add checks in the
	tree in GNATprove_Mode.
	* sem_ch12.adb (Analyze_Package_Instantiation): Always instantiate
	body in GNATprove mode.
	(Need_Subprogram_Instance_Body): Always instantiate body in GNATprove
	mode.
	* sem_ch3.adb (Constrain_Index, Process_Range_Expr_In_Decl):
	Make sure side effects are removed in GNATprove mode.

2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Robustify tests
	for aliased objects with an unconstrained nominal subtype.
	* gcc-interface/trans.c (Call_to_gnu): Likewise.
	(gnat_to_gnu) <case N_Op_Not>: Robustify test for private type.
	<case N_Op_Minus>: Remove useless code.
	(Exception_Handler_to_gnu_zcx): Minor tweaks.

2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <case E_Record_Subtype>:
	Tidy up.  For a subtype with discriminants and variant part, if a
	variant is statically selected and the fields all have a constant
	position, put them in order of increasing position.  Likewise if
	no variant part but representation clause is present.
	* gcc-interface/utils.c (make_packable_type): Robustify.
	(maybe_pad_type): Use local variable and tidy up condition.  If no
	alignment is specified, use the original one.
	(create_type_stub_decl): Minor tweak.
	(convert) <case VECTOR_CST>: Fix typo.
	<case CONSTRUCTOR>: Deal with padding types around the same type.
	Do not punt on missing fields.
	(unchecked_convert): Call finish_record_type to lay out the special
	record types made for conversions from/to problematic integer types.
	Bump the alignment of CONSTRUCTORs before converting them to a more
	aligned type.

2014-01-20  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <case E_Component>: Remove
	obsolete code for type_annotate_only mode, simplify code and slightly
	improve wording of comments.

2014-01-12  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/59772
	* gcc-interface/cuintp.c (build_cst_from_int): Use 32-bit integer type
	as intermediate type.
	(UI_To_gnu): Likewise.

2014-01-03  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatvsn.ads (Current_Year): Bump to 2014.

2014-01-02  Tobias Burnus  <burnus@net-b.de>

	* gnat_ugn.texi: Bump @copying's copyright year.

Copyright (C) 2014 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.
