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

	* gcc-interface/utils2.c (gnat_rewrite_reference) <REALPART_EXPR>: New
	case identical to FLOAT_EXPR.
	<IMAGPART_EXPR>: Likewise.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: During
	layout in type_annotate_only mode, skip discriminants of derived
	tagged types renaming those of the parent type.
	In type_annotate_only mode, if the type is tagged, do not override a
	size clause but take into account the alignment of the tag.
	(annotate_rep): In type_annotate_only mode, deal with  discriminants
	of derived tagged types renaming those of the parent type.

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

	* gcc-interface/utils.c (maybe_pad_type): In type_annotate_only mode,
	retrieve the component type if this is an array and do not issue the
	warning for concurrent types.

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

	* gcc-interface/ada-tree.h (TYPE_DEBUG_TYPE): Remove duplicate.

2015-12-17  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/ada-tree.h
	(TYPE_IMPLEMENTS_PACKED_ARRAY_P, TYPE_CAN_HAVE_DEBUG_TYPE_P,
	TYPE_ORIGINAL_PACKED_ARRAY, SET_TYPE_ORIGINAL_PACKED_ARRAY): New
	macros.
	* gcc-interface/decl.c (add_parallel_type_for_packed_array):
	Rename to associate_original_type_to_packed_array.  When
	-fgnat-encodings=minimal, set original packed array type as so
	instead of as a parallel type to the implementation type.  In
	this case, also rename the implementation type to the name of
	the original array type.
	(gnat_to_gnu_entity): Update invocations to
	add_parallel_type_for_packed_array.  Tag ARRAY_TYPE nodes for
	packed arrays with the TYPE_PACKED flag.
	When -fgnat-encodings=minimal:
	  - strip ___XP suffixes in packed arrays' names;
	  - set the debug type for padding records around packed arrays
	    to the packed array;
	  - do not attach ___XUP types as parallel types of constrained
	    array types.
	* gcc-interface/misc.c (gnat_print_type): Update to handle
	orignal packed arrays.
	(gnat_get_debug_type): Update to reject packed arrays
	implementation types.
	(get_array_bit_stride): New.
	(gnat_get_array_descr_info): Add packed arrays handling.
	* gcc-interface/utils.c (maybe_pad_type): When
	-fgnat-encodings=minimal, set the name of the padding type to
	the one of the original packed type, if any.  Fix TYPE_DECL
	peeling around the name of the input type.

2015-12-17  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/misc.c (gnat_get_type_bias): New.
	(LANG_HOOKS_GET_TYPE_BIAS): Redefine macro to implement the
	get_type_bias language hook.

2015-12-17  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/misc.c (gnat_get_array_descr_info): When the
	array has more dimensions than the language hook can handle,
	fall back to a nested arrays description.  Handle context-less
	array types.

2015-12-17  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): When
	-fgnat-encodings-minimal, do not add ___XUP/XUT suffixes to type
	names and do not generate ___XA parallel types.
	* gcc-interface/misc.c (gnat_get_array_descr_info): Match fat
	and thin pointers and generate the corresponding array type
	descriptions.

2015-12-17  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/ada-tree.def (POWER_EXPR): New binary operation.
	* gcc-interface/ada-tree.h (TYPE_FIXED_POINT_P): New macro.
	(TYPE_IS_FIXED_POINT_P): New macro.
	(TYPE_SCALE_FACTOR): New macro.
	(SET_TYPE_SCALE_FACTOR): New macro.
	* gcc-interface/decl.c: Include urealp.h
	(gnat_to_gnu_entity): Attach trees to encode scale factors to
	fixed-point types.
	* gcc-interface/misc.c (gnat_print_type): Print scale factors
	for fixed-point types.
	(gnat_get_fixed_point_type_info): New.
	(gnat_init_ts): Initialize data for the POWER_EXPR binary
	operation.
	(LANG_HOOKS_GET_FIXED_POINT_INFO): Redefine macro to implement
	the get_fixed_point_type_info language hook.

2015-12-17  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/ada-tree.h (struct lang_type): Rename the t
	field as t1 and add a t2 one.
	(get_lang_specific): New.
	(GET_TYPE_LANG_SPECIFIC): Refactor to use get_lang_specific.
	(SET_TYPE_LANG_SPECIFIC): Likewise.
	(GET_TYPE_LANG_SPECIFIC2): New macro.
	(SET_TYPE_LANG_SPECIFIC2): New macro.
	(TYPE_DEBUG_TYPE): New macro.
	(SET_TYPE_DEBUG_TYPE): New macro.
	* gcc-interface/decl.c (gnat_to_gnu_entity): When
	-fgnat-encodings=minimal, set padding types' debug type to the
	padded one (i.e. strip ___PAD GNAT encodings) and set
	constrained record subtypes's debug type to the base type.
	* gcc-interface/misc.c (gnat_print_type): Print debug types.
	(gnat_get_debug_type): New.
	(gnat_get_array_descr_info): When -fgnat-encodings=minimal, set
	a byte stride for arrays that contain a type whose debug type
	has variable length.
	(LANG_HOOKS_GET_DEBUG_TYPE): Redefine macro to implement the
	debug type language hook.
	* gcc-interface/utils.c (maybe_pad_type): When
	-fgnat-encodings=minimal, set padding types' debug type to the
	padded one.  Restore XVZ variables creation when
	-fgnat-encodings-minimal and use them to hold padding types'
	byte size.  For library-level padding types, share this variable
	across translation units.  Tag XVZ variables as artificial.

2015-12-17  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Disable ___XVS GNAT
	encodings when -fgnat-encodings=minimal.
	(components_to_record): Disable ___XVE, ___XVN, ___XVU and
	___XVZ GNAT encodings when -fgnat-encodings=minimal.
	* gcc-interface/utils.c (maybe_pad_type): Disable __XVS GNAT
	encodings when -fgnat-encodings=minimal.

2015-12-17  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/misc.c (gnat_encodings): Undefine macro and
	declare a global variable.
	(gnat_post_options): Initialize this global from options.

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

	PR ada/48013
	* gcc-interface/trans.c (empty_stmt_list_p): New predicate.
	(gigi): Invoke it to compute the No_Elaboration_Code property.
	(insert_code_for): Do not insert the code if it's empty.

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

	* gcc-interface/trans.c (Call_to_gnu): Remove guard for NULL_EXPR.
	* gcc-interface/utils2.c (gnat_rewrite_reference) <ERROR_MARK>: Return
	the reference unmodified.
	<NULL_EXPR>: New case.  Likewise.

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

	* gcc-interface/gigi.h (create_var_decl): Adjust comment.
	(create_subprog_decl): Likewise.
	* gcc-interface/utils.c (create_var_decl): Likewise.
	(create_subprog_decl): Likewise.

2015-12-10  Tom de Vries  <tom@codesourcery.com>

	PR ada/65102
	* gnat-style.texi: Set nodefaultgnufreedocumentationlicensenode and
	define @node GNU Free Documentation License locally.

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

	PR ada/66526
	* g-expect.adb (Set_Up_Child_Communications): Add matching condition
	for uses of Input, Ouput and Error variables after the Execvp call.

2015-12-08  Jakub Jelinek  <jakub@redhat.com>

	PR c/48088
	PR c/68657
	* gcc-interface/trans.c (Pragma_to_gnu): Adjust control_warning_option
	caller.

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

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

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

	PR ada/50048
	* gcc-interface/Makefile.in (INCLUDES): Use -iquote.

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

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

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

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

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

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

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

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

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

	* gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Reorder.

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

	* gcc-interface/trans.c (gigi): Fix initialization order.

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

	* osint.adb: Add use type clause for CRTL.size_t.
	(C_String_Length): Return CRTL.size_t instead of Integer.
	(To_Path_String_Access): Take CRTL.size_t instead of Integer.
	(Get_Libraries_From_Registry): Use CRTL throughout.
	(To_Canonical_Dir_Spec): Use CRTL.size_t instead of Integer.
	(To_Canonical_File_List): Likewise.
	(To_Canonical_File_Spec): Likewise.
	(To_Canonical_Path_Spec): Likewise.
	(To_Host_Dir_Spec): Likewise.
	(To_Host_File_Spec): Likewise.
	(Update_Path): Use CRTL throughout.
	* s-shasto.adb: Add with clause for System.CRTL.
	(Initialize): Rename CRTL.strncpy instead of importing it manually.

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

	* gcc-interface/gigi.h (create_var_decl): Adjust prototype.
	(create_subprog_decl): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Rename
	static_p into static_flag and add volatile_flag local variable.
	Do not locally change the type of a volatile object, except for the
	pointed-to type if the object is handled by reference.  Adjust calls
	to create_var_decl.
	<E_Subprogram_Type>: Likewise for const and noreturn subprograms.
	(get_minimal_subprog_decl): Adjust call to create_subprog_decl.
	(elaborate_expression_1): Adjust call to create_var_decl.
	(gnat_to_gnu_field): Minor tweak.
	* gcc-interface/trans.c (gigi): Adjust calls to create_var_decl and
	create_subprog_decl.
	(build_raise_check): Likewise.
	(Subprogram_Body_to_gnu): Likewise.
	(create_temporary): Likewise.
	(Handled_Sequence_Of_Statements_to_gnu): Likewise.
	(Exception_Handler_to_gnu_gcc): Likewise.
	(Compilation_Unit_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.
	* gcc-interface/utils.c (maybe_pad_type): Likewise.
	(create_var_decl): Add VOLATILE_FLAG parameter and handle it.
	(create_subprog_decl): Add CONST_FLAG and VOLATILE_FLAG parameters and
	handle them.

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

	* gcc-interface/gigi.h (is_simple_additive_expression): Declare.
	* gcc-interface/trans.c (struct range_check_info_d): Add DISP and
	NEG_P fields.
	(find_loop_for): Add DISP and NEG_P parameters with default value.
	Call is_simple_additive_expression to handle additive expressions.
	(Loop_Statement_to_gnu): Deal with displacement in range checks.
	(Raise_Error_to_gnu): Likewise.
	(gnat_to_gnu): Add call to find_loop_for.
	(is_simple_additive_expression): New function extracted from...
	(gnat_invariant_expr): ...here.  Call it on the expression.

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

	* gcc-interface/utils2.c (gnat_invariant_expr): Add type conversions.

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

	* gcc-interface/ada-tree.h (TYPE_MAX_ALIGN): New macro.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not set PACKED to -2.
	Remove obsolete code setting the alignment on some atomic types.
	When the type has no alignment but needs strict alignment and has a
	size clause, compute a maximum alignment and set it on the type.
	(adjust_packed): Remove handling of -2 argument.  Deal with TYPE_ALIGN
	and TYPE_MAX_ALIGN directly.
	(gnat_to_gnu_field): Do not document -2 as argument.
	(components_to_record): Likewise.
	* gcc-interface/utils.c (finish_record_type): Do not bump alignment of
	the record type beyond TYPE_MAX_ALIGN.  Reset the latter on exit.

	* gcc-interface/Makefile.in (PICFLAG_FOR_TARGET): Move around.
	(GNATLIBCFLAGS_FOR_C): Reformat.
	(GCC_CFLAGS): Delete.

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

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

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

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

2015-11-25  Arnaud Charlet  <charlet@adacore.com>

	* lib-xref-spark_specific.adb
	(Add_SPARK_Scope): Take entry families into account.
	* a-exetim.ads, a-exetim-default.ads, a-exetim-mingw.ads (Clock,
	Clock_For_Interrupts): preconditions added.
	* a-extiin.ads (Clock): preconditions added.
	* par-ch3.adb (P_Declarative_Items): In case of misplaced
	aspect specifications, ensure that flag Done is properly set to
	continue parsing.

2015-11-25  Arnaud Charlet  <charlet@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Minimize extra temporaries
	and use of 'Reference when needed.

2015-11-25  Doug Rupp  <rupp@adacore.com>

	* sigtramp-vxworks-target.inc (__x86_64__): Restore context for the
	sake of uniformity.
	* init.c (__gnat_inum_to_ivec): Add some casting to avoid
	warnings when sizeof(long) != sizeof(int)

2015-11-25  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb (SPARK_Entities): Add entries for
	consideration.
	(Add_SPARK_Scope): Take tasks into account.
	(Detect_And_Add_SPARK_Scope): Take tasks into account.
	(Enclosing_Subprogram_Or_Library_Package): Take tasks into account.

2015-11-25  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Code clean ups.

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

	* sem_util.ads (Has_Compatible_Alignment): Add Layout_Done
	parameter.
	* sem_util.adb (Has_Compatible_Alignment): Likewise.
	(Has_Compatible_Alignment_Internal): Likewise.	Do not set the
	result to Unknown for packed types if Layout_Done is true.
	* checks.adb (Apply_Address_Clause_Check): Adjust call and
	pass False to Has_Compatible_Alignment.
	* sem_ch13.adb (Validate_Address_Clauses): Likewise but pass True.

2015-11-25  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: When <target>-gnat is called with switch -P
	and a GPR tool is invoked, invoke the GPR tool with switch
	--target=<target>.

2015-11-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* opt.adb, bcheck.adb: Minor reformatting.

2015-11-25  Jerome Lambourg  <lambourg@adacore.com>

	* init.c: Enable the signal trampoline on x86_64-vx7
	* sigtramp-vxworks-target.inc: Implement the signal trampoline
	for x86_64
	* tracebak.c: Remove the hook to use the generic
	unwinder on x86_64-vx7.

2015-11-25  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: When "gnat name -P" is called, invoke gprname
	directly if available.

2015-11-25  Tristan Gingold  <gingold@adacore.com>

	* init.c (__gnat_is_stack_guard): Do not use mach calls for
	IOS simulator.

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

	* gcc-interface/utils.c (gnat_write_global_declarations): Output
	debugging information for top-level imported declarations.

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

	* sem_ch3.adb, sem_type.adb, sem_ch7.adb, sem_ch9.adb, checks.adb,
	sem_prag.adb, contracts.adb, g-strhas.ads, sem_ch6.adb: Minor
	reformatting, rewording, and typo corrections.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <Concurrent types>: In
	ASIS mode, do a minimal translation for root types with discriminants.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Subunit>: Move around.
	<N_Entry_Body, N_Protected_Body, N_Task_Body>: Likewise.  In ASIS mode,
	process the declarations attached to the body.

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

	* gcc-interface/trans.c (gnat_to_gnu): In type_annotate_only mode, do
	not build a NULL_EXPR for an N_Expanded_Name.

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

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

2015-11-23  Olivier Hainque  <hainque@adacore.com>

	* system-aix.ads: Add Frontend_Exceptions flag.
	* system-aix64.ads: Likewise.
	* system-darwin-ppc.ads: Likewise.
	* system-darwin-ppc64.ads: Likewise.
	* system-darwin-x86.ads: Likewise.
	* system-darwin-x86_64.ads: Likewise.
	* system-dragonfly-x86_64.ads: Likewise.
	* system-freebsd-x86.ads: Likewise.
	* system-freebsd-x86_64.ads: Likewise.
	* system-hpux-ia64.ads: Likewise.
	* system-hpux.ads: Likewise.
	* system-linux-alpha.ads: Likewise.
	* system-linux-armeb.ads: Likewise.
	* system-linux-armel.ads: Likewise.
	* system-linux-hppa.ads: Likewise.
	* system-linux-ia64.ads: Likewise.
	* system-linux-mips.ads: Likewise.
	* system-linux-mips64el.ads: Likewise.
	* system-linux-mipsel.ads: Likewise.
	* system-linux-ppc.ads: Likewise.
	* system-linux-ppc64.ads: Likewise.
	* system-linux-s390.ads: Likewise.
	* system-linux-s390x.ads: Likewise.
	* system-linux-sh4.ads: Likewise.
	* system-linux-sparc.ads: Likewise.
	* system-linux-sparcv9.ads: Likewise.
	* system-linux-x86.ads: Likewise.
	* system-linux-x86_64.ads: Likewise.
	* system-mingw-x86_64.ads: Likewise.
	* system-mingw.ads: Likewise.
	* system-rtems.ads: Likewise.
	* system-solaris-sparc.ads: Likewise.
	* system-solaris-sparcv9.ads: Likewise.
	* system-solaris-x86.ads: Likewise.
	* system-solaris-x86_64.ads: Likewise.
	* system-vxworks-arm.ads: Likewise.
	* system-vxworks-m68k.ads: Likewise.
	* system-vxworks-mips.ads: Likewise.
	* system-vxworks-ppc.ads: Likewise.
	* system-vxworks-sparcv9.ads: Likewise.
	* system-vxworks-x86.ads: Likewise.
	* system.ads: Likewise.

2015-11-23  Olivier Hainque  <hainque@adacore.com>
	    Eric Botcazou  <botcazou@adacore.com>

	* opt.ads (Exception_Mechanism): Now three values: Front_End_SJLJ,
	Back_End_SJLJ and Back_End_ZCX.
	(Back_End_Exceptions, Front_End_Exceptions, ZCX_Exceptions,
	SJLJ_Exceptions): New functions, reflecting properties of the current
	Exception_Mechanism.
	* opt.adb: Implement the new functions.
	* fe.h: Bind the new Exception_Mechanism and helper functions for gigi.

	* exp_ch11.adb (Expand_At_End_Handler): Replace test on mechanism by
	use of property helper and update comments.
	(Expand_Exception_Handlers): Replace tests on mechanism by use of
	helper. Restrict Abort_Defer to ZCX specifically.
	* exp_ch9.adb (Expand_N_Asynchronous_Select): Replace tests on
	mechanism by calls to helper functions. Abort_Undefer for ZCX only,
	paired with Expand_Exception_Handlers.
	* exp_sel.adb (Build_Abort_Block_Handler): Replace tests on mechanism
	by calls to helper functions. Abort_Undefer for ZCX only, paired with
	Expand_Exception_Handlers.

	* lib-writ.ads (P line documentation): Add entry for "FX",
	representative of unit compiled with Frontend_Exceptions True.
	* lib-writ.adb (Output_Main_Program_Line): Add "FX" on P line if
	compiled with Frontend_Exceptions True.

	* ali.ads (ALIs_Record): Ada a Frontend_Exceptions component, to reflect
	whether the ALI file contained an "FX" indication on the P line.
	(Frontend_Exceptions_Specified): New boolean, to keep track of whether
	at least an FX ALI file is in the closure.
	* ali.adb (Scan_ALI): Handle "FX" on the P line.
	(Initialize_ALI): Initialize Frontend_Exceptions_Specified to False.

	* targparm.ads: Update desription of exception schemes.
	(Frontend_Exceptions_On_Target): New flag, reflect Frontend_Exceptions
	set to True in system.ads, or not set at all.
	* targparm.adb (Targparm_Tags): Add FEX to convey Frontend_Exceptions.
	Rename ZCD to ZCX for consistency.
	(FEX_Str, Targparm_Str, Get_Target_Parameters): Adjust accordingly.

	* gnat1drv.adb (Adjust_Global_Switches): Adjust Exception_Mechanism
	setting, now from combination of Frontend_Exceptions and ZCX_By_Default.

	* bcheck.adb (Check_Consistent_Zero_Cost_Exception_Handling): Rename
	as ...
	(Check_Consistent_Exception_Handling): Check consistency of both
	ZCX_By_Default and Frontend_Exceptions.
	(Check_Configuration_Consistency): Check_Consistent_Exception_Handling
	if either flag was set at least once.

	* make.adb (Check): Remove processing of a possible -fsjlj coming from
	lang-specs.h.
	* gnatlink.adb (Gnatlin): Likewise.

	* gcc-interface/Makefile.in (gnatlib-sjlj/zcx): Now set
	both ZCX_By_Default and Frontend_Exceptions.
	* gcc-interface/decl.c (gnat_to_gnu_entity, case E_Variable):
	Use eh property helper to test for back-end exceptions. Adjust
	mechanism name when testing for front-end sjlj.
	(case E_Procedure): Likewise.
	* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu):
	Likewise, and rename local variables.
	(Exception_Handler_to_gnu_sjlj): Rename as
	Exception_Handler_to_gnu_fe_sjlj.
	(Exception_Handler_to_gnu_zcx): Rename as
	Exception_Handler_to_gnu_gcc and adjust tests on eh mechanisms
	to use property helpers or correct mechanism name.

2015-11-19  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Correction to previous
	change: correctly handle generic formals/actuals that look like
	renamings.

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

	* gcc-interface/trans.c (elaborate_all_entities_for_package): New
	function extracted from...  Recurse on packages.
	(elaborate_all_entities): ...here.  Call it on packages.

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

	* gcc-interface/ada-tree.h (DECL_INVARIANT_P): New macro.
	* gcc-interface/gigi.h (enum standard_datatypes): Remove
	ADT_longjmp_decl and add ADT_not_handled_by_others_decl.
	(longjmp_decl): Delete.
	(not_handled_by_others_decl): New macro.
	(build_simple_component_ref): Delete.
	(build_component_ref): Adjust prototype.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust calls to
	build_component_ref.
	(gnat_to_gnu_field): Set DECL_INVARIANT_P on discriminants
	without default value.
	* gcc-interface/trans.c (gigi): Reorder initialization sequence
	and add not_handled_by_others_decl.
	(Attribute_to_gnu): Adjust calls to build_component_ref.
	(Subprogram_Body_to_gnu): Likewise.
	(Call_to_gnu): Likewise.
	(Exception_Handler_to_gnu_sjlj): Likewise.
	(gnat_to_gnu): Likewise.
	(range_check_info_d): Add inserted_cond field.
	(Loop_Statement_to_gnu): Make two passes on the recorded range checks.
	(build_noreturn_cond): New static function.
	(Raise_Error_to_gnu): Record range checks in loops at -O1 and above.
	(make_invariant): New static function.
	(Loop_Statement_to_gnu): Use it to compute invariant expressions for
	the loop bounds if possible, but do not require it if loop unswitching
	is enabled.
	* gcc-interface/utils.c (convert_to_fat_pointer): Likewise.
	(convert): Likewise.
	(maybe_unconstrained_array): Likewise.  Call it instead of
	build_simple_component_ref and add guard for CONSTRUCTORs.
	(unchecked_convert): Likewise.
	* gcc-interface/utils2.c (compare_fat_pointers): Likewise.
	(build_simple_component_ref): Remove COMPONENT parameter, unify
	code dealing with VIEW_CONVERT_EXPR and make it more general,
	remove special treatment for CONSTRUCTORs of template types.
	(build_component_ref): Remove COMPONENT parameter and adjust call
	to build_simple_component_ref.
	(maybe_wrap_malloc): Likewise.
	(build_allocator): Likewise.
	(gnat_invariant_expr): Look through overflow checks, deal with
	addition and subtraction of constants and take into account
	DECL_INVARIANT_P for the COMPONENT_REF case.

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

	* gcc-interface/misc.c: Move global variables to the top of the file.
	(gnat_handle_option): Remove obsolete ATTRIBUTE_UNUSED markers.
	(gnat_init_options): Minor tweak.
	(gnat_post_options): Set -fstrict-overflow if not done by the user.
	(internal_error_function): Minor reformatting.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Use case #1
	for the renaming of an address.

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

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

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing): When constructing the
	parameter list for the potentially overloaded calls to indexing
	functions, do not propagate overloadings if the actual is a named
	association: overloadings appear directly on the expression in
	the association.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Interface_Present_In_Ancestor): If the type is
	incomplete, the list of ancestors is found either on the full
	view or the non-limited view of the type.

2015-11-18  Nicolas Roche  <roche@adacore.com>

	* sysdep.c (__gnat_localtime_tzoff): On Windows platform
	GetTimeZoneInformation function is thread-safe. Thus there
	is no need to lock the runtime in the implementation of
	__gnat_localtime_tzoff on that platform.

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

	* s-arit64.adb (To_Neg_Int): Add a special case for 2**63 input.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Contracts): New routine.
	(Analyze_Enclosing_Package_Body_Contract): Removed.
	(Analyze_Entry_Or_Subprogram_Contract): Add formal parameter
	Freeze_Id.  Propagate the entity of the freezing body to vaious
	analysis routines.
	(Analyze_Initial_Declaration_Contract): Removed.
	(Analyze_Object_Contract): Add formal parameter
	Freeze_Id. Propagate the entity of the freezing body to vaious
	analysis routines.
	(Analyze_Previous_Contracts): New routine.
	* contracts.ads (Analyze_Enclosing_Package_Body_Contract): Removed.
	(Analyze_Contracts): New routine.
	(Analyze_Entry_Or_Subprogram_Contract): Add formal
	parameter Freeze_Id and update the comment on usage.
	(Analyze_Initial_Declaration_Contract): Removed.
	(Analyze_Object_Contract): Add formal parameter Freeze_Id and
	update the comment on usage.
	(Analyze_Previous_Contracts): New routine.
	* sem_ch3.adb (Analyze_Declarations): Use Analyze_Contracts to
	analyze all contracts of eligible constructs.
	* sem_ch6.adb (Analyze_Generic_Subprogram_Body):
	A body no longer freezes the contract of its initial
	declaration. This effect is achieved through different means.
	(Analyze_Subprogram_Body_Helper): A body now freezes the contracts
	of all eligible constructs that precede it. A body no longer
	freezes the contract of its initial declaration. This effect is
	achieved through different means.
	* sem_ch7.adb (Analyze_Package_Body_Helper): A body now freezes
	the contracts of all eligible constructs that precede it. A body
	no longer freezes the contract of its initial declaration. This
	effect is achieved through different means.
	* sem_ch9.adb (Analyze_Entry_Body): A body now freezes
	the contracts of all eligible constructs that precede
	it. A body no longer freezes the contract of its initial
	declaration. This effect is achieved through different means.
	(Analyze_Protected_Body): A body now freezes the contracts
	of all eligible constructs that precede it. A body no longer
	freezes the contract of its initial declaration. This effect
	is achieved through different means.
	(Analyze_Task_Body): A
	body now freezes the contracts of all eligible constructs that
	precede it. A body no longer freezes the contract of its initial
	declaration. This effect is achieved through different means.
	* sem_prag.adb (Add_Item_To_Name_Buffer): Single protected/task
	objects now output their respective current instance of xxx
	type messages.	(Analyze_Contract_Cases_In_Decl_Part): Add
	formal parameter Freeze_Id. Emit a clarification message
	when an undefined entity may the byproduct of contract
	freezing.
	(Analyze_Part_Of_In_Decl_Part): Add formal
	parameter Freeze_Id. Emit a clarification message when an
	undefined entity may the byproduct of contract freezing.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Add formal
	parameter Freeze_Id. Emit a clarification message when an
	undefined entity may the byproduct of contract freezing.
	(Analyze_Refined_State_In_Decl_Part): Do not report unused body
	states as constituents of single protected/task types may not
	bave been identified yet.
	(Collect_Subprogram_Inputs_Outputs):
	Reimplemented.	(Contract_Freeze_Error): New routine.
	(Process_Overloadable): Use predicate Is_Single_Task_Object.
	* sem_prag.ads (Analyze_Contract_Cases_In_Decl_Part):
	Add formal parameter Freeze_Id and update the comment
	on usage.
	(Analyze_Part_Of_In_Decl_Part): Add formal
	parameter Freeze_Id and update the comment on usage.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Add formal parameter
	Freeze_Id and update the comment on usage.
	* sem_util.adb (Check_Unused_Body_States): Remove global
	variable Legal_Constits. The routine now reports unused
	body states regardless of whether constituents are
	legal or not.
	(Collect_Body_States): A constituent of a
	single protected/task type is not a visible state of a
	package body.
	(Collect_Visible_States): A constituent
	of a single protected/task type is not a visible
	state of a package body.
	(Has_Undefined_Reference): New routine.
	(Is_Single_Concurrent_Object): Reimplemented.
	(Is_Single_Protected_Object): New routine.
	(Is_Single_Task_Object): New routine.
	(Is_Visible_Object): New routine.
	(Report_Unused_Body_States): Moved to Check_Unused_Body_States.
	* sem_util.ads (Check_Unused_Body_States): Update the comment on usage.
	(Has_Undefined_Reference): New routine.
	(Is_Single_Protected_Object): New routine.
	(Is_Single_Task_Object): New routine.
	(Report_Unused_Body_States): Moved to Check_Unused_Body_States.

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

	* Makefile.rtl, impunit.adb: Add g-strhas.ads.
	* g-strhas.ads: New file.
	* s-strhas.ads: Add a comment to redirect users to g-strhas.ads.

2015-11-18  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Fix the case
	where the call in question is to a renaming of a subprogram that
	can be safely called without ABE.
	* checks.adb: Minor edits.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* atree.adb (Elist11): New routine.
	(Set_Elist11): New routine.
	* atree.ads (Elist11): New routine.
	(Set_Elist11): New routine.
	* atree.h: Define Elist11.
	* contracts.adb (Analyze_Object_Contract): Verify the legality
	of all references to a variable given that the variable is a
	constituent of a single protected/task type.
	* einfo.adb: Part_Of_References now utilizes Elist11.
	(Part_Of_References): New routine.
	(Set_Part_Of_References): New routine.
	(Write_Field11_Name): Add output for Part_Of_References.
	* einfo.ads New attribute Part_Of_References along with usage
	in entities.
	(Part_Of_References): New routine along with
	pragma Inline.
	(Set_Part_Of_References): New routine along with pragma Inline.
	* sem_prag.adb (Analyze_Constituent): Record a possible
	reference to a concurrent constituent.
	(Analyze_Global_Item): Record a possible reference to a concurrent
	constituent.
	(Analyze_Input_Output): Record a possible reference to a
	concurrent constituent.
	* sem_res.adb (Resolve_Entity_Name): Record a possible reference
	to a concurrent constituent.
	* sem_util.adb (Check_Part_Of_Reference): New routine.
	(Record_Possible_Part_Of_Reference): New routine.
	* sem_util.ads (Check_Part_Of_Reference): New routine.
	(Record_Possible_Part_Of_Reference): New routine.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated):
	An if_expression is the proper place to apply the overflow
	minimization procedure if its context is not an enclosing
	arithmetic expression.

2015-11-18  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn/gnat_project_manager.rst,
	gnat_ugn/building_executable_programs_with_gnat.rst,
	gnat_ugn/gnat_and_program_execution.rst,
	gnat_ugn/the_gnat_compilation_model.rst,
	gnat_rm/implementation_defined_pragmas.rst,
	gnat_rm/standard_and_implementation_defined_restrictions.rst,
	gnat_ugn.texi, gnat_rm.texi: Update doc.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Add_Contract_Item): Chain pragmas Attach_Handler
	and Interrupt_Handler on the classifications list of a [generic]
	procedure N_Contract node.
	* contracts.ads (Add_Contract_Item): Update the comment on usage.
	* einfo.adb (Get_Pragma): Pragmas Attach_Handler and
	Interrupt_Handler are found on the classifications list of
	N_Contract nodes.
	* einfo.ads (Get_Pragma): Update the comment on usage.
	* sem_prag.adb (Process_Interrupt_Or_Attach_Handler): Code
	reformatting. Store the pragma as a contract item.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Available_Subtype): Use only in GNATprove
	mode. When generating code it may be necessary to create itypes
	at the point of use of a selected component, for example in the
	expansion of a record equality operation.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* s-os_lib.adb (Normalize_Pathname.Get_Directory): When
	invoking Normalize_Pathname, use the same values for parameters
	Resolve_Links and Case_Sensitive as the parent Normalize_Pathname.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* a-direct.adb (Containing_Directory): Return "." when the result
	is the current directory, not specified as an absolute path name.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_aggr.adb (Is_Completely_Hidden_Discriminant): New routine.
	(Init_Hidden_Discriminants): Code reformatting. Do not initialize
	a completely hidden discriminant.
	* a-interr.ads (Get_CPU): Added SPARK_Mode, Volatile_Function
	and Global aspects on the function.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* exp_intr.adb (Expand_Unc_Deallocation): If the designated
	type is a concurrent type, the deallocation applies to the
	corresponding record type, or to its class-wide type if the type
	is tagged.

2015-11-18  Doug Rupp  <rupp@adacore.com>

	* s-parame-vxworks.adb: Reduce default stack size for stack
	limit check to a reasonable value
	* s-tpopsp-vxworks.adb: Make Stack_Limit a task variable for vx5 and
	vxmils.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assignment): Diagnose assignment where
	left-hand side has a limited view of a class-wide type.
	* sem_ch6.adb (Detected_And_Exchange): Do not install a non-limited
	view if the scope of the type of the formal is visible through
	a limited_with_clause, even if the non-limited view is available.

2015-11-18  Emmanuel Briot  <briot@adacore.com>

	* s-pooglo.ads: Make Global_Pool_Object aliased.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Access): If the prefix
	is an expression function, do not analyze the generated body if
	the current scope is not the scope of the expression function,
	as may happen if the attribute is an actual in an instantiation.
	* sem_ch10.adb, sem_ch12.adb, a-stzmap.adb, s-soflin.adb,
	a-stwima.adb: Fix typos.

2015-11-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch11.adb (Expand_N_Exception_Declaration): No-op when
	generating C code.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	PR ada/66242
	* exp_ch3.adb (Default_Initialize_Object): Reimplemented. Abort
	defer / undefer pairs are now encapsulated in a block with
	an AT END handler. Partial finalization now takes restriction
	No_Exception_Propagation into account when generating blocks.
	* exp_ch7.adb Various reformattings.
	(Create_Finalizer): Change
	the generation of abort defer / undefer pairs and explain the
	lack of an AT END handler.
	(Process_Transient_Objects): Add generation of abort defer/undefer
	pairs.
	* exp_ch9.adb Various reformattings.
	(Build_Protected_Subprogram_Body): Use
	Build_Runtime_Call to construct a call to Abort_Defer.
	(Build_Protected_Subprogram_Call_Cleanup): Use
	Build_Runtime_Call to construct a call to Abort_Undefer.
	(Expand_N_Asynchronous_Select): Use Build_Runtime_Call to
	construct a call to Abort_Defer.
	* exp_intr.adb (Expand_Unc_Deallocation): Abort defer
	/ undefer pairs are now encapsulated in a block with
	an AT END handler. Finalization now takes restriction
	No_Exception_Propagation into account when generating blocks.
	* exp_util.ads, exp_util.adb (Wrap_Cleanup_Procedure): Removed.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* g-comlin.adb (Find_Longest_Matching_Switch): Do not take into
	account a switch ending with '=' when the actual command line
	switch is not followed with a space or '='.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Explicit_Dereference): Do not add an access
	check if the type of the prefix is known to exclude null.
	* a-coinve.adb (Get_Element_Access): The function returns an
	access type that excludes null, so add an explicit check for
	a null element pointer, which is created when Insert_Spaces is
	called on an indefinite vector container.

2015-11-18  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb (Scan_Front_End_Switches): Add a check requiring
	-gnatc with -gnateg.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Uninstall_Declarations): Before swapping private
	and full views, ensure that the potential use visbility of the
	two views is consistent.

2015-11-18  Doug Rupp  <rupp@adacore.com>

	* s-parame-vxworks.adb: Increase default stack size for targets
	using stack limit checking.

2015-11-18  Jose Ruiz  <ruiz@adacore.com>

	* a-interr.adb, a-interr.ads (Ada.Interrupts.Get_CPU): Add this
	function that was added to Ada 2005 returning the processor where
	interrupt handlers execute.

2015-11-18  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Is_Pure_Barrier): Handle expanded component
	declaration of a protected definition.

2015-11-18  Ed Falis  <falis@adacore.com>

	* s-soflin.adb, s-stchop-vxworks.adb: Code clean ups.

2015-11-18  Gary Dismukes  <dismukes@adacore.com>

	* bcheck.adb: Minor editorial changes.

2015-11-18  Arnaud Charlet  <charlet@adacore.com>

	* interfac.ads (Unsigned_24): New type.
	* sem_ch13.adb (Validate_Unchecked_Conversion): Disable error on
	unconstrained arrays in Relaxed_RM_Semantics mode.

2015-11-18  Vincent Celier  <celier@adacore.com>

	* bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking): No
	warning is withed unit is the interface of a Stand-Alone Library.

2015-11-18  Thomas Quinot  <quinot@adacore.com>

	* s-os_lib.ads, s-os_lib.adb(Normalize_Pathname): Support the case of
	an unresolved Directory argument, by recursively resolving it
	against the current dir.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_Formals): A function declaration that
	returns a class-wide type must have freeing deferred, so that it
	is not frozen before the class-wide type and its root type are
	frozen. This is significant when there may be a limited view of
	the class_wide type in another package.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Has_Non_Null_Refinement): Rename to
	Has_Non_Null_Visible_Refinement.
	(Has_Null_Refinement): Rename to Has_Null_Visible_Refinement.
	* einfo.ads Update the documentation of
	attribute Has_Non_Null_Refinement and attribute Has_Null_Refinement.
	(Has_Non_Null_Refinement): Rename to Has_Non_Null_Visible_Refinement
	and update occurrences in entities.
	(Has_Null_Refinement): Rename to Has_Null_Visible_Refinement and update
	occurrences in entities.
	* sem_prag.adb (Check_In_Out_States): Update the calls to
	Has_[Non_]Null_Refinement.
	(Check_Input_States): Update the
	calls to Has_[Non_]Null_Refinement.
	(Check_Output_States): Update the calls to Has_[Non_]Null_Refinement.
	(Check_Proof_In_States): Update the calls to Has_[Non_]Null_Refinement.
	(Collect_Global_Item): Update the calls to Has_[Non_]Null_Refinement.
	(Is_Null_Refined_State): Update the calls to Has_[Non_]Null_Refinement.
	(Match_Item): Update the calls to Has_[Non_]Null_Refinement.
	* sem_util.adb (Has_Non_Null_Refinement): New routine.
	(Has_Null_Refinement): New routine.
	* sem_util.ads (Has_Non_Null_Refinement): New routine.
	(Has_Null_Refinement): New routine.

2015-11-18  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb: Minor reformatting and typo fixes.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Expand_Subtype_From_Expr): Add new formal
	parameter Related_Id and propagate it to Make_Subtype_From_Expr.
	(Make_Subtype_From_Expr): Add new formal parameter
	Related_Id. Create external entities when requested by the caller.
	* exp_util.ads (Expand_Subtype_From_Expr): Add new formal
	parameter Related_Id. Update the comment on usage.
	(Make_Subtype_From_Expr): Add new formal parameter
	Related_Id. Update the comment on usage.
	* sem_ch3.adb (Analyze_Object_Declaration): Add local variable
	Related_Id. Generate an external constrained subtype when the
	object is a public symbol.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Update the grammars of pragmas
	Abstract_State, Depends, Global, Initializes, Refined_Depends,
	Refined_Global and Refined_State.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Has_Full_Default_Initialization):
	Perform the test for the presence of pragma
	Default_Initial_Condition prior to the specialized type
	checks. Add a missing case where the lack of a pragma argument
	yields full default initialization.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Entity_Name): Do not check
	for elaboration issues when a variable appears as the name of
	an object renaming declaration as this constitutes an aliasing,
	not a read.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Overlap_Check): An actual that is an aggregate
	cannot overlap with another actual, and no check should be
	generated for it.
	* targparm.ads: Fix typos.

2015-11-18  Pascal Obry  <obry@adacore.com>

	* adaint.c: Routine __gnat_killprocesstree only implemented on
	Linux and Windows.

2015-11-18  Pascal Obry  <obry@adacore.com>

	* g-ctrl_c.adb: Minor style fixes.

2015-11-18  Pascal Obry  <obry@adacore.com>

	* adaint.c, s-os_lib.adb, s-os_lib.ads (Kill_Process_Tree): New.

2015-11-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Check_Nonvolatile_Function_Profile): Place the error
	message concerning the return type on the result definition.
	(Is_Volatile_Function): A function with a parameter of a protected
	type is a protected function if it is defined within a protected
	definition.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing): When building the
	parameter list for the function call on indexing functions,
	preserve overloading of the parameters, which may themselves be
	generalized indexing operations.

2015-11-13  Arnaud Charlet  <charlet@adacore.com>

	PR ada/68345
	* s-osinte-dragonfly.ads (Get_Page_Size): C function returns an int.

2015-11-13  David Malcolm  <dmalcolm@redhat.com>

	* gcc-interface/trans.c (Sloc_to_locus): Add line_table param when
	calling linemap_position_for_line_and_column.

2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb: Minor reformatting.

2015-11-13  Pascal Obry  <obry@adacore.com>

	* adaint.c: Ensure that it is possible to get killed process
	status on Windows.

2015-11-13  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi, doc/gnat_ugn/gnat_project_manager.rst
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_ugn/platform_specific_information.rst,
	doc/gnat_ugn/gnat_and_program_execution.rst,
	doc/gnat_ugn/gnat_utility_programs.rst,
	doc/gnat_ugn/the_gnat_compilation_model.rst,
	doc/gnat_rm/compatibility_and_porting_guide.rst,
	doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_rm/representation_clauses_and_pragmas.rst,
	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
	Update documentation.

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

	* sigtramp-ios.c, init.c: Minor cosmetic tweaks.

2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-gloloc.adb, g-debpoo.adb: Minor reformatting.

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

	* sem_ch5.adb (Analyze_Iterator_Specification): Improve error
	message for the case the iterable name (array or container)
	is a component that depends on a discriminant.

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

	* sem_ch4.adb (Indicate_Name_And_Type): If the analysis of
	one interpretation succeeds, set type of name in call, for
	completeness.
	(Try_Container_Indexing): If there are multiple indexing
	functions, collect possible interpretations that are compatible
	with given parameters, and add implicit dereference types when
	present.
	* sem_util.adb (Build_Explicit_Dereference): If the expression
	is an overloaded function call use the given discriminant to
	resolve the call, and set properly the type of the call and of
	the resulting dereference.

2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Pragma Constant_After_Elaboration can
	now apply to a variable without an initialization expression.

2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb (Add_Matching_Formals): Parameter Actuals is now of mode
	IN OUT. Create a new list when list Actuals is not present.
	(Build_Contract_Wrapper): Create the wrapper
	only when the entry has at least on checked contract case or
	pre/postcondition. Ensure that the call to the original entry
	lacks an actual parameter list when the entry appears without
	formal parameters.
	(Expand_Entry_Declaration): Code cleanup.

2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Continue the analysis
	after encountering an illegal aspect Part_Of.

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

	* exp_attr.adb (Expand_N_Attribute_Reference, case
	Overlaps_Storage): Add copies for nodes that represent the integer
	addresses of the two actuals, to prevent identical nodes in the
	tree, which the backend cannot handle properly.

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

	* sem_ch6.adb (Check_Private_Overriding): Change
	name of Parent_Is_Private to be Overrides_Private_Part_Op,
	and use Unit_Declaration_Node.

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

	* sinfo.ads: Minor comment fix.
	* sem_ch6.adb: Minor reformatting.

2015-11-13  Jerome Lambourg  <lambourg@adacore.com>

	* tracebak.c: Do not use the GCC Unwinder to retrieve traceback
	for x86_64-vx7.

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

	* init.c [Darwin/arm64]: Fix typo.
	* sigtramp-armios.c: Remove.
	* sigtramp-ios.c: New file.

2015-11-13  Doug Rupp  <rupp@adacore.com>

	* s-stchop-vxworks.adb (Set_Stack_Limit_For_Current_Task): Set stack
	limit to 12000 decimal vice 12000 hexadecimal.

2015-11-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb, exp_fixd.adb, exp_util.adb, g-debpoo.adb,
	impunit.adb, scos.ads, sem_ch4.adb, sem_prag.adb,
	s-stchop-vxworks.adb: Minor reformatting.

2015-11-13  Tristan Gingold  <gingold@adacore.com>

	* s-rident.ads (Profile_Info): Enable Pure_Barriers for
	GNAT_Extended_Ravenscar.

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

	* sem_ch6.adb (Check_Private_Overriding): Detect the special
	case where the overriding subprogram is overriding a subprogram
	that was declared in the same private part.

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

	* exp_ch9.adb: Minor reformatting and typo fixes.

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

	* init.c [Darwin/arm64]: Move __gnat_sigtramp implementation to...
	(__gnat_map_signal): New function.
	(__gnat_error_handler):
	Adjust the context and call above function.
	* sigtramp-armios.c: ...here.  New file.

2015-11-13  Arnaud Charlet  <charlet@adacore.com>

	* bcheck.adb (Check_Consistent_Restrictions): Do not check
	consistency of No_Dependence for runtime units.

2015-11-13  Tristan Gingold  <gingold@adacore.com>

	* s-rident.ads (Restriction_Id): Add Pure_Barriers.
	* restrict.ads (Implementation_Restriction): Add Pure_Barriers.
	* exp_ch9.adb (Expand_Entry_Barrier): Create
	Is_Simple_Barrier_Name function, add Is_Pure_Barrier and
	Check_Pure_Barriers.

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

	* sem_util.adb (Get_Cursor_Type): To determine whether a function
	First is the proper Iterable primitive, use the base type of the
	first formal rather than the type. This is needed in the unusual
	case where the Iterable aspect is specified for an integer type.

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

	* sem_ch4.adb (Constant_Indexing_OK): If the indexing is the
	prefix of a procedure call assume that constant indexing is
	not chosen.

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

	* sigtramp.h: Fix formatting throughout, do not include other
	headers, add missing preprocessor condition and 'extern' keywords.
	* sigtramp-armdroid.c: Include <sys/ucontext.h>.
	* init.c [Android]: Likewise.

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

	* init.c [Darwin/arm64] (__gnat_sigtramp): Do not increment PC,
	fix CFI and add return sequence.

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

	* exp_fixd.adb (Expand_Convert_Float_To_Fixed): If the conversion
	comes from an attribute reference 'Round, the operation must
	round and not truncate.
	* sem_res.adb, sem_ch6.adb: Minor editing.

2015-11-12  Philippe Gil  <gil@adacore.com>

	* g-debpoo.adb (Print_Address): print address in hexadecimal as
	in previous GNAT version (without secondary stack use)
	(Deallocate): Deallocate calling once Unlock_Task.all when it
	raise exception.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration): Remove redundant
	copying of dimensions from parent type to subtype. This is
	properly done in Analyze_Dimension.
	* sem_dim.adb (Analyze_Dimension_Subtype_Declaration): Add entity
	to error message, so that reference to entity can be formatted
	properly.
	* opt.ads: Fix typo.

2015-11-12  Bob Duff  <duff@adacore.com>

	* impunit.adb, lib-xref.ads, restrict.ads, scos.ads, sem_attr.ads,
	types.ads: Get rid of some global variables.
	* output.adb, output.ads: Move some global variables to the body.

2015-11-12  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb
	(Is_Constant_Object_Without_Variable_Input): Add special case
	for imported constants.

2015-11-12  Philippe Gil  <gil@adacore.com>

	* g-debpoo.adb (Allocate): Avoid having allocations not handled.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): If the expression is
	a real literal and the context type has static bounds, remove
	range check when possible.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Collect_Primitive_Operations): If the type is
	derived from a type declared elsewhere that has an incomplete
	type declaration, the primitives are found in the scope of the
	type nat that of its ancestor.

2015-11-12  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb, debug.adb, osint-c.adb, gnat1drv.adb: Remove -gnatd.V
	debug switch.
	* exp_aggr.adb, exp_util.adb: Fix typos.

2015-11-12  Jerome Lambourg  <lambourg@adacore.com>

	* init.c: Properly adjust PC values in case of signals.

2015-11-12  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Check_Arg_Is_Library_Level_Local_Name): A
	pragma that comes from an aspect does not "come from source",
	so we need to test whether it comes from an aspect.

2015-11-12  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb, gnat1drv.adb, opt.ads: Reserve -gnateg for generation
	of C headers.

2015-11-12  Arnaud Charlet  <charlet@adacore.com>

	* back_end.adb, opt.ads (Debugger_Level): Update comment.
	(Scan_Back_End_Switches): Set Debugger_Level.

2015-11-12  Bob Duff  <duff@adacore.com>

	* fmap.adb, debug.ads, checks.adb, exp_ch11.adb: Minor edits.

2015-11-12  Doug Rupp  <rupp@adacore.com>

	* s-stchop-vxworks.adb (Stack_Limit): Export vice Import.

2015-11-12  Gary Dismukes  <dismukes@adacore.com>

	* sem_dim.adb: Minor reformatting.

2015-11-12  Gary Dismukes  <dismukes@adacore.com>

	* gnat1drv.adb, opt.ads: Minor reformatting.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Number_Declaration): Call Analyze_Dimension,
	to propagate dimension information from expression to named
	number.
	* sem_dim.ads: Documentation:  number declaration and explicit
	dereference can carry dimension information.
	* sem_dim.adb (Analyze_Dimension_Number_Declaration): New
	procedure, to propagate dimension information from expression
	of declaration to named number, whose type becomes one of the
	dimensioned base types rather than universal real.
	(Analyze_Dimension_Binary_Op):
	a) If one operand is a literal that is the value of a declared
	constant after constant-foloding, use the dimensions of the
	declared constant.
	b) If an operand is a literal that is a contant-folded expression,
	and expander is active, do not report a dimension mismatch if
	literal does not carry them, because dimension matching will
	have been checked previously.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Selected_Component): In a synchronized
	body, a reference to an operation of an object of the same
	synchronized type was always interpreted as a reference to the
	current instance. This is not always the case, as the prefix of
	the reference may designate an object of the same type declared
	in the enclosing context prior to the body.

2015-11-12  Arnaud Charlet  <charlet@adacore.com>

	* impunit.ads, impunit.adb (Get_Kind_Of_File): New. Cleaned up
	implementation from previous Get_Kind_Of_Unit.
	(Get_Kind_Of_Unit): Reimplemented using Get_Kind_Of_File.
	* debug.adb: Remove d.4 switch, no longer used.
	* opt.ads: Update doc on Debugger_Level.
	* gnat1drv.adb: Code clean ups.
	* sinput.ads: minor fix in comment

2015-11-12  Bob Duff  <duff@adacore.com>

	* sinfo.adb, sinfo.ads, sem_ch6.adb, atree.ads: Add
	Was_Expression_Function flag, which is set in sem_ch6.adb when
	converting an Expression_Function into a Subprogram_Body.

2015-11-12  Pascal Obry  <obry@adacore.com>

	* usage.adb: Update overflow checking documentation.

2015-11-12  Tristan Gingold  <gingold@adacore.com>

	* snames.ads-tmpl: Name_Gnat_Extended_Ravenscar: New identifier.
	* s-rident.ads (Profile_Name): Add GNAT_Extended_Ravenscar.
	(Profile_Info): Add new entry for GNAT_Extended_Ravenscar.
	* sem_prag.adb (Set_Ravenscar_Profile): Add Profile parameter
	to handle various ravenscar profiles. Adjust error messages.
	(Analyze_Pragma): Handle GNAT_Extended_Ravenscar profile.
	* targparm.adb (Get_Target_Parameters): Handle
	GNAT_Extended_Ravenscar profile.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Warn_On_Unreferenced_Entity): If the entity is an
	Out_Parameter the front-end does not emit any warning on it, so
	do not suppress warnings on the entity because the backend might
	be able to determine an uninitialized path and warn accordingly.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Diagnose an attempt
	to reference an internal entity from a synchronized type from
	within the body of that type, when the prefix of the selected
	component is not the current instance.

2015-11-12  Ed Falis  <falis@adacore.com>

	* s-stchop-vxworks.adb: Clean up in stack checking code.

2015-11-12  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Function_Call):
	Test Expression (N) in N_Type_Conversion cases as well,
	since conversions can occur in actual parameter contexts.
	(Make_Build_In_Place_Call_In_Anonymous_Context): Retrieve
	function call from Expression (Func_Call) when Nkind (Func_Call)
	is N_Type_Conversion, since conversions are allowed in "anonymous"
	contexts (specifically, as actual parameters).

2015-11-12  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb (analyze_If_Expression): Reject IF-expression where
	THEN-expression is overloaded and none of its interpretation is
	compatible with the ELSE-expression.

2015-11-12  Jerome Lambourg  <lambourg@adacore.com>

	* init.c: Do not try to mess with the MSR values in RTP mode:
	not needed and forbidden.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Compile_Stream_Body_In_Scope): Do not install
	full view of a type that has pragma Stream_Convert, because
	this indicates special processing for the stream operations of
	the type.

2015-11-12  Jerome Lambourg  <lambourg@adacore.com>

	* init.c: Do not try to mess with the MSR values in RTP mode:
	not needed and forbidden.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Compile_Stream_Body_In_Scope): Do not install
	full view of a type that has pragma Stream_Convert, because
	this indicates special processing for the stream operations of
	the type.

2015-11-12  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch5.adb, sem_ch3.adb, exp_util.ads, inline.adb, freeze.adb,
	sem_util.adb, sem_util.ads, par-ch6.adb, sem_elab.adb: Minor
	reformatting and a typo fix.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Preanalyze_Actuals): Add guard on use of
	Incomplete_Actuals, which are only stored for a package
	instantiation, in order to place the instance in the body of
	the enclosing unit.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_intr.adb: Add legality checks on calls to a
	Generic_Dispatching_Constructor: the given tag must be defined,
	it cannot be the tag of an abstract type, and its accessibility
	level must not be greater than that of the constructor.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing, Constant_Indexing_OK):	If
	the context is an overloaded call, assume that Constant_Indexing
	is not OK if an interpretation has an assignable parameter
	corresponding to the indexing expression.

2015-11-12  Jerome Lambourg  <lambourg@adacore.com>

	* init.c (__gnat_error_handler): Force the SPE bit of the MSR
	when executing on e500v2 CPU.

2015-11-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Constituent): Stop the
	analysis after detecting a misplaced constituent as this is a
	critical error.

2015-11-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch10.adb, atree.adb: Minor reformatting.

2015-11-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Check_A_Call): Add new variable
	Is_DIC_Proc. Report elaboration issue in SPARK concerning calls
	to source subprograms or nontrivial Default_Initial_Condition
	procedures. Add specialized error message to avoid outputting
	the internal name of the Default_Initial_Condition procedure.
	* sem_util.ads, sem_util.adb
	(Is_Non_Trivial_Default_Init_Cond_Procedure): New routine.

2015-11-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Entry_Or_Subprogram_Body_Contract):
	Remove the guard concerning entry bodies as it is spurious.
	(Analyze_Entry_Or_Subprogram_Contract): Skip the analysis of
	Contract_Cases when not annotating the tree.
	* einfo.adb: Node25 is now used as Contract_Wrapper.
	(Contract_Wrapper): New routine.
	(PPC_Wrapper): Removed.
	(Set_Contract_Wrapper): New routine.
	(Set_PPC_Wrapper): Removed.
	(Write_Field25_Name): Add output for Contract_Wrapper. Remove
	output for PPC_Wrapper.
	* einfo.ads: New attribute Contract_Wrapper along with usage
	in entities. Remove attribute PPC_Wrapper along with usage in nodes.
	(Contract_Wrapper): New routine along with pragma Inline.
	(PPC_Wrapper): Removed along with pragma Inline.
	(Set_Contract_Wrapper): New routine along with pragma Inline.
	(Set_PPC_Wrapper): Removed along with pragma Inline.
	* exp_ch9.adb (Build_Contract_Wrapper): New routine.
	(Build_PPC_Wrapper): Removed.
	(Build_Protected_Entry): Code cleanup.
	(Expand_Entry_Declaration): Create a contract wrapper
	which now verifies Contract_Cases along with pre/postconditions.
	(Expand_N_Task_Type_Declaration): There is no need to check
	whether an entry has pre/postconditions as this is now done
	in Build_Contract_Wrapper.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Pragma
	Refined_Post is now properly inserted in entry bodies.
	(Insert_Pragma): Add circuitry to insert in an entry body. Redo
	the instance "header" circuitry. Remove the now obsolete special
	case of inserting pre- conditions.
	* sem_prag.adb (Analyze_Pragma): Pragma Contract_Cases now
	applies to entries.
	* sem_res.adb (Resolve_Entry_Call): Update the calls to
	PPC_Wrapper.

2015-11-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb, freeze.adb, sem_util.adb, sem_ch13.adb: Minor
	reformatting.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Compile_Stream_Body_In_Scope): When compiling
	a stream operation for an array type, install the scope of the
	component type if it is private and not in scope, to prevent
	spurious errors if the full view of the component type has
	defaulted discriminants.

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

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): For a
	variable, if this is not an overlay, set on Treat_As_Volatile on it.
	* gcc-interface/decl.c (E_Variable): Do not force the type to volatile
	for address clauses. Tweak and adjust various RM references.

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

	* checks.ads: Minor comment fix.

2015-11-12  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi,
	doc/gnat_ugn/platform_specific_information.rst,
	doc/gnat_ugn/gnat_and_program_execution.rst,
	doc/gnat_ugn/the_gnat_compilation_model.rst,
	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
	doc/gnat_rm/implementation_defined_pragmas.rst: Update documentation.

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

	* einfo.ads (Overlays_Constant): Document usage for E_Constant.
	* freeze.adb (Warn_Overlay): Small reformatting.
	(Check_Address_Clause): Deal specifically with deferred
	constants.  For a variable or a non-imported constant
	overlaying a constant object and with initialization value,
	either remove the initialization or issue a warning.  Fix a
	couple of typos.
	* sem_util.adb (Note_Possible_Modification): Overhaul the condition for
	the warning on modified constants and use Find_Overlaid_Entity instead
	of doing it manually.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Compute and
	set Overlays_Constant once on entry.  Do not treat the overlaid
	entity as volatile.  Do not issue the warning on modified
	constants here.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Remove
	over-restrictive condition for the special treatment of deferred
	constants.
	<E_Variable>: Remove obsolete associated code.

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

	* gcc-interface/trans.c (gnat_to_gnu) <N_Subprogram_Renaming_Decl>: Do
	not materialize renamed subprograms if only annotating types.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity): Create
	IMPORTED_DECL nodes to describe the subprogram renamings which
	are relevant at debug time.
	* gcc-interface/gigi.h (get_debug_scope): Add declaration.
	* gcc-interface/trans.c (Identifier_to_gnu): Consider
	N_Defining_Operator_Symbol as valid entities.
	(gnat_to_gnu): Handle N_Defining_Operator_Symbol the same way as
	other entities.  Introduce a specific handling for
	N_Subprogram_Renaming_Declaration: call gnat_to_gnu_entity on
	the entity defined for relevant ones.
	(process_decls): Process subprogram renaming declarations during
	the second pass only.
	* gcc-interface/utils.c (get_debug_scope): Make it external.
	Consider N_Defining_Operator_Symbol as valid entities.
	(gnat_write_global_declarations): Output debugging information
	for top-level imported declarations.

2015-11-12  Emmanuel Briot  <briot@adacore.com>

	* s-os_lib.ads: Documentation update.

2015-11-12  Arnaud Charlet  <charlet@adacore.com>

	* s-taprop-vxworks.adb, s-osinte-vxworks.ads: Use a single import of
	taskDelay to avoid confusion.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Simple_Function_Return): If the return
	type is class-wide and the expression is a view conversion,
	remove the conversion to prevent overriding of the tag, which
	must be that of the object being returned.

2015-11-12  Tristan Gingold  <gingold@adacore.com>

	* bindgen.adb (Gen_Adainit): Code cleanup.

2015-11-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-stalib.ads: Code cleanup.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Incomplete_Type_Decl): small optimization.
	(Analyze_Subtype_Declaration): For floating point types,
	inherit dimensions.
	(OK_For_Limited_Init_In_05): Handle properly a conditional
	expression whose condition is static, and is rewritten as the
	branch that will be executed.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Resolve_Attribute, case 'Access): If the context
	type is an access constant type, do not mark the attribute
	reference as a possible modification of the prefix.

2015-11-12  Steve Baird  <baird@adacore.com>

	* sem_ch6.adb (Analyze_Procedure_Call) If CodePeer_Mode is True,
	do not analyze the expression of a machine code insertion.
	* sem_ch13.adb (Analyze_Code_Statement) If CodePeer_Mode is True,
	mark the N_Code_Statement node as analyzed and do nothing else.

2015-11-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Limited_Return): Make global to package
	for use elsewhere.
	(Analyze_Expression_Function): Remove duplicated code, pre-analyze
	expression to capture names and call Check_Limited_Return so
	that semantic checks are identical to those for regular functions
	returning limited types.

2015-11-12  Gary Dismukes  <dismukes@adacore.com>

	* bindgen.adb: Fix typo.
	* sem_ch6.adb: Minor reformatting.

2015-11-12  Emmanuel Briot  <briot@adacore.com>

	* s-os_lib.adb (Argument_String_To_List): fix handling of
	windows separators

2015-11-11  Andrew MacLeod  <amacleod@redhat.com>

	* gcc-interface/decl.c: Remove unused header files.
	* gcc-interface/misc.c: Likewise.
	* gcc-interface/targtyps.c: Likewise.
	* gcc-interface/trans.c: Likewise.
	* gcc-interface/utils.c: Likewise.

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

	* gcc-interface/gigi.h (set_reverse_storage_order_on_pad_type):
	Declare.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <discrete_type>: Set the
	storage order on the enclosing record for a packed array type.
	<E_Array_Type>: Set the storage order.
	<E_Array_Subtype>: Likewise.
	<E_Record_Type>: Likewise.
	<E_Record_Subtype>: Likewise.
	(gnat_to_gnu_component_type): Set the reverse storage order on a
	padded type built for a non-bit-packed array.
	(gnat_to_gnu_field): Likewise.
	(components_to_record): Deal with TYPE_REVERSE_STORAGE_ORDER.
	* gcc-interface/utils.c (make_packable_type): Likewise.
	(pad_type_hasher::equal): Likewise.
	(gnat_types_compatible_p): Likewise.
	(unchecked_convert): Likewise.
	(set_reverse_storage_order_on_pad_type): New public function.
	* gcc-interface/trans.c (Attribute_to_gnu): Adjust call to
	get_inner_reference.
	* gcc-interface/utils2.c (build_unary_op): Likewise.
	(gnat_build_constructor): Deal with TYPE_REVERSE_STORAGE_ORDER.
	(gnat_rewrite_reference): Propagate REF_REVERSE_STORAGE_ORDER.

2015-11-07  Richard Sandiford  <richard.sandiford@arm.com>

	* gcc-interface/utils.c: Don't undef DEF_BUILTIN.

2015-10-29  Andrew MacLeod  <amacleod@redhat.com>

	* gcc-interface/decl.c: Reorder #include's and remove duplicates.
	* gcc-interface/misc.c: Likewise.
	* gcc-interface/targtyps.c: Likewise.
	* gcc-interface/trans.c: Likewise.
	* gcc-interface/utils.c: Likewise.
	
2015-10-27  Tristan Gingold  <gingold@adacore.com>

	* bindgen.adb (System_BB_CPU_Primitives_Multiprocessors_Used):
	New variable.
	(Gen_Adainit): Call Start_All_CPUs if the above
	variable is set to true.

2015-10-27  Emmanuel Briot  <briot@adacore.com>

	* adaint.c, s-os_lib.adb, s-os_lib.ads (Copy_File_Attributes): New
	subprogram.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

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

2015-10-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): Do not perform legality check
	on allocators for limited objects in a qualified expression,
	because expression has not been resolved.
	* sem_res.adb (Resolve_Allocator): Perform check on legality of
	limited objects after resolution.  Add sem_ch3.adb to context.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Refined_Global_In_Decl_Part): Add variable
	States.
	(Check_Refined_Global_Item): An object or state acts as a
	constituent only when the corresponding encapsulating state
	appears in pragma Global.
	(Collect_Global_Item): Add a state with non-null visible refinement to
	list States.

2015-10-27  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.ads, par.adb, sem_ch6.adb: Minor reformatting and a few
	typo corrections.

2015-10-27  Pierre-Marie de Rodat  <derodat@adacore.com>

	* namet.ads, namet.adb (Name_Equals): New function.
	* namet.h (Name_Equals): New macro.

2015-10-27  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch6.adb (Build_Procedure_Form): Use 'RESULT' for the extra
	parameter, to avoid ambiguity when generating tmps using _xxx which
	might end up reusing _result.

2015-10-27  Javier Miranda  <miranda@adacore.com>

	* sem_util.ads, sem_util.adb (Defining_Identifier): Adding a formal to
	indicate the needed behavior in case of nodes with errors.

2015-10-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Eval_Attribute): If the prefix of attribute
	Enum_Rep is an object that is a generated loop variable for an
	element iterator, no folding is possible.
	* sem_res.adb (Resolve_Entity_Name): Do not check for a missing
	initialization in the case of a constant that is an object
	renaming.
	* exp_attr.adb (Expand_N_Attribute_Reference, case Enum_Rep):
	If the prefix is a constant that renames an expression there is
	nothing to evaluate statically.

2015-10-27  Vincent Celier  <celier@adacore.com>

	* gnatlink.adb: Always delete the response file, even when the
	invocation of gcc to link failed.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
	Do not inherit the SPARK_Mode from the context if it has been
	set already.
	(Build_Subprogram_Declaration): Relocate relevant
	pragmas from the subprogram body to the generated corresponding
	spec. Do not copy aspect SPARK_Mode as this leads to circularity
	in Copy_Separate_Tree. Inherit the attributes that describe
	pragmas Ghost and SPARK_Mode.
	(Move_Pragmas): New routine.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* inline.adb (Is_Expression_Function): Removed.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): An internally
	generated subprogram body that completes an expression function
	inherits the SPARK_Mode from the spec.
	* sem_res.adb (Resolve_Call): Update all calls to
	Is_Expression_Function.
	* sem_util.ads, sem_util.adb (Is_Expression_Function): Reimplemented.
	(Is_Expression_Function_Or_Completion): New routine.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-xref-spark_specific.adb, a-dirval-mingw.adb, exp_ch6.adb,
	sem_ch8.adb, s-os_lib.adb: Minor reformatting.

2015-10-27  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb
	(Enclosing_Subprogram_Or_Library_Package): detect library-level
	subprograms and handle entries as subprograms, i.e. now both
	library-level subprograms and entry bodies act as enclosing
	scopes.
	(Traverse_Declarations_Or_Statements): process entry bodies just
	like subprogram bodies.
	* lib-xref.ads (Enclosing_Subprogram_Or_Library_Package): comment
	simplified while keeping its the meaning and minor typo fixed
	("of" -> "or").
	* spark_xrefs.ads (Xref Section): fix in description of the ALI
	line for subprogram calls; such lines start with captial "F"
	followed by a space.

2015-10-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Direct_Name): A parameter association is
	a legal context for applying an implicit dereference.
	(Analyze_Expanded_Name): Minor code cleanup.

2015-10-27  Arnaud Charlet  <charlet@adacore.com>

	* sinput.ads, spark_xrefs.ads, lib-xref.adb: Fix typos.

2015-10-27  Pascal Obry  <obry@adacore.com>

	* a-dirval-mingw.adb: Remove some characters from Invalid_Character set.

2015-10-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Rewrite_Function_Call_For_C): Use a named
	associaion for the added actual in the call because previous
	actuals may also have been given by explicit associations.
	* lib-xref.adb: Minor style fixes.

2015-10-27  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb: Remove hard coded restrictions.

2015-10-27  Pascal Obry  <obry@adacore.com>

	* a-dirval-mingw.adb: Minor reformatting.

2015-10-27  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Improve previous patch.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Analyze_Formal_Package_Declaration): Code cleanup. Set
	and restore the value of global flag Ignore_Pragma_SPARK_Mode. A
	formal package declaration acts as a package instantation with
	respect to SPARK_Mode legality.

2015-10-27  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Constituent_Usage): Use
	logical operators rather than short circuit operators. Emit an
	error when a state with visible refinement is not refined.
	* snames.ads-tmpl: Add names for detecting
	predefined potentially blocking subprograms.

2015-10-27  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Revert previous
	change.
	(Expand_Array_Aggregate): Rewrite previous change here
	as done for other non GCC back-ends.
	(Build_Record_Aggr_Code): Add special case.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Add_Item_To_Name_Buffer): Update the comment on usage.
	Add an output string for loop parameters.
	(Analyze_Global_Items): Loop parameters are now a
	valid global item. The share the legality checks of constants.
	(Analyze_Input_Output): Loop parameters are now a valid dependency item.
	(Find_Role): Loop parameters share the role of constants.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Generalized_Indexing): In ASIS mode,
	preserve the Generalized_ indexing link if the context is not
	a spec expression that will be analyzed anew.

2015-10-26  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.ads, exp_ch6.adb (Build_Procedure_Body_Form): Promote it to
	library level (to invoke this routine from the semantic analyzer).
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): When generating
	C code, invoke Build_Procedure_Body_Form to transform a function
	that returns a constrained array type into a procedure with an
	out parameter that carries the return value.

2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* a-reatim.ads: Add "Clock_Time with Synchronous" contract in package
	Ada.Real_Time.
	* a-taside.ads: Add "Tasking_State with Synchronous" contract in
	package Ada.Task_Identification.
	* sem_ch12.adb: minor typo in comment

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Object_Contract): Set and restore
	the SPARK_Mode for both constants and objects. Factor out the
	semantic checks concerning Ghost objects.
	* freeze.adb (Freeze_Array_Type): A Ghost array type cannot have a
	concurrent component type.
	(Freeze_Entity): A Ghost type cannot also be concurrent.
	(Freeze_Record_Type): A Ghost record type cannot have a concurrent
	component.
	* sem_prag.adb (Analyze_Abstract_State): A Ghost abstract
	state cannot also be synchronized.
	(Check_Ghost_Synchronous): New routine.
	* sem_util.adb (Yields_Synchronized_Object): Correct the case
	of record components to account for the case where the type has
	no component list.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* expander.adb (Expand): Expand a single protected declaration.
	* exp_ch9.ads, exp_ch9.adb (Expand_N_Single_Protected_Declaration): New
	routine.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Is_OK_Volatile_Context): A volatile object may appear
	in an object declaration as long as it denotes the name.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch9.adb (Analyze_Single_Protected_Declaration): The anonymous
	object no longer comes from source.
	(Analyze_Single_Task_Declaration): The anonymous object no longer
	comes from source.
	* sem_prag.adb (Analyze_Pragma): The analysis of pragma SPARK_Mode
	now recognizes the internal anonymous object created for a single
	concurren type as a valid context.
	(Find_Related_Context): The internal anonymous object created for a
	single concurrent type is now a valid context.
	(Find_Related_Declaration_Or_Body): The internal anonymous object
	created for a single concurrent type is now a valid context.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Inherit_Rep_Item_Chain): Another another guard
	to prevent circularities in the rep_item_chain of the full view
	of a type extension in a child unit that extends a private type
	from the parent.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* atree.ads, atree.adb (Ekind_In): New 10 and 11 parameter versions.
	* contracts.ads, contracts.adb (Analyze_Initial_Declaration_Contract):
	New routine.
	* sem_ch6.adb (Analyze_Generic_Subprogram_Body):
	Analyze the contract of the initial declaration.
	(Analyze_Subprogram_Body_Helper): Analyze the contract of the
	initial declaration.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Analyze the contract
	of the initial declaration.
	* sem_ch9.adb (Analyze_Entry_Body): Analyze the contract of
	the initial declaration.
	(Analyze_Protected_Body): Analyze
	the contract of the initial declaration.
	(Analyze_Task_Body): Analyze the contract of the initial declaration.
	* sem_prag.adb (Add_Entity_To_Name_Buffer): Use "type" rather
	than "unit" as it makes the error messages sound better.
	(Add_Item_To_Name_Buffer): Update comment on usage. The routine
	now supports discriminants and current instances of concurrent
	types.
	(Analyze_Depends_In_Decl_Part): Install the discriminants
	of a task type.
	(Analyze_Global_In_Decl_Part): Install the discriminants of a task type.
	(Analyze_Global_Item): Add processing for current instances of
	concurrent types and include discriminants as valid global items.
	(Analyze_Input_Output): Discriminants and current instances of
	concurrent types are now valid items. Update various error messages.
	(Check_Usage): Current instances of protected and task types behaves
	as formal parameters.
	(Collect_Subprogram_Inputs_Outputs): There is
	no longer need to manually analyze [Refined_]Global thanks to
	freezing of initial declaration contracts.  Add processing for
	the current instance of a concurrent type.
	(Find_Role): Add categorizations for discriminants, protected and task
	types.
	(Is_CCT_Instance): New routine.
	(Match_Items): Update the comment on usage. Update internal comments.
	* sem_prag.ads (Collect_Subprogram_Inputs_Outputs): Update the
	comment on usage.
	* sem_util.adb (Entity_Of): Ensure that the entity is an object
	when traversing a potential renaming chain.
	(Fix_Msg): Use "type" rather than "unit" as it makes the error messages
	sound better.
	* sem_util.ads (Fix_Msg): Update the comment on usage.

2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* par.adb (Par): Do not generate an error when generating
	SCIL for predefined units or new children of system and co.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* einfo.adb: Access_Disp_Table applies to a private
	extension.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Generalized_Indexing): In ASIS mode, when
	restoring original node, remove Generalized_Indexing operation
	so that it is recreated during re- analysis.

2015-10-26  Javier Miranda  <miranda@adacore.com>

	* exp_unst.adb: (Unnest_Subprogram):
	Replace absolute references to 1 and 0 by their counterpart
	relative references through Subps_First.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* par-ch3.adb (P_Declarative_Items): In case of misplaced
	aspect specifications, ensure that flag Done is properly set to
	continue parse.
	* sem_prag.adb, sem_prag.ads: Remove Build_Generic_Class_Condition,
	unused.

2015-10-26  Emmanuel Briot  <briot@adacore.com>

	* s-os_lib.adb (Argument_String_To_List): Remove backslashes in
	argument value.

2015-10-26  Javier Miranda  <miranda@adacore.com>

	* exp_unst.ads, exp_unst.adb (Is_Uplevel_Referenced): Removed.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, sem_aux.adb, exp_attr.adb, sem_eval.adb: Minor
	reformatting.
	* sem_util.adb, sem_ch5.adb: Minor reformatting.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* exp_unst.adb (Unnest_Subprogram): Add guard to prevent compiler
	abort when handling a reference to a formal in an aspect of a
	nested subprogram declaration as an uplevel reference.

2015-10-26  Bob Duff  <duff@adacore.com>

	* snames.ads-tmpl, aspects.adb, aspects.ads: Add the aspect and
	pragma names and enter into relevant tables.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Analyze aspect
	Predicate_Failure.
	* sem_prag.adb (Predicate_Failure): Analyze pragma Predicate_Failure.
	* exp_util.adb (Make_Predicate_Check): When building the Check
	pragma, if Predicate_Failure has been specified, add the relevant
	String argument to the pragma.
	* par-prag.adb (Prag): Add Predicate_Failure to list of pragmas
	handled during semantic analysis.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assignment): If the left-hand side
	is an indexed component with generalized indexing, discard
	interpretation that yields a reference type, which is not
	assignable. This prevent spurious ambiguities when the right-hand
	side is an aggregate which does not provide a target type.

2015-10-26  Bob Duff  <duff@adacore.com>

	* exp_ch7.adb, exp_ch6.adb: Minor comment fix.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb (Move_Or_Merge_Aspects): Move all aspects related
	to a single concurrent type declaration to the declaration
	of the anonymous object if they qualify.
	(Relocate_Aspect): Update comment on usage.
	* aspects.ads Add new sectioon on aspect specifications on single
	concurrent types. Add new table Aspect_On_Anonymous_Object_OK.
	(Move_Or_Merge_Aspects): Udate the comment on usage.
	* atree.adb (Elist36): New routine.
	(Set_Elist36): New routine.
	* atree.ads (Elist36): New routine along with pragma Inline.
	(Set_Elist36): New routine along with pragma Inline.
	* atree.h: Elist36 is now an alias for Field36.
	* contracts.adb (Add_Contract_Item): Add processing
	for protected units and extra processing for variables.
	(Analyze_Object_Contract): Code cleanup. The processing of
	Part_Of now depends on wherer the object is a constant or
	a variable. Add processing for pragmas Depends and Global
	when they apply to a single concurrent object. Verify that a
	variable which is part of a single concurrent type has full
	default initialization. Set/restore the SPARK_Mode of a single
	concurrent object.
	(Analyze_Protected_Contract): New routine.
	* contracts.ads (Add_Contract_Item): Update the comment on usage.
	(Analyze_Object_Contract): Update the comment on usage.
	(Analyze_Protected_Contract): New routine.
	(Analyze_Task_Contract): Update the comment on usage.
	* einfo.adb Part_Of_Constituents now uses Elist10.
	(Anonymous_Object): New routine.
	(Contract): Code cleanup.
	(Has_Option): Remove the assumption that the only simple
	option is External.
	(Is_Synchronized_State): New routine.
	(Part_Of_Constituents): This attribute applies to
	variables and uses Elist10.
	(Set_Anonymous_Object): New routine.
	(Set_Contract): Code cleanup.
	(Set_Part_Of_Constituents): This attribute applies to variables and
	uses Elist10.
	(Set_SPARK_Aux_Pragma): Code cleanup.
	(Set_SPARK_Aux_Pragma_Inherited): Code cleanup.
	(Set_SPARK_Pragma): Code cleanup. This attribute applies to
	variables.
	(Set_SPARK_Pragma_Inherited): Code cleanup. This
	attribute applies to variables.
	(SPARK_Aux_Pragma): Code cleanup.
	(SPARK_Aux_Pragma_Inherited): Code cleanup.
	(SPARK_Pragma): Code cleanup. This attribute applies to variables.
	(SPARK_Pragma_Inherited): Code cleanup. This attribute applies
	to variables.
	(Write_Field9_Name): Remove the output for Part_Of_Constituents.
	(Write_Field10_Name): Add output for Part_Of_Constituents.
	(Write_Field30_Name): Add output for Anonymous_Object.
	(Write_Field34_Name): Output SPARK_Pragma
	for protected types and variables.
	* einfo.ads: New attributes Anonymous_Object and
	Is_Synchronized_State along with usage in entities. Update
	the documentation of attributes Contract Encapsulating_State
	Part_Of_Constituents SPARK_Aux_Pragma SPARK_Aux_Pragma_Inherited
	SPARK_Pragma SPARK_Pragma_Inherited (Anonymous_Object): New
	routine along with pragma Inline.
	(Is_Synchronized_State): New routine.
	(Set_Anonymous_Object): New routine along with pragma Inline.
	* freeze.adb (Freeze_Record_Type): Ensure that a non-synchronized
	record does not have synchronized components.
	* sem_ch3.adb (Analyze_Declarations): Code cleanup. Analyze the
	contract of protected units.
	* sem_ch9.adb Add with and use clauses for Sem_Prag. Code cleanup.
	(Analyze_Single_Protected_Declaration): Reimplemented.
	(Analyze_Single_Task_Declaration): Reimplemented.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Part_Of
	can now apply to a single concurrent type declaration. Rely on
	Insert_Pragma to place the pragma.  Update the error message on
	usage to reflect the new context.
	(Insert_Pragma): When inserting
	pragmas for a protected or task type, create a definition if
	the type lacks one.
	* sem_elab.adb (Check_A_Call): Code cleanup. Issue error message
	related to elaboration issues for SPARK when SPARK_Mode is "on"
	and the offending entity comes from source.
	* sem_prag.adb (Analyze_Abstract_State): Add new flag
	Synchronous_Seen. Update the analysis of simple options Externa,
	Ghost and Synchronous. Update various error messages to reflect
	the use of single concurrent types.
	(Analyze_Depends_Global): Pragmas Depends and Global can now apply to
	a single task type or a single concurrent object created for a task
	type.
	(Analyze_Depends_In_Decl_Part): Do not push a scope when the
	context is a single concurrent object.	(Analyze_Part_Of):
	Moved out of Analyze_Pragma. The routine has a new profile
	and comment on usage.
	(Analyze_Part_Of_In_Decl_Part): New routine.
	(Analyze_Part_Of_Option): Update the call to Analyze_Part_Of.
	(Analyze_Pragma): Pragma Abstract_State can
	now carry simple option Synchronous. Pragma Part_Of can now
	apply to a single concurrent type declaration. The analysis
	of pragma Part_Of is delayed when the context is a single
	concurrent object.
	(Analyze_Refined_Depends_In_Decl_Part): Use the anonymous object when
	the context is a single concurren type.
	(Analyze_Refined_Global_In_Decl_Part): Use the
	anonymous object when the context is a single concurren type.
	(Check_Ghost_Constituent): Removed.
	(Check_Matching_Constituent): Renamed to Match_Constituent.
	(Check_Matching_State): Renamed to Match_State.
	(Collect_Constituent): Update the comment
	on usage. Verify various legality rules related to ghost and
	synchronized entities.
	(Find_Related_Declaration_Or_Body): A single task declaration is no
	longer a valid context for a pragma.
	(Fix_Msg): Moved to Sem_Util.
	(Process_Overloadable): Add processing for single task objects.
	(Process_Visible_Part): Add processing for single concurrent
	types.
	(Relocate_Pragmas_To_Anonymous_Object): New routine.
	* sem_prag.ads Add new table Pragma_On_Anonymous_Object_OK.
	(Analyze_Part_Of_In_Decl_Part): New routine.
	(Relocate_Pragmas_To_Anonymous_Object): New routine.
	* sem_util.adb (Defining_Entity): Code cleanup.
	(Fix_Msg): Moved from Sem_Prag and augmented to handle
	mode replacements.
	(Has_Full_Default_Initialization): New routine.
	(Is_Descendant_Of_Suspension_Object): Moved out of
	Is_Effectively_Volatile.
	(Is_Single_Concurrent_Object): New routine.
	(Is_Single_Concurrent_Type): New routine.
	(Is_Single_Concurrent_Type_Declaration): New routine.
	(Is_Synchronized_Object): New routine.
	(Yields_Synchronized_Object): New routine.
	* sem_util.ads (Fix_Msg): Moved form Sem_Prag. Update the
	comment on usage.
	(Has_Full_Default_Initialization): New routine.
	(Is_Single_Concurrent_Object): New routine.
	(Is_Single_Concurrent_Type): New routine.
	(Is_Single_Concurrent_Type_Declaration): New routine.
	(Is_Synchronized_Object): New routine.
	(Yields_Synchronized_Object): New routine.
	* snames.ads-tmpl: Add name Synchronous.

2015-10-26  Jerome Lambourg  <lambourg@adacore.com>

	* sysdep.c (__gnat_get_task_options): Refine the workaround for
	the VX_USR_TASK_OPTION bug in VxWorks 7, as we cannot check the
	value of VX_DEALLOC_TCB in RTP mode, the macro value not being
	defined in the headers.
	* g-arrspl.ads: Fix typo.

2015-10-26  Jerome Lambourg  <lambourg@adacore.com>

	* sysdep.c (__gnat_get_task_options): Workaround a VxWorks
	bug where VX_DEALLOC_TCB task option is forbidden when calling
	taskCreate but allowed in VX_USR_TASK_OPTIONS.

2015-10-26  Javier Miranda  <miranda@adacore.com>

	* exp_unst.ads, exp_unst.adb (Is_Uplevel_Referenced): New subprogram.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Constant_Indexing_OK): New predicate, subsidiary
	of Try_Container_Indexing, that implements the name resolution
	rules given in RM 4.1.6 (13-15).

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

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

2015-10-26  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Return False when
	generating C code.
	* sem_ch3.adb: Fix typos.

2015-10-26  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Build_Predicate_Functions): Change the
	structure of the predicate functions to reflect the requirements
	of AI12-0071.
	(Add_Condition): New procedure to do the "and-then-ing" in Add_Call
	and Add_Predicates.
	* einfo.ads (Static_Real_Or_String_Predicate): Change the
	documentation to reflect the new structure.
	* sem_eval.adb (Real_Or_String_Static_Predicate_Matches):
	Change the walking of the predicate expression to reflect the
	new structure.
	* exp_util.adb: Minor comment fix.

2015-10-26  Bob Duff  <duff@adacore.com>

	* s-rident.ads (No_Dynamic_Sized_Objects): New restriction name.
	* sem_util.ads, sem_util.adb (All_Composite_Constraints_Static):
	New function to check that all relevant constraints are static.
	* sem_aggr.adb (Resolve_Array_Aggregate): Call
	All_Composite_Constraints_Static on the bounds of named array
	aggregates.
	* sem_ch3.adb (Analyze_Subtype_Declaration): Call
	All_Composite_Constraints_Static if the type is composite and
	the subtype is constrained.

2015-10-26  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_N_Subprogram_Declaration): Skip the frontend
	transformation of functions that return a constrained array into
	a procedure when they are unchecked_conversion instances.

2015-10-26  Gary Dismukes  <dismukes@adacore.com>

	* s-os_lib.ads: Minor reformatting/rewording.

2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* debug.adb: Introduce debug flag -gnatd.5.

2015-10-26  Pascal Obry  <obry@adacore.com>

	* s-os_lib.ads, s-os_lib.adb (Kill): New routine. This routine
	makes visible support for killing processes in expect.c.
	* expect.c (__gnat_kill): Removed from here.
	* adaint.c (__gnat_kill): Added here to be usable in the compiler
	(System.OS_Lib).
	* make.adb (Sigint_Intercepted): Use the Kill routine from
	System.OS_Lib.

2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* einfo.ads, einfo.adb, exp_unst.adb (Needs_Typedef,
	Set_Needs_Typedef): Removed, no longer used.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (First_Component): Update the assertion to allow
	for concurrent types.
	(First_Component_Or_Discriminant): Update the assertion to allow for
	concurrent types.
	* einfo.ads: Update the documentation of attributes First_Component
	and First_Component_Or_Discriminant along with uses in entities.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Actuals): An effectively
	volatile object may act as an actual when the corresponding
	formal is of a non-scalar effectively volatile type, not just
	a non-scalar volatile type.

2015-10-26  Bob Duff  <duff@adacore.com>

	* sinfo.ads, sem_util.ads: Update comments.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Refined_Depends_Global_Post): When dealing with
	protected entries or protected subprograms, use the enclosing protected
	type to ensure that the protected type declaration is declared
	in a package spec. Remove an obsolete attempt to ensure the
	aggregate for of pragma Refined_State as this routine is never
	called in that case.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop_Over_Container): For
	an element iterator loop, the element is a constant if the
	container object is a constant, even if the container type has
	a Variable_Indexing aspect.

2015-10-26  Bob Duff  <duff@adacore.com>

	* s-fileio.adb (Fopen_Mode): Use "r+" for Out_File/Stream_IO,
	so the file won't be truncated on 'fopen', as required by
	AI95-00283-1.

2015-10-26  Bob Duff  <duff@adacore.com>

	* gnat1drv.adb, prj.adb, sem_ch6.adb, s-regpat.adb,
	sem_prag.adb: Fix typos.
	* einfo.ads, restrict.ads: Minor comment fixes.
	* err_vars.ads, sem_util.adb, errout.ads: Code clean up.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assignment): Do not check that the
	Left-hand side is legal in an inlined body, check is done on
	the original template.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.ads, exp_util.adb (Find_Primitive_Operations): New
	subprogram to retrieve by name the possibly overloaded set of
	primitive operations of a type.
	* sem_ch4.adb (Try_Container_Indexing): Use
	Find_Primitive_Operations to handle overloaded indexing operations
	of a derived type.

2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* osint-c.ads: Minor comment update.

2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-hpux.ads, s-osinte-aix.ads, s-osinte-solaris-posix.ads,
	s-osinte-darwin.ads, s-osinte-android.ads, s-osinte-freebsd.ads,
	s-taprop-posix.adb (Get_Page_Size): C function returns an int. Adjust
	callers accordingly.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Is_OK_Object_Reference): New routine.
	(Substitute_Valid_Check): Perform the 'Valid subsitution but do
	not suggest the use of the attribute if the left hand operand
	does not denote an object as it leads to illegal code.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_unst.adb: Minor reformatting.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Improve error msg.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Controlling_Type): Handle properly the
	case of an incomplete type whose full view is tagged, when a
	primitive operation of the type is declared between the two views.

2015-10-26  Bob Duff  <duff@adacore.com>

	* adaint.c (__gnat_locate_exec_on_path): If the PATH environment
	variable is not set, do not return NULL, because we can still find
	the executable if it includes a directory name.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_elab.adb (Elab_Warning): Under dynamic elaboration, when
	elaboration warnings are enabled, emit proper warning header
	when triggered by an access attribute.

2015-10-26  Steve Baird  <baird@adacore.com>

	* exp_ch11.adb: If CodePeer_Mode is true, generate simplified
	SCIL for exception declarations.
	* exp_ch11.adb (Expand_N_Exception_Declaration) If CodePeer_Mode
	is True, initialize the Full_Name component of the exception
	record to null instead of to the result of an unchecked
	conversion.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* exp_unst.adb (Note_Uplevel_Ref) : Handle properly a reference
	that denotes a function returning a constrained array, that has
	been rewritten as a procedure.
	* makeutl.ads: Minor edit.

2015-10-26  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb (Traverse_Protected_Declaration): New
	procedure for traversal.
	(Add_SPARK_Xrefs): Remove debugging code.
	(Traverse_Declaration_Or_Statement): Call the new traversal
	procedure.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Pragma
	Extensions_Visible can now appear on an abstract subprogram
	declaration.

2015-10-26  Yannick Moy  <moy@adacore.com>

	* lib-xref-spark_specific.adb (Add_SPARK_Xrefs): Use character 'r' to
	denote a reference to a constant which may have variable input, and
	thus may be treated as a variable in GNATprove, instead of the
	character 'c' used for constants.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Object_Access_Level): Only aliased formals of
	functions have the accessibility level of the point of call;
	aliased formals of procedures have the same level as unaliased
	formals.
	(New_Copy_Tree): Add guard on copying itypes. From code reading.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* inline.adb: Minor reformatting.

2015-10-26  Yannick Moy  <moy@adacore.com>

	* get_spark_xrefs.adb (get_SPARK_Xrefs): Remove obsolete
	assertion.
	* lib-xref-spark_specific.adb (Traverse_Declaration_Or_Statement):
	New procedure to factor duplicated code and add
	treatment of protected entries.
	(Add_SPARK_Scope, Traverse_Declarations_Or_Statements): Call the new
	procedure Traverse_Declaration_Or_Statement. Use same character used in
	normal xrefs for SPARK xrefs, for a given entity used as scope.
	* spark_xrefs.ads Document character used for entries.
	* sem_prag.adb (Check_Loop_Pragma_Placement): Account for possible
	introduction of declarations and statements by the expansion, between
	two otherwise consecutive loop pragmas.
	* sem_util.ads, sem_util.adb (Is_Suspension_Object): Lifted from nested
	function.
	(Is_Descendant_Of_Suspension_Object): nested function lifted.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Eval_Attribute): Attribute 'Enum_Rep can be folded
	when its prefix denotes a constant, an enumeration literal or
	an enumeration type. Use the expression of the attribute in the
	enumeration type form, otherwise use the prefix to fold.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb Add an entry for entry bodies in table
	Has_Aspect_Specifications_Flag.
	(Aspects_On_Body_Or_Stub_OK): Entry bodies now allow for certain
	aspects.
	* contracts.adb (Add_Contract_Items): Code cleanup. Add
	processing for entry bodies, entry declarations and task units.
	(Analyze_Subprogram_Body_Contract): Renamed
	to Analyze_Entry_Or_Subprogram_Body_Contract. Do not
	analyze the contract of an entry body unless annotating the
	original tree.
	(Analyze_Subprogram_Contract): Renamed to
	Analyze_Entry_Or_Subprogram_Contract.  Do not analyze the contract
	of an entry declaration unless annotating the original tree.
	(Analyze_Task_Contract): New routine.
	* contracts.ads (Add_Contract_Item): Update the comment on usage.
	(Analyze_Package_Body_Contract): Update comment on usage.
	(Analyze_Package_Contract): Update the comment on usage.
	(Analyze_Subprogram_Body_Contract): Renamed to
	Analyze_Entry_Or_Subprogram_Body_Contract.
	(Analyze_Subprogram_Body_Stub_Contract): Update the comment on usage.
	(Analyze_Subprogram_Contract): Renamed to
	Analyze_Entry_Or_Subprogram_Contract.
	(Analyze_Task_Contract): New routine.
	* einfo.adb (Contract): Restructure the assertion to include
	entries and task units.
	(SPARK_Pragma): This attribute now applies to operators.
	(SPARK_Pragma_Inherited): This flag now applies to operators.
	(Set_Contract): Restructure the assertion to include entries and task
	units.
	(Set_SPARK_Pragma): This attribute now applies to operators.
	(Set_SPARK_Pragma_Inherited): This flag now applies to operators.
	(Write_Field34_Name): Write out all Ekinds that have a contract.
	(Write_Field40_Name): SPARK_Pragma now applies to operators.
	* einfo.ads: Update the documentation of attribute Contract along
	with usage in nodes.  Update the documentation of attributes
	SPARK_Pragma and SPARK_Pragma_Inherited.
	* exp_ch6.adb (Freeze_Subprogram): Update the call to
	Analyze_Subprogram_Contract.
	* par-ch9.adb (P_Entry_Barrier): Do not parse keyword "is" as it
	is not part of the entry barrier production.
	(P_Entry_Body): Parse the optional aspect specifications. Diagnose
	misplaced aspects.
	* sem_attr.adb (Analyze_Attribute_Old_Result): Update the call
	to Find_Related_Subprogram_Or_Body.
	* sem_aux.adb (Unit_Declaration_Node) Add an entry for entry
	declarations and bodies.
	* sem_ch3.adb (Analyze_Declarations): Analyze the contracts of
	entry declarations, entry bodies and task units.
	* sem_ch6.adb (Analyze_Generic_Subprogram_Body):
	Update the call to Analyze_Subprogram_Body_Contract.
	(Analyze_Subprogram_Body_Helper): Update the call to
	Analyze_Subprogram_Body_Contract.
	* sem_ch9.adb (Analyze_Entry_Body): Analyze the aspect
	specifications and the contract.
	* sem_ch10.adb (Analyze_Compilation_Unit): Update the call to
	Analyze_Subprogram_Contract.
	* sem_ch12.adb (Save_References_In_Pragma): Update the call to
	Find_Related_Subprogram_Or_Body.
	* sem_ch13.adb (Analyze_Aspects_On_Body_Or_Stub): Use
	Unique_Defining_Entity rather than rummaging around in nodes.
	(Diagnose_Misplaced_Aspects): Update comment on usage. Update the
	error messages to accomondate the increasing number of contexts.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
	Update the call to Find_Related_Subprogram_Or_Body.
	(Analyze_Depends_Global): Update the call to
	Find_Related_Subprogram_Or_Body. Add processing for entry
	declarations.
	(Analyze_Depends_In_Decl_Part): Update the call
	to Find_Related_Subprogram_Or_Body. Task units have no formal
	parameters to install.	(Analyze_Global_In_Decl_Part): Update
	the call to Find_Related_Subprogram_Or_Body. Task units have no
	formal parameters to install.
	(Analyze_Global_Item): Use Fix_Msg to handle the increasing number of
	contexts.
	(Analyze_Pragma): Update the call to Find_Related_Subprogram_Or_Body.
	Perform full analysis when various pragmas appear in an entry body.
	(Analyze_Pre_Post_Condition): Update the call to
	Find_Related_Subprogram_Or_Body. Perform full analysis when the pragma
	appears in an entry body.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Update the call to
	Find_Related_Subprogram_Or_Body.
	(Analyze_Refined_Depends_Global_Post): Update
	the call to Find_Related_Subprogram_Or_Body. Use
	Fix_Msg to handle the increasing number of contexts.
	(Analyze_Refined_Depends_In_Decl_Part): Update
	the call to Find_Related_Subprogram_Or_Body. Use
	Unique_Defining_Entity to obtain the entity of the
	spec. Use Fix_Msg to handle the increasing number of contexts.
	(Analyze_Refined_Global_In_Decl_Part): Update the call to
	Find_Related_Subprogram_Or_Body. Use Unique_Defining_Entity to obtain
	the entity of the spec. Use Fix_Msg to handle the increasing number of
	contexts.
	(Analyze_Test_Case_In_Decl_Part): Update the call to
	Find_Related_Subprogram_Or_Body.
	(Check_Dependency_Clause): Use Fix_Msg to handle the increasing number
	of contexts.
	(Check_Mode_Restriction_In_Enclosing_Context): Use
	Fix_Msg to handle the increasing number of contexts.
	(Collect_Subprogram_Inputs_Outputs): Use the refined
	versions of the pragmas when the context is an entry body or
	a task body.
	(Find_Related_Subprogram_Or_Body): Renamed to
	Find_Related_Declaration_Or_Body.  Add processing for entries
	and task units.
	(Fix_Msg): New routine.
	(Role_Error): Use Fix_Msg to handle the increasing number of contexts.
	* sem_prag.ads (Find_Related_Subprogram_Or_Body): Renamed to
	Find_Related_Declaration_Or_Body.  Update the comment on usage.
	* sem_util.adb (Is_Entry_Body): New routine.
	(Is_Entry_Declaration): New routine.
	* sem_util.ads (Is_Entry_Body): New routine.
	(Is_Entry_Declaration): New routine.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* inline.adb (Has_Excluded_Declaration): A subtype declaration
	with a predicate aspect generates a subprogram, and therefore
	prevents the inlining of the enclosing subprogram.
	* osint.ads: Fix typo.


2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_case.adb (Check_Choice_Set): Choose initial choice range
	below low bound of type, to prevent spurious errors on case
	statements whose expressions have an integer subtype with a
	static predicate.
	* sem_util.ads: Fix typo.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): In the scope of a
	predicate function, delay the expansion of the expression only
	if the target type has a specified Static_ Predicate aspect,
	because the expression is processed later. A dynamic predicate
	must be expanded in standard fashion.

2015-10-26  Claire Dross  <dross@adacore.com>

	* a-nudira.ads: Remove SPARK_Mode as it currently causes an error.

2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* sem_aggr.adb, sem_type.adb, sem_ch12.adb, sem_res.adb, sem_ch4.adb,
	sem_ch8.adb, exp_aggr.adb, sem_eval.adb, s-fatgen.adb, a-tienio.adb:
	Fix typos.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): The processing
	for aspects Abstract_State, Ghost, Initial_Condition, Initializes
	and Refined_State no longer have to take SPARK_Mode into account.
	(Insert_After_SPARK_Mode): Removed.
	(Insert_Pragma): Update profile and comment on usage. The routine can
	now insert a pragma after the "header" of an instance.
	* sem_prag.adb (Analyze_If_Available): New routine.
	(Analyze_Pragma): Do not reset the Analyzed flag of various
	SPARK pragmas as they use the Is_Analyzed_Pragma attribute to
	avoid reanalysis. Various pragmas now trigger the analysis
	of related pragmas that depend on or are dependent on the
	current pragma. Remove the declaration order checks related
	to pragmas Abstract_State, Initial_Condition and Initializes.
	(Analyze_Pre_Post_Condition): Analyze pragmas SPARK_Mode and
	Volatile_Function prior to analyzing the pre/postcondition.
	(Check_Declaration_Order): Removed.
	(Check_Distinct_Name): Ensure that a potentially duplicated pragma
	Test_Case is not the pragma being analyzed.
	(Is_Followed_By_Pragma): Removed.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Handle subprogram bodies without previous specs.

2015-10-26  Claire Dross  <dross@adacore.com>

	* a-nudira.ads: Specify appropriate SPARK_Mode so that the unit
	can be used in SPARK code.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Subprogram_Body_Contract): Do not analyze
	pragmas Refined_Global and Refined_Depends because these pragmas
	are now fully analyzed when encountered.
	(Inherit_Pragma): Update the call to attribute Is_Inherited.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Add a guard
	to prevent reanalysis. Mark the pragma as analyzed at the end of
	the processing.
	(Analyze_Depends_Global): New parameter profile
	and comment on usage. Do not fully analyze the pragma, this is
	now done at the outer level.
	(Analyze_Depends_In_Decl_Part): Add a guard to prevent reanalysis.
	Mark the pragma as analyzed at the end of the processing.
	(Analyze_External_Property_In_Decl_Part): Add a guard to prevent
	reanalysis.  Mark the pragma as analyzed at the end of the processing.
	(Analyze_Global_In_Decl_Part): Add a guard to prevent reanalysis. Mark
	the pragma as analyzed at the end of the processing.
	(Analyze_Initial_Condition_In_Decl_Part): Add a guard to prevent
	reanalysis.  Mark the pragma as analyzed at the end of the processing.
	(Analyze_Initializes_In_Decl_Part): Add a guard to prevent reanalysis.
	Mark the pragma as analyzed at the end of the processing.
	(Analyze_Pragma): Reset the Analyzed flag on various pragmas that
	require delayed full analysis. Contract_Cases is now analyzed
	immediately when it applies to a subprogram body stub. Pragmas Depends,
	Global, Refined_Depends and Refined_Global are now analyzed
	in pairs when they appear in a subprogram body [stub].
	(Analyze_Pre_Post_Condition_In_Decl_Part): Add a guard to
	prevent reanalysis.  Mark the pragma as analyzed at the end of
	the processing.
	(Analyze_Refined_Depends_Global_Post): Update the comment on usage.
	(Analyze_Refined_Depends_In_Decl_Part): Add a guard to prevent
	reanalysis. Mark the pragma as analyzed at the end of the processing.
	(Analyze_Refined_Global_In_Decl_Part): Add a guard to prevent
	reanalysis. Mark the pragma as analyzed at the end of the processing.
	(Analyze_Refined_State_In_Decl_Part): Add a guard to prevent
	reanalysis. Mark the pragma as analyzed at the end of the processing.
	(Analyze_Test_Case_In_Decl_Part): Add a guard to prevent reanalysis.
	Mark the pragma as analyzed at the end of the processing.
	(Is_Followed_By_Pragma): New routine.
	* sinfo.adb (Is_Analyzed_Pragma): New routine.
	(Is_Inherited): Renamed to Is_Inherited_Pragma.
	(Set_Is_Analyzed_Pragma): New routine.
	(Set_Is_Inherited): Renamed to Set_Is_Inherited_Pragma.
	* sinfo.ads Rename attribute Is_Inherited to Is_Inherited_Pragma
	and update occurrences in nodes.
	(Is_Analyzed_Pragma): New routine along with pragma Inline.
	(Is_Inherited): Renamed to Is_Inherited_Pragma along with pragma Inline.
	(Set_Is_Analyzed_Pragma): New routine along with pragma Inline.
	(Set_Is_Inherited): Renamed to Set_Is_Inherited_Pragma along
	with pragma Inline.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* par-ch3.adb (P_Component_Items): When style checks are enabled,
	apply them to component declarations in a record type declaration
	or extension.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Is_Suspension_Object): Ensure that the scope of "Ada"
	is Standard_Standard.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Is_OK_Volatile_Context): A subprogram call is an OK
	context for a reference to an effectively volatile object.
	(Resolve_Actuals): Add references to SPARK RM.
	(Within_Procedure_Call): Removed.
	(Within_Subprogram_Call): New routine.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Aggregate_Accessibility): A reference to a
	formal parameter in an aggregate does not need an accesibility
	check only if the formal is aliased.

2015-10-26  Claire Dross  <dross@adacore.com>

	* sem_aux.ads (Number_Components): Can return 0 when called on
	an empty record.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Subprogram_Body_Contract): Use
	Unique_Defining_Entity instead of Corresponding_Spec_Of.
	* einfo.adb SPARK_Pragma and SPARK_Aux_Pragma are now Node40 and
	Node41 respectively.
	(SPARK_Aux_Pragma): Update the assertion and node querry.
	(SPARK_Aux_Pragma_Inherited): Update the assertion and node query.
	(SPARK_Pragma): Update the assertion and node query.
	(SPARK_Pragma_Inherited): Update the assertion and node query.
	(Set_SPARK_Aux_Pragma): Update the assertion and node setting.
	(Set_SPARK_Aux_Pragma_Inherited): Update the assertion and node setting.
	(Set_SPARK_Pragma): Update the assertion and node setting.
	(Set_SPARK_Pragma_Inherited): Update the assertion and node setting.
	(Write_Field32_Name): Remove the output for SPARK_Pragma.
	(Write_Field33_Name): Remove the output for SPARK_Aux_Pragma.
	(Write_Field40_Name): Add output for SPARK_Pragma.
	(Write_Field41_Name): Add output for SPARK_Aux_Pragma.
	* einfo.ads Rewrite the documentation on attributes
	SPARK_Pragma, SPARK_Aux_Pragma, SPARK_Pragma_Inherited and
	SPARK_Aux_Pragma_Inherited. Update their uses in nodes.
	* exp_ch4.adb (Create_Anonymous_Master): Use
	Unique_Defining_Entity instead of Corresponding_Spec_Of.
	* exp_ch9.adb (Expand_Entry_Declaration): Mark the barrier
	function as such.
	(Expand_N_Task_Body): Mark the task body as such.
	(Expand_N_Task_Type_Declaration): Mark the task body as such.
	* exp_unst.adb (Visit_Node): Use Unique_Defining_Entity instead
	of Corresponding_Spec_Of.
	* sem_attr.adb (Analyze_Attribute_Old_Result): Use
	Unique_Defining_Entity instead of Corresponding_Spec_Of.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Entry barrier
	functions do not inherit the SPARK_Mode from the context.
	(Build_Subprogram_Declaration): The matching spec is now marked
	as a source construct to mimic the original stand alone body.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Code cleanup.
	* sem_ch9.adb Add with and use clauses for Contracts.
	(Analyze_Entry_Body): An entry body freezes the contract of
	the nearest enclosing package body. The entry body now inherits
	the SPARK_Mode from the context.
	(Analyze_Entry_Declaration): A protected entry declaration now inherits
	the SPARK_Mode from the context.
	(Analyze_Protected_Body): A protected body freezes
	the contract of the nearest enclosing package body. Set the
	Etype of a protected body as this is neede for proper aspect
	analysis. Protected bodies can now carry meaningful aspects and
	those are now analyzed.
	(Analyze_Protected_Type_Declaration): A protected type now inherits the
	SPARK_Mode from the context.
	(Analyze_Task_Body): A task body freezes the contract of the
	nearest enclosing package body. Set the Etype of a task body
	as this is needed for proper aspect analysis. A task body
	now inherits the SPARK_Mode from the context.  Task bodies
	can now carry meaningful aspects and those are now analyzed.
	(Analyze_Task_Type_Declaration): A task type declaration now
	inherits the SPARK_Mode of from the context.
	* sem_ch10.adb (Analyze_Protected_Body_Stub): Protected body
	stubs can now carry meaningful aspects.
	(Analyze_Task_Body_Stub): Task body stubs can now carry meaningful
	aspects.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Aspects SPARK_Mode
	Warnings now use routine Insert_Pragma as means of insertion into
	the tree.
	(Insert_After_SPARK_Mode): Clean up documentation.
	(Insert_Pragma): Clean up documentation. The routine is now
	capable of operating on synchronized units.
	* sem_prag.adb (Add_Entity_To_Name_Buffer): New routine.
	(Analyze_Contract_Cases_In_Decl_Part): Use
	Unique_Defining_Entity instead of Corresponding_Spec_Of.
	(Analyze_Depends_Global): Use Unique_Defining_Entity instead
	of Corresponding_Spec_Of.
	(Analyze_Depends_In_Decl_Part): Use Unique_Defining_Entity instead of
	Corresponding_Spec_Of.
	(Analyze_Global_In_Decl_Part): Use Unique_Defining_Entity instead of
	Corresponding_Spec_Of.
	(Analyze_Pragma): Use Unique_Defining_Entity instead of
	Corresponding_Spec_Of.
	Update the detection of an illegal pragma Ghost when it applies
	to a task or protected unit. Reimplement the handling of
	pragma SPARK_Mode.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Use Unique_Defining_Entity
	instead of Corresponding_Spec_Of.
	(Analyze_Test_Case_In_Decl_Part): Use Unique_Defining_Entity instead of
	Corresponding_Spec_Of.
	(Check_Library_Level_Entity): Update the comment on usage.
	Reimplemented to offer a more specialized errror context.
	(Check_Pragma_Conformance): Update profile and comment on usage.
	Handle error message output on single protected or task units.
	(Collect_Subprogram_Inputs_Outputs): Use Unique_Defining_Entity
	instead of Corresponding_Spec_Of.
	(Process_Body): New routine.
	(Process_Overloadable): New routine.
	(Process_Private_Part): New routine.
	(Process_Statement_Part): New routine.
	(Process_Visible_Part): New routine.
	(Set_SPARK_Context): New routine.
	(Set_SPARK_Flags): Removed.
	* sem_util.adb (Corresponding_Spec_Of): Removed.
	(Unique_Entity): Reimplemented to handle many more cases.
	* sem_util.ads (Corresponding_Spec_Of): Removed.
	(Unique_Defining_Entity): Update the comment on usage.
	* sinfo.ads (Is_Entry_Barrier_Function): Update the assertion.
	(Is_Task_Body_Procedure): New routine.
	(Set_Is_Entry_Barrier_Function): Update the assertion.
	(Set_Is_Task_Body_Procedure): New routine.
	* sinfo.adb Update the documentation of attribute
	Is_Entry_Barrier_Function along with use in nodes. Add new
	attribute Is_Task_Body_Procedure along with use in nodes.
	(Is_Task_Body_Procedure): New routine along with pragma Inline.
	(Set_Is_Task_Body_Procedure): New routine along with pragma Inline.

2015-10-26  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch13.adb: Minor reformatting.

2015-10-26  Steve Baird  <baird@adacore.com>

	* exp_disp.adb: Omit most dispatch table initialization code
	if Generate_SCIL is true.

2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* sinfo.ads, exp_ch3.adb: Revert previous change.
	(Build_Record_Init_Proc): Do not build an aggregate if
	Modify_Tree_For_C.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Find_Corresponding_Spec): Reject a subprogram
	body whose signature is type conformant with a previous expression
	function.

2015-10-26  Bob Duff  <duff@adacore.com>

	* treepr.adb: Code clean up.

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

	* freeze.adb (Check_Component_Storage_Order): Skip a record
	component if it has Complex_Representation.
	(Freeze_Record_Type): If the type has Complex_Representation, skip the
	regular treatment of Scalar_Storage_Order attribute and instead issue
	a warning if it is present.

2015-10-26  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Check_Iterator_Functions): For a Default_Iterator
	aspect, make sure an implicitly declared interpretation is
	overridden by an explicit one.
	* sem_util.ads: Update comment.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch7.adb, sem_ch6.adb (Analyze_Subprogram_Body_Helper): Only source
	bodies should "freeze" the contract of the nearest enclosing
	package body.

2015-10-26  Joel Brobecker  <brobecker@adacore.com brobecker>

	* adaint.c (__gnat_lwp_self): Replace current implementation re-using
	the Linux one, which uses an __NR_gettid syscall rather than
	pthread_self.

2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* sinfo.ads, exp_ch3.adb (Build_Array_Init_Proc,
	Build_Record_Init_Proc): Do not inline init procs when
	Modify_Tree_For_C is True.

2015-10-26  Bob Duff  <duff@adacore.com>

	* errout.ads: Minor comment fix.
	* einfo.ads: Minor style fix.

2015-10-26  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (Derive_Interface_Subprogram): Fix
	Is_Abstract_Subprogram, which might have been calculated
	incorrectly, because we're passing Ultimate_Alias (Subp) (and
	its dispatching type) to Derive_Subprogram, instead of the true
	parent subprogram and type.

2015-10-26  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Check_Iterator_Functions): When
	printing the "default iterator must be unique" error message,
	also print references to the places where the duplicates are
	declared. This makes the message clearer.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Formal_Package_Declaration): Do not set
	Box_Present when the formal part is (others => <>) even though
	it is equivalent to a formal part (<>), because ASIS tools depend
	on the syntactic setting of this flag.

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb: Minor reformatting.
	* einfo.ads: Minor typo.

2015-10-26  Joel Brobecker  <brobecker@adacore.com brobecker>

	* adaint.c (__gnat_open_new_temp): Use mkstemp on Android.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Formal_Package_Declaration): Code clean up.
	* sem_ch13.adb (Check_Inherited_Indexing): New inner procedure
	of Check_Indexing_Functions, to verify that a derived type with an
	Indexing aspect is not inheriting such an aspect from an ancestor.
	(Check_Indexing_Functions): Call Check_Inherited_Indexing within
	an instance.

2015-10-26  Gary Dismukes  <dismukes@adacore.com>

	* a-reatim.adb, contracts.adb, contracts.ads: Minor reformatting and
	typo corrections.

2015-10-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Do not
	recheck the consistency betwen the freeze point and the end of
	declarations for the expression in an aspect specification,
	because it was done already in the analysis of the generic.
	Furthermore, the delayed analysis of an aspect of the instance
	may produce spurious errors when the generic is a child unit
	that references entities in the parent (which might not be in
	scope at the freeze point of the instance).

2015-10-26  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Call): Issue info message
	instead of warning when call cannot be inlined in GNATprove mode.

2015-10-26  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch6.adb (Build_Procedure_Form): Use _result as the
	name of the extra parameter, cleaner than a random temp name.
	* gnat1drv.adb (Gnat1drv): Code clean up.

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

	* gcc-interface/utils2.c (build_binary_op): Tweak formatting.
	(build_unary_op): Likewise.

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
	* doc/share/ada_pygments.py, doc/gnat_ugn/gnat_project_manager.rst,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_ugn/gnat_and_program_execution.rst,
	doc/gnat_rm/implementation_defined_attributes.rst,
	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
	doc/gnat_rm/representation_clauses_and_pragmas.rst,
	doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_rm/about_this_guide.rst,
	doc/gnat_rm/implementation_of_ada_2012_features.rst,
	doc/gnat_rm/implementation_of_specific_ada_features.rst,
	doc/gnat_rm/implementation_defined_aspects.rst,
	doc/gnat_rm/implementation_advice.rst: Update documentation.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.ads, contracts.adb: New unit.
	* exp_ch6.adb Add with and use clauses for Contracts.
	(Expand_Subprogram_Contract): Moved to Contracts.
	* exp_ch6.ads (Expand_Subprogram_Contract): Moved to Contracts.
	* sem_ch3.adb Add with and use clauses for Contracts.
	(Analyze_Object_Contract): Moved to Contracts.
	(Analyze_Declarations): Remove local variable Pack_Decl. Do not
	capture global references in contracts. Check the hidden states
	of a package body.
	* sem_ch6.adb Add with and use clauses in Contracts.
	(Analyze_Generic_Subprogram_Body): Do not capture global
	references in contracts.
	(Analyze_Subprogram_Body_Contract):
	Moved to Contracts.
	(Analyze_Subprogram_Body_Helper): Freeze the
	contract of the nearest enclosing package body. Always analyze
	the subprogram body contract. Do not expand the subprogram
	body contract.
	(Analyze_Subprogram_Contract): Moved to Contracts.
	* sem_ch6.ads (Analyze_Subprogram_Body_Contract): Moved to Contracts.
	(Analyze_Subprogram_Contract): Moved to Contracts.
	* sem_ch7.adb Add with and use clauses for Contracts.
	(Analyze_Package_Body_Contract): Moved to Contracts.
	(Analyze_Package_Body_Helper): Freeze the contract of the
	nearest enclosing package body.
	(Analyze_Package_Contract): Moved to Contracts.
	* sem_ch7.ads (Analyze_Package_Body_Contract): Moved to Contracts.
	(Analyze_Package_Contract): Moved to Contracts.
	* sem_ch10.adb Add with and use clauses for Contracts.
	(Analyze_Compilation_Unit): Do not capture global references
	in contracts.
	(Analyze_Subprogram_Body_Stub_Contract): Moved to Contracts.
	* sem_ch10.ads (Analyze_Subprogram_Body_Stub_Contract): Moved
	to Contracts.
	* sem_ch12.adb Add with and use clauses for Contracts.
	(Analyze_Subprogram_Instantiation): Update the call to
	Instantiate_Subprogram_Contract.
	(Instantiate_Package_Body):
	Do not copy the entity of the spec when creating an entity
	for the body. Construct a brand new defining identifier for
	the body and inherit the Comes_From_Source flag from the spec.
	(Instantiate_Subprogram_Body): Remove Anon_Id to Act_Decl_Id
	and update all occurrences. Construct a brand new defining
	identifier for the body and inherit the Comes_From_Source
	flag from the spec.
	(Instantiate_Subprogram_Contract): Moved
	to Contracts.
	(Save_Global_References_In_Aspects): Moved to
	the spec of Sem_Ch12.
	(Save_Global_References_In_Contract):
	Moved to Contracts.
	* sem_ch12.ads (Save_Global_References_In_Aspects): Moved from
	the body of Sem_Ch12.
	(Save_Global_References_In_Contract):
	Moved to Contracts.
	* sem_prag.adb Add with and use clauses for Contracts.
	(Add_Item): Removed. All references to this routine have been
	replaced with calls to Append_New_Elmt.
	(Analyze_Constituent):
	Add special diagnostics for errors caused by freezing of
	contracts.
	(Analyze_Refined_State_In_Decl_Part): Add formal
	parameter Freeze_Id. Add new global variable Freeze_Posted.
	(Collect_Body_States): Removed.
	(Report_Unused_States): Removed.
	* sem_prag.ads (Analyze_Defined_State_In_Decl_Part): Add formal
	parameter Freeze_Id and update comment on usage.
	* sem_util.adb Remove with and use clauses for
	Sem_Ch12.
	(Add_Contract_Item): Moved to Contracts.
	(Check_Unused_Body_States): New routine.
	(Collect_Body_States):
	New routine.
	(Create_Generic_Contract): Moved to Contracts.
	(Inherit_Subprogram_Contract): Moved to Contracts.
	(Report_Unused_Body_States): New routine.
	* sem_util.ads (Add_Contract_Item): Moved to Contracts.
	(Check_Unused_Body_States): New routine.
	(Collect_Body_States): New routine.
	(Create_Generic_Contract): Moved to Contracts.
	(Inherit_Subprogram_Contract): Moved to Contracts.
	(Report_Unused_Body_States): New routine.
	* sinfo.adb (Is_Expanded_Contract): New routine.
	(Set_Is_Expanded_Contract): New routine.
	* sinfo.ads New attribute Is_Expanded_Contract along with
	placement in nodes.
	(Is_Expanded_Contract): New routine along
	with pragma Inline.
	(Set_Is_Expanded_Contract): New routine
	along with pragma Inline.
	* gcc-interface/Make-lang.in: Add entry for contracts.o

2015-10-23  Bob Duff  <duff@adacore.com>

	* bindgen.adb, init.c, opt.ads, switch-b.adb: Implement new -Ea and
	-Es switches.
	* switch-b.ads: Minor comment fix.
	* bindusg.adb: Document new -Ea and -Es switches.
	* s-exctra.ads: Use -Es instead of -E.

2015-10-23  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/utils2.c (build_call_alloc_dealloc): Check no implicit
	task and protected object restrictions.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb, exp_ch6.adb: Minor reformatting.

2015-10-23  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb: Minor reformatting.

2015-10-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Check_Formal_Packages): A formal package whose
	actual part is (others => <>) os identical to a formal package
	with an actual part written as (<>).

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* a-reatim.adb ("/"): For Time_Span division convert the operands
	to integers and then use integer division, which conforms to
	the rounding required by Ada RM.

2015-10-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Missing_Return): Do not report a missing
	return statement on a function body constructed to complete a
	package body for a premature instantiation.

2015-10-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Build_Procedure_Body_Form): Replace body of
	original function with that of generated procedure, to simplify
	processing and avoid scoping problems with local declarations.
	(Rewrite_Function_Call_For_C): Handle properly the case of a
	parameterless function.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-exextr.adb, sem_ch6.adb, sem_ch13.adb: Minor reformatting.

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* s-taskin.ads: Minor code clean up.
	(Ada_Task_Control_Block): Move fixed size field before variable sized
	ones.
	* einfo.ads: Minor editing.

2015-10-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Aggregate_Accessibility): Apply rule in RM
	6.5 (8.3) to verify that access discriminants in an aggregate
	in a return statement have the proper accessibility, i.e. do
	not lead to dangling references.

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

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Add missing
	test on Address_Clause_Overlay_Warnings to the "constant overlays
	variable" warning. For the reverse case, also issue a warning if
	the modification is potentially made through the initialization
	of the variable.

2015-10-23  Jose Ruiz  <ruiz@adacore.com>

	* a-exetim-posix.adb (Clock): Use the pthread_getcpuclockid
	function to have access to CPU clocks for tasks other than the
	calling task.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* debug.adb: Switch -gnatd.5 is no longer in use, remove the
	associated documentation.
	* exp_dbug.adb (Get_External_Name): Do not add a special prefix
	for ignored Ghost entities or when switch -gnatd.5 is enabled.
	* exp_dbug.ads Remove the documentation concerning the encoding
	of ignored Ghost entities.

2015-10-23  Bob Duff  <duff@adacore.com>

	* a-exextr.adb (Notify_Exception): For Unhandled_Raise_In_Main,
	mimic the output from Ada.Exceptions.Last_Chance_Handler; don't
	print "Exception raised".
	* s-stalib.ads, s-exctra.ads, s-exctra.adb: Add
	Unhandled_Raise_In_Main to types Exception_Trace_Kind/Trace_Kind.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb, freeze.adb, sem_attr.adb, exp_aggr.adb,
	gnatname.adb: Minor reformatting.

2015-10-23  Steve Baird  <baird@adacore.com>

	* a-cbdlli.ads, a-cbhama.ads, a-cbhase.ads, a-cbmutr.ads,
	a-cborma.ads, a-cborse.ads, a-cbprqu.ads, a-cbsyqu.ads,
	a-cdlili.ads, a-cfdlli.ads, a-cfhama.ads, a-cfhase.ads,
	a-cfinve.ads, a-cforma.ads, a-cforse.ads, a-cidlli.ads,
	a-cihama.ads, a-cihase.ads, a-cimutr.ads, a-ciorma.ads,
	a-ciormu.ads, a-ciorse.ads, a-coboho.ads, a-cobove.ads,
	a-cofove.ads, a-cohama.ads, a-cohase.ads, a-coinho.ads,
	a-coinho-shared.ads, a-coinve.ads, a-comutr.ads, a-conhel.ads,
	a-convec.ads, a-coorma.ads, a-coormu.ads, a-coorse.ads,
	a-cuprqu.ads, a-cusyqu.ads, a-rbtgbo.ads: Add spec Annotate
	pragmas.
	* a-cbdlli.adb, a-cbhama.adb, a-cbhase.adb, a-cbmutr.adb,
	a-cborma.adb, a-cborse.adb, a-cbprqu.adb, a-cbsyqu.adb,
	a-cdlili.adb, a-cfdlli.adb, a-cfhama.adb, a-cfhase.adb,
	a-cfinve.adb, a-cforma.adb, a-cforse.adb, a-cidlli.adb,
	a-cihama.adb, a-cihase.adb, a-cimutr.adb, a-ciorma.adb,
	a-ciormu.adb, a-ciorse.adb, a-coboho.adb, a-cobove.adb,
	a-cofove.adb, a-cohama.adb, a-cohase.adb, a-coinho.adb,
	a-coinho-shared.adb, a-coinve.adb, a-comutr.adb, a-conhel.adb,
	a-convec.adb, a-coorma.adb, a-coormu.adb, a-coorse.adb,
	a-cuprqu.adb, a-cusyqu.adb, a-rbtgbo.adb: Remove body Annotate
	pragmas.

2015-10-23  Vincent Celier  <celier@adacore.com>

	* gnatname.adb: When gnatname is invoked with a project file,
	specified with switch -P, if gprname is available, gnatname will
	invoke gprname, with the target if it is a cross gnatname.

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb: Fix typo.
	* exp_ch6.adb: Update comment.
	* exp_attr.adb (Expand_Min_Max_Attribute): Simplify expansion.
	* exp_aggr.adb (Convert_To_Positional): Only convert to
	positional when generating C in case of an object declaration.
	(In_Object_Declaration): New.
	(Late_Expansion): Adapt to trees generated by Modify_Tree_For_C.
	* sinfo.ads: Update documentation.

2015-10-23  Joel Brobecker  <brobecker@adacore.com brobecker>

	* sigtramp.h (struct sigcontext, struct ucontext): Remove declarations,
	and replace them by include of corresponding header file.

2015-10-23  Bob Duff  <duff@adacore.com>

	* a-convec.adb (Copy): Make sure C is initialized
	on all paths, including when Checks is False.

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

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Remove
	error as unreachable.

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Adjust.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_dbug.ads, exp_dbug.adb (Get_External_Name): The special prefix for
	ignored Ghost entities is now ___ghost_.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* ghost.adb (Is_Subject_To_Ghost): Check the
	original node when searching for pragma Ghost to catch cases
	where a source construct has been rewritten into something else.

2015-10-23  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads, einfo.adb (Rewritten_For_C): New flag on functions
	that return a constrained array type.  When generating C these
	functions are rewritten as procedures with an out parameter,
	and calls to such functions are rewritten accordingly.
	* exp_ch6.adb (Expand_N_Subprogram_Declaration): When
	Modify_Tree_For_C is set and the function returns a constrained
	array type, generate a procedure declaration with an additional
	out parameter. Mark original function as Rewritten_For_C.
	The new declaration is inserted in tree immediately after
	current declaration.
	(Expand_Subprogram_Body): If entity is marked Rewritten_For_C,
	generate body of corresponding procedure using declarations
	and statements for function body. Replace return statements
	with assignments to the out parameter, followed by a simple
	return statement.
	(Rewrite_Function_Call_For_C): New procedure to replace a function
	call that returns an array by a procedure call.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Denotes_Iterator): New routine.
	(Is_Iterator): Code cleanup. Factor out the detection of a
	predefined iterator.  As a result this fixes a missing case
	where a tagged type implements interface Reversible_Iterator.

2015-10-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Eval_Attribute): Constant-fold 'Enabled if
	not within a generic unit, even if expander is not active, so
	that instances of container packages remain preelaborable in
	-gnatc mode.

2015-10-23  Tristan Gingold  <gingold@adacore.com>

	* init.c (__gnat_sigtramp): New assembly function for arm64-darwin.
	(__gnat_error_handler): Use trampoline for arm64.

2015-10-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): if the type of the
	object is a class-wide limited interface type, the expression
	is not restricted to the forms specified for limited types.

2015-10-23  Vincent Celier  <celier@adacore.com>

	* gnatname.adb: Code clean up.
	* s-taasde.ads: Fix comment.

2015-10-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Iterator, Is_Reversible_iterator): Use
	root type to determine whether the type is a descendant of the
	corresponding interface type, so take into account multiple
	levels of subtypes and derivations.

2015-10-23  Olivier Hainque  <hainque@adacore.com>

	* tracebak.c: Refine selection of GCC/GENERIC_UNWINDER for
	tracebacks on x86 & x86_64.
	(x86 & x86_64): If !SJLJ, always pick the
	GCC_UNWINDER for x86_64 (not only on linux).
	* sem_util.ads: Minor fix in comment.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Pragma Volatile_Function should
	not apply to a function instantiation.
	* sem_util.adb (Has_Effectively_Volatile_Profile): New routine.
	(Is_Volatile_Function): An instance of Ada.Unchecked_Conversion
	is a volatile function when its profile contains an effectively
	volatile type.
	* sem_util.ads (Has_Effectively_Volatile_Profile): New routine.

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* exp_unst.adb (Unnest_Subprogram): Complete previous
	change and update comments.

2015-10-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Check_Function_With_Address_Parameter):
	A subprogram that has an Address parameter and is declared in a Pure
	package is not considered Pure, because the parameter may be used as a
	pointer and the referenced data may change even if the address value
	itself does not.
	* freeze.adb (Freeze_Subprogram): use it.
	* exp_ch6.adb (Expand_N_Subprogram_Body): Use it.

2015-10-23  Olivier Hainque  <hainque@adacore.com>

	* tracebak.c: Fallback to generic unwinder for gcc-sjlj on x86 &
	x86_64 linux
	* tracebak.c: Rework x86 & x86_64 sections to resort to the
	generic unwinder if __USING_SJLJ_EXCEPTIONS__.

2015-10-23  Javier Miranda  <miranda@adacore.com>

	* sem_util.adb (Check_Function_Writable_Actuals): For function
	calls restrict the check to elementary types, as requested by
	RM 6.4.1(6.15/3)

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* exp_unst.adb (Unnest_Subprogram): Suppress initialization on
	Decl_ARECnT since we are taking care of all initializations in
	the generated code.

2015-10-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Extension_Or_Record_Aggregate):
	Handle properly a box-initialized aggregate component.

2015-10-23  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Reject Volatile_Function not placed
	on a function.

2015-10-23  Yannick Moy  <moy@adacore.com>

	* a-extiin.ads, a-reatim.ads, a-interr.ads, a-exetim-mingw.ads,
	a-exetim-default.ads, a-exetim.ads, a-taside.ads: Add "Global => null"
	contract on subprograms.
	* lib-xref-spark_specific.adb: collect scopes for stubs of
	protected objects

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Enable
	Back_Annotate_Rep_Info to get size information from gigi.
	(Gnat1drv): Code clean ups.
	* frontend.adb (Frontend): Ditto.

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Adjust settings.
	* sem.adb (Semantics): Remove special case.

2015-10-23  Gary Dismukes  <dismukes@adacore.com>

	* bindgen.adb, restrict.adb: Minor spelling/grammar fixes.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Entity_Name): Code cleanup. Check for possible
	elaboration issues in SPARK when the name denotes a source variable.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Process_Transient_Objects): Reimplement to properly
	handle restriction No_Exception_Propagation.
	* exp_ch11.adb (Expand_At_End_Handler): Update the parameter
	profile and all references to Block.
	* exp_ch11.ads (Expand_At_End_Handler): Update the parameter
	profile and comment on usage.
	* exp_intr.adb (Expand_Unc_Deallocation): Reimplement to properly
	handle restriction No_Exception_Propagation.
	* gnat1drv.adb, restrict.adb: Update comment.

2015-10-23  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Do not call
	SS_Release for a block statement enclosing the return statement in the
	case where a build-in-place function return is returning
	the result on the secondary stack. This is accomplished by
	setting the Sec_Stack_Needed_For_Return flag on such blocks.
	It was already being set for the function itself, and it was
	already set correctly for blocks in the non-build-in-place case
	(in Expand_Simple_Function_Return).
	(Set_Enclosing_Sec_Stack_Return): New procedure to perform
	the Set_Sec_Stack_Needed_For_Return calls. Called in the
	build-in-place and non-build-in-place cases.
	(Expand_Simple_Function_Return): Call
	Set_Enclosing_Sec_Stack_Return instead of performing the loop
	in line.

2015-10-23  Bob Duff  <duff@adacore.com>

	* scng.adb (Char_Literal_Case): If an apostrophe
	follows a reserved word, treat it as a lone apostrophe, rather
	than the start of a character literal. This was already done for
	"all", but it needs to be done also for (e.g.) "Delta".

2015-10-23  Bob Duff  <duff@adacore.com>

	* exp_strm.adb (Build_Record_Or_Elementary_Input_Function): Use
	Underlying_Type for B_Typ, in case the Typ is a subtype of a type with
	unknown discriminants.
	* g-awk.ads: Minor style fix in comment

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* debug.adb: Document the use of debug switch -gnatd.5.
	* einfo.adb: Code reformatting.	(Is_Ghost_Entity): Moved from ghost.adb.
	* einfo.ads New synthesized attribute Is_Ghost_Enity along
	with usage in nodes and pragma Inline.
	(Is_Ghost_Entity: Moved from ghost.ads.
	* exp_ch3.adb Code reformatting.
	(Expand_Freeze_Array_Type): Capture, set and restore the Ghost mode.
	(Expand_Freeze_Class_Wide_Type): Capture, set and restore the
	Ghost mode.
	(Expand_Freeze_Enumeration_Type): Capture, set and
	restore the Ghost mode.
	(Expand_Freeze_Record_Type): Capture, set and restore the Ghost mode.
	* exp_ch6.adb (Expand_Subprogram_Contract): Do not expand the
	contract of an ignored Ghost subprogram.
	* exp_ch13.adb Add with and use clauses for Ghost.
	(Expand_N_Freeze_Entity): Capture, set and restore the Ghost mode.
	* exp_dbug.adb (Get_External_Name): Code reformatting. Add a
	special prefix for ignored Ghost entities or when requested by
	-gnatd.5 for any Ghost entity.
	* exp_dbug.ads Document the use of prefix "_ghost_" for ignored
	Ghost entities.
	* exp_prag.adb (Expand_Pragma_Check): Capture, set and restore the
	Ghost mode.
	(Expand_Pragma_Loop_Variant): Use In_Assertion_Expr
	to signal the original context.
	* ghost.adb (Check_Ghost_Overriding): Code cleanup.
	(Is_Ghost_Entity): Moved to einfo.adb.	(Is_OK_Declaration):
	Move the assertion expression check to the outer level.
	(Is_OK_Ghost_Context): An assertion expression is a valid Ghost
	context.
	* ghost.ads (Is_Ghost_Entity): Moved to einfo.ads.
	* sem_ch3.adb (Analyze_Object_Contract): A source Ghost object
	cannot be imported or exported. Mark internally generated objects
	as Ghost when applicable.
	(Make_Class_Wide_Type): Inherit the ghostness of the root tagged type.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Mark
	a stand alone subprogram body as Ghost when applicable.
	(Analyze_Subprogram_Declaration): Mark internally generated
	subprograms as Ghost when applicable.
	* sem_ch7.adb: Code cleanup.
	* sem_ch13.adb (Add_Invariants): Add various formal
	parameters to break dependency on global variables.
	(Build_Invariant_Procedure): Code cleanup. Capture, set and
	restore the Ghost mode.
	* sem_res.adb (Resolve_Actuals): The actual parameter of a source
	Ghost subprogram whose formal is of mode IN OUT or OUT must be
	a Ghost variable.

2015-10-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch8.adb Code cleanup.
	(Find_Expanded_Name): Replace
	the call to In_Pragmas_Depends_Or_Global with a call to
	In_Abstract_View_Pragma.
	(In_Abstract_View_Pragma): New routine.
	(In_Pragmas_Depends_Or_Global): Removed.
	* sem_prag.adb (Analyze_Part_Of): Catch a case where indicator
	Part_Of denotes the abstract view of a variable.

2015-10-23  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.ads (Unique_Defining_Entity): Document the result
	for tasks and entries.
	* sem_util.adb (Unique_Entity): Return declaration entity for task and
	entry bodies

2015-10-22  Mikhail Maltsev  <maltsevm@gmail.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Use gcc_checking_assert.
	* gcc-interface/trans.c (assoc_to_constructor): Use flag_checking.
	* gcc-interface/utils.c (relate_alias_sets): Likewise.
	* gcc-interface/utils2.c (build_binary_op, build_unary_op): Use
	gcc_checking_assert

2015-10-21  Martin Sebor  <msebor@redhat.com>

	PR driver/68043
	* gcc-interface/lang.opt: End each sentence that describes
	an option with a period.

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

	* fmap.adb, a-cihama.adb, sem_ch5.adb, make.adb, inline.adb,
	a-cfhase.adb, scng.adb, sem_ch12.adb, freeze.adb, tempdir.adb,
	sem_util.adb, sem_res.adb, s-regexp.adb, a-clrefi.adb: Fix coding
	style for marking start of processing of subprograms.

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

	* lib-xref-spark_specific.adb (Add_SPARK_File): Start traversal
	by requesting info from stubs.	(Traverse_All_Compilation_Units):
	Remove unused procedure.
	(Traverse_Declarations_Or_Statements): Handle protected and task units.
	* lib-xref.ads (Traverse_All_Compilation_Units): Remove unused
	procedure.
	* restrict.adb (Check_Restriction): Do not ignore
	restrictions in GNATprove_Mode.

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

	* s-valllu.adb, sem_ch3.adb, layout.adb, a-crbtgo.adb, exp_ch9.adb,
	make.adb, g-diopit.adb, s-valuns.adb, sem_ch9.adb, sem_ch10.adb,
	sem_ch12.adb, a-tifiio.adb, g-dynhta.adb, uintp.adb,
	sem_util.adb, sem_res.adb, s-htable.adb, exp_tss.adb, s-soflin.ads,
	exp_ch6.adb, sem_ch6.adb, a-rbtgbo.adb, par-ch12.adb, sem_ch8.adb,
	sem_eval.adb, mdll.adb, par-ch5.adb, s-poosiz.adb, sem_ch4.adb,
	a-ngelfu.adb, s-taspri-solaris.ads, a-cforse.adb: Fix typos.

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

	* sem_aggr.adb, mlib-prj.adb, prep.adb, eval_fat.adb, rtsfind.adb,
	freeze.adb, sem_util.adb, sem_res.adb, sem_attr.adb, gnatlink.adb,
	par-ch6.adb, exp_tss.adb, exp_ch4.adb, s-shasto.adb, exp_fixd.adb,
	sem_ch6.adb, clean.adb, sem_ch8.adb, sem_eval.adb, sem_ch9.adb: Fix
	typos.

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

	* sem_ch11.adb (Analyze_Handled_Statements): If the scope is a
	postcondition subprogram, do not check for useless assignments
	because there are no source references in such a body, and the
	call will lose deferred references from the enclosing subprogram.

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

	* sem_ch13.adb: nalyze_Attribute_Definition_Clause, case
	'Address):  If either object is controlled the overlay is
	erroneous, but analysis must be completed so that back-end sees
	address clause and completes code generation.  Improve text
	of warning.

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

	* exp_ch4.adb: Minor reformatting.

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

	* s-mudido-affinity.adb (Create): Correct subranges of slices of CPU
	arrays.

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

	* sinfo.ads, g-pehage.adb, par-ch12.adb,
	layout.adb, exp_util.adb, sem_aux.adb, make.adb, checks.adb,
	sem_ch12.adb, sem_res.adb, sem_attr.adb, a-ngelfu.adb, sem_ch4.adb,
	switch-b.adb, sem_ch6.adb, prj-dect.adb, gnatxref.adb, sem_ch13.adb,
	lib-xref.adb: Fix typos.

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

	* exp_ch4.adb (Expand_Array_Comparison): Use
	generic code if runtime routine is not available.

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

	* a-sytaco.ads (Ada.Synchronous_Task_Control): Package
	now withs System.Task_Identification. The visible part
	of the spec has SPARK_Mode. The private part has pragma
	SPARK_Mode (Off).
	(Set_True): Added Global and Depends aspects
	(Set_False): Added Global and Depends aspects (Current_State):
	Added Volatile_Function aspect and added external state
	Ada.Task_Identification.Tasking_State as a Global input.
	(Suspend_Until_True): Added Global and Depends aspects
	* a-sytaco.adb (Ada.Synchronous_Task_Control):
	Package body has SPARK_Mode => Off
	* a-extiin.ads (Ada.Execution_Time.Interrupts):
	Package now withs Ada.Real_Time and has SPARK_Mode.
	(Clock): Added Volatile_Function aspect and added external state
	Ada.Real_Time.Clock_Time as a Global input.
	* a-reatim.ads (Ada.Real_Time): The visible part of the spec has
	SPARK_Mode. The private part has pragma SPARK_Mode (Off). The package
	declares external state Clock_Time with properties Async_Readers and
	Async_Writers.
	(Clock): Added Volatile_Function aspect and
	added external state Clock_Time as a Global input.
	* a-reatim.adb (Ada.Real_Time): Package body has SPARK_Mode => Off
	* a-exetim-default.ads, a-exetim-mingw.ads (Ada.Execution_Time):
	The visible part of the spec has SPARK_Mode. The private part
	has pragma SPARK_Mode (Off).
	(Clock): Added Volatile_Function
	aspect and added external state Clock_Time as a Global input.
	(Clock_For_Interrupts): Added Volatile_Function aspect and added
	external state Ada.Real_Time.Clock_Time as a Global input.
	* a-exetim-mingw.adb (Ada.Execution_Time): Package body has
	SPARK_Mode => Off
	* a-interr.ads (Ada.Interrupts): Package now
	withs Ada.Task_Identification (Is_Reserved): Added
	SPARK_Mode, Volatile_Function and external state
	Ada.Task_Identification.Tasking_State as a Global input.
	(Is_Attached): Added SPARK_Mode, Volatile_Function and external
	state Ada.Task_Identification.Tasking_State as a Global input.
	(Attach_Handler): Added SPARK_Mode => Off (Exchange_Handler):
	Added SPARK_Mode => Off (Detach_Handler): Added SPARK_Mode
	and external state Ada.Task_Identification.Tasking_State as a
	Global In_Out.	(Reference): Added SPARK_Mode => Off
	* a-disedf.ads (Get_Deadline): Added SPARK_Mode, Volatile_Function
	and external state Ada.Task_Identification.Tasking_State as a
	Global input.
	* a-taside.ads (Ada.Task_Identification): The visible part of
	the spec has SPARK_Mode.  The private part has pragma SPARK_Mode
	(Off). The package declares external state Tasking_State with
	properties Async_Readers and Async_Writers.
	(Current_Task): Added
	Volatile_Function aspect and added external state Tasking_State
	as a Global input.
	(Environment_Task): Added SPARK_Mode => Off
	(Is_Terminated): Added Volatile_Function aspect and added external
	state Tasking_State as a Global input.	(Is_Callable): Added
	Volatile_Function aspect and added external state Tasking_State as
	a Global input.
	(Activation_Is_Complete): Added Volatile_Function
	aspect and added external state Tasking_State as a Global input.
	* a-taside.adb (Ada.Task_Identification): Package body has
	SPARK_Mode => Off.

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

	* atree.ads, atree.adb: Enable List38 and List39 on entities.
	* einfo.ads, einfo.adb (Class_Wide_Preconds) new attribute defined
	on subprograms. Holds the list of class-wide precondition
	functions inherited from ancestors. Each such function is an
	instantiation of the generic function generated from an explicit
	aspect specification for a class-wide precondition. A type is
	an ancestor of itself, and therefore a root type has such an
	instance on its own list.
	(Class_Wide_Postconds): ditto for postconditions.

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

	* prj-attr.adb: Add packages Prove and GnatTest.

2015-10-20  Steve Baird  <baird@adacore.com>

	* a-conhel.adb: Add an Annotate pragma to help suppress CodePeer's
	analysis of internals of container generic instances. This pragma
	has no other effect.
	* a-conhel.adb (Generic_Implementation) Add "pragma Annotate
	(CodePeer, Skip_Analysis);".

2015-10-20  Steve Baird  <baird@adacore.com>

	* pprint.adb: Code clean up.

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

	* a-cfinve.ads, a-coboho.ads: Improve comments.
	* a-coboho.adb (Size_In_Storage_Elements): Improve error message
	in case of "Size is too big" exception.

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

	* a-contai.ads: Remove check names (moved to snames.ads-tmpl).
	* snames.ads-tmpl: Add check names that were previously in
	a-contai.ads, so they are now visible in configuration files.
	* types.ads: Add checks corresponding to snames.ads-tmpl.

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

	* sem_ch5.adb (Analyze_Loop_Statement): Attach generated loop
	identifier to the tree, because it may be the root of a tree
	traversal in Pop_Scope when freeze actions are pending.

2015-10-20  Steve Baird  <baird@adacore.com>

	* pprint.ads (Expression_Image) Add new generic formal flag
	Hide_Parameter_Blocks.
	* pprint.adb (Expression_Image) If new flag is set, then display
	dereferences of parameter block components accordingly.

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

	* sem_prag.adb: Code clean up.

2015-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Code cleanup.
	(Make_Build_In_Place_Call_In_Object_Declaration): Update the
	parameter profile.  Code cleanup. Request debug info for the
	object renaming declaration.
	(Move_Activation_Chain): Add new formal parameter and update the
	comment on usage.
	* exp_ch6.ads (Make_Build_In_Place_Call_In_Object_Declaration):
	Update the parameter profile and comment on usage.
	* sem_util.ads, sem_util.adb (Remove_Overloaded_Entity): New routine,
	currently unused.

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

	* sem_ch13.adb (Analyze_One_Aspect, case
	Aspect_Disable_Controlled): If expander is not active, pre-analyze
	expression anyway for ASIS and other tools use.
	* sem_prag.adb (Build_Generic_Class_Condition): Handle properly
	anonymous access types in parameter specifications. Make the
	formal type a formal derived type of the controlling type of
	the subprogram.

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

	* s-rident.ads: No_Task_At_Interrupt_Priority: New restriction.
	* sem_prag.adb (Analyze_Pragma): Check the restriction.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause):
	Check the restriction (for aspects).

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

	* sem_prag.adb: Minor reformatting.

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

	* sem_util.adb (Is_Protected_Self_Reference): Remove reference to
	UET_Address in comment.
	* sem_attr.adb (Check_Unit_Name): Adjust comment.
	(Analyze_Attribute): Remove handling of UET_Address.
	* sem_attr.ads (Attribute_Impl_Def): Remove Attribute_UET_Address.
	* snames.ads-tmpl Remove Name_UET_Address, Attribute_UET_Address.
	* exp_attr.adb (Expand_N_Attribute_Reference): Remove
	Attribute_UET_Address.

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

	* a-cbdlli.adb, a-cdlili.adb, a-chtgop.adb, a-cidlli.adb,
	* a-cobove.adb, a-coinve.adb, a-convec.adb, a-crbtgo.adb ("="): Avoid
	modifying the tampering counts unnecessarily.
	(Adjust): Zero tampering counts unconditionally.

2015-10-20  Jerome Lambourg  <lambourg@adacore.com>

	* init.c: Fix build issue on arm-vx6 when building the RTP
	run-time.

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

	* sem_ch3.adb (Analyze_Object_Declaration): If the expression
	is an aggregate and compilation is in -gnatI mode (ignore rep
	clauses) do not delay resolution of aggregate, to prevent freeze
	actions out of order in the backend.

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

	* sem_prag.ads, sem_prag.adb (Build_Generic_Class_Condition):
	New procedure to construct a generic function for a class-wide
	precondition, to implement AI12-0113  concerning the new semantics
	of class-wide preconditions for overriding uperations.

2015-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Find_Actual): The routine is
	now capable of operating on entry calls.

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

	* sem_res.adb: Remove redundant check.

2015-10-20  Jerome Lambourg  <lambourg@adacore.com>

	* init.c (__gnat_vxsim_error_handler): Completely disable on
	VxWorks-7 as the VSBs used to build gcc do not support vxsim
	architecture.

2015-10-20  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads, a-cfinve.ads, a-cofove.ads (Generic_Sorting): Explicit
	SPARK_Mode.
	* a-cfhase.ads, a-cforse.ads (Generic_Keys): Explicit SPARK_Mode.

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

	* exp_ch9.adb (Expand_N_Protected_Type_Declaration):
	Check for No_Implicit_Protected_Object_Allocations.
	* fe.h (Check_No_Implicit_Task_Alloc,
	Check_No_Implicit_Protected_Alloc): Define and declare.
	* restrict.ads, restrict.adb (Check_No_Implicit_Task_Alloc,
	Check_No_Implicit_Protected_Alloc): New procedures to check the
	restrictions.
	* s-rident.ads (No_Implicit_Task_Allocations)
	(No_Implicit_Protected_Object_Allocations): Declare new
	restrictions.

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

	* sem_res.adb (Resolve_Selected_Component): Only set flag
	when component is defined in a variant part.
	* sem_util.adb,
	* sem_util.ads (Is_Declared_Within_Variant): Promote local query
	as publicy visible one for use in Resolve_Selected_Component.

2015-10-20  Philippe Gil  <gil@adacore.com>

	* g-debpoo.adb: allow instrumented System.Memory to use Debug_Pool
	from foreign threads.
	* g-debpoo.adb (Print_Traceback): NEW print traceback if available
	added to support Stack_Trace_Depth = 0.
	(Print_Address): NEW print System.Address without no secondary
	stack use (Address_Image uses secondary stack)

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

	* exp_ch9.adb (Expand_Entry_Barrier): Default initialize local variable
	Func.

2015-10-20  Jerome Lambourg  <lambourg@adacore.com>

	* init.c (__gnat_error_handler for vxworks): Force
	SPE bit in the MSR when handling signals

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

	* einfo.ads, sem_ch12.adb, sem_ch6.adb, table.ads, s-stposu.ads,
	g-table.ads, g-dyntab.ads, makeutl.ads, a-crdlli.ads: Fix typos.

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

	* sem_ch5.adb (Analyze_Loop_Statement): Element iterators
	over multidimensional arrays create additional loops during
	expansion. For such loops we create a label as a scope
	name. Attach this label  properly to tree, for use in GNATProve
	over such element iterators.
	* sem_attr.adb (Analyze_Attribute, case Loop_Entry): The loop to
	which the attribute applies comes from source, not from expansion
	of an element iterator or a quantified expression.
	* exp_attr.adb (Expand_N_Attribute_Reference): Ditto.

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

	* exp_ch6.adb (Expand_Call): Check for a call to a function
	declared in a Dimension I/O package, to handle the new Image
	function.

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

	* inline.ads: Minor comment fixes.

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

	* a-comutr.ads (Tree_Node_Access): Add No_Strict_Aliasing, because
	we're doing unchecked conversions with this pointer.

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

	* exp_ch9.adb (Next_Protected_Operation): An expression function
	used as a completion can be the next protected operation in a
	protected body.

2015-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Is_OK_Volatile_Context): Add a guard when checking a
	possible call to an instance of Ada.Unchecked_Conversion to avoid
	testing protected function calls. Allow references to protected objects
	in prefixed protected calls.
	(Is_Protected_Operation_Call): New routine.

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

	* exp_ch5.adb, exp_ch5.ads (Expand_Iterator_Loop_Over_Array): Make
	query public. Remove code handling with iterator loop over array
	of the 'in' form, which is not allowed in Ada.	* exp_spark.adb
	(Expand_SPARK): Expand loop statements that take the form of an
	iterator over an array.
	* sem_ch5.adb (Analyze_Loop_Statement): Do not analyze loop statements
	that take the form of an iterator over an array, so that the rewritten
	form gets analyzed instead.
	* sem_util.adb, sem_util.ads (Is_Iterator_Over_Array): New query
	to recognize iterators over arrays.

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

	* s-excdeb.ads, s-excdeb.adb (Debug_Raise_Exception): Add
	parameter Message.
	* a-except.adb (Raise_Current_Excep): Update call to
	Debug_Raise_Exception.
	* a-except-2005.adb (Complete_Occurrence): Ditto.
	* sem_ch12.adb: Whitespace fix.

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

	* sem_warn.adb (Is_OK_Fully_Initialized): Consider types with DIC as
	fully default initialized.
	* sem_ch6.adb: minor style fix in comment

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

	* s-diflio.ads, s-diflio.adb (Image): New function for dimensioned
	quantities, to produce a string that includes the dimension
	synbol for the quantity, or the vector of dimensions in standard
	notation.
	* sem_dim.adb (Expand_Put_Call_With_Symbol): Process new function
	Image, to include dimension information in the generated string,
	identical to the string produced by the Put procedure on a string
	for a dimensioned quantity.

2015-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Process_Declarations): A loop
	parameter does not require finalization actions.

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

	* exp_ch6.adb (Expand_Simple_Function_Return): Do not create an
	actual subtype for a mutable record return type if the expression
	is itself a function call.

2015-10-20  Dmitriy Anisimkov  <anisimko@adacore.com>

	* s-atocou.adb, s-atocou-builtin.adb: Fix implementation description
	related to new type support.

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

	* sem_res.adb (Resolve_Explicit_Dererence): Call Analyze_Dimension
	to propagate dimension information from prefix.
	* sem_dim.adb (Analyze_Dimension): Handle Explicit_Dereference.
	* inline.ads: minor whitespace fix in comment
	* sem_ch6.adb: minor gramar fix in comment

2015-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Analyze_Object_Contract):
	A protected type or a protected object is allowed to have a
	discriminated part.

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

	* sem_util.adb (Requires_Transient_Scope):
	Return true for mutable records if the maximum size is very large.

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

	* a-except-2005.adb (To_Stderr): Import Put_Char_Stderr with
	the same signature as in System.IO.Put.

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

	* a-cobove.adb (Set_Length): Restore previous logic, but with "Checks
	and then" on the check.

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

	* par-ch3.adb (P_Known_Discriminant_Part_Opt): Handle properly
	a misplaced "constant" keyword in a discriminant specification.

2015-10-20  Steve Baird  <baird@adacore.com>

	* einfo.ads (Is_Param_Block_Component_Type): New function decl
	for querying the flag.
	(Set_Is_Param_Block_Component_Type): New procedure decl for setting
	the flag.
	* einfo.adb (Is_Param_Block_Component_Type): New function body.
	(Set_Is_Param_Block_Component_Type): New procedure body.
	(Write_Entity_Flags): Display the new flag.
	* exp_ch9.adb (Build_Parameter_Block): Set flag on parameter
	block component types.
	(Expand_N_Entry_Declaration): Set flag on parameter block component
	types.

2015-10-20  Steve Baird  <baird@adacore.com>

	* sem_elab.adb: Do not pass an N_Attribute_Reference node to
	Sinfo.Set_No_Elaboration_Check.
	* sem_elab.adb (Check_Elab_Call) Do not pass a non-call
	node (specifically, an N_Attribute_Reference node) to
	Sinfo.Set_No_Elaboration_Check.

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

	* adaint.c: File names are case sensitive on aarch64-ios.

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

	* a-cbdlli.ads, a-cbhase.ads, a-cbmutr.ads, a-cborse.ads,
	* a-cdlili.ads, a-cidlli.ads, a-cihase.ads, a-cimutr.ads,
	* a-ciorse.ads, a-cobove.ads, a-cohase.ads, a-coinve.ads,
	* a-comutr.ads, a-convec.ads, a-coorse.ads: Use non-private with clause.

2015-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Requires_Cleanup_Actions): A loop parameter does not
	require finalization actions.

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

	* par-ch3.adb (P_Declarative_Items): In case of misplaced
	aspect specifications, ensure that flag Done is properly set to
	continue parse.

2015-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* rtsfind.ads Remove the entries for Ada.Synchronous_Task_Control
	and Suspension_Object from tables RE_Id, RE_Unit_Table and RTU_Id.
	* sem_util.adb (Is_Descendant_Of_Suspension_Object): Update
	the comment on usage. Use routine Is_Suspension_Object to detect
	whether a type matches Suspension_Object.
	(Is_Suspension_Object): New routine.
	* snames.ads-tmpl: Add predefined names for Suspension_Object
	and Synchronous_Task_Control.

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

	* sem_smem.adb (Check_Shared_Var): Clean up code that handles
	type declarations with discriminants, remove obsolete check.

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

	* par_sco.adb: Minor style fixes.

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

	* debug.adb: Update documentation of -gnatdu.

2015-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb Add aspect Volatile_Function to table
	Canonical_Aspect.
	* aspect.ads Add aspect Volatile_Function to tables
	Aspect_Argument, Aspect_Delay, Aspect_Id, Aspect_Names
	and Implementation_Defined_Aspect.  Aspects Async_Readers,
	Async_Writers, Effective_Reads and Effective_Writes are no
	longer Boolean.
	* einfo.adb (Get_Pragma): Add an entry for pragma
	Volatile_Function.
	* par-prag.adb (Prag): Pragma Volatile_Function does not need
	special processing by the parser.
	* rtsfind.ads Add an entry for Ada.Synchronous_Task_Control in
	table RTU_Id. Add an entry for Suspension_Object in table RE_Id.
	* sem_ch3.adb Fix SPARK RM references.
	(Analyze_Object_Contract): Update the error guard.
	* sem_ch5.adb Fix SPARK RM references.
	* sem_ch6.adb (Analyze_Subprogram_Body_Contract): Ensure
	that a non-volatile function does not contain an effectively
	volatile parameter.
	(Analyze_Subprogram_Contract): Ensure
	that a non-volatile function does not contain an effectively
	volatile parameter.
	* sem_ch12.adb (Instantiate_Object): Remove the reference to
	the SPARK RM from the error message.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add
	processing for aspects Async_Readers, Async_Writers,
	Effective_Reads, Effective_Writes and Volatile_Function.
	(Check_Aspect_At_Freeze_Point): Aspects Async_Readers,
	Async_Writers, Effective_Reads, Effective_Writes and
	Volatile_Function do not need special processing at the freeze
	point.
	* sem_prag.adb Add an entry for pragma Volatile_Function in
	table Sig_Flags.
	(Analyze_External_Property_In_Decl_Part):
	Reimplemented as Async_Readers, Async_Writers, Effective_Reads
	and Effective_Writes are no longer Boolean pragmas.
	(Analyze_Global_Item): An external state or effectively
	volatile object cannot appear as an item in pragma
	[Refined_]Global.
	(Analyze_Pragma): Change the implementation
	of Async_Readers, Async_Writers, Effective_Reads and
	Effective_Writes as these are no longer Boolean pragmas.
	Use routine Check_Static_Boolean_Expression to verify the
	optional Boolean expression of Async_Readers, Async_Writers,
	Constant_After_Elaboration, Effective_Reads, Effective_Writes,
	Extensions_Visible and Volatile_Function.  Add processing for
	pragma Volatile_Function.
	(Check_Static_Boolean_Expression): New routine.
	(Find_Related_Context): Update the comment on usage.
	(Is_Enabled_Pragma): New routine.
	* sem_prag.ads (Is_Enabled_Pragma): New routine.
	* sem_res.adb Fix SPARK RM references.
	(Is_OK_Volatile_Context): Add detection for return statements.
	(Resolve_Actuals): Remove the check concerning an effectively volatile
	OUT actual parameter as this is now done by the SPARK flow analyzer.
	(Resolve_Entity_Name): Remove the check concerning an effectively
	volatile OUT formal parameter as this is now done by the SPARK
	flow analyzer.	(Within_Volatile_Function): New routine.
	* sem_util.adb (Add_Contract_Item): Add processing for pragma
	Volatile_Function.
	(Check_Nonvolatile_Function_Profile): New routine.
	(Is_Descendant_Of_Suspension_Object): New routine.
	(Is_Effectively_Volatile): Protected types and descendants of
	Suspension_Object are now treated as effectively volatile.
	(Is_Enabled): The optional Boolean expression of pragmas
	Async_Readers, Async_Writers, Effective_Reads and Effective_Writes
	now appears as the first argument.
	(Is_Volatile_Function): New routine.
	* sem_util.ads Add SPARK RM references.
	(Add_Contract_Item): Update the comment on usage.
	(Check_Nonvolatile_Function_Profile): New routine.
	(Is_Effectively_Volatile): Update the comment on usage.
	(Is_Volatile_Function): New routine.
	* snames.ads-tmpl Add a predefined name and pragma id for
	Volatile_Function.

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

	* gnat_ugn.texi, gnat_rm.texi: Regenerate.
	* doc/gnat_ugn/gnat_project_manager.rst,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_ugn/the_gnat_compilation_model.rst,
	doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
	doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_rm/the_gnat_library.rst,
	doc/gnat_rm/implementation_defined_characteristics.rst: Update doc.

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

	* gcc-interface/Makefile.in: Update targets.

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

	* sem_ch13.adb (Analyze_One_Aspect): Avoid
	analyzing the expression in a 'Disable_Controlled attribute when
	Expander_Active is False, because otherwise, we get errors about
	nonstatic expressions in pragma-Preelaborate generic packages.
	* restrict.ads: minor whitespace cleanup in comment

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

	* a-conhel.adb: Remove "use SAC;", because otherwise the compiler
	complains about use clauses in run-time units. Use "use type"
	instead.
	* a-btgbso.adb, a-btgbso.ads, a-cbdlli.adb, a-cbdlli.ads,
	* a-cbhama.adb, a-cbhama.ads, a-cbhase.adb, a-cbhase.ads,
	* a-cbmutr.adb, a-cbmutr.ads, a-cborma.adb, a-cborma.ads,
	* a-cborse.adb, a-cborse.ads, a-cdlili.adb, a-cdlili.ads,
	* a-chtgbk.adb, a-chtgbk.ads, a-chtgbo.adb, a-chtgbo.ads,
	* a-chtgke.adb, a-chtgke.ads, a-chtgop.adb, a-chtgop.ads,
	* a-cidlli.adb, a-cidlli.ads, a-cihama.adb, a-cihama.ads,
	* a-cihase.adb, a-cihase.ads, a-cimutr.adb, a-cimutr.ads,
	* a-ciorma.adb, a-ciorma.ads, a-ciormu.adb, a-ciormu.ads,
	* a-ciorse.adb, a-ciorse.ads, a-cobove.adb, a-cobove.ads,
	* a-cohama.adb, a-cohama.ads, a-cohase.adb, a-cohase.ads,
	* a-cohata.ads, a-coinve.adb, a-comutr.adb, a-comutr.ads,
	* a-convec.adb, a-coorma.adb, a-coorma.ads, a-coormu.adb,
	* a-coormu.ads, a-coorse.adb, a-coorse.ads, a-crbltr.ads,
	* a-crbtgk.adb, a-crbtgk.ads, a-crbtgo.adb, a-crbtgo.ads,
	* a-rbtgbk.adb, a-rbtgbk.ads, a-rbtgbo.adb, a-rbtgbo.ads,
	* a-rbtgso.adb, a-rbtgso.ads: Change all the predefined containers
	to share the tampering machinery in Ada.Containers.Helpers. This
	reduces the amount of duplicated code, and takes advantage of
	efficiency improvements in Helpers.
	Protect all run-time checks and supporting machinery with "if
	Checks" or "if T_Check", so this code can be suppressed with
	pragma Suppress or -gnatp.
	Add Pseudo_Reference and Get_Element_Access to remaining
	containers, so that the compiler can optimize "for ... of" loops.

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

	* a-contai.adb, a-coinve.ads, a-contai.ads, a-conhel.adb, a-conhel.ads,
	Makefile.rtl, a-convec.ads: Move helper code from Ada.Containers to a
	new package Ada.Containers.Helpers, because otherwise it's not
	visible everywhere it needs to be (e.g. in the package
	Ada.Containers.Red_Black_Trees, Generic_Tree_Types wants to have
	a component of type Tamper_Counts).

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

	* sem_type.adb (Intersect_Types): Specialize error message when
	one operand is a limited view which is a priori incompatible
	with all other named types.
	* sem_prag.adb: minor fix in comment
	* sem_ch13.adb: Code clean up.

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

	* sem_ch12.adb (Need_Subprogram_Instance_Body): Also return true
	for a subprogram nested in an inlined subprogram.

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

	* a-coinve.adb, a-contai.adb: Update comments.
	* pprint.ads: Minor reformatting.

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

	* env.c, init.c: Handle arm64-darwin like arm-darwin.
	* tracebak.c: Handle arm64-darwin.

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

	* s-trasym.adb (Symbolic_Traceback): When giving the traceback
	as hexadecimal code addresses, separate by blanks instead of LF.

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

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Generate freeze
	node for subprogram in Compile_Only mode.

2015-10-20  Dmitriy Anisimkov  <anisimko@adacore.com>

	* s-atocou.adb, s-atocou.ads, a-contai.adb, a-contai.ads,
	s-atocou-x86.adb, s-atocou-builtin.adb: Task safe over container
	iterations.

2015-10-20  Philippe Gil  <gil@adacore.com>

	* g-debpoo.ads (Dump): NEW print Debug_Pool statistics & main
	contributors.
	(Dump_Stdout): NEW print to stdout Debug_Pool statistics &
	main contributors.
	(Reset): NEW reset counters to 0.
	(Get_Size): NEW return size allocated at parameter.
	(High_Water_Mark): NEW.
	(Current_Water_Mark): NEW.
	(System_Memory_Debug_Pool): NEW tell Debug_Pools that
	System.Memory uses it.
	* g-debpoo.adb (Traceback_Htable_Elem): add Frees, Total_Frees
	components.
	(Find_Or_Create_Traceback): don't manage in System.Memory
	Debug_Pool Deallocate Traceback's.
	(Validity): add optional Handled table when System.Memory asked
	for Allow_Unhandled_Memory.
	(Allocate): handle Allocate reentrancy occuring when System.Memory
	uses Debug_Pools.
	(Deallocate): handle when Allow_Unhandled_Memory
	is set deallocation of unhandled memory. Dont't check
	Size_In_Storage_Elements if equal to Storage_Count'Last. update
	Frees, Total_Frees new components.

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

	* fe.h: Minor tweak.

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

	* sem_cat.adb (Check_Categorization_Dependencies): Do nothing
	when -gnatdu is specified.

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

	* sem_ch8.adb (analyze_Subprogram_Renaming): The actual for a
	formal abstract subprogram must have a controlling type.
	* stand.ads: Minor whitespace cleanup.

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

	* sem_ch13.adb: Minor reference change (RM => AARM).

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

	* make.adb (Check): Skip multilib switches reinstated by the
	compiler only when counting the number of switches, since it is
	what really matters in the regular operating mode.

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

	* einfo.adb: Add extra assertion for small clause.
	* cstand.adb: Minor style fix in comment.
	* debug.adb: Minor reformatting.
	* exp_util.adb: Fix minor typo.

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

	* sem_ch12.adb (Same_Instantiated_Function): New predicate in
	Check_Formal_Package_Instance, used to verify that the formal
	and the actual of an actual package match when both are functions
	given as attribute references.

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

	* a-coinve.ads, a-coinve.adb: Do the same efficiency
	improvements that were already done in the definite case
	(Ada.Containers.Vectors, i.e. a-convec). This includes the
	ability to suppress checks, the fast path for Append, inlining
	as appropriate, and special-casing of "for ... of" loops. Reuse
	the tampering machinery that is now in Ada.Containers. Simplify
	many operations.
	* a-convec.ads, a-convec.adb: Change the code to be more similar
	to a-coinve.
	* a-finali.ads, a-finali.adb: Expose the "null"-ness of the
	operations. This may enable optimizations in the future, and
	seems cleaner anyway.

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

	* sem_ch13.adb (Is_Operational_Item): Attributes related to
	Ada 2012 iterators are operational items, and can be specified
	on partial views.

2015-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Usage): Update the calls to Usage_Error.
	(Usage_Error): Remove formal parameter Item. Emit a clearer message
	concerning a missing dependency item and place it on the related pragma.

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

	* debug.adb, expander.adb: Implement -gnatd.B switch, which
	triggers a bug box when an abort_statement is seen. This is
	useful for testing Comperr.Compiler_Abort.
	* gnat1drv.adb: Trigger bug box on all exceptions other than
	Unrecoverable_Error.

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

	* Makefile.rtl: add the following...
	* g-binenv.ads, g-binenv.adb: New unit providing runtime access
	to bind time captured values ("bind environment")
	* init.c: declare new global variable __gl_bind_env_addr.
	* bindgen.ads, bindgen.adb (Set_Bind_Env): record a bind
	environment key=value pair.
	(Gen_Bind_Env_String): helper to produce the bind environment data
	called  in the binder generated file.
	(Gen_Output_File_Ada): Call the above (Gen_Adainit): Set
	__gl_bind_env_addr accordingly.
	* switch-b.adb: Support for command line switch -V (user interface
	to set a build environment key=value pair)
	* bindusg.adb: Document the above

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

	* sem_prag.adb (Analyse_Pragma: Pragma Pure): Do not set the
	entity as Pure if Debug_Flag_U is set.

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

	* output.adb (Write_Int): Work with negative numbers in order to avoid
	negating Int'First and thereby causing overflow.
	* sem_util.adb: Minor comment fix.

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

	* make.adb (Check): Skip multilib switches reinstated by the
	compiler when doing the comparison with switches passed to
	gnatmake.

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

	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Return
	False for procedures marked No_Return.
	* sem_util.ads (Enclosing_Declaration): Improve comment.
	* einfo.adb (Is_Completely_Hidden): Remove spurious assertion.

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

	* types.ads: Minor reformatting.

2015-10-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Get_Pragma): Minor reformatting. Rename local constant
	Is_CDG to Is_CLS. Add pragma Constant_After_Elaboration to the list of
	classification pragmas.

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

	* sem_ch3.adb (Analyze_Declarations); At the of the visible part,
	perform name resolution on the expressions in aspects of visible
	entities.
	* sem_ch13.ads, sem_ch13.adb (Resolve_Aspect_Expressions): Resolve
	expressions in aspects independently of whether corresponding
	entity is frozen. Used to complete name resolution of aspect
	expressions for entities declared in the visible part of a
	package or generic package declaration.

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

	* prj-attr.adb: Add package Codepeer and its attributes.

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

	* sem_ch3.adb, sem_ch13.adb: Minor reformatting.

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

	* gnatlink.adb (Gnatlink): Do not translate --RTS switch
	for the linker and instead pass the switches that were
	reinstated by the compiler.

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

	* a-contai.ads, a-convec.ads: Move Count_Type_Last from
	a-convec.ads to a-contai.ads, so other containers can refer to it.

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

	* sem_ch3.adb (Check_Nonoverridable_Aspects): New procedure within
	Analyze_Full_Type_ Declaration, used to apply legality rules in
	13,1,1 (18.3.3) concerning aspects that cannot be overridden in
	a type extension.
	(Check_Duplicate_Aspects): It is not legal to specify the
	Implicit_Dereference aspect on a full view if partial view has
	known discriminants.
	* sem_ch13.adb (Analyze_Aspect_Implicit_Dereference): Verify that
	the specification of the aspect on a derived type confirms the
	value of the inherited one.
	* sem_util.adb (Reference_Discriminant): Return empty if none
	specified.

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

	* exp_ch5.adb, sem_ch3.adb: Minor reformatting.

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

	* a-strsup.adb (Super_Trim): Remove statements that put NUL
	characters in unused portion of the Data string.

2015-10-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb Add an entry for Constant_After_Elaboration in
	table Canonical_Aspect.
	* aspects.ads Add entries for Constant_After_Elaboration in
	tables Aspect_Argument, Aspect_Delay, Aspect_Id, Aspect_Names
	and Implementation_Defined_Aspect.
	* par-prag.adb Pragma Constant_After_Elaboration does not require
	special processing by the parser.
	* sem_ch13.adb Add an entry for Constant_After_Elaboration
	in table Sig_Flags.
	(Analyze_Aspect_Specifications):
	Add processing for aspect Constant_After_Elaboration.
	(Check_Aspect_At_Freeze_Point): Aspect Constant_After_Elaboration
	does not require special processing at freeze time.
	* sem_prag.adb (Analyze_Pragma): Add processing for pragma
	Constant_After_Elaboration. Use routine Find_Related_Context to
	retrieve the context of pragma Part_Of.
	(Duplication_Error): Update comment on usage.
	(Find_Related_Context): New routine.
	* sem_prag.ads Add an entry for Constant_After_Elaboration
	in table Aspect_Specifying_Pragma.
	(Analyze_Contract_Cases_In_Decl_Part): Update the comment on usage.
	* sem_util.adb (Add_Contract_Item): Add processing for pragma
	Constant_After_Elaboration.
	* sem_util.ads (Add_Contract_Item): Update the comment on usage.
	* snames.ads-tmpl Add new predefined name and aspect id for
	Constant_After_Elaboration.

2015-10-16  Vincent Celier  <celier@adacore.com>

	* prj-pp.adb (Pretty_Print.Print): Correctly display extending
	packages, instead of making them renamed packages.

2015-10-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation):
	Treat a missing SPARK_Mode annotation as having mode "Off".
	(Analyze_Subprogram_Instantiation): Treat a missing SPARK_Mode
	annotation as having mode "Off".
	(Instantiate_Package_Body): Code
	reformatting. Treat a missing SPARK_Mode annotation as having mode
	"Off".
	(Instantiate_Subprogram_Body): Code reformatting. Treat
	a missing SPARK_Mode annotation as having mode "Off".

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb: Code clean up.
	* sem_ch13.adb: Minor fix in comment.

2015-10-16  Bob Duff  <duff@adacore.com>

	* a-exexda.adb: Change format of Exception_Information to be
	more like what we print for unhandled exceptions.
	* a-exstat.adb: Parse new format.
	* a-except-2005.adb, a-except.adb: Document new format.

2015-10-16  Javier Miranda  <miranda@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Associate a
	transient scope with the renaming object declararation.
	* exp_util.adb (Insert_Actions): if the enclosing interator
	loop is marked as requiring the secondary stack then attach the
	actions to the transient scope.

2015-10-16  Bob Duff  <duff@adacore.com>

	* exp_ch7.adb: Minor spelling fixes.

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Replace_Anonymous_Access_To_Protected_Subprogram):
	If anonymous type is component type of array type declaration,
	analyze its declaration in the current scope, not the enclosing
	one.

2015-10-16  Gary Dismukes  <dismukes@adacore.com>

	* prj.adb, sem_util.adb, exp_ch6.adb: Minor reformatting.

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Formal_Container_Element_Loop): Modify
	expansion to allow element iteration over formal containers
	whose elements are indefinite types.

2015-10-16  Doug Rupp  <rupp@adacore.com>

	* s-taprop-linux.adb (Monotonic_Clock): Call clock_gettime
	instead of gettimeofday.
	* s-osinte-android.ads, s-osinte-android.adb, s-osinte-linux.ads
	(clock_gettime): New imported subprogram.

2015-10-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
	Indefinite or limited library level objects are now returned on
	the heap.
	* exp_ch7.adb (Build_Finalization_Master): Add formal
	parameter For_Lib_Level. Add context specific insertion for a
	finalization master created for an access result type related
	to a build-in-place function call used to initialize a library
	level object.
	* exp_ch7.ads (Build_Finalization_Master): Add formal parameter
	For_Lib_Level. Update the comment on usage.
	* sem_util.adb (Mark_Coextensions): Code cleanup.

2015-10-16  Emmanuel Briot  <briot@adacore.com>

	* prj.adb (For_Every_Project_Imported_Context): Fix handling
	of aggregated projects with duplicate names.
	* a-ngelfu.ads: Minor whitespace fix.

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Build_Predicate_Functions): The expression for
	the predicate is side-effect free if it does not contain any
	variable references.

2015-10-16  Bob Duff  <duff@adacore.com>

	* a-convec.adb ("="): Previous version depended
	on "=" composing, but that doesn't quite work -- we want the "="
	operator passed in to the generic. So we need a loop after all.

2015-10-16  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Is_Object_Reference): Attribute 'Loop_Entry produces
	an object.
	* sem_ch6.adb: Minor fix in comment.

2015-10-16  Bob Duff  <duff@adacore.com>

	* a-contai.ads: Add two check names: Container_Checks and
	Tampering_Check.  Move the tampering check machinery from
	Ada.Containers.Vectors to Ada.Containers. Later we can share it
	with other containers.
	Disable the tampering machinery in the presence of
	Suppress(Tampering_Check).
	Simplify the implementation of tampering checks. E.g. use RAII
	to make incrementing/decrementing of the counts more concise.
	* a-contai.adb: New package body, implementing the above.
	* a-convec.ads, a-convec.adb: Use tampering check machinery
	in Ada.Containers.
	Disable all checking code when checks are suppressed.
	Simplify many of the operations. Implement "&" in terms of Append,
	rather than "by hand".
	Remove: function "=" (L, R : Elements_Array) return Boolean is
	abstract; so we can call the predefined "=" on Elements_Array.
	For "=" on Vectors: Previously, we returned True immediately if
	Left'Address = Right'Address.  That seems like a non-optimization
	("if X = X" is unusual), so removed that.  Simplify by using
	slice comparison ("=" on Element_Array will automatically call
	"=" on the components, even if user defined).

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Chek_Record_Representation_Clause): When
	iterating over components, skip anonymous subtypes created for
	constrained array components.

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

	* a-tags.ads (Parent_Size): Remove obsolete pragma Export.
	* s-finmas.ads (Header_Offset): Delete.
	* s-finmas.adb (Header_Offset): Likewise.
	(Finalize): Call Header_Size instead of Header_Offset.
	* s-stposu.adb (Allocate_Any_Controlled): Likewise.
	(Deallocate_Any_Controlled): Likewise.

2015-10-16  Arnaud Charlet  <charlet@adacore.com>

	* a-exetim.ads, a-exetim-mingw.ads, a-exetim-default.ads: Whitespace
	cleanup.
	* s-osprim-mingw.adb, einfo.ads, sem_util.adb, sem_util.ads,
	sem_ch4.adb, sem_ch13.adb, s-trasym.adb, s-trasym.ads,
	s-taprop-posix.adb: Minor reformatting.

2015-10-16  Bob Duff  <duff@adacore.com>

	* adadecode.h, adadecode.c (ada_demangle): Remove
	ada_demangle, no longer used.
	* a-except-2005.adb: Bring System.Traceback.Symbolic into the
	closure.

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb, sem_util.ads (Get_Reference_Discriminant): Utility to
	locate the access discriminant that supports implicit dereference on a
	record type.
	(Is_OK_Variable_For_Out_Parameter): Reject other illegal uses
	of Implicit_Dereference on an access_to_constant when actual
	parameter is a rewritten variable or function call.

2015-10-16  Bob Duff  <duff@adacore.com>

	* a-tags.adb, s-trasym.adb, s-trasym.ads: Make sure we don't get
	elaboration circularities when polling is turned on.

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Replace_Anonymous_Access_To_Protected_Subprogram):
	When creating a full declaration for a formal parameter, the
	entity is labelled as an Itype, so set Associated_Node_For_Itype
	accordingly.
	* einfo.ads: Clarify use of Associated_Node_For_Itype.

2015-10-16  Bob Duff  <duff@adacore.com>

	* bindgen: Move pragmas Warnings earlier, otherwise
	we can get warnings on with_clauses.

2015-10-16  Arnaud Charlet  <charlet@adacore.com>

	* s-osprim-mingw.adb, s-osprim-x32.adb, s-taprop-mingw.adb,
	s-taprop-posix.adb (Monotonic_Clock): Removed, not used.
	Remove remaining references to OS_Primitives.Monotonic_Clock.
	Keep it only on windows which is a special case.

2015-10-16  Javier Miranda  <miranda@adacore.com>

	* a-textio.adb (Get_Line): Fix documentation.
	* einfo.ads (Interface_Name): Fix documentation.
	* exp_aggr.adb (Backend_Processing_Possible): Fix documentation.
	* exp_ch4.adb (Expand_N_In): Fix documentation.

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

	* inline.adb (Subp_Info): Remove Listed component.
	(Add_Inlined_Subprogram): Take an entity instead of an index.
	Do not set Listed component to True.
	(New_Entry): Do not initialize Listed component to False.
	(Analyze_Inlined_Bodies): Do not test Listed component
	(Must_Inline): Add calls not in the main unit only
	if they are in a subprogram that can be inlined outside its unit.
	(Add_Inlined_Body): Move test around and add comment.

2015-10-16  Arnaud Charlet  <charlet@adacore.com>

	* sinfo.ads, einfo.ads: monir clean ups.

2015-10-16  Arnaud Charlet  <charlet@adacore.com>

	* usage.adb, debug.adb, a-except.adb, a-except.ads, a-except-2005.adb,
	a-except-2005.ads, s-imgrea.adb: Minor code clean ups related to
	jgnat/dotnet removal.

2015-10-16  Arnaud Charlet  <charlet@adacore.com>

	* s-osprim-vxworks.adb, s-osprim-darwin.adb, s-tadeca.adb,
	s-osprim-unix.adb, s-osprim-solaris.adb, s-osprim-posix.adb,
	s-osprim.ads (Monotonic_Clock): Removed, unused.

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Object_Operation, Try_One_Interpretation):
	Do not reset the Obj_Type of the prefix if an interpretation
	involves an untagged type, to prevent a crash when analyzing an
	illegal program in All_Errors mode.

2015-10-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Expression_With_Actions):
	Force the evaluation of the expression when its type is Boolean.
	(Force_Boolean_Evaluation): New routine.

2015-10-16  Bob Duff  <duff@adacore.com>

	* sem_util.adb (Has_Discrim_Dep_Array): Remove
	this function, and the call. No longer needed now that the back
	end can handle such things. Should result in further speedups
	in some cases.

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Build_Predicate_Functions): If expression for
	predicate is side-effect free, indicate that the predicate
	function is pure, to allow for optimization of redundant
	predicate checks.

2015-10-16  Arnaud Charlet  <charlet@adacore.com>

	* checks.adb: Fix typo.
	* s-osinte-linux.ads: Add header.
	* projects.texi: Removed, no longer used.
	* gcc-interface/Make-lang.in: Update dependencies
	* s-multip.adb: Minor: fix header.
	* sem_ch3.adb, exp_ch7.adb, g-dirope.ads, sinfo.ads, types.ads,
	a-textio.adb, s-exctra.adb, ali.adb, back_end.ads, exp_intr.adb,
	a-tigeli.adb, exp_ch3.adb, s-os_lib.ads: Remove further references to
	.NET.
	* gnatlink.adb, opt.ads, exp_aggr.adb, s-solita.adb: Minor comment
	updates.

2015-10-16  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch9.adb (Build_Simple_Entry_Call): Set_Is_Internal on
	the temporary object used for a by-copy entry parameter, to
	ensure that the object doesn't get its No_Initialization flag
	reset later in Default_Initialize_Object. Also, generate the
	assignment of the actual to the temporary in the additional case
	of a scalar out parameter whose type has a Default_Value aspect.
	* exp_ch3.adb: Fix minor typo in comment.

2015-10-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, sem_util.ads, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb:
	Minor reformatting.
	* sem_ch12.adb (Analyze_Formal_Package_Declaration): Set the
	SPARK_Mode from the context.

2015-10-16  Bob Duff  <duff@adacore.com>

	* sem_util.adb (Requires_Transient_Scope):
	If Typ is a generic formal incomplete type, look at the actual
	type. Otherwise, we don't notice that the actual type is tagged,
	has a variant part, etc, causing a mismatch of calling conventions
	between caller and callee.

2015-10-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.ads: Move the declaration of enumeration
	literal E_Abstract_State above E_Entry.  Update the upper bound
	of subtype Overloadable_Kind.

2015-10-16  Gary Dismukes  <dismukes@adacore.com>

	* exp_attr.adb: Minor editorial changes.

2015-10-16  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch5.adb, sem_ch3.adb, frontend.adb, exp_ch7.adb, exp_ch7.ads,
	sem_ch5.adb, sem_type.adb, exp_util.adb, exp_util.ads, comperr.adb,
	exp_attr.adb, sinfo.ads, exp_ch9.adb, make.adb, usage.adb,
	lib-writ.adb, sem_ch9.adb, bindgen.adb, debug.adb, einfo.adb,
	einfo.ads, types.ads, checks.adb, sem_prag.adb, s-tasini.adb,
	rtsfind.ads, freeze.adb, sem_util.adb, sem_util.ads, exp_dbug.adb,
	gnatlink.adb, gnat1drv.adb, targparm.adb, targparm.ads, exp_ch4.adb,
	exp_ch11.adb, repinfo.adb, s-soflin.adb, s-soflin.ads, exp_ch6.adb,
	exp_ch13.adb, sem_mech.adb, sem_ch6.adb, par-prag.adb, exp_disp.adb,
	sem_ch8.adb, exp_disp.ads, snames.adb-tmpl, exp_aggr.adb, sem_eval.adb,
	exp_intr.adb, sem_ch13.adb, snames.ads-tmpl, sem_disp.adb, exp_ch3.adb:
	Code clean up: remove special handling for .NET and JVM.

2015-10-16  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch12.adb: Minor punctuation fix in comment
	* s-rident.ads: Minor consistency fix in comment
	* exp_attr.adb, g-spipat.ads: punctuation fixes in comments.
	* restrict.ads: Style fix in comments.
	* sem_prag.adb: Minor grammar fix in comment

2015-10-16  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch12.adb: Minor reformatting/rewording.

2015-10-16  Arnaud Charlet  <charlet@adacore.com>

	* einfo.ads: Minor fix of duplicate words
	* rident.ads: Minor style fix in comment

2015-10-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Expand_N_Full_Type_Declaration): Do not capture,
	set and restore the Ghost mode.
	(Expand_N_Object_Declaration): Do not capture, set and restore the
	Ghost mode.
	(Freeze_Type): Redo the capture and restore of the Ghost mode.
	(Restore_Globals): Removed.
	* exp_ch5.adb (Expand_N_Assignment_Statement): Redo the capture
	and restore of the Ghost mode.
	(Restore_Globals): Removed.
	* exp_ch6.adb (Expand_N_Procedure_Call_Statement):
	Redo the capture and restore of the Ghost mode.
	(Expand_N_Subprogram_Body): Redo the capture, set and restore
	of the Ghost mode.
	(Expand_N_Subprogram_Declaration): Do not
	capture, set and restore the Ghost mode.
	(Restore_Globals): Removed.
	* exp_ch7.adb (Expand_N_Package_Body): Redo the capture, set
	and restore of the Ghost mode.
	(Expand_N_Package_Declaration): Do not capture, set and restore the
	Ghost mode.
	* exp_ch8.adb (Expand_N_Exception_Renaming_Declaration):
	Redo the capture and restore of the Ghost mode.
	(Expand_N_Object_Renaming_Declaration): Redo
	the capture and restore of the Ghost mode.
	(Expand_N_Package_Renaming_Declaration):
	Redo the capture and restore of the Ghost mode.
	(Expand_N_Subprogram_Renaming_Declaration): Redo the capture
	and restore of the Ghost mode.
	* exp_ch11.adb Remove with and use clauses for Ghost.
	(Expand_N_Exception_Declaration): Do not capture, set and restore
	the Ghost mode.
	* exp_disp.adb (Make_DT): Redo the capture and restore of the
	Ghost mode.
	(Restore_Globals): Removed.
	* exp_prag.adb (Expand_Pragma_Check): Do not capture, set
	and restore the Ghost mode.
	(Expand_Pragma_Contract_Cases):
	Redo the capture and restore of the Ghost mode.  Preserve the
	original context of contract cases by setting / resetting the
	In_Assertion_Expr counter.
	(Expand_Pragma_Initial_Condition):
	Redo the capture and restore of the Ghost mode.
	(Expand_Pragma_Loop_Variant): Redo the capture and restore of
	the Ghost mode.
	(Restore_Globals): Removed.
	* exp_util.adb (Make_Predicate_Call): Redo the capture and
	restore of the Ghost mode.
	(Restore_Globals): Removed.
	* freeze.adb (Freeze_Entity): Redo the capture and restore of
	the Ghost mode.
	(Restore_Globals): Removed.
	* ghost.adb (Check_Ghost_Context): Remove the RM reference from
	the error message.
	(Is_OK_Statement): Account for statements
	that appear in assertion expressions.
	(Is_Subject_To_Ghost):
	Moved from spec.
	* ghost.ads (Is_Subject_To_Ghost): Moved to body.
	* rtsfind.ads (Load_RTU): Redo the capture and restore of the
	Ghost mode.
	* sem.adb Add with and use clauses for Ghost.
	(Analyze): Redo
	the capture and restore of the Ghost mode. Set the Ghost mode
	when analyzing a declaration.
	(Do_Analyze): Redo the capture
	and restore of the Ghost mode.
	* sem_ch3.adb (Analyze_Full_Type_Declaration): Do not capture, set
	and restore the Ghost mode.
	(Analyze_Incomplete_Type_Decl):
	Do not capture, set and restore the Ghost mode.
	(Analyze_Number_Declaration): Do not capture, set and restore the
	Ghost mode.
	(Analyze_Object_Declaration): Do not capture, set and
	restore the Ghost mode.
	(Analyze_Private_Extension_Declaration):
	Do not capture, set and restore the Ghost mode.
	(Analyze_Subtype_Declaration): Do not capture, set and restore
	the Ghost mode.
	(Restore_Globals): Removed.
	* sem_ch5.adb (Analyze_Assignment): Redo the capture and restore
	of the Ghost mode.
	(Restore_Globals): Removed.
	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration):
	Do not capture, set and restore the Ghost mode.
	(Analyze_Procedure_Call): Redo the capture and restore of the
	Ghost mode.
	(Analyze_Subprogram_Body_Helper): Redo the capture
	and restore of the Ghost mode.	(Analyze_Subprogram_Declaration):
	Do not capture, set and restore the Ghost mode.
	(Restore_Globals): Removed.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Redo the capture and
	restore of the Ghost mode.
	(Analyze_Package_Declaration):
	Do not capture, set and restore the Ghost mode.
	(Analyze_Private_Type_Declaration): Do not capture, set and
	restore the Ghost mode.
	(Restore_Globals): Removed.
	* sem_ch8.adb (Analyze_Exception_Renaming): Do not capture,
	set and restore the Ghost mode.
	(Analyze_Generic_Renaming): Do not capture, set and restore the Ghost
	mode.
	(Analyze_Object_Renaming): Do not capture, set and restore the
	Ghost mode.
	(Analyze_Package_Renaming): Do not capture, set and restore the Ghost
	mode.
	(Analyze_Subprogram_Renaming): Do not capture, set and restore the
	Ghost mode.
	(Restore_Globals): Removed.
	* sem_ch11.adb (Analyze_Exception_Declaration): Do not capture,
	set and restore the Ghost mode.
	* sem_ch12.adb (Analyze_Generic_Package_Declaration):
	Do not capture, set and restore the Ghost mode.
	(Analyze_Generic_Subprogram_Declaration): Do not capture, set
	and restore the Ghost mode.
	* sem_ch13.adb (Build_Invariant_Procedure_Declaration): Redo
	the capture and restore of the Ghost mode.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
	Redo the capture and restore of the Ghost mode.
	(Analyze_External_Property_In_Decl_Part):
	Redo the capture and restore of the Ghost mode.
	(Analyze_Initial_Condition_In_Decl_Part): Redo the
	capture and restore of the Ghost mode.	(Analyze_Pragma):
	Do not capture, set and restore the Ghost mode for Assert.
	Redo the capture and restore of the Ghost mode for Check. Do
	not capture and restore the Ghost mode for Invariant.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Redo the capture and
	restore of the Ghost mode.
	* sem_res.adb (Resolve): Capture, set and restore the Ghost mode
	when resolving a declaration.
	* sem_util.adb (Build_Default_Init_Cond_Procedure_Body):
	Redo the capture and restore of the Ghost mode.
	(Build_Default_Init_Cond_Procedure_Declaration): Redo the capture
	and restore of the Ghost mode.

2015-10-16  Bob Duff  <duff@adacore.com>

	* debug.adb: Document -gnatdQ switch.

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Formal_Subprogram): Implement rule that
	a formal abstract subprogram cannot have a null default: RM 12.6
	(4 1.2).

2015-10-16  Bob Duff  <duff@adacore.com>

	* sem_util.ads, sinput.ads, bcheck.adb: Minor comment fixes.

2015-10-16  Javier Miranda  <miranda@adacore.com>

	* inline.adb (Add_Inlined_Body): Ensure that
	Analyze_Inlined_Bodies will be invoked after completing the
	analysis of the current unit.

2015-10-16  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Fix error
	message for bad last bit position.
	* sem_ch3.adb, sem_util.adb, sem_util.ads: Minor reformatting.

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Case_Statement): If expression is
	compile-time known but does not obey a static predicate on
	its type, replace the case statement with a raise statement,
	as with other statically detected constraint violations.

2015-10-16  Bob Duff  <duff@adacore.com>

	* s-traceb.adb, s-traceb.ads, s-traceb-hpux.adb, s-traceb-mastop.adb:
	Reinstate code.
	* opt.ads: Minor typo.

2015-10-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Gather_Components): When gathering components
	of a nested variant, the record type used in legality checks is
	the enclosing record type.

2015-10-13  Jakub Jelinek  <jakub@redhat.com>

	* gcc-interface/utils.c (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
	DEF_FUNCTION_TYPE_11): Define.

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

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

2015-10-05  Richard Sandiford  <richard.sandiford@arm.com>

	* gcc-interface/trans.c (convert_with_check): Use real_arithmetic
	instead of REAL_ARITHMETIC.

2015-10-05  Richard Sandiford  <richard.sandiford@arm.com>

	* gcc-interface/trans.c (convert_with_check): Use real_less instead
	of REAL_VALUES_LESS.

2015-10-02  Doug Rupp  <rupp@adacore.com>
            Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/lang.opt (fbuiltin-printf): Accept.
	* gcc-interface/misc.c (gnat_handle_option): Ignore it.
	* gcc-interface/lang-specs.h (@ada, @adawhy, @adascil): Propagate -f*
	flags as -g* and -m* flags past -gnatez.

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

	* gcc-interface/trans.c (Pragma_to_gnu) <Pragma_Warnings>: Replace
	linear search with call to find_opt and issue warnings if the -W
	switch is not appropriate.

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

	* gcc-interface/ada-tree.h (DECL_RESTRICTED_ALIASING_P): New flag.
	* gcc-interface/decl.c (gnat_to_gnu_param): For parameters passed by
	reference but whose type isn't by-ref and whose mechanism hasn't been
	forced to by-ref, set the DECL_RESTRICTED_ALIASING_P flag directly on
	them instead of changing their type.
	* gcc-interface/trans.c (scan_rhs_r): New helper function.
	(independent_iterations_p): New predicate.
	(Loop_Statement_to_gnu): For a loop with an iteration scheme, set an
	ivdep pragma if the iterations are independent.

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

	* gcc-interface/trans.c (find_loop_for): Use FOR_EACH_VEC_ELT_REVERSE.
	(Loop_Statement_to_gnu): Use FOR_EACH_VEC_ELT.
	(finalize_nrv): Use FOR_EACH_VEC_SAFE_ELT and initialize field.
	(build_stmt_group): Add blank lines.

2015-09-30  Thomas Schwinge  <thomas@codesourcery.com>

	* gcc-interface/utils.c (DEF_FUNCTION_TYPE_VAR_11): Don't define.

2015-09-28  Tom de Vries  <tom@codesourcery.com>

	* gcc-interface/utils.c (DEF_FUNCTION_TYPE_VAR_6): Define.

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

	* gcc-interface/trans.c (emit_check): Do not touch TREE_SIDE_EFFECTS.

2015-09-14  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/misc.c (gnat_post_options): Issue a warning if
	generating STABS debugging information when not the default.

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

	* gcc-interface/gigi.h (ref_filename): Delete.
	(Sloc_to_locus): Add clean_column parameter defaulting to false.
	(build_call_raise): Adjust comment.
	(build_call_raise_range): Move around.
	* gcc-interface/trans.c (ref_filename): Delete.
	(gigi): Fix formatting.
	(block_end_locus_sink): Delete.
	(Sloc_to_locus1): Tidy up and reformat.  Rename into...
	(Sloc_to_locus): ...this.  Add default for clean_colmun parameter.
	(set_expr_location_from_node1): Rename into...
	(set_expr_location_from_node): ...this.
	(set_end_locus_from_node): Move around.  Adjust for renaming.
	(Handled_Sequence_Of_Statements_to_gnu): Likewise.
	(add_cleanup): Likewise.
	* gcc-interface/utils2.c (expand_sloc): New static function.
	(build_call_raise): Call it.
	(build_call_raise_column): Likewise.
	(build_call_raise_range): Likewise.  Move around.

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

	* gcc-interface/utils2.c (gnat_rewrite_reference) <COMPOUND_EXPR>: Add
	another acceptable pattern for the RHS.

2015-07-24  Micahel Darling  <darlingm@gmail.com>

	PR other/66259
	* prj-nmsc.adb: Reflects renaming of configure.in to configure.ac
	* gcc-interface/Makefile.in: Likewise

2015-07-12  Aldy Hernandez  <aldyh@redhat.com>

	* gcc-interface/utils.c: Fix double word typos.
	* gnat_ugn.texi: Same.
	* init.c: Same.
	* par.adb: Same.
	* projects.texi: Same.
	* sem_ch4.adb: Same.
	* sem_ch6.adb: Same.
	* sem_dim.adb: Same.
	* sem_eval.adb: Same.
	* sem_prag.adb: Same.
	* sem_warn.adb: Same.

2015-07-07  Andrew MacLeod  <amacleod@redhat.com>

	* gcc-interface/cuintp.c: Adjust includes.
	* gcc-interface/decl.c: Likewise.
	* gcc-interface/misc.c: Likewise.
	* gcc-interface/targtyps.c: Likewise.
	* gcc-interface/trans.c: Likewise.
	* gcc-interface/utils.c: Likewise.
	* gcc-interface/utils2.c: Likewise.

2015-07-06  John Marino  <gnugcc@marino.st>

	* s-oscons-tmplt.c: Add support for DragonFly alongside FreeBSD.

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

	PR ada/63310
	* gcc-interface/utils.c (gnat_write_global_declarations): Always
	build the dummy global variable if code was generated.

2015-06-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR fortran/66605
	* gcc-interface/misc.c (gnat_post_options): No need to disable
	warn_unused_parameter anymore.

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

	* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): When
	not optimizing the CFG, clear the DECL_DECLARED_INLINE_P flag on the
	at-end procedures.

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

	* gcc-interface/gigi.h (note_types_used_by_globals): Delete.
	(gnat_write_global_declarations): New prototype.
	* gcc-interface/utils.c (type_decls): Rename back to...
	(global_decls): ...this.
	(gnat_pushdecls): Revert previous change.
	(create_var_decl): Do not output global variables.
	(note_types_used_by_globals): Rename back to...
	(gnat_write_global_declarations): ...this.  Output variables on the
	global_decls vector.
	* gcc-interface/misc.c (gnat_parse_file): Adjust to above renaming.

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

	* gcc-interface/gigi.h (create_var_decl_1): Rename into...
	(create_var_decl): ...this.  Add default value for last parameter.
	(create_type_stub_decl): Adjust.
	(create_type_decl): Likewise.
	(create_field_decl): Likewise.
	(create_param_decl): Likewise.
	(create_label_decl): Likewise.
	(create_subprog_decl): Likewise.
	* gcc-interface/utils.c (create_var_decl_1): Rename into...
	(create_var_decl): ...this.  Rename var_name into name and var_init
	into init, move const_decl_allowed_p last and adjust accordingly.
	(create_type_stub_decl): Rename type_name into name and adjust.
	(create_type_decl): Likewise.
	(create_field_decl): Likewise for field_name and field_type.
	(create_param_decl): Likewise for param_name and param_type.
	(create_label_decl): Likewise for label_name.
	(create_subprog_decl): Likewise for subprog_name and subprog_type.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust couple of calls
	to create_var_decl_1.

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

	* gcc-interface/trans.c (loop_info_d): Add low_bound, high_bound,
	artificial, has_checks and warned_aggressive_loop_optimizations.
	(gigi): Set warn_aggressive_loop_optimizations to 0.
	(inside_loop_p): New inline predicate.
	(push_range_check_info): Rename into...
	(find_loop_for): ...this and do not push range_check_info_d object.
	(Loop_Statement_to_gnu): Set artificial, low_bound and high_bound
	fields of gnu_loop_info.  Adjust detection of checks enabled by
	-funswitch-loops and adds one for -faggressive-loop-optimizations.
	(gnat_to_gnu) <N_Indexed_Component>: If aggressive loop optimizations
	are enabled, warn for loops overrunning an array of size 1 not at the
	end of a record.

2015-06-25  Andrew MacLeod  <amacleod@redhat.com>

	* gcc-interface/trans.c: Remove ipa-ref.h and plugin-api.h from include
	list.
	* gcc-interface/utils.c: Likewise.

2015-06-25  Richard Sandiford  <richard.sandiford@arm.com>

	* gcc-interface/decl.c (value_annotation_hasher): Inherit from
	ggc_cache_ptr_hash rather than ggc_cache_hasher.
	* gcc-interface/utils.c (pad_type_hasher): Likewise.

2015-06-25  Richard Sandiford  <richard.sandiford@arm.com>

	* gcc-interface/decl.c (value_annotation_hasher::handle_cache_entry):
	Delete.
	(value_annotation_hasher::keep_cache_entry): New function.
	* gcc-interface/utils.c (pad_type_hasher::handle_cache_entry):
	Delete.
	(pad_type_hasher::keep_cache_entry): New function.

2015-06-25  Andrew MacLeod  <amacleod@redhat.com>

	* gcc-interface/misc.c: Include calls.h not function.h.

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

	* gcc-interface/gigi.h (record_builtin_type): Adjust comment.
	(tree create_type_decl): Likewise.
	(create_var_decl_1): Add artificial_p and debug_info_p parameters.
	(create_var_decl): Likewise.
	(create_true_var_decl): Delete.
	(create_subprog_decl): Add debug_info_p parameter.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Add artificial_p local
	variable and use it throughout.  Remove DECL_ARTIFICIAL settings.
	<E_Variable>: Adjust calls to create_var_decl and create_var_decl_1.
	Remove DECL_IGNORED_P settings.
	<E_Enumeration_Type>: Likewise.
	<E_Record_Type>: Likewise.
	<E_Subprogram_Type>: Likewise.  Remove artificial_flag local variable.
	Adjust call to create_subprog_decl.
	(get_minimal_subprog_decl): Likewise.
	(elaborate_expression_1): Adjust call to create_var_decl.
	* gcc-interface/trans.c (gigi): Adjust calls to create_var_decl and
	create_subprog_decl.  Remove DECL_ARTIFICIAL & DECL_IGNORED_P settings.
	* gcc-interface/utils.c (maybe_pad_type): Likewise.
	(record_builtin_type): Adjust comment.
	(create_type_stub_decl): Remove obsolete comment.
	(create_var_decl_1): Add artificial_p and debug_info_p parameters.
	Set DECL_ARTIFICIAL and DECL_IGNORED_P accordingly.
	(create_subprog_decl): Add debug_info_p parameter.  Set DECL_IGNORED_P
	accordingly.

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

	* gcc-interface/misc.c (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): Define.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Function>: Make sure
	the size of a padding type built around the return type is positive.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Simple_Return_Statement>:
	Use INIT_EXPR instead of MODIFY_EXPR to assign to the return object.

2015-06-17  Andrew MacLeod  <amacleod@redhat.com>

	* gcc-interface/cuintp.c: Do not include input.h, line-map.h or is-a.h.
	* gcc-interface/decl.c: Likewise.
	* gcc-interface/misc.c: Likewise.
	* gcc-interface/targtyps.c: Likewise.
	* gcc-interface/trans.c: Likewise.
	* gcc-interface/utils.c: Likewise.
	* gcc-interface/utils2.c: Likewise.

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

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

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

	* gcc-interface/misc.c: Remove duplicate include directives.
	* gcc-interface/trans.c: Likewise.
	* gcc-interface/utils.c: Likewise.

2015-06-08  Andrew MacLeod  <amacleod@redhat.com>

	* gcc-interface/cuintp.c : Adjust include files.
	* gcc-interface/decl.c : Likewise.
	* gcc-interface/misc.c : Likewise.
	* gcc-interface/targtyps.c : Likewise.
	* gcc-interface/trans.c : Likewise.
	* gcc-interface/utils.c : Likewise.
	* gcc-interface/utils2.c : Likewise.

2015-06-08  John Marino  <gnugcc@marino.st>

	* a-intnam-dragonfly.ads: New.
	* s-osinte-dragonfly.adb: Likewise.
	* s-osinte-dragonfly.ads: Likewise.
	* system-dragonfly-x86_64.ads: Likewise.
	* adaint.c: Add BSD macros.
	* cstreams.c: Likewise.
	* gsocket.h: Likewise.
	* link.c: Likewise.
	* socket.c: Likewise.
	* env.c: Add __DragonFly__, remove __FreeBSD__ macro.
	* init.c: Add __DragonFly__, change __gnat_install_handler
	prototype from empty to void.
	* initialize.c: Add __DragonFly__.
	* sysdep.c: Likewise.
	* s-osinte-freebsd.adb: Use __get_errno instead of __error.
	* tracebak.c: Set unwinder for i386 BSD.
	* gcc-interface/Makefile.in: Add x86_64 DragonFly, tweak
	x86_64 FreeBSD and x86 FreeBSD.

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

	* gcc-interface/utils.c (note_types_used_by_globals): Tweak comment.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Likewise.

2015-06-05  Aldy Hernandez  <aldyh@redhat.com>

	* gcc-interface/gigi.h (note_types_used_by_globals): Rename from
	gnat_write_global_declarations.
	* gcc-interface/misc.c (gnat_parse_file): Call
	note_types_used_by_globals.
	Remove LANG_HOOKS_WRITE_GLOBALS.
	* gcc-interface/utils.c: Rename global_decls to type_decls.
	(gnat_write_global_declarations): Rename
	to note_types_used_by_globals.
	Remove call to finalize_compilation_unit.
	Remove call to debug_hooks->global_decl for globals.
	(gnat_pushdecls): Only insert into type_decls if TYPE_DECL.

2015-06-04  Andrew MacLeod  <amacleod@redhat.com>

	* gcc-interface/cuintp.c: Adjust includes for restructured coretypes.h.
	* gcc-interface/decl.c: Likewise.
	* gcc-interface/misc.c: Likewise.
	* gcc-interface/targtyps.c: Likewise.
	* gcc-interface/trans.c: Likewise.
	* gcc-interface/utils.c: Likewise.
	* gcc-interface/utils2.c: Likewise.

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

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

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

	* gcc-interface/utils.c (copy_type): Also set TYPE_CANONICAL.

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

	* gcc-interface/trans.c (gnat_to_gnu) <N_Simple_Return_Statement>: Fix
	typo in latest change.

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

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

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

	* gcc-interface/utils.c (scale_by_factor_of): When handling a function
	call expression, process the corresponding function body.  Also handle
	potential addends.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity): Replace pointer types with
	references ones for functions that return references.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Incomplete_Type>: For a
	definition of a type coming from a limited_with, get to the full view
	if it is not in the main code unit.

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

	* gcc-interface/utils.c (create_var_decl_1): If an assembler name is
	specified, let the target mangle it before settting.
	(create_subprog_decl): Likewise and move this treatment last.

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

	* gcc-interface/lang-specs.h (TARGET_VXWORKS_RTP): Move substitution to
	before first -gnatez switch.  Simplify and add trailing space.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: If the
	record has a parent field and a representation clause, make sure that
	it is properly aligned.

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

	* gcc-interface/trans.c (lvalue_required_p) <N_Indexed_Component>: Deal
	with character and enumeration literals as index values.

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

	* gcc-interface/gigi.h (build_simple_component_ref): Declare.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Deal with
	address clause on aliased object with unconstrained nominal subtype.
	Mark the aligning variable as artificial, do not convert the address
	expression immediately but mark it as constant instead.
	* gcc-interface/utils.c (convert): If the target type contains a
	template, be prepared for an empty array.
	(maybe_unconstrained_array): Likewise.
	* gcc-interface/utils2.c (known_alignment) <POINTER_PLUS_EXPR>: Deal
	with the pattern built for aligning types.
	<INTEGER_CST>: Do not cap the value at BIGGEST_ALIGNMENT.
	(build_simple_component_ref): Make public.
	If the base object is a constructor that contains a template, fold the
	result field by field.

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

	* s-oscons-tmplt.c: Add explicit tests for Android alongside Linux.

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

	* adaint.c: Test for __linux__ instead of linux and __sun__ instead
	of sun.  Add missing leading underscore to AIX.  Remove #elif 0.
	* adaint.h: Likewise.
	* cio.c: Likewise.
	* cstreams.c: Likewise.
	* env.c: Likewise.
	* gsocket.h: Likewise.
	* init.c: Likewise.  Test for __i386__ instead of i386.
	* link.c: Likewise.
	* s-oscons-tmplt.c: Likewise.
	* sysdep.c: Likewise.
	* terminals.c: Likewise.  Use BSD symbol instead of FREEBSD.
	* tracebak.c: Likewise.  Test for __sparc__ instead of sparc.

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

	* gcc-interface/utils.c (max_size) <tcc_binary>: Add special code to
	deal with the subtraction of a "negative" value in an unsigned type.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Do
	not error out on a return type which has a size that overflows if the
	return is done by invisible reference.

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

	* gcc-interface/utils.c (gnat_pushdecl): Reunify the handling of array
	and pointer types wrt DECL_ORIGINAL_TYPE and adjust left and right.

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

	* gcc-interface/gigi.h (gnat_stabilize_reference): Adjust.
	(rewrite_fn): Remove third parameter.
	(type_is_padding_self_referential): New inline predicate.
	(return_type_with_variable_size_p): Likewise.
	* gcc-interface/decl.c (allocatable_size_p): More around.
	(cannot_be_superflat_p): Rename into...
	(cannot_be_superflat ): ...this.
	(initial_value_needs_conversion): New predicate.
	(gnat_to_gnu_entity): Invoke type_is_padding_self_referential,
	initial_value_needs_conversion and adjust to above renaming.
	For a renaming, force the materialization if the inner expression
	is compound.  Adjust calls to elaborate_reference and build a
	compound expression if needed.
	(struct er_dat): Add N field.
	(elaborate_reference_1): Remove N parameter and adjust.
	(elaborate_reference): Add INIT parameter and pass it in the call to
	gnat_rewrite_reference.  Adjust initial expression.
	* gcc-interface/trans.c (Call_to_gnu): Treat renamings the same way as
	regular object declarations when it comes to creating a temporary.
	Adjust call to gnat_stabilize_reference and build a compound expression
 	if needed.  Invoke return_type_with_variable_size_p.
	(gnat_to_gnu): Invoke type_is_padding_self_referential.  In case #4,
	return a call to a function unmodified if it returns with variable size
 	and is also the initial expression in an object declaration.
	* gcc-interface/utils2.c (build_binary_op) <INIT_EXPR>: Use the RHS'
	type if it is a call to a function that returns with variable size.
	(build_unary_op): Invoke type_is_padding_self_referential.
	(gnat_stabilize_reference_1): Remove N parameter and adjust.
	(gnat_stabilize_reference): Add INIT parameter and pass it in the call
	to gnat_rewrite_reference.
	(gnat_rewrite_reference):  Remove N, add INIT parameter and adjust.
	<COMPOUND_EXPR>: New case.

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

	* sem_ch3.adb (Is_Visible_Component): Component is visible
	in a derived type if inherited through an ancestor that has a
	partial view of the original type holding the component, if the
	full view of that original type is in scope.
	* sem_util.ads (Get_Body_From_Stub): Works for all kinds of stubs.

2015-05-28  Bob Duff  <duff@adacore.com>

	* sem_util.adb (Requires_Transient_Scope): For definite untagged
	subtypes, we should never have to use the secondary stack. This moves
	toward that goal. But there are still cases that don't work.
	Here, we move the check for Is_Definite first, but add a
	special-purpose check for Has_Discrim_Dep_Array.

2015-05-28  Bob Duff  <duff@adacore.com>

	* sem_util.adb (Requires_Transient_Scope): Avoid returning
	function results on the secondary stack in so many cases.

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

	* sem_util.adb (Wrong_Type): In any instance, do not emit error
	if type of expression is the partial view of the expected type.

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

	* sem_res.adb (Resolve_Actuals): a)  The replacement of formal
	names in named associations only needs to be done within an
	instance, on a call to a primitive of a formal derived type,
	where the actual subprogram may have different formal names than
	those of the primitive operation of the formal type.
	b) Defaulted parameters must be taken into account when obtaining
	the names of the formals of the actual subprogram being called.

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

	* sem_ch13.adb, sem_disp.ads: Minor reformatting.

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

	* sem_util.adb (Set_Debug_Info_Needed): For a private type
	whose full view is itself a derived private type, set flag on
	underlying full view as well, for proper gdb display.

2015-05-28  Bob Duff  <duff@adacore.com>

	* exp_tss.ads: Minor comment fix.
	* exp_ch3.adb (Build_Array_Init_Proc, Build_Record_Init_Proc):
	Inline init_procs when the type has controlled parts. Remove
	obsolete comments about those init_procs -- init_procs for
	such types are no longer complex. A typical init_proc just
	initializes the 'Tag field, and calls the parent init_proc
	(e.g. for Limited_Controlled), which calls the grandparent
	(for Root_Controlled), which does nothing. This all boils down
	to one instruction when inlined.
	* exp_ch7.adb (Create_Finalizer): Inline the finalizer.

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

	* sem_ch4.adb (Analyze_Selected_Component): If the type to use
	is a derived type and is a generic actual, the selected component
	appears within an instance body, and the check over the type
	has failed, examine ancestor types for the desired component.
	(Find_Component_In_Instance): If record type is a derived type,
	examine all ancestors in order to locate desired component.

2015-05-27  H.J. Lu  <hongjiu.lu@intel.com>

	* gcc-interface/Makefile.in (TOOLS_LIBS): Add @NO_PIE_FLAG@.

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

	* gcc-interface/trans.c (elaborate_all_entities): Do not elaborate an
	incomplete type coming from a limited_with and whose non-limited view
	comes from the main unit.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Move down
	code applying atomic checks to the object.

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

	* sem_aux.adb: Minor rewording.

2015-05-27  Bob Duff  <duff@adacore.com>

	* exp_prag.adb (Expand_Pragma_Abort_Defer): Make
	pragma Abort_Defer do nothing if Abort_Allowed is False.

2015-05-27  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch9.adb, sem_util.adb, sem_util.ads, s-stposu.adb, s-spsufi.ads,
	sem_elab.ads, g-comlin.ads, errout.ads, exp_ch6.adb, sem_ch4.adb,
	opt.ads, s-bignum.adb, output.ads, sem_ch13.adb, erroutc.ads,
	sem_disp.ads, exp_ch3.adb: Minor fixes of duplicate words in comments.

2015-05-27  Doug Rupp  <rupp@adacore.com>

	* adaint.c (__gnat_tmp_name) [vxworks]: Robustify and use for rtp as
	well as kernel.

2015-05-27  Pierre-Marie de Rodat  <derodat@adacore.com>

	* par_sco.adb (Process_Decision): Store sloc to
	condition/pragmas SCOs associations into a temporary table before
	moving them to the SCO_Raw_Hash_Table so that we can back them
	out just like we do for SCO entries that are simple decisions
	in an expression context.

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

	* sem_ch6.adb (Process_Formals): A non-private formal type that
	is a limited view does not have a list of private dependents.

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

	* exp_ch5.adb (Expand_N_Case_Statement): If the expression in
	the case statement is a compile-time known value, we look for a
	corresponding alternative to optimize the case statement into a
	single case. If the type has a static predicate and the expression
	does not satisfy the predicate, there is no legal alternative and
	this optimization is not applicable.  Excecution is erroneous,
	or else if assertions are enabled, an exception will be raised
	earlier, at the point the expression is elaborated.

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

	* sem_elab.adb (Check_Internal_Call_Continue): Suppress
	warning on Finalize, Adjust, or Initialize if type involved has
	Warnings_Off set.

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

	* sem_aux.adb, sem_aux.ads (First_Discriminant): Return empty when
	applied to a type with no known discriminants.

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

	* errout.ads, sem_ch4.adb, sem_ch6.adb: Minor reformatting.

2015-05-26  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_A_Call): In the case where we're
	calling something in an instance of a generic package that is
	within this same unit (as the call), make sure we treat it
	as a call to an entity within the same unit. That is, call
	Check_Internal_Call, rather than putting "Elaborate_All(X)"
	on X, which would necessarily result in an elaboration cycle in
	static-elaboration mode.

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

	* freeze.ads (Is_Atomic_VFA_Aggregate): Adjust profile.
	* freeze.adb (Is_Atomic_VFA_Aggregate): Change Entity
	parameter into Node parameter and remove Type parameter.
	Look at Is_Atomic_Or_VFA both on the type and on the object.
	(Freeze_Entity): Adjust call to Is_Atomic_VFA_Aggregate.
	* exp_aggr.adb (Expand_Record_Aggregate): Likewise.
	(Process_Atomic_Independent_Shared_Volatile): Remove code
	propagating Atomic or VFA from object to locally-defined type.

2015-05-26  Bob Duff  <duff@adacore.com>

	* exp_ch7.adb: Minor comment fix.

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

	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Min/Attr_Max>: Do not
	bother about NaN's if Machine_Overflows is true.

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

	* gcc-interface/trans.c (gnat_to_gnu) <N_Object_Declaration>: Really
	force evaluation of the expression, if any, when the object has its
	elaboration delayed.  Do not create a variable at global level.

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

	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Machine>: Do not apply
	extra-precision trick to literals.  Build SAVE_EXPR manually.

	* gcc-interface/misc.c (enumerate_modes): Add bypass for x86/x86-64.

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

	* gcc-interface/ada-tree.h (DECL_GLOBAL_NONCONSTANT_RENAMING_P): Delete
	(DECL_RENAMED_OBJECT): Adjust comment.
	* gcc-interface/gigi.h (record_global_nonconstant_renaming): Delete.
	(invalidate_global_nonconstant_renamings): Likewise.
	(gnat_constant_reference_p): Likewise.
	(rewrite_fn): New function type.
	(gnat_rewrite_reference): Declare.
	(call_is_atomic_load): New inline predicate.
	* gcc-interface/decl.c (elaborate_reference_1): New function.
	(elaborate_reference): Likewise.
	(gnat_to_gnu_entity): Call elaborate_reference to elaborate renamings
	and simplify associated code.  Set const_flag to true consistently in
 	conjunction with used_by_ref.
	* gcc-interface/trans.c (Identifier_to_gnu): Always replace renaming
	pointers by renamed objects.
	(outer_atomic_access_required_p): Deal with renamings.
	(Compilation_Unit_to_gnu): Do not call
	invalidate_global_nonconstant_renamings.
	(gnat_to_gnu) <N_Object_Renaming_Declaration>: Adjust comment.
	(gnat_gimplify_expr): Deal with atomic loads.
	* gcc-interface/utils.c (global_nonconstant_renamings): Delete.
	(destroy_gnat_utils): Do not call
	invalidate_global_nonconstant_renamings.
	(record_global_nonconstant_renaming): Delete.
	(invalidate_global_nonconstant_renamings): Likewise.
	* gcc-interface/utils2.c (call_is_atomic_load): Move to gigi.h.
	(build_load_modify_store): Build a copy of the destination.
	(gnat_stabilize_reference_1): Adjust.
	(gnat_stabilize_reference): Call gnat_stabilize_reference_1 through
	gnat_rewrite_reference and move bulk of code to...
	(gnat_rewrite_reference): ...here.  New global function.
	(gnat_constant_reference_p): Delete.

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

	* gcc-interface/gigi.h (gnat_stabilize_reference): Adjust prototype.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not rely on const_flag
 	to detect constant renamings.  Be prepared for specific pattern of
	renamed object based on function calls.  Create a constant object
	for the renaming of a NULL_EXPR or of a CONSTRUCTOR.  Adjust calls
	to gnat_stabilize_reference and tidy up.  Remove redundant tests.
	(elaborate_expression_1): Remove obsolete test and tidy up.
	* gcc-interface/trans.c (Call_to_gnu): Do not stabilize In/Out or Out
	parameters passed by reference.
	(gnat_to_gnu) <N_Selected_Component>: Remove redundant protection again
	side-effects.
	Use gnat_protect_expr instead of gnat_stabilize_reference for general
	protection against side-effects.
	* gcc-interface/utils2.c (gnat_stable_expr_p): New predicate.
	(gnat_save_expr): Invoke it.
	(gnat_protect_expr): Likewise.
	(gnat_stabilize_reference_1): Likewise.  Remove useless propagation
	of TREE_THIS_NOTRAP.
	(gnat_stabilize_reference): Remove parameter and adjust throughout.
	Delete ADDR_EXDR, COMPOUND_EXPR and CONSTRUCTOR cases.
	Restrict CALL_EXPR case to atomic loads and tweak ERROR_MARK case.

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

	* sinfo.ads: Minor reformatting.
	* sem_aux.ads: Clarify use of First_Discriminant.
	* sem_ch4.adb (Analyze_Explicit_Dereference): The use of a limited
	view is replaced with the non-limited view in an instance body,
	where the enclosing unit must have a regular with_clause on the
	relevant unit.
	* sem_ch12.adb (Install_Body): Freeze instantation after its
	body. Remove useless freeze nodes for incomplete actuals to
	prevent multiple generation of internal operations.
	(Instantiate_Package_Body): Set sloc of body appropriately when
	there are incomplete actuals and the instance body is placed in
	the body of the enclosing unit.
	* errout.ads: Consistent punctuation, better alignment and trivial
	typos in comments.
	* err_vars.ads: Fix typo.

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

	* sem_ch8.adb (Analyze_Object_Renaming): Lift restriction on
	components of Volatile_Full_Access objects.

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

	* sem_ch6.adb (Is_Non_Overriding_Operation,
	Get_Generic_Parent_Type): Handle properly the case of a derived
	scalar type by using the first subtype rather than its generated
	anonymous base type.

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

	* einfo.adb (Write_Field17_Name): Move E_Incomplete_Subtype
	case to...
	(Write_Field19_Name): ...here.

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

	* sem_ch13.adb: sem_ch13.adb (Add_Predicates): Undo analysis
	of original expression in ASIS mode: does not solve the ASIS
	problem of a usable type information, and crashes the back-end
	when performing type annotations.

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

	* sem_disp.adb (Inherited_Subprograms): Add One_Only parameter.
	(Is_Overriding_Subprogram): Use One_Only_Parameter.
	* sem_disp.ads (Inherited_Subprograms): Add One_Only parameter.

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

	* exp_prag.adb, sem_ch3.adb, sem_ch5.adb, exp_ch11.adb, ghost.adb,
	exp_ch6.adb, sem_ch6.adb, sem_ch8.adb, sem_ch11.adb, sem_ch13.adb,
	exp_ch3.adb: Minor reformatting.

2015-05-26  Bob Duff  <duff@adacore.com>

	* treepr.adb: Minor improvement to debugging routines (pp, pn)
	robustness.  Rearrange the code so passing a nonexistent Node_Id
	prints "No such node" rather than crashing, and causing gdb to
	generate confusing messages.

2015-05-26  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb: Minor typo fix.

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

	* sem_aux.adb (Subprogram_Body_Entity): Deal with subprogram stubs.

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

	* exp_ch3.adb (Expand_N_Full_Type_Declaration): Capture, set and
	restore the Ghost mode.
	(Expand_N_Object_Declaration): Capture, set and restore the Ghost mode.
	(Freeze_Type): Update the call to Set_Ghost_Mode.
	(Restore_Globals): New routine.
	* exp_ch5.adb Add with and use clauses for Ghost.
	(Expand_N_Assignment_Statement): Capture, set and restore the
	Ghost mode.
	(Restore_Globals): New routine.
	* exp_ch6.adb Add with and use clauses for Ghost.
	(Expand_N_Procedure_Call_Statement): Capture, set and
	restore the Ghost mode.
	(Expand_N_Subprogram_Body):
	Code cleanup. Capture, set and restore the Ghost mode.
	(Expand_N_Subprogram_Declaration): Capture, set and restore the
	Ghost mode.
	(Restore_Globals): New routine.
	* exp_ch7.adb Add with and use clauses for Ghost.
	(Expand_N_Package_Body): Capture, set and restore the Ghost mode.
	(Expand_N_Package_Declaration): Capture, set and restore the
	Ghost mode.
	(Wrap_HSS_In_Block): Create a proper identifier for the block.
	* exp_ch8.adb Add with and use clauses for Ghost.
	(Expand_N_Exception_Renaming_Declaration): Code
	cleanup. Capture, set and restore the Ghost mode.
	(Expand_N_Object_Renaming_Declaration): Capture, set and restore
	the Ghost mode.
	(Expand_N_Package_Renaming_Declaration): Capture, set and restore the
	Ghost mode.
	(Expand_N_Subprogram_Renaming_Declaration): Capture, set and
	restore the Ghost mode.
	* exp_ch11.adb (Expand_N_Exception_Declaration): Code
	cleanup. Capture, set and restore the Ghost mode.
	* exp_disp.adb (Make_DT): Update the call to Set_Ghost_Mode. Do
	not initialize the dispatch table slot of a Ghost subprogram.
	* exp_prag.adb Add with and use clauses for Ghost.
	(Expand_Pragma_Check): Capture, set and restore the Ghost mode.
	(Expand_Pragma_Contract_Cases): Capture, set and restore the
	Ghost mode.
	(Expand_Pragma_Initial_Condition): Capture, set and
	restore the Ghost mode.
	(Expand_Pragma_Loop_Variant): Capture,
	set and restore the Ghost mode.
	(Restore_Globals): New routine.
	* exp_util.adb Add with and use clauses for Ghost.
	(Make_Predicate_Call): Code cleanup. Capture, set and restore
	the Ghost mode.
	(Restore_Globals): New routine.
	* freeze.adb (Freeze_Entity): Code cleanup. Update the call
	to Set_Ghost_Mode.
	* ghost.adb Add with and use clause for Sem_Prag.
	(Check_Ghost_Completion): Code cleanup.
	(Check_Ghost_Overriding): New routine.
	(Check_Ghost_Policy): Code cleanup.
	(Ghost_Entity): New routine.
	(Is_Ghost_Declaration): Removed.
	(Is_Ghost_Statement_Or_Pragma): Removed.
	(Is_OK_Context): Reimplemented.
	(Is_OK_Declaration): New routine.
	(Is_OK_Pragma): New routine.
	(Is_OK_Statement): New routine.
	(Mark_Full_View_As_Ghost): New routine.
	(Mark_Pragma_As_Ghost): New routine.
	(Mark_Renaming_As_Ghost): New routine.
	(Propagate_Ignored_Ghost_Code): Update the comment on usage.
	(Set_From_Entity): New routine.
	(Set_From_Policy): New routine.
	(Set_Ghost_Mode): This routine now handles pragmas and freeze nodes.
	(Set_Ghost_Mode_For_Freeze): Removed.
	(Set_Ghost_Mode_From_Entity): New routine.
	(Set_Ghost_Mode_From_Policy): Removed.
	* ghost.ads (Check_Ghost_Overriding): New routine.
	(Mark_Full_View_As_Ghost): New routine.
	(Mark_Pragma_As_Ghost): New routine.
	(Mark_Renaming_As_Ghost): New routine.
	(Set_Ghost_Mode): Update the parameter profile. Update the
	comment on usage.
	(Set_Ghost_Mode_For_Freeze): Removed.
	(Set_Ghost_Mode_From_Entity): New routine.
	* sem_ch3.adb (Analyze_Full_Type_Declaration):
	Capture and restore the Ghost mode. Mark a type
	as Ghost regardless of whether it comes from source.
	(Analyze_Incomplete_Type_Decl): Capture, set and restore the
	Ghost mode.
	(Analyze_Number_Declaration): Capture and restore the Ghost mode.
	(Analyze_Object_Declaration): Capture and restore the Ghost mode.
	(Analyze_Private_Extension_Declaration): Capture and
	restore the Ghost mode.
	(Analyze_Subtype_Declaration): Capture and restore the Ghost mode.
	(Process_Full_View): The full view inherits all Ghost-related
	attributes from the private view.
	(Restore_Globals): New routine.
	* sem_ch5.adb (Analyze_Assignment): Capture and restore the
	Ghost mode.
	(Restore_Globals): New routine.
	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration):
	Code cleanup. Capture and restore the Ghost mode. Mark a
	subprogram as Ghost regarless of whether it comes from source.
	(Analyze_Procedure_Call): Capture and restore the Ghost mode.
	(Analyze_Subprogram_Body_Helper): Capture and restore the Ghost mode.
	(Analyze_Subprogram_Declaration): Capture and restore the Ghost mode.
	(New_Overloaded_Entity): Ensure that a
	parent subprogram and an overriding subprogram have compatible
	Ghost policies.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Capture and restore
	the Ghost mode.
	(Analyze_Package_Declaration): Capture and
	restore the Ghost mode. Mark a package as Ghost when it is
	declared in a Ghost region.
	(Analyze_Private_Type_Declaration): Capture and restore the Ghost mode.
	(Restore_Globals): New routine.
	* sem_ch8.adb (Analyze_Exception_Renaming): Code
	reformatting. Capture and restore the Ghost mode. A renaming
	becomes Ghost when its name references a Ghost entity.
	(Analyze_Generic_Renaming): Capture and restore the Ghost mode. A
	renaming becomes Ghost when its name references a Ghost entity.
	(Analyze_Object_Renaming): Capture and restore the Ghost mode. A
	renaming becomes Ghost when its name references a Ghost entity.
	(Analyze_Package_Renaming): Capture and restore the Ghost mode. A
	renaming becomes Ghost when its name references a Ghost entity.
	(Analyze_Subprogram_Renaming): Capture and restore the Ghost
	mode. A renaming becomes Ghost when its name references a
	Ghost entity.
	* sem_ch11.adb (Analyze_Exception_Declaration): Capture, set
	and restore the Ghost mode.
	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Capture and
	restore the Ghost mode.
	(Analyze_Generic_Subprogram_Declaration):
	Capture and restore the Ghost mode.
	* sem_ch13.adb Add with and use clauses for Ghost.
	(Add_Invariant): New routine.
	(Add_Invariants): Factor out code.
	(Add_Predicate): New routine.
	(Add_Predicates): Factor out code.
	(Build_Invariant_Procedure_Declaration): Code cleanup. Capture,
	set and restore the Ghost mode.
	(Build_Invariant_Procedure): Code cleanup.
	(Build_Predicate_Functions): Capture, set and
	restore the Ghost mode. Mark the generated functions as Ghost.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
	Capture, set and restore the Ghost mode.
	(Analyze_External_Property_In_Decl_Part): Capture, set and restore
	the Ghost mode.
	(Analyze_Initial_Condition_In_Decl_Part):
	Capture, set and restore the Ghost mode.
	(Analyze_Pragma):
	Code cleanup. Capture, set and restore the Ghost mode. Flag
	pragmas Linker_Section, No_Return, Unmodified, Unreferenced and
	Unreferenced_Objects as illegal when it applies to both Ghost
	and living arguments. Pragma Ghost cannot apply to synchronized
	objects.
	(Check_Kind): Moved to the spec of Sem_Prag.
	(Process_Inline): Flag the pragma as illegal when it applies to
	both Ghost and living arguments.
	(Restore_Globals): New routine.
	* sem_prag.ads Add pragma Default_Initial_Condition
	to table Assertion_Expression_Pragma. Add new table
	Is_Aspect_Specifying_Pragma.
	(Check_Kind): Moved from body of Sem_Prag.
	* sem_util.adb Add with and use clauses for Ghost.
	(Build_Default_Init_Cond_Procedure_Body): Capture, set and restore
	the Ghost mode.
	(Build_Default_Init_Cond_Procedure_Declaration):
	Capture, set and restore the Ghost mode. Mark the default
	initial condition procedure as Ghost when it is declared
	in a Ghost region.
	(Is_Renaming_Declaration): New routine.
	(Policy_In_List): Account for the single argument version of
	Check_Pragma.
	* sem_util.ads (Is_Renaming_Declaration): New routine.
	* sinfo.adb (Is_Ghost_Pragma): New routine.
	(Set_Is_Ghost_Pragma): New routine.
	* sinfo.ads New attribute Is_Ghost_Pragma.
	(Is_Ghost_Pragma): New routine along with pragma Inline.
	(Set_Is_Ghost_Pragma): New routine along with pragma Inline.

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

	* sem_ch3.adb, sem_aux.adb, sem_aux.ads, exp_ch6.adb, sprint.adb:
	Minor reformatting.

2015-05-26  Gary Dismukes  <dismukes@adacore.com>

	* gnat1drv.adb, targparm.adb, targparm.ads, restrict.adb: Minor
	reformatting and typo fixes in comments.

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

	* sem_ch7.adb (Swap_Private_Dependets): Set visibility of
	the two views of a private dependent in two separate steps,
	to ensure proper visibility in parent units analyzed for inlining.

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

	* sem_aux.adb, sem_aux.ads (Get_Low_Bound): Use Type_Low_Bound.
	(Package_Body, Package_Spec): New queries moved
	here from GNATprove.
	(Package_Specification): Simplify query to remove use of loop.
	* sem_util.adb, sem_util.ads (Enclosing_Declaration,
	Enclosing_Package_Or_Subprogram, Is_Attribute_Update): New
	queries moved here from GNATprove.

2015-05-26  Bob Duff  <duff@adacore.com>

	* einfo.adb, einfo.ads, sprint.adb, lib-xref.ads: Minor cleanup: Remove
	obsolete Entity_Kinds E_String_Type and E_String_Subtype. Update
	redundant assertions.

2015-05-26  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb, sem_util.ads, sem_ch13.adb: Minor typo fixes.

2015-05-26  Doug Rupp  <rupp@adacore.com>

	* init.c [vxworks]: Refine previous checkin.

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

	* exp_ch4.adb (Wrap_MA): New function.
	(Expand_N_Op_Expon): Use Wrap_MA.

2015-05-26  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
	Do not use secondary stack to return limited records with
	defaulted discriminants. This is an efficiency improvement.
	* exp_ch6.adb, exp_dist.adb, sem_attr.adb, sem_aux.adb, sem_aux.ads,
	sem_ch12.adb, sem_ch3.adb, sem_ch4.adb, sem_ch6.adb, sem_ch7.adb,
	sem_util.adb: Change the sense of Is_Indefinite_Subtype to be
	Is_Definite_Subtype. This is an improvement to readability (the double
	negative in "not Is_Indefinite_Subtype" was slightly confusing). Also
	disallow passing non-[sub]type entities, an unnecessary and slightly
	bug-prone flexibility.

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

	* sem_aggr.adb (Resolve_Array_Aggregate): Defend against
	bad bounds.
	* debug.adb: Document -gnatd.k.
	* erroutc.adb (Set_Msg_Insertion_Line_Number): Implement -gnatd.k.

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

	* gnat1drv.adb (Gnat1drv): Provide new arguments for
	Get_Target_Parameters.
	* restrict.adb (Set_Restriction_No_Specification_Of_Aspect):
	new procedure.
	(Set_Restriction_No_Use_Of_Attribute): new procedure.
	* restrict.ads (Set_Restriction_No_Specification_Of_Aspect):
	new procedure.
	(Set_Restriction_No_Use_Of_Attribute): new procedure.
	* s-rident.ads (Integer_Parameter_Restrictions): New subtype.
	* targparm.adb (Get_Target_Parameters): Allow new restriction
	pragmas No_Specification_Of_Aspect No_Use_Of_Attribute
	No_Use_Of_Pragma.
	* targparm.ads: New parameters for Get_Target_Parameters.
	* tbuild.adb (Set_NOD): New name for Set_RND.
	(Set_NSA): New procedure.
	(Set_NUA): New procedure.
	(Set_NUP): New procedure.
	* tbuild.ads (Make_SC): Minor reformatting.
	(Set_NOD): New name for Set_RND.
	(Set_NSA, Set_NUA, Set_NUP): New procedure.

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

	* a-stwise.adb (Find_Token): If source'first is not positive,
	an exception must be raised, as specified by RM 2005 A.4.3
	(68/1). This must be checked explicitly, given that run-time
	files are normally compiled without constraint checks.
	* a-stzsea.adb (Find_Token): Ditto.

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

	* sem_util.ads sem_util.adb (Is_Current_Instance):  New predicate
	to fully implement RM 8.6 (17/3). which earlier only applied
	to synchronized types. Used to preanalyze aspects that include
	current instances of types, such as Predicate and Invariant.
	* sem_res.adb (Resolve_Entity_Name): Use Is_Current_Instance.
	* sem_ch13.adb (Add_Predicates): In ASIS mode, preserve original
	expression of aspect and analyze it to provide proper type
	information.

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

	* rtsfind.ads: Add entries for RE_Exn[_Long]_Float.
	* s-exnllf.adb (Exn_Float): New function.
	(Exn_Long_Float): New function.
	(Exn_Long_Long_Float): Rewritten interface.
	(Exp): New name for what used to be Exn_Long_Long_Float.
	* s-exnllf.ads (Exn_Float): New function.
	(Exn_Long_Float): New function.

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

	* sem_ch8.adb (Find_Selected_Component): Do not emit an error
	on a selected component when the prefix is a type name that is
	a Current_Instance.
	* einfo.ads: Minor grammar fix.

2015-05-26  Doug Rupp  <rupp@adacore.com>

	* init.c [vxworks] (sysLib.h): Only for x86.

2015-05-26  Doug Rupp  <rupp@adacore.com>

	* init-vxsim.c (CPU): define as __VXSIM_CPU__
	* sigtramp-vxworks-vxsim.c (CPU): Likewise.
	sigtramp-vxworks-target.inc: Add check for SIMLINUX.
	* sigtramp.h: Likewise.

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

	* sem_aux.adb, sem_disp.adb, sem_util.ads: Add comment.
	* sem_util.adb: Minor reformatting

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

	* inline.adb (Has_Initialized_Type): Adapt to new names.
	* sem_aux.adb, sem_aux.ads (Get_Low_Bound, Number_Components,
	Subprogram_Body, Subprogram_Body_Entity, Subprogram_Spec,
	Subprogram_Specification): New query functions used in GNATprove.
	* sem_disp.adb, sem_disp.ads (Is_Overriding_Subprogram): New
	query functions used in GNATprove.
	* sem_util.adb, sem_util.adso (Enclosing_Lib_Unit_Node,
	Get_Cursor_Type, Get_Return_Object, Get_User_Defined_Eq,
	Is_Double_Precision_Floating_Point_Type,
	Is_Single_Precision_Floating_Point_Type): New query functions
	used in GNATprove.

2015-05-26  Bob Duff  <duff@adacore.com>

	* s-rpc.ads (Partition_ID): Increase maximum Partition_ID to
	some huge number.
	* a-except-2005.adb, a-except-2005.ads, a-except.adb,
	a-except.ads, a-exexda.adb, a-exstat.adb: Minor comment fixes.

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

	* sinfo.adb: Minor comment addition.
	* einfo.adb: Minor whitespace and punctuation fix.
	* sem_util.adb: Minor editing of comments.

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

	* sem_ch7.adb (Install_Private_Declarations,
	Swap_Private_Dependents): Ensure that both views of the dependent
	subtype are immediately visible if we are within their scope. This
	may be needed when a procedure body is both the parent of an
	instantiated child unit, and is itself used to inline a local
	function.

2015-05-26  Gary Dismukes  <dismukes@adacore.com>

	* exp_prag.adb, gnat1drv.adb: Minor reformatting.

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

	* exp_ch4.adb (Expand_N_Indexed_Component): In the circuit
	detecting exceptions to the rewriting, deal with implicit
	dereferences in the selected component case.

2015-05-26  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Analyze_One_Aspect): Do not
	require the expression of the Disable_Controlled aspect to be
	static in a generic template, because 'Enabled is not known
	until the instance.

2015-05-26  Doug Rupp  <rupp@adacore.com>

	* init-vxsim.c: New file for vxsim ZCX
	* sigtramp-vxworks-vxsim.c: Likewise.
	* sigtramp-vxworks.c: Factor out target dependent bits into ...
	* sigtramp-vxworks-target.inc: ... here.
	* sigtramp.h: Add vxsim zcx protos.
	* init.c [vxworks...] (sysLib.h): Include.
	(__gnat_map_signal): Make global.
	 [...i386] (__gnat_error_handler): Call __gnat_vxsim_error_handler if
	on vxsim.
	[...i386] (__gnat_install_handler): Test if on vxsim.

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

	* sem_ch5.adb (Analyze_Iterator_Specification): For an element
	iterator over an array, if the component is aliased, the loop
	variable is aliased as well.

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

	* exp_ch6.adb (Expand_Actuals): For a function call with in-out
	parameters that is rewritten as an expression_with_actions,
	we preserve the original function call node for further use by
	the caller (typically Expand_Call). In the presence of validity
	checks, that function call, though it is labelled Analyzed to
	prevent an infinite recursion, may be rewritten as a temporary
	by Remove_Side_Effects.  Ensure that the caller has access to
	the original function call to continue expansion.
	* atree.ads: Minor typo in comment.

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

	* sem_util.adb (Check_Function_Writable_Actuals):
	Add missing support to check the violation of writable actuals
	in array aggregates that have a nonstatic range.

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

	* exp_ch6.adb (Process_Contract_Cases_For): Update the call to
	Expand_Pragma_Contract_Cases.
	* exp_prag.ads, exp_prag.adb (Expand_Contract_Cases): Rename to
	Expand_Pragma_Contract_Cases.
	* sem_ch13.adb (Add_Invariants): Use the original aspect name
	when creating the arguments of pragma Check. This ensures that
	'Class is properly recognized and handled.

2015-05-26  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb: Minor adjustments.
	(Adjust_Global_Switches): Disable some related flags in CodePeer mode.
	* sem_ch4.adb (Has_Arbitrary_Evaluation_Order,
	Stop_Subtree_Climbind): Code cleanup.
	* einfo.ads: Minor comment change.

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

	* sem_aggr.adb (Resolve_Aggregate, Resolve_Extension_Aggregate):
	Code cleanup.
	* sem_ch3.adb (Build_Derived_Record_Type,
	Record_Type_Declaration): Code cleanup.
	* sem_ch4.adb (Has_Arbitrary_Evaluation_Order,
	Stop_Subtree_Climbind): Tables which speed up the identification
	of dangerous calls to Ada 2012 functions with writable actuals
	(AI05-0144).
	(Analyze_Arithmetic_Op, Analyze_Call, Analyze_Comparison_Op,
	Analyze_Equality_Op, Analyze_Logical_Op, Analyze_Membership_Op,
	Analyze_Range): Code cleanup.
	(Is_Arbitrary_Evaluation_Order_Construct): Removed.
	(Check_Writable_Actuals): Code cleanup using the added tables.
	* sem_util.adb (Check_Function_Writable_Actuals): Return
	immediately if the node does not have the flag Check_Actuals
	set to True.

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

	* exp_ch6.adb (Add_Call_By_Copy_Code): Remove restrictive
	condition in the detection of the effects of Remove_Side_Effects.
	* exp_util.ads (Remove_Side_Effects): Add general and historical note.
	* exp_util.adb (Is_Name_Reference): New predicate.
	(Remove_Side_Effects): Use it in lieu of Is_Object_Reference
	in order to decide whether to use the renaming to capture the
	side effects of the subexpression.
	(Side_Effect_Free): Remove obsolete test.

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

	* aspects.ads, aspects.adb: Add aspect Disable_Controlled.
	* einfo.ads, einfo.adb (Disable_Controlled): New flag.
	(Is_Controlled_Active): New function.
	* exp_ch3.adb (Expand_Freeze_Record_Type): Use
	Is_Controlled_Active.
	* exp_util.adb (Needs_Finalization): Finalization not needed
	if Disable_Controlled set.
	* freeze.adb (Freeze_Array_Type): Do not set
	Has_Controlled_Component if the component has Disable_Controlled.
	(Freeze_Record_Type): ditto.
	* sem_ch13.adb (Decorate): Minor reformatting.
	(Analyze_Aspect_Specifications): Implement Disable_Controlled.
	* sem_ch3.adb (Analyze_Object_Declaration): Handle
	Disable_Controlled.
	(Array_Type_Declaration): ditto.
	(Build_Derived_Private_Type): ditto.
	(Build_Derived_Type): ditto.
	(Record_Type_Definition): ditto.
	* snames.ads-tmpl: Add Name_Disable_Controlled.

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

	* exp_ch6.adb (Expand_Actuals): Use a constant declaration instead
	of a renaming to capture the return value of a function call.
	(Expand_Simple_Function_Return): Call Remove_Side_Effects
	instead of removing side effects manually before the call to
	_Postconditions.

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

	* exp_ch4.adb (Expand_N_Op_Expon): Deal with problem of wrong
	order in calling Duplicate_Subexpr.
	* einfo.ads: Fix documentation of Object/Value size for scalar types.

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

	* exp_aggr.adb (Build_Array_Aggr_Code, Gen_Assign):
	If a component is default-initialized and its type has an
	invariant procedure, insert an invariant test after code for
	default-initialization of the component.

2015-05-26  Gary Dismukes  <dismukes@adacore.com>

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

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

	* exp_unst.adb, exp_unst.ads: Change to using Subps table index for
	making AREC entity names unique.

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

	* sem_cat.adb (Has_Stream_Attribute_Definition): If the type
	has aspect specifications, examine the corresponding list of
	representation items to determine whether there is a visible
	stream operation. The attribute definition clause generated from
	the aspect will be inserted at the freeze point of the type,
	which may be in the private part and not directly visible,
	but the aspect makes the operation available to a client.

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

	* sem_util.adb: Minor code reorganization.
	* sem_ch6.adb: Minor reformatting.

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

	* gcc-interface/utils.c (maybe_pad_type): Do not apply adjustment to
	original size for elementary types before issuing the size warning.

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

	* get_targ.adb (C_Get_Float_Words_BE): Adjust import name.
	(C_Get_Words_BE): Likewise.
	(C_Get_Bytes_BE): Likewise.
	(C_Get_Bits_BE): Likewise.
	(Width_From_Size): Remove superfluous space.
	* gcc-interface/targtyps.c (get_float_words_be): Rename into...
	(get_target_float_words_be): ...this.
	(get_words_be): Rename into...
	(get_target_words_be): ...this.
	(get_bytes_be): Rename into...
	(get_target_bytes_be): ...this.
	(get_bits_be): Rename into...
	(get_target_bits_be): ...this.
	* gcc-interface/gigi.h (standard_datatypes): Remove ADT_ptr_void_type.
	(ptr_void_type_node): Delete.
	(get_target_float_size): Likewise.
	(get_target_double_size): Likewise.
	(get_target_long_double_size): Likewise.
	(get_float_words_be): Likewise.
	(get_words_be): Likewise.
	(get_bytes_be): Likewise.
	(get_bits_be): Likewise.
	(get_target_float_words_be): Declare.
	(get_target_words_be): Likewise.
	(get_target_bytes_be): Likewise.
	(get_target_bits_be): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Replace ptr_void_type_node
	with ptr_type_node.
	(intrin_return_compatible_p): Likewise.
	* gcc-interface/trans.c (gigi): Likewise.
	* gcc-interface/utils2.c (maybe_wrap_malloc): Likewise.
	(maybe_wrap_free): Likewise.
	* gcc-interface/utils.c (maybe_pad_type): Remove superfluous space.
	* gcc-interface/misc.c (gnat_init): Do not set ptr_void_type_node.

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

	* gcc-interface/decl.c (elaborate_expression): Take a const string
	suffix instead of a tree.
	(elaborate_expression_1): Likewise.
	(elaborate_expression_2): Likewise.
	(gnat_to_gnu_entity): Adjust to above changes.
	(build_subst_list): Likewise.
	(get_entity_char): New static function.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Move around.
	<E_Exception>: Merge with E_Variable case.
	<E_Variable>: Remove 'object' label.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity): Minor tweak.
	* gcc-interface/trans.c (finalize_nrv_unc_r): Use CONSTRUCTOR_ELT.
	* gcc-interface/utils.c (convert): Likewise and simplify.
	(remove_conversions): Likewise.
	* gcc-interface/utils2.c (compare_fat_pointers): Likewise.
	(build_unary_op): Likewise and simplify.

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

	* gcc-interface/gigi.h (build_atomic_load): Adjust prototype.
	(build_atomic_store): Likewise.
	(build_load_modify_store): Declare.
	(VECTOR_TYPE_P): Delete.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Replace Is_Atomic with
	Is_Atomic_Or_VFA throughout.
	<E_Array_Type>: Build a variant of the XUA type instead of forcing
	TYPE_VOLATILE on it.
	<E_Array_Subtype>: Use the main variant of the base type.
	Do not force TYPE_VOLATILE on the type being built.
	<E_Record_Type>: Likewise.
	<E_Array_Subtype>: Likewise.
	<E_Subprogram_Type>: Rename local variable.
	Add Atomic qualifier in conjunction with Volatile on types if needed.
	Force BLKmode for by-ref types only at the end of the processing.
	Change qualifiers only after changing the mode of the type.  Set
	TYPE_UNIVERSAL_ALIASING_P on the type directly.
	(check_ok_for_atomic_type): Issue specific error message for VFA.
	(gnat_to_gnu_component_type): Replace Is_Atomic with
	Is_Atomic_Or_VFA throughout.
	* gcc-interface/misc.c (gnat_get_alias_set): Test
	TYPE_UNIVERSAL_ALIASING_P on the type directly.
	* gcc-interface/trans.c (lvalue_required_p): Replace Is_Atomic with
	Is_Atomic_Or_VFA throughout.  Add missing guard.
	(node_is_atomic): New predicate.
	(node_has_volatile_full_access): Likewise.
	(gnat_strip_type_conversion): New function.
	(outer_atomic_access_required_p): New predicate.
	(atomic_sync_required_p): Rename into...
	(atomic_access_required_p): ...this.  Add SYNC parameter, scan the
	parent node first and then look for the atomic setting.  Add support
	for Volatile_Full_Access.
	(Call_to_gnu): Add atomic_access and outer_atomic_access parameters
	and adjusts calls to above functions.  Use load-modify-store sequence
	for updates of In/Out and Out parameters if required, as well as for
	moving the result to the target if required.  Add couple of missing
	guards.
	(gnat_to_gnu): Adjust calls to above functions.
	<N_Object_Renaming_Declaration>: If the renamed object has side-effects
	evaluate only its address.
	<N_Assignment_Statement>: Adjust call to Call_to_gnu.  Use load-modify
	store sequence if required.
	<N_Function_Call>: Adjust call to Call_to_gnu.
	(extract_values): Adjust comment.
	* gcc-interface/utils2.c (build_atomic_load): Add SYNC parameter and
	use relaxed memory model if it is not set.
	(build_atomic_store): Likewise.
	(call_is_atomic_load): New predicate.
	(build_load_modify_store): New function.
	(build_binary_op) <MODIFY_EXPR>: Accept SAVE_EXPR on the LHS.
	(gnat_stabilize_reference) <CALL_EXPR>: Deal with atomic loads.

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

	* gcc-interface/ada-tree.h (DECL_RENAMING_GLOBAL_P): Rename into...
	(DECL_GLOBAL_NONCONSTANT_RENAMING_P): ...this.
	* gcc-interface/gigi.h (record_global_renaming_pointer): Delete.
	(invalidate_global_renaming_pointers): Likewise.
	(record_global_nonconstant_renaming): New.
	(invalidate_global_nonconstant_renamings): Likewise.
	(get_inner_constant_reference): Likewise.
	(gnat_constant_reference_p): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Adjust to above
	and register the renaming pointer only if the object is non-constant.
	(elaborate_expression_1): Call get_inner_constant_reference instead
	of get_inner_reference.
	* gcc-interface/trans.c (fold_constant_decl_in_expr): Minor tweak.
	(Identifier_to_gnu): Adjust to above and do not recheck the renamed
	object before substituting it.
	(Compilation_Unit_to_gnu): Adjust to above renaming.  Minor tweaks.
	(gnat_to_gnu) <N_Object_Renaming_Declaration>: Do not return the
	result at the global level.
	(N_Exception_Renaming_Declaration): Likewise.
	* gcc-interface/utils.c (global_renaming_pointers): Rename into...
	(global_nonconstant_renamings): ...this.
	(destroy_gnat_utils): Adjust to above renaming.
	(record_global_renaming_pointer): Rename into...
	(record_global_nonconstant_renaming): ...this.
	(invalidate_global_renaming_pointers): Rename into...
	(invalidate_global_nonconstant_renamings): ...this and do not recheck
	the renamed object before invalidating.
	* gcc-interface/utils2.c (gnat_stabilize_reference): Minor tweak.
	(get_inner_constant_reference): New public function.
	(gnat_constant_reference_p): New predicate.

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

	* einfo.ads, einfo.adb (Has_Out_Or_In_Out_Parameter): This attribute
	is now present in subprograms, generic subprograms, entries and
	entry families.
	* sem_ch6.adb (Set_Formal_Mode): Set As_Out_Or_In_Out_Parameter
	on entries, entry families, subprograms and generic subprograms.
	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration):
	Minor code reorganization to ensure that the Ekind attribute
	of the subprogram entity is set before its formals are
	processed. Required to allow the use of the attribute
	Has_Out_Or_In_Out_Parameter on the subprogram entity.
	* sem_aggr.adb (Resolve_Aggregate, Resolve_Extension_Aggregate):
	Perform the check on writable actuals only if the value of some
	component of the aggregate involves calling a function with
	out-mode parameters.
	(Resolve_Record_Aggregate): Propagate the Check_Actuals flag to the
	internally built aggregate.
	* sem_ch3.adb (Build_Derived_Record_Type, Record_Type_Declaration):
	Perform the check on writable actuals only if the initialization of
	some component involves calling a function with out-mode parameters.
	* sem_ch4.adb (Analyze_Arithmetic_Op, Analyze_Comparison_Op,
	Analyze_Equality_Op, Analyze_Logical_Op, Analyze_Membership_Op,
	Analyze_Range): Check writable actuals only if the
	subtrees have a call to a function with out-mode parameters
	(Analyze_Call.Check_Writable_Actuals): New subprogram. If the call
	has out or in-out parameters then mark its outermost enclosing
	construct as a node on which the writable actuals check must
	be performed.
	(Analyze_Call): Check if the flag must be set and if the outermost
	enclosing construct.
	* sem_util.adb (Check_Function_Writable_Actuals): Code cleanup
	and reorganization. We skip processing aggregate discriminants
	since their precise analysis involves two phases traversal.
	* sem_res.adb (Resolve_Actuals, Resolve_Arithmetic_Op,
	Resolve_Logical_Op, Resolve_Membership_Op): Remove call to
	check_writable_actuals.

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

	* sem_ch3.adb (Constrain_Concurrent): If the context is a
	type declaration, generate an Itype_Reference for the anonymous
	subtype, to force elaboration at this point in gigi.

2015-05-22  Gary Dismukes  <dismukes@adacore.com>

	* layout.adb, einfo.ads, sem_ch12.adb, freeze.adb, sem_util.ads,
	exp_ch4.adb, sem_ch6.adb: Minor reformatting and typo fixes.

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

	* sem_res.adb (Resolve_Actuals): If the call is to an overridden
	operation, replace the names of the actuals in named associations
	with the names of the actuals of the subprogram that is eventually
	executed. The names of the formals and the defaults can differ
	between the two operations when they are operations of a formal
	derived type.

2015-05-22  Bob Duff  <duff@adacore.com>

	* a-convec.ads, a-convec.adb (Append): Check for fast path. Split
	out slow path into separate procedure. Inline Append. Fast path
	now avoids calling Insert.
	(Finalize): Do the busy checking last, so the container gets emptied.
	(Insert, Insert_Space): Remove redundancy.

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

	* switch-c.adb (Scan_Front_End_Switches): Insist on -gnatc
	for -gnatd.V.

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

	* gnatvsn.ads: Minor code reorg to remember more easily to update
	variables.

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

	* sem_ch10.adb (Analyze_With_Clause): In ASIS_Mode, a
	limited_with clause on a predefined unit is not transformed into
	a regular with_clause, to preserve the original tree structure.
	* sinfo.ads (N_With_Clause): Add comment on handling of
	Limited_With.
	* sem_ch10.adb: Minor reformatting.

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

	* sem_ch8.adb (Freeze_Profile): A limited view of a type in
	the profile of a subprogram renaming does not require freezing,
	because it is declared in a different unit.

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

	* exp_aggr.adb (Get_Constraint_Association): If type (of ancestor
	composite type) is private, go to full view. This was previously
	done only in an instance context, but is happen whenever a chain
	of private extensions includes one inherited discriminant.

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

	* einfo.ads: Minor comment updates.
	* exp_unst.adb: Move Subps table to spec Don't remove old entries
	from table Add Last field to record last entry used.
	* exp_unst.ads: Move Subps table here from body So that Cprint
	can access saved values.

2015-05-22  Bob Duff  <duff@adacore.com>

	* a-cdlili.adb, a-cdlili.ads, a-cohama.adb, a-cohama.ads,
	* a-cohase.adb, a-cohase.ads, a-convec.adb, a-convec.ads,
	* a-coorma.adb, a-coorma.ads, a-coorse.adb, a-coorse.ads:
	(Pseudo_Reference, Element_Access, Get_Element_Access): New
	declarations added for use by performance improvements in exp_ch5.adb.
	* snames.ads-tmpl: New names referenced by exp_ch5.adb.
	* exp_ch5.adb: Speed up "for ... of" loops for predefined containers.
	Instead of doing literally what the RM calls for, we do something
	equivalent that avoids expensive operations inside the loop. If the
	container package has appropriate Next, Pseudo_Reference,
	Element_Access, Get_Element_Access declarations, we invoke the
	optimization.
	* snames.ads-tmpl: Note speed improvement.

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

	* einfo.ads (Is_Atomic_Or_VFA): Move to XEINFO INLINES section.
	* xeinfo.adb: Replace a-einfo.h with einfo.h throughout.
	Add pattern to translate "or else" into "||".

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

	* einfo.ads (Has_Volatile_Full_Access): Rename into...
	(Is_Volatile_Full_Access): ...this.
	(Set_Has_Volatile_Full_Access): Rename into...
	(Set_Is_Volatile_Full_Access): ...this.
	* einfo.adb (Has_Volatile_Full_Access): Rename into...
	(Is_Volatile_Full_Access): ...this.
	(Set_Has_Volatile_Full_Access): Rename into...
	(Set_Is_Volatile_Full_Access): ...this.
	(Is_Atomic_Or_VFA): Adjust to above renaming.
	* errout.adb (Special_Msg_Delete): Likewise.
	* exp_pakd.adb (Install_PAT): Likewise.
	* freeze.adb (Freeze_Array_Type): Likewise.
	* sem_ch8.adb (Analyze_Object_Renaming): Likewise.
	* sem_ch13.adb (Inherit_Delayed_Rep_Aspects): Likewise.
	(Inherit_Aspects_At_Freeze_Point): Likewise.
	* sem_prag.adb (Set_Atomic_VFA): Likewise.
	(Process_Atomic_Independent_Shared_Volatile): Likewise.
	* sem_util.adb (Is_Atomic_Or_VFA_Object): Likewise.

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

	* exp_ch5.adb, layout.adb, einfo.adb, einfo.ads, sem_prag.adb,
	freeze.adb, freeze.ads, sem_util.adb, sem_util.ads, exp_ch2.adb,
	exp_ch4.adb, errout.adb, exp_aggr.adb, sem_ch13.adb: This is a general
	change that deals with the fact that most of the special coding for
	Atomic should also apply to the case of Volatile_Full_Access.
	A new attribute Is_Atomic_Or_VFA is introduced, and many of the
	references to Is_Atomic now use this new attribute.

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

	* exp_ch4.adb (Expand_N_Op_Eq): Introduce 'Machine for 'Result
	comparison.

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

	* sprint.adb (Source_Dump): When generating debug files, deal
	with the case of a stand-alone package instantiation by dumping
	together the spec and the body in the common debug file.

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

	* sem_ch13.adb (Minimum_Size): Size is zero for null range
	discrete subtype.

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

	* einfo.adb (Anonymous_Master): This attribute now applies
	to package and subprogram bodies.
	(Set_Anonymous_Master): This attribute now applies to package and
	subprogram bodies.
	(Write_Field36_Name): Add output for package and subprogram bodies.
	* einfo.ads Update the documentation on attribute Anonymous_Master
	along with occurrences in entities.
	* exp_ch4.adb (Create_Anonymous_Master): Reimplemented to
	handle spec and body anonymous masters of the same unit.
	(Current_Anonymous_Master): Reimplemented. Handle a
	package instantiation that acts as a compilation unit.
	(Insert_And_Analyze): Reimplemented.

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

	* sem_ch10.adb (Analyze_With_Clause): A limited_with_clause on a
	predefined unit is treated as a regular with_clause.

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

	* sem_ch12.adb, prj.ads, makeutl.ads, sem_ch6.adb, prj-nmsc.adb,
	prj-conf.adb, sem_disp.adb: Minor reformatting.

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

	* clean.adb (Parse_Cmd_Line): For native gnatclean, check
	for switch -P and, if found and gprclean is available, invoke
	silently gprclean.
	* make.adb (Initialize): For native gnatmake, check for switch -P
	and, if found and gprbuild is available, invoke silently gprbuild.

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

	* sem_ch13.adb (Validate_Unchecked_Conversions): Also issue
	specific warning for discrete types when the source is larger
	than the target.

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

	* einfo.ads, einfo.adb (Incomplete_Actuals): New attribute of
	package instantiations. Holds the list of actuals in the instance
	that are incomplete types, to determine where the corresponding
	instance body must be placed.
	* sem_ch6.adb (Conforming_Types): An incomplete type used as an
	actual in an instance matches an incomplete formal.
	* sem_disp.adb (Check_Dispatching_Call): Handle missing case of
	explicit dereference.
	(Inherited_Subprograms): In the presence of a limited view there
	are no subprograms to inherit.
	* sem_ch12.adb (Preanalyze_Actuals): Build list of incomplete
	actuals of instance, for later placement of instance body and
	freeze nodes for actuals.
	(Install_Body): In the presence of actuals that incomplete types
	from a limited view, the instance body cannot be placed after
	the declaration because full views have not been seen yet. Any
	use of the non-limited views in the instance body requires
	the presence of a regular with_clause in the enclosing unit,
	and will fail if this with_clause is missing.  We place the
	instance body at the beginning of the enclosing body, which is
	the unit being compiled, and ensure that freeze nodes for the
	full views of the incomplete types appear before the instance.

2015-05-22  Pascal Obry  <obry@adacore.com>

	* makeutl.ads, prj-conf.adb, prj-nmsc.adb, prj.ads
	(In_Place_Option): Removed.
	(Relocate_Build_Tree_Option): New constant.
	(Root_Dir_Option): New constant.
	(Obj_Root_Dir): Removed.
	(Build_Tree_Dir): New variable.
	(Root_Src_Tree): Removed.
	(Root_Dir): New variable.
	* prj-conf.adb (Get_Or_Create_Configuration_File): Add check
	for improper relocation.
	* prj-nmsc.adb (Locate_Directory): Add check for improper
	relocation.

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

	* einfo.adb (Default_Init_Cond_Procedure): Code cleanup. The
	attribute now applies to the base type.
	(Has_Default_Init_Cond): Now applies to the base type.
	(Has_Inherited_Default_Init_Cond): Now applies to the base type.
	(Set_Default_Init_Cond_Procedure): Code cleanup. The attribute now
	applies to the base type.
	(Set_Has_Default_Init_Cond): Now applies to the base type.
	(Set_Has_Inherited_Default_Init_Cond): Now applies to the base type.
	* exp_ch3.adb (Expand_N_Object_Declaration): No need to use the
	base type when adding a call to the Default_Initial_Condition.

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

	* einfo.adb: Node36 is now used as Anonymous_Master. Flag253
	is now unused.
	(Anonymous_Master): New routine.
	(Has_Anonymous_Master): Removed.
	(Set_Anonymous_Master): New routine.
	(Set_Has_Anonymous_Master): Removed.
	(Write_Entity_Flags): Remove the output for Has_Anonymous_Maser.
	(Write_Field36_Name): Add output for Anonymous_Master.
	* einfo.ads Add new attribute Anonymous_Master along with
	occurrences in nodes. Remove attribute Has_Anonymous_Master along
	with occurrences in nodes.
	(Anonymous_Master): New routine along with pragma Inline.
	(Has_Anonymous_Master): Removed along with pragma Inline.
	(Set_Anonymous_Master): New routine along with pragma Inline.
	(Set_Has_Anonymous_Master): Removed along with pragma Inline.
	* exp_ch4.adb (Create_Anonymous_Master): New routine.
	(Current_Anonymous_Master): Reimplemented.

2015-05-22  Bob Duff  <duff@adacore.com>

	* freeze.adb (Freeze_Profile): Suppress warning if imported
	subprogram is not at library level.

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

	* sem_ch8.adb (Analyze_Object_Renaming): Check for renaming
	component of an object to which Volatile_Full_Access applies.

2015-05-22  Jerome Guitton  <guitton@adacore.com>

	* exp_dbug.ads: Add note about non bit-packed arrays.

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

	* sem_prag.adb: Fix typo.
	* einfo.ads: Grammar fixes in comments.

2015-05-22  Bob Duff  <duff@adacore.com>

	* a-cborma.ads, a-cidlli.ads, a-cimutr.ads, a-ciormu.ads,
	* a-cihase.ads, a-cohama.ads, a-coorse.ads, a-cbhama.ads,
	* a-cborse.ads, a-comutr.ads, a-ciorma.ads, a-cobove.ads,
	* a-coormu.ads, a-convec.ads, a-cohase.ads, a-coinho.ads,
	* a-cbdlli.ads, a-cbmutr.ads, a-cbhase.ads, a-cdlili.ads,
	* a-cihama.ads, a-coinve.ads, a-ciorse.ads, a-coorma.ads,
	* a-coinho-shared.ads (Constant_Reference_Type, Reference_Type):
	Add an initialization expression "raise Program_Error". See,
	for example, RM-A.18.2(148.4).

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

	* debug.adb: Update documentation.
	* einfo.ads, einfo.adb (Needs_Typedef): New flag
	* exp_unst.adb (Unnest_Subprogram): Mark AREC types as needing
	typedef's in C.
	* frontend.adb: Update comments.
	* gnat1drv.adb (Adjust_Global_Switches): Set all needed flags
	for -gnatd.V
	* opt.ads (Generate_C_Code): New switch.
	* osint-c.adb (Write_C_File_Info): Removed, not used
	(Write_H_File_Info): Removed, not used
	* osint-c.ads (Write_C_File_Info): Removed, not used
	(Write_H_File_Info): Removed, not used
	* osint.ads (Write_Info): Minor comment updates.
	(Output_FD): Moved from private part to public part of spec.
	* sem.adb (Semantics): Force expansion on if in Generate_C_Code
	mode.
	* atree.ads: minor typo in comment.
	* sem_prag.adb (Process_Atomic_Independent_Shared_Volatile):
	Do not allow VFA on composite object with aliased component.

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

	* osint-c.adb, osint-c.ads (Set_File_Name): Move back to spec.

2015-05-22  Pascal Obry  <obry@adacore.com>

	* prj-util.adb: Minor comment editing.

2015-05-22  Pascal Obry  <obry@adacore.com>

	* makeutl.ads (In_Place_Option): New constant.
	* prj.ads (Obj_Root_Dir): New variable (absolute path to relocate
	objects).
	(Root_Src_Tree): New variable (absolute path of root source tree).
	* prj-conf.adb (Do_Autoconf): Take into account the object root
	directory (if defined) to generate configuration project.
	* prj-nmsc.adb (Get_Directories): Handle case where Obj_Root_Dir
	is defined.
	(Locate_Directory): Likewise.

2015-05-22  Pascal Obry  <obry@adacore.com>

	* prj-util.ads, prj-util.adb (Relative_Path): New routine.

2015-05-22  Bob Duff  <duff@adacore.com>

	* exp_utils.ads, exp_utils.adb (Find_Optional_Prim_Op): New
	interface to return Empty when not found, so we can avoid handling
	Program_Error in that case.
	(Find_Prim_Op): Fix latent bug: raise Program_Error when there are no
	primitives.
	* exp_ch7.adb, sem_util.adb: Use Find_Optional_Prim_Op when the
	code is expecting Empty.
	* sem_ch8.adb: Use Find_Optional_Prim_Op to avoid handling
	Program_Error.

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

	* sem_ch3.adb, sem_intr.adb, exp_ch4.adb, s-rannum.adb,
	sem_eval.adb, s-fatgen.adb, s-expmod.ads: Remove incorrect hyphen in
	non-binary.
	* exp_util.adb: Add comment.
	* osint-c.ads, osint-c.adb (Set_Library_Info_Name): Move from spec to
	body.
	(Set_File_Name): New name for the above.
	(Create_C_File, Create_H_File, Write_C_File_Info, Write_H_File_Info,
	Close_C_File, Close_H_File): New procedure.
	* osint.adb: Minor reformatting.
	* osint.ads: Minor comment updates.

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

	* exp_ch4.adb: Minor rewording.
	* exp_util.ads: Clarify that Find_Prim_Op is only for
	tagged types.

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

	* atree.adb, atree.ads, treepr.adb: Change name Needs_Actuals_Check to
	Check_Actuals.
	* exp_ch4.adb (Expand_N_Op_Expon): Optimize 2**x in modular
	and overflow cases.

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

	* exp_pakd.adb (Install_PAT): Propagate representation aspects
	from the original array type to the PAT.

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

	* treepr.adb (Print_Node_Header): Add output of Needs_Actuals_Check.

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

	* atree.adb, atree.ads (Needs_Actuals_Check): New flag.

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

	* sem_prag.adb (Analyze_Pragma): Remove the detection
	of a useless Part_Of indicator when the related item is a constant.
	(Check_Matching_Constituent): Do not emit an error on a constant.
	(Check_Missing_Part_Of): Do not check for a missing Part_Of indicator
	when the related item is a constant.
	(Collect_Body_States): Code cleanup.
	(Collect_Visible_States): Code cleanup.
	(Report_Unused_States): Do not emit an error on a constant.
	* sem_util.ads, sem_util.adb (Has_Variable_Input): Removed.

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

	* sem_ch8.adb (Analyze_Object_Renaming): Copy
	Has_Volatile_Full_Access from renamed to renaming entities.
	* sem_prag.adb (Process_Atomic_Independent_Shared_Volatile):
	Tidy up and remove redundant setting of Has_Volatile_Full_Access.

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

	* ghost.adb (Check_Ghost_Completion): Update references to SPARK
	RM 6.9 rules.
	(Check_Ghost_Policy): Update references to SPARK RM 6.9 rules.
	* sem_ch3.adb (Analyze_Object_Declaration): Update references
	to SPARK RM 6.9 rules.
	(Check_Completion): Ghost entities do not require a special form of
	completion.
	* sem_ch6.adb (Analyze_Generic_Subprogram_Body): Update references
	to SPARK RM 6.9 rules.
	(Analyze_Subprogram_Body_Helper): Update references to SPARK RM 6.9
	rules.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Update references
	to SPARK RM 6.9 rules.
	(Requires_Completion_In_Body): Ghost entities do not require a special
	form of completion.

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

	* a-csquin.ads: Use Ada 2012 notation.
	* sem_ch8.adb: Minor reformatting.

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

	* sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Import
	acts as a completion.

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

	* sem_ch13.adb: Minor reformatting.

2015-05-22  Jose Ruiz  <ruiz@adacore.com>

	* a-reatim.adb: Minor change, fix typo.

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

	* sem_util.ads: Minor addition of ??? comment.
	* sem_prag.adb, sem_util.adb: Minor reformatting.
	* sem_ch13.adb: minor reformatting.

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

	* a-reatim.ads: Add Compile_Time_Error to ensure Duration
	is 64-bits.
	* sem_ch13.adb: Improve error message.
	* exp_ch4.adb: Minor reformatting.

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

	* sem_prag.adb (Analyze_Pragma): Constants without variable
	input do not require indicator Part_Of.
	(Check_Missing_Part_Of): Constants without variable input do not
	requrie indicator Part_Of.
	(Collect_Visible_States): Constants without variable input are
	not part of the hidden state of a package.
	* sem_util.ads, sem_util.adb (Has_Variable_Input): New routine.

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

	* exp_util.adb (Activate_Atomic_Synchronization): Do not set
	Atomic_Sync_Required for an object renaming declaration.
	* sem_ch8.adb (Analyze_Object_Renaming): Copy Is_Atomic and
	Is_Independent to renaming object.

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

	* sem_ch5.adb (Analyze_Iterator_Specification): Diagnose
	various illegalities in iterators over arrays and containers:
	a) New function Get_Cursor_Type, to verify that the cursor is
	not a limited type at the point of iteration.
	b) If the container is a constant, an element_iterator is illegal
	if the container type does not have a Constant_Indexing aspect.
	c) If the iterate function has an in-out controlling parameter,
	the container cannot be a constant object.
	d) Reject additional cases of iterators over a
	discriminant-dependent component of a mutable object.

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

	* einfo.adb (Contract): This attribute now applies to constants.
	(Set_Contract): This attribute now applies to constants.
	(Write_Field34_Name): Add output for constants.
	* einfo.ads Attribute Contract now applies to constants.
	* sem_ch3.adb (Analyze_Object_Contract): Constants now have
	their Part_Of indicator verified.
	* sem_prag.adb (Analyze_Constituent): A constant is now a valid
	constituent.
	(Analyze_Global_Item): A constant cannot act as an output.
	(Analyze_Initialization_Item): Constants are now a valid
	initialization item.
	(Analyze_Initializes_In_Decl_Part): Rename
	global variable States_And_Vars to States_And_Objs and update
	all its occurrences.
	(Analyze_Input_Item): Constants are now a
	valid initialization item. Remove SPARM RM references from error
	messages.
	(Analyze_Pragma): Indicator Part_Of can now apply to a constant.
	(Collect_Body_States): Collect both source constants
	and variables.
	(Collect_States_And_Objects): Collect both source constants and
	variables.
	(Collect_States_And_Variables): Rename
	to Collect_States_And_Objects and update all its occurrences.
	(Collect_Visible_States): Do not collect constants and variables
	used to map generic formals to actuals.
	(Find_Role): The role of a constant is that of an input. Separate the
	role of a variable from that of a constant.
	(Report_Unused_Constituents): Add specialized wording for constants.
	(Report_Unused_States): Add specialized wording for constants.
	* sem_util.adb (Add_Contract_Item): Add processing for constants.
	* sem_util.ads (Add_Contract_Item): Update the comment on usage.
	(Find_Placement_In_State_Space): Update the comment on usage.

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

	* sem_ch5.adb: minor reformatting.

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

	* freeze.adb (Freeze_Entity): Properly tag -gnatw.z messages.

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

	* freeze.adb: Minor reformatting.
	* cstand.adb (Print_Standard): Fix bad printing of Duration
	low bound.
	* a-reatim.adb (Time_Of): Complete rewrite to properly detect
	out of range args.

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

	* sem_ch5.adb: add (useless) initial value.
	* sem_ch3.adb (Replace_Anonymous_Access_To_Protected_Subprogram):
	Check whether the procedure has parameters before processing
	formals in ASIS mode.

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

	* sem_ch13.adb (Check_Iterator_Functions): Emit error on Iterator
	aspect as well when indexing function is illegal.
	(Valid_Default_Iterator): Handle properly somme illegal cases
	to prevent compilation abandoned messages.
	(Check_Primitive_Function): Verify that type and indexing function
	are in the same scope.
	* freeze.adb (Freeze_Record): Extend patch on the presence of
	indexing aspects to aspect Default_Iterator.

2015-05-19  David Malcolm  <dmalcolm@redhat.com>

	* gcc-interface/trans.c (Sloc_to_locus1): Strenghthen local "map"
	from line_map * to line_map_ordinary *.

2015-05-12  Jason Merrill  <jason@redhat.com>

	* sigtramp-vxworks.c: Add space between string literal and macro
	name.

2015-05-12  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi, doc: Documentation updates and clean ups

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

	* sem_ch5.adb (Analyze_Iterator_Specifications): Additional
	legality checks for array and container iterators:
	a) The domain of iteration cannot be a component that depends
	on discriminants of a mutable object. The check was recently
	added for element iterators.
	b) The cursor type cannot be a limited type at the point of the
	iteration, because the cursor will be assigned to in the body
	of the loop.

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

	* freeze.adb (Freeze_Record_Type): Make sure that if we have
	aspect Iterator_Element, then we have either Constant_Indexing
	or Variable_Indexing.

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

	* a-coormu.ads, a-coormu.adb: Add Indexing aspect, Reference_Type,
	and Reference_Control_Type to support element iterators over
	ordered multisets.
	* a-ciormu.ads, a-ciormu.adb: Ditto for
	indefinite_ordered_multisets.

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

	* exp_ch4.adb (Expand_N_Expression_With_Actions): Force
	the evaluation of the EWA expression.  Code cleanup.
	(Process_Transient_Object): Code cleanup.
	* exp_util.adb (Is_Aliased): Controlled transient objects found
	within EWA nodes are not aliased.
	(Is_Finalizable_Transient): Iterators are not finalizable transients.

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

	* sem_prag.adb (Process_Atomic_Independent_Shared_Volatile):
	Don't allow Atomic and Volatile_Full_Access for the same entity.

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

	* sem_ch5.adb (Analyze_Iterator_Specification): Implement new
	semantics and safety checks specified in AI12-0151.

2015-05-12  Pierre-Marie de Rodat  <derodat@adacore.com>

	* sem_ch10.adb (Sem_Ch10.Analyze_Proper_Body): Generate SCOs
	for subunit in generic units.

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

	* sem_elab.adb (Check_A_Call): Avoid checking internal call
	from Valid_Scalars

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

	* sem_ch6.adb (Process_Formals): An untagged incomplete type
	is legal in the profile of a null procedure.

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

	* sem_ch12.adb (Validate_Derived_Type_Instance): Handle properly
	the checks on a derived formal whose parent type is a previous
	formal that is not a derived type.

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

	* aspects.ads, aspects.adb: Add entries for aspect Volatile_Full_Access
	* einfo.adb (Has_Volatile_Full_Access): New flag.
	(Has_Volatile_Full_Access): New flag.
	* einfo.ads (Has_Volatile_Full_Access): New flag.
	* par-prag.adb: Add dummy entry for Volatile_Full_Access.
	* sem_prag.adb (Analyze_Pragma, case Volatile_Full_Access):
	Implement new pragma.
	* snames.ads-tmpl: Add entries for pragma Volatile_Full_Access.

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

	* targparm.ads: Minor reformatting.

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

	* a-reatim.adb (Time_Of): Properly detect overflow when TS = 0.0.
	* a-reatim.ads: Minor reformatting.

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

	* einfo.ads: Update the documentation of flags
	Has_Inherited_Default_Init_Cond and Has_Default_Init_Cond.

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

	* impunit.adb: Add entry for a-dhfina.ads
	* a-dhfina.ads: New file.

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

	* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): if the array
	type has convention Fortran, a multidimensional iterator varies
	the first dimension fastest.

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

	* einfo.adb: Node32 is now used as Encapsulating_State.
	Node37 is now used as Associated_Entity.
	(Associated_Entity): New routine.
	(Encapsulating_State): Update the assertion guard to include constants.
	(Set_Associated_Entity): New routine.
	(Set_Encapsulating_State): Update the assertion guard to
	include constants.
	(Write_Field10_Name): Remove the output for Encapsulating_State.
	(Write_Field32_Name): Add output for Encapsulating_State.
	(Write_Field37_Name): Add output for Associated_Entity.
	* einfo.ads New attribute Associated_Entity along with placement
	in entities. Attribute Encapsulating_State now uses Node32.
	(Associated_Entity): New routine along with pragma Inline.
	(Set_Associated_Entity): New routine along with pragma Inline.
	* inline.ads Code reformatting.
	* sem_attr.adb (Analyze_Attribute): Correct the prefix of
	attribute 'Result when the context is a generic instantiation.
	(Analyze_Attribute_Old_Result): Pragmas Depends and
	Refined_Depends are a valid context for attribute 'Result.
	(Denote_Same_Function): Allow attribute 'Result to denote
	generic functions.
	* sem_ch3.adb Add with and use clauses for Sem_Ch12.
	(Analyze_Declarations): Capture global references within the
	contracts of packages, subprograms and their respective bodies.
	* sem_ch6.adb (Analyze_Aspects_On_Body_Or_Stub): Removed.
	(Analyze_Completion_Contract): Removed.
	(Analyze_Generic_Subprogram_Body): Enchange the aspects after
	creating the generic copy. Create a generic contract for the
	template. Analyze the aspects of the generic body. Analyze the
	contract of the generic body when it is a compilation unit and
	capture global references.
	(Analyze_Subprogram_Body_Contract): Code cleanup.
	(Analyze_Subprogram_Contract): Do not save global references here.
	(Save_Global_References_In_List): Removed.
	* sem_ch7.adb (Analyze_Package_Body_Contract): Code cleanup.
	(Analyze_Package_Body_Helper): Create a generic contract for
	the template.
	(Analyze_Package_Contract): Code cleanup.
	* sem_ch10.adb Add with and use clauses for Sem_Ch12.
	(Analyze_Compilation_Unit): Capture global references in a
	generic subprogram declaration that acts as a compilation unit.
	* sem_ch12.adb Add with and use clauses for Sem_Prag. Illustrate
	the implementation of generic contracts. Alphabetize various
	subprograms.
	(Analyze_Generic_Package_Declaration):
	Create a generic contract for the template.
	(Analyze_Generic_Subprogram_Declaration): Create a generic
	contract for the template.
	(Analyze_Subprogram_Instantiation): Instantiate the contract of the
	subprogram.
	(Copy_Generic_Node): Link defining entities of the generic template
	with the corresponding defining entities of the generic copy. Update
	the processing of pragmas.
	(Instantiate_Contract): Removed.
	(Instantiate_Subprogram_Contract): New routine.
	(Requires_Delayed_Save): New routine.
	(Save_Global_References): Rename formal parameter N to Templ. Various
	cleanups.
	(Save_Global_References_In_Aspects): Moved from the spec.
	(Save_Global_References_In_Contract): New routine.
	(Save_References_In_Aggregate): New routine.
	(Save_References_In_Char_Lit_Or_Op_Symbol): New routine.
	(Save_References_In_Descendants): New routine.
	(Save_References_In_Identifier): New routine.
	(Save_References_In_Operator): New routine.
	(Save_References_In_Pragma): New routine.
	* sem_ch12.ads (Save_Global_References): Rename formal
	parameter N to Templ. Update the comment on usage.
	(Save_Global_References_In_Aspects): Moved to the body.
	(Save_Global_References_In_Contract): New routine.
	* sem_ch13.adb (Analyze_Aspect_Specifications_On_Body_Or_Stub):
	New routine.
	* sem_ch13.ads (Analyze_Aspect_Specifications_On_Body_Or_Stub):
	New routine.
	* sem_prag.adb (Add_Item_To_Name_Buffer): Add support for
	generic parameters.
	(Analyze_Contract_Cases_In_Decl_Part): Code cleanup.
	(Analyze_Depends_Global): New routine.
	(Analyze_Depends_In_Decl_Part): Code cleanup.
	(Analyze_Global_In_Decl_Part): Code cleanup.
	(Analyze_Global_Item): Constants are now valid global items. Do
	not perform state-related checks in an instance. Change the way
	renamings are handled.	(Analyze_Initial_Condition_In_Decl_Part):
	Code cleanup.
	(Analyze_Initializes_In_Decl_Part): Code cleanup.
	(Analyze_Input_Output): The analysis of attribute 'Result in
	the context of pragmas Depends or Refined_Depends now reuses
	the existing attribute analysis machinery. Constants and
	generic parameters are now valid dependency items. Do not
	perform state-related checks in an instance. Change the way
	renamings are handled.	(Analyze_Pragma): Add a "characteristics"
	section for pragmas Abstract_State, Contract_Cases, Depends,
	Extensions_Visible, Global, Initial_Condition, Initializes,
	Post, Post_Class, Postcondition, Pre, Pre_Class, Precondition,
	Refined_Depends, Refined_Global, Refined_Post, Refined_State, Test_Case.
	(Analyze_Pre_Post_Condition): Do not create a generic
	template here.
	(Analyze_Pre_Post_Condition_In_Decl_Part): Code cleanup.
	(Analyze_Refined_Depends_Global_Post): New routine.
	(Analyze_Refined_Depends_In_Decl_Part): Code cleanup.
	(Analyze_Refined_Global_In_Decl_Part): Code cleanup.
	(Analyze_Refined_Pragma): Removed.
	(Analyze_Refined_State_In_Decl_Part): Code cleanup.
	(Analyze_Test_Case_In_Decl_Part): Code cleanup.
	(Check_Dependency_Clause): Do not perform this check in an instance.
	(Check_Function_Return): Add support for generic functions.
	(Check_In_Out_States): Do not perform this check in an instance.
	(Check_Input_States): Do not perform this check in an instance.
	(Check_Mode_Restriction_In_Function): Add support for generic functions.
	(Check_Output_States): Do not perform this check in an instance.
	(Check_Postcondition_Use_In_Inlined_Subprogram): Rename
	parameter Subp_Id to Spec_Id and update comment on usage.
	(Check_Proof_In_States): Do not perform this check in an instance.
	(Check_Refined_Global_Item): Add support for constants.
	(Check_Refined_Global_List): Do not perform this check in an instance.
	(Collect_Global_Items): Reimplemented.
	(Collect_Subprogram_Inputs_Outputs): Add support for generic parameters.
	(Create_Generic_Template): Removed.
	(Find_Related_Package_Or_Body): Moved to spec.
	(Find_Role): Add support for generic parameters and constants.
	(Get_Argument): Moved to spec. Rename parameter Spec_Id to Context_Id.
	(Match_Item): Add support for constants.
	(Preanalyze_Test_Case_Arg): Reimplemented.
	(Report_Extra_Clauses): Do not perform this check in an instance.
	(Report_Extra_Constituents): Do not perform this check in an instance.
	* sem_prag.ads (Collect_Subprogram_Inputs_Outputs): Update
	the comment on usage.
	(Find_Related_Package_Or_Body): Moved from body.
	(Get_Argument): Moved from body.
	* sem_util.adb Add with and use clauses for Sem_Ch12.
	(Corresponding_Spec_Of): Add support for packages and package bodies.
	(Create_Generic_Contract): New routine.
	(Is_Contract_Annotation): Reimplemented.
	(Is_Generic_Declaration_Or_Body): New routine.
	(Is_Package_Contract_Annotation): New routine.
	(Is_Subprogram_Contract_Annotation): New routine.
	* sem_util.ads (Corresponding_Spec_Of): Update the comment on usage.
	(Create_Generic_Contract): New routine.
	(Is_Generic_Declaration_Or_Body): New routine.
	(Is_Package_Contract_Annotation): New routine.
	(Is_Subprogram_Contract_Annotation): New routine.
	* sinfo.adb (Is_Generic_Contract_Pragma): New routine.
	(Set_Is_Generic_Contract_Pragma): New routine.
	* sinfo.ads Add new attribute Is_Generic_Contract_Pragma along
	with occurrences in nodes.
	(Is_Generic_Contract_Pragma): New routine along with pragma Inline.
	(Set_Is_Generic_Contract_Pragma): New routine along with pragma Inline.
	* treepr.adb (Print_Entity_Info): Output fields 36 to 41.

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

	* a-taster.ads: Minor comment fix: fix bad header, this is a
	pure RM unit.

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

	* sem_intr.adb: (Check_Shift): Diagnose bad modulus value.

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

	* gnat1drv.adb (Adjust_Global_Switches): Default to suppressing
	Alignment_Checks on non-strict alignment machine.
	* sem_ch13.adb (Validate_Address_Clauses): Don't give
	compile-time alignment warnings if run time Alignment_Check
	is suppressed.

2015-05-12  Thomas Quinot  <quinot@adacore.com>

	* g-sercom.ads, g-sercom-linux.adb (GNAT.Serial_Communications.
	Data_Rate): New literals B75, B110, B150, B300, B600.

2015-05-12  Doug Rupp  <rupp@adacore.com>

	* init.c (__gnat_init_float) [vxworks]: For e500v2,
	do nothing and leave the responsibility to install the handler
	and enable the exceptions to the BSP.

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

	* sem_ch9.adb, einfo.ads, exp_intr.adb: Minor reformatting.
	* sem_disp.adb: Minor code reorganization (remove junk redundant
	null statement).
	* exp_unst.adb (Unnest_Subprogram.Uplev_Refs): Ignore uplevel
	references to bounds of types coming from original type reference.
	* checks.ads: Minor reformatting.
	* checks.adb: Minor reformatting.
	* sem_prag.adb (Analyze_Pragma, case Check): If in ignored
	assertion, then make sure we do not drag in bignum stuff.

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

	* sem_ch9.adb (Collect_Interfaces): Initialize
	Direct_Primitive_Operations for a tagged synchronized type,
	so it can used in ASIS mode.
	* sem_disp.adb (Check_Dispatching_Operation): If expansion is
	disabled, attach subprogram to list of Direct_Primitive_Operations
	of synchronized type itself, for ASIS use, because in this case
	Corresponding_Record_Type is not built.
	* einfo.ads: Indicate use of Direct_Primitive_Operations on
	synchronized type.

2015-05-12  Pierre-Marie de Rodat  <derodat@adacore.com>

	* exp_pakd.adb: Make clearer the comment in exp_pakd.adb about
	___XP suffixes.

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

	* sem_ch3.adb, sem_util.adb, sem_ch6.adb: Minor reformatting.

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

	* exp_unst.adb (Visit_Node): Deal with subprogram and package stubs.

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

	* exp_intr.adb (Expand_Dispatching_Constructor_Call): The
	tag to be retrieved for the generated call is the first entry
	in the dispatch table for the return type of the instantiated
	constructor.

2015-05-12  Bob Duff  <duff@adacore.com>

	* exp_ch7.adb, exp_ch7.ads, exp_intr.adb, exp_util.adb,
	exp_util.ads: Update comments.

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

	* sem_ch3.adb (Add_Internal_Interface_Entities): Do no generate
	freeze nodes for these in ASIS mode, because they lead to
	elaoration order issues in gigi.

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

	* sem_ch6.adb (Analyze_Expression_Function): Code
	cleanup. Use Copy_Subprogram_Spec to create a proper spec.
	(Analyze_Subprogram_Body_Helper): Code cleanup. Do not
	prepare a stand alone body for inlining in GNATprove mode
	when inside a generic.	(Body_Has_Contract): Reimplemented.
	(Build_Subprogram_Declaration): New routine.
	* sem_ch10.adb (Analyze_Compilation_Unit): Capture global
	references within generic bodies by loading them.
	* sem_util.adb (Copy_Parameter_List): Code cleanup.
	(Copy_Subprogram_Spec): New routine.
	(Is_Contract_Annotation): New routine.
	* sem_util.ads (Copy_Subprogram_Spec): New routine.
	(Is_Contract_Annotation): New routine.

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

	* sem_attr.adb (Resolve_Attribute): Do not analyze the generated
	body of an expression function when the prefix of attribute
	'Access is the body.

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

	* sem_ch3.adb (Build_Derived_Enumeration_Type): The anonymous base
	created for a derived enumeration type is not a first subtype,
	even though it is defined through a full type declaration.
	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): Do not process
	aspects for the anonymous base type constructed for a derived
	scalar type, because they will be set when the first subtype
	is frozen.
	(Inherit_Aspects_At_Freeze_Point): Fix typos on handling of
	Default_Value and Default_Component_Value, that prevented the
	proper inheritance of these aspects.

2015-05-12  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb, exp_unst.adb: Minor typo fixes.

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

	* sem_ch3.adb: Minor reformatting.

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

	* gnatcmd.adb: If we want to invoke gnatmake (gnatclean) with
	-P, then check if gprbuild (gprclean) is available; if it is,
	use gprbuild (gprclean) instead of gnatmake (gnatclean).

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

	* debug.adb: Add flag -gnatd.3 to output diagnostic info from
	Exp_Unst.
	* einfo.ad, einfo.adb: Reorganize (and remove most of) flags used by
	Exp_Unst.
	* exp_ch6.adb (Unest_Bodies): Table for delayed calls to
	Unnest_Subprogram (Expand_N_Subprogram_Body): Add entry to table
	for later call instead of calling Unnest_Subprogram directly
	(Initialize): New procedure (Unnest_Subprograms): New procedure
	* exp_ch6.ads (Add_Extra_Actual_To_Call): Move into proper
	alpha order.
	(Initialize): New procedure.
	(Unnest_Subprograms): New procedure.
	* exp_unst.adb (Unnest_Subprogram): Major rewrite, moving
	all processing to this routine which is now called late
	after instantiating bodies. Fully handles the case of generic
	instantiations now.
	* exp_unst.ads: Major rewrite, moving all processing to
	Unnest_Subprogram.
	* frontend.adb (Frontend): Add call to Exp_Ch6.Initialize.
	(Frontend): Add call to Unnest_Subprograms.
	* sem_ch8.adb (Find_Direct_Name): Back to old calling sequence
	for Check_Nested_Access.
	* sem_util.adb (Build_Default_Subtype): Minor reformatting
	(Check_Nested_Access): Back to original VM-only form (we
	now do all the processing for Unnest_Subprogram at the time
	it is called.
	(Denotes_Same_Object): Minor reformatting
	(Note_Possible_Modification): Old calling sequence for
	Check_Nested_Access.
	* sem_util.ads (Check_Nested_Access): Back to original VM-only
	form (we now do all the processing for Unnest_Subprogram at the
	time it is called.

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

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

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

	* sem_ch3.adb (Analyze_Object_Declaration): New function
	Has_Delayed_Aspect, used to defer resolution of an aggregate
	expression when the object declaration carries aspects Address
	and/or Alignment.
	* freeze.adb (Freeze_Object_Declaration): New subsidiary procedure
	to Freeze_Entity.  In addition to the previous processing steps
	at the freeze point of an object, this procedure also handles
	aggregates in object declarations, when the declaration carries
	delayed aspects that require that the initialization of the
	object be attached to its freeze actions.

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

	* sem_ch6.adb (Analyze_Subprogram_Declaration): Following
	AI12-0147, null procedures and expression functions are allowed
	in protected bodies.

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

	* i-cpoint.adb (Copy_Terminated_Array): Copy nothing if Length is 0.

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

	* sem_ch3.adb (Complete_Private_Subtype): Propagate
	Has_Delayed_Aspects flag from private to full view, to ensure
	that predicate functions are constructed.

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

	* sem_ch6.adb (Process_Formals): If a tagged formal is an
	incomplete class-wide type, the subprogram must have a delayed
	freeze even though the opertation is not a primitive of the
	type. THis ensures that the backend can recover the full view
	when elaborating the subprogram declaration.

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

	* exp_util.adb (Get_Current_Value_Condition): Nothing to be
	done if an elsif part has been rewritten so that it is not part
	of an enclosing if_statement.

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

	* sem_type.adb, sem_ch10.adb, freeze.adb, sem_ch6.adb, exp_disp.adb:
	Minor reformatting.

2015-05-12  Bob Duff  <duff@adacore.com>

	* exp_attr.adb (Size): Remove unnecessary check for types with
	unknown discriminants.	That was causing the compiler to build
	a function call _size(T), where T is a type, not an object.

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

	* sem_ch4.adb (Extended_Primitive_Ops): Exclude overriding
	primitive operations of a type extension declared in the package
	body, to prevent duplicates in extended list.

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

	* sem_ch3.adb (Analyze_Component_Declaration): If the component is
	an unconstrained synchronized type with discriminants, create a
	constrained default subtype for it, so that the enclosing record
	can be given the proper size.
	* sem_util.adb (Build_Default_Subtype): If the subtype is created
	for a record discriminant, do not analyze the declarztion at
	once because it is added to the freezing actions of the enclosing
	record type.

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

	* exp_prag.adb (Expand_N_Pragma): Rewrite ignored pragma as
	Null statements.
	* namet.ads (Boolean3): Document this flag used for Ignore_Pragma.
	* par-prag.adb (Prag): Implement Ignore_Pragma.
	* sem_prag.adb: Implement Ignore_Pragma.
	* snames.ads-tmpl: Add entries for pragma Ignore_Pragma.

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

	* sem_ch10.adb (Build_Shadow_Entity): Link the class-wide shadow
	entity with its corresponding real entity.
	(Decorate_Type): Unconditionally build the class-wide shadow entity of
	tagged types.
	* einfo.ads, einfo.adb (Has_Non_Limited_View): New synthesized
	attribute.
	(Non_Limited_View): Moved from field 17 to field 19 be available
	in class-wide entities.
	* exp_attr.adb (Access_Cases): Code cleanup.
	* exp_disp.adb (Expand_Interface_Actuals): Ditto.
	* exp_util.adb (Non_Limited_Designated_Type): Ditto.
	* freeze.adb (Build_Renamed_Bdody): Ditto.
	* sem_aux.adb (Available_View): Ditto.
	* sem_ch4.adb (Analyze_Selected_Component): Ditto.
	(Try_One_Prefix_Interpretation): Ditto.
	* sem_ch5.adb (Analyze_Assignment): Ditto.
	* sem_ch6.adb (Detect_And_Exchange): Ditto.
	* sem_ch8.adb (Find_Expanded_Name): Ditto.
	* sem_disp.adb (Check_Controlling_Type): Ditto.
	* sem_res.adb (Resolve_Type_Conversion): Ditto.
	(Full_Designated_Type): Ditto.
	* sem_type.adb (Covers): Ditto.
	* sem_util.adb: Fix typo in comment.

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

	* exp_unst.adb (Get_Real_Subp): New subprogram.
	(Unnest_Subprogram): Use Get_Real_Subp.
	(Uplev_Refs_For_One_Subp): Skip if no ARECnU entity.
	(Uplev_Refs_For_One_Subp): Use actual subtype in unconstrained case.

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

	* a-reatim.adb ("/"): Add explicit check for Time_Span_First / -1.

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

	* sem_ch4.adb (Extended_Primitive_Ops): New subprogram,
	auxiliary to Try_Primitive_Operation to handle properly prefixed
	calls where the operation is not a primitive of the type, but
	is declared in the package body that is in the immediate scope
	of the type.

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

	* sem_util.adb (Is_Variable): Allow X'Deref(Y) as a variable.

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

	* sem_ch8.adb (Find_Expanded_Name): Handle properly a fully
	qualified name for an instance of a generic grand-child unit in
	the body its parent.

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

	* exp_unst.adb (Upref_Name): New subprogram.
	(Unnest_Subprogram): Use Upref_Name.
	(Unnest_Subprogram): Use new Deref attribute.
	* exp_unst.ads: Doc updates.

2015-05-12  Thomas Quinot  <quinot@adacore.com>

	* adaint.c: Enable Large File Support in adaint so that __gnat_readdir
	can access files on filesystems mounted from servers that use large
	NFS file handles.

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

	* gcc-interface/utils.c (gnat_write_global_declarations): Use type_decl
	method instead of global_decl for TYPE_DECLs.

2015-04-27  Jim Wilson  <jim.wilson@linaro.org>

	* gcc-interface/Makefile-lan.in (ada.mostlyclean): Remove gnatbind
	and gnat1.

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

	* gnatvsn.ads (Library_Version): Bump to 6.

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

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

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

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

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

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

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

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

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

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

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

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

	* sinfo.ads: Update comment.

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

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

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

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

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

	* inline.adb: Minor typo fix.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* sem_attr.adb: Improve warning messages.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* exp_disp.ads: Minor reformatting.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* sem_ch8.adb: extend use of Available_Subtype.

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

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

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

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

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

	* a-strsea.adb: Minor typo fix.

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

	* einfo.ads: Minor comment fixes.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* g-alveop.adb: Minor style fixes.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* sem_prag.adb: Minor comment clarification.

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

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

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

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

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

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

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

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

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

	* sem_res.adb: Minor reformatting.

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

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

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

	* bindgen.adb: Minor reformatting and code reorganization.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* sem_prag.ads: Minor typo in comment.

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

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

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

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

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

	* sem_eval.ads: Minor reformatting.

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

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

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

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

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

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

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

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

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

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

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

	* gnat1drv.adb: Minor consistency fix.

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

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

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

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

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

	* exp_util.adb: Minor reformatting.

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

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

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

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

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

	* exp_ch6.adb: Fix minor typo in comment.

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

	* sinfo.ads: Add comment.

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

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

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

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

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

	* s-stalib.ads: Fix typo.

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

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

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

	* lib-load.adb: Minor comment update.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* lib-xref.adb: Minor reformatting.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* errout.ads: Minor reformatting.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* freeze.adb: Minor reformatting.

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

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

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

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

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

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

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

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

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

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

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

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

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

	* sem_prag.adb: Minor typo fixes and reformatting.

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

	* sem_attr.adb: Code clean up.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* s-fileio.adb: Minor reformatting.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* clean.adb: Minor error message change.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2015-01-07  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Analyze_Full_Type_Declaration): Do not
	automatically set No_Strict_Aliasing on access types.
	* fe.h (No_Strict_Aliasing_CP): Declare.
	* gcc-interface/trans.c (gigi): Force flag_strict_aliasing to 0 if
	No_Strict_Aliasing_CP is set.

2015-01-07  Johannes Kanig  <kanig@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming) do
	not build function wrapper in gnatprove mode when the package
	is externally axiomatized.

2015-01-07  Jose Ruiz  <ruiz@adacore.com>

	* a-reatim.adb (Time_Of): Reduce the number of spurious overflows in
	intermediate computations when the parameters have different signs.

2015-01-07  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Build_Init_Procedure): For derived types,
	improve the code which takes care of identifying and moving to
	the beginning of the init-proc the call to the init-proc of the
	parent type.

2015-01-07  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu, <N_Expression_With_Action>):
	Elaborate the expression as part of the same stmt group as the actions.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor error message change.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Preelaborable_Initialization):
	Following AI05-028, the pragam applies legally to any composite type.

2015-01-07  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-vxworks.adb, s-osinte-vxworks.ads
	(sigwait, sigwaitinfo): Removed, not needed after all on any
	VxWorks configurations.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, freeze.adb, exp_disp.adb: Minor reformatting.

2015-01-07  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Conversion): Adding missing
	generation of accessibility check.

2015-01-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Derived_Type_Declaration): In the case of an
	illegal completion from a class- wide type, set etype of the
	derived type properly to prevent cascaded errors.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* prj.ads, i-cpoint.adb, freeze.adb, ghost.adb, prj-err.adb: Minor
	reformatting.

2015-01-07  Robert Dewar  <dewar@adacore.com>

	* restrict.adb (Check_Restriction_No_Use_Of_Attribute):
	New procedure.
	(OK_No_Use_Of_Entity_Name): New function.
	(Set_Restriction_No_Use_Of_Entity): New procedure.
	* restrict.ads (Check_Restriction_No_Use_Of_Attribute):
	New procedure.
	(OK_No_Use_Of_Entity_Name): New function.
	(Set_Restriction_No_Use_Of_Entity): New procedure.
	* sem_ch8.adb (Find_Direct_Name): Add check for violation of
	No_Use_Of_Entity.
	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Add processing for new restriction No_Use_Of_Entity.

2015-01-07  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Freeze_Array_Type): Apply same handling to Is_Atomic
	component type as to Has_Atomic_Components type.  Remove useless
	test on Is_Aliased component type.

2015-01-07  Hristian Kirtchev  <kirtchev@adacore.com>

	* alloc.ads Alphabetize several declarations. Add constants
	Ignored_Ghost_Units_Initial and Ignored_Ghost_Units_Increment.
	* atree.adb Add with and use clauses for Opt.
	(Allocate_Initialize_Node): Mark a node as ignored Ghost
	if it is created in an ignored Ghost region.
	(Ekind_In): New variant.
	(Is_Ignored_Ghost_Node): New routine.
	(Set_Is_Ignored_Ghost_Node): New routine.
	* atree.adb Aplhabetize several subprograms declarations. Flag
	Spare0 is now known as Is_Ignored_Ghost_Node.
	(Ekind_In): New variant.
	(Is_Ignored_Ghost_Node): New routine.
	(Set_Is_Ignored_Ghost_Node): New routine.
	* einfo.adb: Flag 279 is now known as Contains_Ignored_Ghost_Code.
	(Contains_Ignored_Ghost_Code): New routine.
	(Set_Contains_Ignored_Ghost_Code): New routine.
	(Set_Is_Checked_Ghost_Entity, Set_Is_Ignored_Ghost_Entity):
	It is now possible to set this property on an unanalyzed entity.
	(Write_Entity_Flags): Output the status of flag
	Contains_Ignored_Ghost_Code.
	* einfo.ads New attribute Contains_Ignored_Ghost_Code along with
	usage in nodes.
	(Contains_Ignored_Ghost_Code): New routine
	along with pragma Inline.
	(Set_Contains_Ignored_Ghost_Code): New routine along with pragma Inline.
	* exp_ch3.adb Add with and use clauses for Ghost.
	(Freeze_Type): Capture/restore the value of Ghost_Mode on entry/exit.
	Set the Ghost_Mode in effect.
	(Restore_Globals): New routine.
	* exp_ch7.adb (Process_Declarations): Do not process a context
	that invoves an ignored Ghost entity.
	* exp_dbug.adb (Qualify_All_Entity_Names): Skip an ignored Ghost
	construct that has been rewritten as a null statement.
	* exp_disp.adb Add with and use clauses for Ghost.
	(Make_DT): Capture/restore the value of Ghost_Mode on entry/exit. Set
	the Ghost_Mode in effect.
	(Restore_Globals): New routine.
	* exp_util.adb (Requires_Cleanup_Actions): An ignored Ghost entity
	does not require any clean up. Add two missing cases that deal
	with block statements.
	* freeze.adb Add with and use clauses for Ghost.
	(Freeze_Entity): Capture/restore the value of Ghost_Mode on entry/exit.
	Set the Ghost_Mode in effect.
	(Restore_Globals): New routine.
	* frontend.adb Add with and use clauses for Ghost. Remove any
	ignored Ghost code from all units that qualify.
	* ghost.adb New unit.
	* ghost.ads New unit.
	* gnat1drv.adb Add with clause for Ghost. Initialize and lock
	the table in package Ghost.
	* lib.ads: Alphabetize several subprogram declarations.
	* lib-xref.adb (Output_References): Do not generate reference
	information for ignored Ghost entities.
	* opt.ads Add new type Ghost_Mode_Type and new global variable
	Ghost_Mode.
	* rtsfind.adb (Load_RTU): Provide a clean environment when
	loading a runtime unit.
	* sem.adb (Analyze): Capture/restore the value of Ghost_Mode on
	entry/exit as the node may set a different mode.
	(Do_Analyze):
	Capture/restore the value of Ghost_Mode on entry/exit as the
	unit may be withed from a unit with a different Ghost mode.
	* sem_ch3.adb Add with and use clauses for Ghost.
	(Analyze_Full_Type_Declaration, Analyze_Incomplete_Type_Decl,
	Analyze_Number_Declaration, Analyze_Private_Extension_Declaration,
	Analyze_Subtype_Declaration): Set the Ghost_Mode in effect. Mark
	the entity as Ghost when there is a Ghost_Mode in effect.
	(Array_Type_Declaration): The implicit base type inherits the
	"ghostness" from the array type.
	(Derive_Subprogram): The
	alias inherits the "ghostness" from the parent subprogram.
	(Make_Implicit_Base): The implicit base type inherits the
	"ghostness" from the parent type.
	* sem_ch5.adb Add with and use clauses for Ghost.
	(Analyze_Assignment): Set the Ghost_Mode in effect.
	* sem_ch6.adb Add with and use clauses for Ghost.
	(Analyze_Abstract_Subprogram_Declaration, Analyze_Procedure_Call,
	Analyze_Subprogram_Body_Helper, Analyze_Subprogram_Declaration):
	Set the Ghost_Mode in effect. Mark the entity as Ghost when
	there is a Ghost_Mode in effect.
	* sem_ch7.adb Add with and use clauses for Ghost.
	(Analyze_Package_Body_Helper, Analyze_Package_Declaration,
	Analyze_Private_Type_Declaration): Set the Ghost_Mode in
	effect. Mark the entity as Ghost when there is a Ghost_Mode
	in effect.
	* sem_ch8.adb Add with and use clauses for Ghost.
	(Analyze_Exception_Renaming, Analyze_Generic_Renaming,
	Analyze_Object_Renaming, Analyze_Package_Renaming,
	Analyze_Subprogram_Renaming): Set the Ghost_Mode in effect. Mark
	the entity as Ghost when there is a Ghost_Mode in effect.
	(Find_Type): Check the Ghost context of a type.
	* sem_ch11.adb Add with and use clauses for Ghost.
	(Analyze_Exception_Declaration): Set the Ghost_Mode in
	effect. Mark the entity as Ghost when there is a Ghost_Mode
	in effect.
	* sem_ch12.adb Add with and use clauses for Ghost.
	(Analyze_Generic_Package_Declaration,
	Analyze_Generic_Subprogram_Declaration): Set the Ghost_Mode in effect.
	Mark the entity as Ghost when there is a Ghost_Mode in effect.
	* sem_prag.adb Add with and use clauses for Ghost.
	(Analyze_Pragma): Ghost-related checks are triggered when there
	is a Ghost mode in effect.
	(Create_Abstract_State): Mark the
	entity as Ghost when there is a Ghost_Mode in effect.
	* sem_res.adb Add with and use clauses for Ghost.
	(Check_Ghost_Context): Removed.
	* sem_util.adb (Check_Ghost_Completion): Removed.
	(Check_Ghost_Derivation): Removed.
	(Incomplete_Or_Partial_View):
	Add a guard in case the entity has not been analyzed yet
	and does carry a scope.
	(Is_Declaration): New routine.
	(Is_Ghost_Entity): Removed.
	(Is_Ghost_Statement_Or_Pragma):
	Removed.
	(Is_Subject_To_Ghost): Removed.
	(Set_Is_Ghost_Entity):
	Removed.
	(Within_Ghost_Scope): Removed.
	* sem_util.adb (Check_Ghost_Completion): Removed.
	(Check_Ghost_Derivation): Removed.
	(Is_Declaration): New routine.
	(Is_Ghost_Entity): Removed.
	(Is_Ghost_Statement_Or_Pragma): Removed.
	(Is_Subject_To_Ghost): Removed.
	(Set_Is_Ghost_Entity): Removed.
	(Within_Ghost_Scope): Removed.
	* sinfo.ads Add a section on Ghost mode.
	* treepr.adb (Print_Header_Flag): New routine.
	(Print_Node_Header): Factor out code. Output flag
	Is_Ignored_Ghost_Node.
	* gcc-interface/Make-lang.in: Add dependency for unit Ghost.

2015-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* freeze.adb (Freeze_Array_Type) <Complain_CS>: Remove always
	true test and unreachable 'else' arm.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Check_Target): Improve error message when
	there are mismatched targets between the on in the configuration
	project file and the specified one, either in the main project
	file or in the --target= switch.

2015-01-06  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb, projects.texi, snames.ads-tmpl: Add Mode and
	Install_Name attribute definitions.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Wrap_Imported_Subprogram): Indicate that the
	generated Import pragma for the internal imported procedure does
	not come from an aspect, so that Is_Imported can be properly
	set for it.

2015-01-06  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch12.adb (Might_Inline_Subp): Record whether
	any subprograms in the generic package are marked with
	pragma Inline_Always (setting flag Has_Inline_Always).
	(Analyze_Package_Instantiation): Add test of Has_Inline_Always
	alongside existing test of Front_End_Inlining as alternative
	conditions for setting Inline_Now. Also add test of
	Has_Inline_Always along with Front_End_Inlining test as an
	alternative condition for setting Needs_Body to False.

2015-01-06  Tristan Gingold  <gingold@adacore.com>

	* i-cpoint.adb (Copy_Array): Handle overlap.

2015-01-06  Pascal Obry  <obry@adacore.com>

	* bindgen.adb: Minor style fix.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads, sem_util.adb: Minor reformatting.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Parse_Project_And_Apply_Config): Reset incomplete
	with flags before parsing the projects.
	* prj-err.adb (Error_Msg): Do nothing if there are incomplete withs.
	* prj-part.adb (Post_Parse_Context_Clause): Set Incomplete_Withs
	to True in the flags, when Ignore_Missing_With is True and an
	imported project cannot be found.
	* prj-proc.adb (Expression): When there are incomplete withs and
	a variable or attribute is not found, set the variable/attribute
	to unknown.
	* prj.ads (Processing_Flags): New flag Incomplete_Withs,
	defaulted to False.

2015-01-06  Vasiliy Fofanov  <fofanov@adacore.com>

	* prj-proc.adb, prj-part.adb, prj.adb, prj.ads, prj-conf.adb,
	prj-err.adb: Add new switch --no-command-line.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Sloc of wrapper is that of instantiation.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch11.adb: Minor reformatting.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Get_Assoc_Expr): New routine internal to
	Build_Array_Aggr_Code, used to initialized components covered
	by a box association. If the component type is scalar and has
	a default aspect, use it to initialize such components.

2015-01-06  Pascal Obry  <obry@adacore.com>

	* rtinit.c (__gnat_runtime_initialize): Add a parameter to
	control the setup of the exception handler.
	* initialize.c: Remove unused declaration.
	* bindgen.adb: Always call __gnat_runtime_initialize and pass
	whether the exeception handler must be set or not.

2015-01-06  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Set_SSO_From_Defaults): When setting scalar storage
	order to native from default, make sure to also adjust bit order.
	* exp_aggr.adb: Minor reformatting.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-valllu.adb, s-valllu.ads, s-valuti.ads, s-valuns.adb, s-valuns.ads,
	s-valrea.adb, s-valrea.ads: Add some additional guards for
	Str'Last = Positive'Last.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb, sem_ch8.adb: Ongoing work for wrappers for actual
	subprograms.

2015-01-06  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Conversion): Reapply patch.

2015-01-06  Thomas Quinot  <quinot@adacore.com>

	* sem_util.ads: Minor reformatting.
	* sem_cat.adb (In_RCI_Visible_Declarations): Change back to...
	(In_RCI_Declaration) Return to old name, as proper checking of
	entity being in the visible part depends on entity kind and must
	be done by the caller.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb, sem_ch12.ads, sem_ch8.adb: Ongoing work for wrappers
	for operators in SPARK.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Get_Value): In ASIS mode, preanalyze the
	expression in an others association before making copies for
	separate resolution and accessibility checks. This ensures that
	the type of the expression is available to ASIS in all cases,
	in particular if the expression is itself an aggregate.

2015-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Has_Independent_Components): Document extended
	usage.
	* einfo.adb (Has_Independent_Components): Remove obsolete assertion.
	(Set_Has_Independent_Components): Adjust assertion.
	* sem_prag.adb (Analyze_Pragma): Also set Has_Independent_Components
	for pragma Atomic_Components.  Set Has_Independent_Components
	on the object instead of the type for an object declaration with
	pragma Independent_Components.

2015-01-06  Olivier Hainque  <hainque@adacore.com>

	* set_targ.adb (Read_Target_Dependent_Values): Set
	Long_Double_Index when "long double" is read.
	(elaboration code): Register_Back_End_Types only when not reading from
	config files. Doing otherwise is pointless and error prone.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-valrea.adb (Value_Real): Check for Str'Last = Positive'Last

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* a-wtgeau.adb, a-ztgeau.adb, a-tigeau.adb (String_Skip): Raise PE if
	Str'Last = Positive'Last.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Matches_Limited_View): Handle properly the case
	where the non-limited type is a generic actual and appears as
	a subtype of the non-limited view of the other.
	* freeze.adb (Build_Renamed_Body): If the return type of the
	declaration that is being completed is a limited view and the
	non-limited view is available, use it in the specification of
	the generated body.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Find_Type_Name): If there is a previous tagged
	incomplete view, the type of the classwide type common to both
	views is the type being declared.

2015-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Is_Independent): Further document extended usage.

2015-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Is_Independent): Document extended usage.
	* einfo.adb (Is_Independent): Remove obsolete assertion.
	(Set_Is_Independent): Likewise.
	* sem_prag.adb (Process_Atomic_Shared_Volatile): Rename into...
	(Process_Atomic_Independent_Shared_Volatile): ...this.
	Deal with pragma Independent here.
	(Analyze_Pragma): Adjust
	to above renaming and also invoke it for pragma Independent.
	Adjust comment for Independent_Components.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* snames.ads-tmpl: Remove entries for attribute Enum_Image.
	* exp_attr.adb: Remove reference to Attribute_Enum_Image.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-vallli.adb (Value_Long_Long_Integer): Handle case of Str'Last
	= Positive'Last.
	* s-valllu.adb (Value_Long_Long_Unsigned): Handle case of
	Str'Last = Positive'Last.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Process_Inline): Remove redundant construct
	warning (-gnatw.r) for an ineffective pragma Inline.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-valint.adb: Fix typo in last checkin.
	* s-valuns.adb (Value_Unsigned): More efficient fix for
	Positive'Last case.
	* sem_attr.adb (Analyze_Attribute): Minor reformatting
	(Eval_Attribute): Static ervaluation of 'Img for enumeration types.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-valint.adb, s-valuns.adb (Value_Integer): Deal with case where
	Str'Last = Positive'Last

2015-01-06  Thomas Quinot  <quinot@adacore.com>

	* xoscons.adb: Display exception information and return non-zero
	exit status in top level exception handler.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb: Code clean up.

2015-01-06  Tristan Gingold  <gingold@adacore.com>

	* targparm.ads: Remove obsolete comment.

2015-01-06  Olivier Hainque  <hainque@adacore.com>

        * gcc-interface/decl.c (gnat_to_gnu_entity, case E_Variable): When
        constructing a ref to variable, update inner_const_flag from the
        variable TREE_READONLY attribute.
        * gcc-interface/targtyps.c (WIDEST_HARDWARE_FP_SIZE): Remove default
        definition.
        (get_target_float_size): Remove.
        (get_target_double_size): Remove.
        (get_target_long_double_size): Remove.

2015-01-06  Pascal Obry  <obry@adacore.com>

	* adaint.c (ProcListEvt): Set to NULL.
	* rtinit.c: New file.
	(__gnat_rt_init_count): New reference counter set to 0.
	(__gnat_runtime_initialize): Move code here from __gnat_initialize when
	this code is actually needed for the runtime initialization. This
	routine returns immediately if the initialization has already been done.
	* final.c: Revert previous change.
	* rtfinal.c: New file.
	(__gnat_runtime_finalize)[Win32]: Add finalization of the critical
	section and event. The default version of this routine is empty (except
	for the reference counting code). This routine returns immediately if
	some others libraries are referencing the runtime.
	* bindgen.adb (Gen_Adainit): Generate call to Runtime_Initialize
	remove circuitry to initialize the signal handler as this is
	now done by the runtime initialization routine.
	(Gen_Adafinal): Generate call to Runtime_Finalize.
	* gnat_ugn.texi: Update documentation about concurrency and
	initialization/finalization of the run-time.
	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Add
	references to rtfinal.o and rtinit.o

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Add dummy entry
	for Enum_Image.
	* sem_attr.adb: Implement Enum_Image attribute.
	* snames.ads-tmpl: Add entries for Enum_Image attribute.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* namet.ads: Document use of Boolean2 for No_Use_Of_Entity.
	* restrict.ads (No_Use_Of_Entity): New table.
	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Ignore No_Use_Of_Entity (will be processed in parser).
	* snames.ads-tmpl: Add entry for Name_No_Use_Of_Entity.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* prj-tree.adb (Imported_Or_Extended_Project_Of): Do not try
	to check for an extended project, if a project does not have
	yet a project declaration.

2015-01-06  Pierre-Marie Derodat  <derodat@adacore.com>

	* scos.ads: Update documentation about the SCO table build
	process and about table records format.
	* par_sco.ads (SCO_Record): Rename to SCO_Record_Raw.
	(SCO_Record_Filtered): New procedure.
	(Set_SCO_Logical_Operator): New procedure.
	(dsco): Update documentation.
	* par_sco.adb: Update library-level comments.
	(SCO_Generation_State_Type): New type.
	(SCO_Generation_State): New variable.
	(SCO_Raw_Table): New package instanciation.
	(Condition_Pragma_Hash_Table): Rename to SCO_Raw_Hash_Table.
	("<"): New.
	(Tristate): New type.
	(Is_Logical_Operator): Return Tristate and update documentation.
	(Has_Decision): Update call to Is_Logical_Operator and complete
	documentation.
	(Set_Table_Entry): Rename to Set_Raw_Table_Entry, update
	comment, add an assertion for state checking and change
	references to SCO_Table into SCO_Raw_Table.
	(dsco): Refactor to dump the raw and the filtered tables.
	(Process_Decisions.Output_Decision_Operand): Handle putative
	short-circuit operators.
	(Process_Decisions.Output_Element): Update references
	to Set_Table_Entry and to Condition_Pragma_Hash_Table.
	(Process_Decisions.Process_Decision_Operand): Update call
	to Is_Logical_Operator.
	(Process_Decisions.Process_Node): Handle putative short-circuit
	operators and change references to
	SCO_Table into SCO_Raw_Table.
	(SCO_Output): Add an assertion
	for state checking and remove code that used to stamp out SCO entries.
	(SCO_Pragma_Disabled): Change reference to SCO_Table
	into SCO_Raw_Table.
	(SCO_Record): Rename to SCO_Record_Raw,
	add an assertion for state checking and change references
	to SCO_Table into SCO_Raw_Table.
	(Set_SCO_Condition): Add an assertion for state checking, update
	references to Condition_Pragma_Hash_Table and change references to
	SCO_Table into SCO_Raw_Table.
	(Set_SCO_Pragma_Enabled): Add an assertion for state checking and
	change references to SCO_Table into SCO_Raw_Table.
	(Set_SCO_Logical_Operator): New procedure.
	(Traverse_Declarations_Or_Statements.Set_Statement_Entry): Update
	references to Set_Table_Entry and to Condition_Pragma_Hash_Table.
	(SCO_Record_Fildered): New procedure.
	* gnat1drv.adb (Gnat1drv): Invoke the SCO filtering pass.
	* lib-writ.adb (Write_ALI): Invoke the SCO filtering pass and
	output SCOs.
	* par-load.adb (Load): Update reference to SCO_Record.
	* par.adb (Par): Update reference to SCO_Record.
	* put_scos.adb (Put_SCOs): Add an assertion to check that no
	putative SCO condition reaches this end.
	* sem_ch10.adb (Analyze_Proper_Body): Update reference to SCO_Record.
	* sem_res.adb (Resolve_Logical_Op): Validate putative SCOs
	when corresponding to an "and"/"or" operator affected by the
	Short_Circuit_And_Or pragma.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb (Analyze_Use_Package): Give more specific error
	msg for attempted USE of generic subprogram or subprogram.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-valllu.adb, a-tiinau.adb, a-timoau.adb, a-ztinau.adb, a-ztmoau.adb,
	s-valuns.adb, s-valrea.adb, a-wtflau.adb, a-tiflau.adb, a-ztflau.adb,
	a-wtinau.adb, a-wtmoau.adb: Document recognition of : in place of #.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): For aspects
	that specify stream subprograms, if the prefix is a class-wide
	type then the generated attribute definition clause must apply
	to the same class-wide type.
	(Default_Iterator): An iterator defined by an aspect of some
	container type T must have a first parameter of type T, T'class,
	or an access to such (from code reading RM 5.5.1 (2/3)).

2015-01-06  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb: Minor: complete previous change.

2015-01-06  Olivier Hainque  <hainque@adacore.com>

	* set_targ.ads (C_Type_For): New function. Return the name of
	a C type supported by the back-end and suitable as a basis to
	construct the standard Ada floating point type identified by
	the T parameter. This is used as a common ground to feed both
	ttypes values and the GNAT tree nodes for the standard floating
	point types.
	* set_targ.adb (Long_Double_Index): The index at which "long
	double" gets registered in the FPT_Mode_Table. This is useful to
	know whether we have a "long double" available at all and get at
	it's characteristics without having to search the FPT_Mode_Table
	when we need to decide which C type should be used as the
	basis for Long_Long_Float in Ada.
	(Register_Float_Type): Fill Long_Double_Index.
	(FPT_Mode_Index_For): New function. Return the index in
	FPT_Mode_Table that designates the entry corresponding to the
	provided C type name.
	(FPT_Mode_Index_For): New function. Return the index in
	FPT_Mode_Table that designates the entry for a back-end type
	suitable as a basis to construct the standard Ada floating point
	type identified by the input T parameter.
	(elaboration code): Register_Back_End_Types unconditionally,
	so C_Type_For can operate regardless of -gnateT. Do it
	early so we can query it for the floating point sizes, via
	FPT_Mode_Index_For. Initialize Float_Size, Double_Size and
	Long_Double_Size from the FPT_Mode_Table, as cstand will do.
	* cstand.adb (Create_Float_Types): Use C_Type_For to determine
	which C type should be used as the basis for the construction
	of the Standard Ada floating point types.
	* get_targ.ads (Get_Float_Size, Get_Double_Size,
	Get_Long_Double_Size): Remove.
	* get_targ.adb: Likewise.

2015-01-06  Thomas Quinot  <quinot@adacore.com>

	* sem_cat.adb (In_RCI_Declaration): Remove unnecessary
	parameter and rename to...
	(In_RCI_Visible_Declarations): Fix handling of private part of nested
	package.
	(Validate_RCI_Subprogram_Declaration): Reject illegal function
	returning anonymous access in RCI unit.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (New_Overloaded_Entity): In GNATprove mode, a
	function wrapper may be a homonym of another local declaration.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): In GNATprove mode,
	build function and operator wrappers after the actual subprogram
	has been resolved, and replace the standard renaming declaration
	with the declaration of wrapper.
	* sem_ch12.ads (Build_Function_Wrapper, Build_Operator_Wraooer):
	make public for use elsewhere.
	* sem_ch12.adb (Build_Function_Wrapper, Build_Operator_Wraooer):
	rewrite, now that actual is fully resolved when wrapper is
	constructed.

2015-01-06  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb: Revert previous change.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb: Change name Name_Table_Boolean to
	Name_Table_Boolean1.
	* namet.adb: Change name Name_Table_Boolean to Name_Table_Boolean1
	Introduce Name_Table_Boolean2/3.
	* namet.ads: Change name Name_Table_Boolean to Name_Table_Boolean1
	Introduce Name_Table_Boolean2/3.
	* par-ch13.adb: Change name Name_Table_Boolean to
	Name_Table_Boolean1.

2015-01-06  Bob Duff  <duff@adacore.com>

	* gnat_rm.texi: Improve documentation regarding No_Task_Termination.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Record_Aggregte, Get_Value): For an
	others choice that covers multiple components, analyze each
	copy with the type of the component even in compile-only mode,
	to detect potential accessibility errors.

2015-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Is_Assignment_Or_Object_Expression): New routine.
	(Resolve_Actuals): An effectively volatile out
	parameter cannot act as an in or in out actual in a call.
	(Resolve_Entity_Name): An effectively volatile out parameter
	cannot be read.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): If the body is
	the expansion of an expression function it may be pre-analyzed
	if a 'access attribute is applied to the function, in which case
	last_entity may have been assigned already.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_One_Call): If formal has an incomplete
	type and actual has the corresponding full view, there is no
	error, but a case of use of incomplete type in a predicate or
	invariant expression.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Insert_No_Roots): Make sure that the same source
	in two different project tree is checked in both trees, if they
	are sources of two different projects, extended or not.

2015-01-06  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb: Minor code clean up.
	(Adjust_Global_Switches): Ignore gnatprove_mode in codepeer_mode.

2015-01-06  Bob Duff  <duff@adacore.com>

	* osint.adb (Read_Source_File): Don't print out
	file name unless T = Source.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Variable, Is_OK_Variable_For_Out_Formal):
	recognize improper uses of constant_reference types as actuals
	for in-out parameters.
	(Check_Function_Call): Do not collect identifiers if function
	name is missing because of previous error.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* ali-util.adb, sem_prag.adb, rtsfind.adb, sem_util.adb, sem_res.adb,
	ali.adb, binde.adb, namet.adb, namet.ads, gnatls.adb, bcheck.adb:
	Minor change of name Name_Table_Info => Name_Table_Int.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* exp_strm.adb (Build_Elementary_Input_Call): Clarify comments
	in previous checkin.
	* freeze.adb (Freeze_Fixed_Point_Type): Add warning for shaving
	of bounds.
	* sem_prag.adb, sem_ch10.adb, sem_ch6.adb: Minor reformatting.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* a-strsup.adb (Times (Natural;String;Positive)): Raise
	Length_Error, not Index_Error, when the result is too long.

2015-01-06  Thomas Quinot  <quinot@adacore.com>

	* a-direct.adb (Create_Path): Minor error handling and
	performance improvement.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* checks.ads, sem_ch12.adb: Minor reformatting.
	* exp_ch4.adb (Expand_N_Op_Divide): Generate explicit divide by
	zero check for fixed-point case if Backend_Divide_Checks_On_Target
	is False.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case No_Elaboration_Code_All):
	Do not set restriction No_Elaboration_Code unless the pragma
	appears in the main unit).

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Is_Regular_With_Clause): Add guard to verify
	that with clause has already been analyzed before checking kind
	of with_clause.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* exp_strm.adb (Build_Elementary_Input_Call): Return base type
	(as required by RM).

2015-01-06  Arnaud Charlet  <charlet@adacore.com>

	* a-reatim.adb ("/"): Add explicit pragma Unsuppress (Division_Check).

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Process_Suppress_Unsuppress): Add extra warning
	for ignoring pragma Suppress (Elaboration_Check) in SPARK mode.

2015-01-06  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Conversion): No displacement
	of the pointer to the object needed when the type of the operand
	is not an interface type and the interface is one of its parent
	types (since they share the primary dispatch table).

2015-01-06  Vincent Celier  <celier@adacore.com>

	* prj-env.adb: Minor comment update.

2015-01-06  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Valid_Conversion): Restrict the checks on anonymous
	access types whose target type is an interface type to operands
	that are access types; required to report an error when the
	operand is not an access type.

2015-01-06  Bob Duff  <duff@adacore.com>

	* a-cfinve.adb (Copy): Set the discriminant to the Length when
	Capacity = 0.
	* a-cofove.ads (Capacity): Add a postcondition.
	* a-cfinve.ads (Capacity): Add a postcondition.
	(Reserve_Capacity): Correct the postcondition in the case where
	Capacity = 0; that means "Capacity => Length (Container)".
	* a-cofove.adb (Elems[c]): Add a comment
	explaining the dangers and how to avoid them.

2015-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Code clean up.

2015-01-06  Arnaud Charlet  <charlet@adacore.com>

	* gnatvsn.ads: Bump copyright year.

2015-01-06  Robert Dewar  <dewar@adacore.com>

	* s-taskin.ads, s-traces.ads: Minor reformatting.
	* exp_util.adb: Minor typo fix.

2015-01-06  Vincent Celier  <celier@adacore.com>

	* gnatls.adb (Search_RTS): Invoke Initialize_Default_Project_Path
	with the runtime name.
	* prj-env.adb (Initialize_Default_Project_Path): When both
	Target_Name and Runtime_Name are not empty string, add to the
	project path the two directories .../lib/gnat and .../share/gpr
	related to the runtime.
	* prj-env.ads (Initialize_Default_Project_Path): New String
	parameter Runtime_Name, defaulted to the empty string.

2015-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* frontend.adb: Guard against the case where a configuration
	pragma may be split into multiple pragmas and the original
	rewritten as a null statement.
	* sem_prag.adb (Analyze_Pragma): Insert a brand new Check_Policy
	pragma using Insert_Before rather than Insert_Action. This
	takes care of the configuration pragma case where Insert_Action
	would fail.

2015-01-06  Bob Duff  <duff@adacore.com>

	* a-coboho.ads (Element_Access): Add "pragma
	No_Strict_Aliasing (Element_Access);". This is needed because
	we are unchecked-converting from Address to Element_Access.
	* a-cofove.ads, a-cofove.adb (Elems,Elemsc): Fix bounds of the
	result to be 1.

2015-01-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Actuals): Remove the
	restriction which prohibits volatile actual parameters with
	enabled external propery Async_Writers to act appear in procedure
	calls where the corresponding formal is of mode OUT.

2015-01-05  Jakub Jelinek  <jakub@redhat.com>

	* gnat_ugn.texi: Bump @copying's copyright year.

2015-01-05  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/64492
	* gcc-interface/Makefile.in (../stamp-tools): Reinstate dropped code.

2015-01-04  Uros Bizjak  <ubizjak@gmail.com>

	* gcc-interface/misc.c (internal_error_function): Use xasprintf instead
	of unchecked asprintf.


Copyright (C) 2015 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
