2010-12-31  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (substitute_in_type): Do not deal with
	LANG_TYPE, METHOD_TYPE or OFFSET_TYPE.
	* gcc-interface/utils.c (handle_vector_size_attribute): Do not deal
	with METHOD_TYPE or OFFSET_TYPE.

2010-12-22  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/utils.c (handle_nonnull_attribute): Use prototype_p.
	(handle_sentinel_attribute): Likewise.

2010-12-20  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	PR bootstrap/47027
	* a-stwiun-shared.ads: Rewrap overlong comment line.

	* projects.texi: Fix typos.
	* gnat_rm.texi: Likewise.
	* gnat_ugn.texi: Likewise.
	* sem_util.adb: Fix typo in variable, typos in comments.
	* a-btgbso.adb: Fix typos in comments.
	* a-cbdlli.adb, a-cbhase.ads, a-cdlili.adb, a-cobove.adb,
	a-coinve.adb, a-convec.adb, a-direct.ads, a-strunb-shared.adb,
	a-strunb-shared.ads, a-stuten.ads, a-stwiun-shared.adb,
	a-stwiun-shared.ads, a-stzunb-shared.adb, a-stzunb-shared.ads,
	a-suenco.adb, a-suenst.adb, a-suewst.adb, a-suezst.adb, ali.ads,
	aspects.ads, atree.ads, binde.adb, bindgen.adb, checks.adb,
	checks.ads, einfo.ads, err_vars.ads, errout.adb, errout.ads,
	exp_aggr.adb, exp_attr.adb, exp_cg.adb, exp_ch3.adb,
	exp_ch4.adb, exp_ch5.adb, exp_ch6.adb, exp_ch7.adb,
	exp_dbug.ads, exp_disp.adb, exp_fixd.ads, freeze.adb,
	g-altive.ads, g-comlin.ads, g-excact.ads, g-mbdira.adb,
	g-sechas.ads, g-sehash.ads, g-sha1.ads, g-sha224.ads,
	g-sha256.ads, g-sha384.ads, g-sha512.ads, g-shsh32.ads,
	g-shsh64.ads, g-socket.adb, g-socket.ads, g-sothco.ads,
	gcc-interface/decl.c, gcc-interface/trans.c,
	gcc-interface/utils2.c, gnat1drv.adb, init.c, inline.adb,
	link.c, locales.c, make.adb, mingw32.h, namet.ads, osint.adb,
	par-ch12.adb, par-ch13.adb, par-ch3.adb, par-ch4.adb,
	par-prag.adb, par.adb, par_sco.adb, prepcomp.adb,
	prj-conf.ads, prj-dect.adb, prj-env.adb, prj-env.ads,
	prj-nmsc.adb, prj-tree.ads, prj-util.ads, prj.adb, prj.ads,
	s-auxdec-vms-alpha.adb, s-auxdec-vms_64.ads, s-oscons-tmplt.c,
	s-osinte-vxworks.ads, s-osprim-mingw.adb, s-regexp.adb,
	s-stusta.adb, s-taprop-mingw.adb, s-taprop-solaris.adb,
	scn.adb, scos.ads, sem.adb, sem_aggr.adb, sem_attr.adb,
	sem_aux.adb, sem_aux.ads, sem_ch12.adb, sem_ch12.ads,
	sem_ch13.adb, sem_ch13.ads, sem_ch3.adb, sem_ch4.adb,
	sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_disp.adb,
	sem_disp.ads, sem_eval.adb, sem_intr.adb, sem_prag.adb,
	sem_res.adb, sem_scil.adb, sem_util.ads, sem_warn.adb,
	sem_warn.ads, sinfo.ads, socket.c, styleg.adb, switch.ads,
	sysdep.c, tb-alvxw.c, xoscons.adb: Likewise.

2010-12-13  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_General_Access_Type>:
	Build a stub DECL for the dummy fat pointer type in the unconstrained
	array case.
	* gcc-interface/utils.c (update_pointer_to): Set the DECL_ORIGINAL_TYPE
	for all the variants in the fat pointer case.

2010-12-13  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (can_be_lower_p): New predicate.
	(Loop_Statement_to_gnu): Do not generate the entry condition if we know
	that it will be true.

2010-12-03  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/lang.opt (k8): New option.

2010-12-03  Alexandre Oliva  <aoliva@redhat.com>

	* gnatvsn.adb (Gnat_Version_String): Don't overrun Ver_Len_Max.
	* gnatvsn.ads (Ver_Len_Max): Bump up to 256.
	* g-comver.adb (Ver_Len_Max): Likewise.

2010-12-03  Laurynas Biveinis  <laurynas.biveinis@gmail.com>

	* gcc-interface/decl.c (struct subst_pair_d): Remove GTY tag.
	(variant_desc_d): Likewise.

2010-12-01  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/misc.c (flag_compare_debug, flag_stack_check):
	Undefine as macros then define as variables.
	(gnat_post_options): Set variables from global_options.

2010-11-27  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/46574
	* gcc-interface/utils2.c (compare_elmt_bitpos): Fix typos.

2010-11-27  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/40777
	* gcc-interface/targtyps.c (get_target_double_scalar_alignment): Guard
	use of TARGET_64BIT macro.

2010-11-27  Eric Botcazou  <ebotcazou@adacore.com>

	* s-osinte-linux.ads (sigset_t): Use unsigned_char subtype directly.
	(unsigned_long_long_t): New modular type.
	(pthread_cond_t): Add alignment clause.

2010-11-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatvsn.adb (Version_String): Change type to C-like array of chars.
	(Gnat_Version_String): Adjust to above change.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Also
	use return-by-invisible-reference if the return type is By_Reference.
	Tidy up and skip the processing of the return type if it is void.

2010-11-17  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/misc.c (gnat_parse_file): Take no arguments.

2010-11-17  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (addressable_p): Rewrite obsolete paragraph in
	head comment.

2010-11-12  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/Make-lang.in (ada/misc.o): Use $(OPTS_H).
	* gcc-interface/misc.c (gnat_handle_option): Take location_t parameter.

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

	* gcc-interface/trans.c (gigi): Don't set 'pure' flag on SJLJ routines.
	* gcc-interface/utils2.c (compare_arrays): Add LOC parameter.  Set it
	directly on all the comparison expressions.
	(build_binary_op): Pass input_location to compare_arrays.

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

	* gcc-interface/trans.c (lvalue_required_p) <N_Type_Conversion>): Look
	through it for elementary types as well.
	<N_Unchecked_Type_Conversion>: Adjust to above change.
	<N_Allocator>: Likewise.
	(gnat_to_gnu): Do not attempt to rewrite boolean literals.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not set DECL_ARTIFICIAL
	on the reused DECL node coming from a renamed object.
	Set DECL_IGNORED_P on the DECL node built for renaming entities if they
	don't need debug info.

2010-11-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (save_gnu_tree): Improve comments.
	(get_gnu_tree): Likewise.

2010-11-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (finish_fat_pointer_type): New function.
	(gnat_to_gnu_entity) <E_Array_Type>: Use it to build the fat pointer
	type.
	<E_Access_Type>: Likewise.

2010-11-02  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (add_stmt_force): Declare.
	(add_stmt_with_node_force): Likewise.
	* gcc-interface/trans.c (Attribute_to_gnu): Don't set TREE_SIDE_EFFECTS
	on the SAVE_EXPR built for cached expressions of parameter attributes.
	(Subprogram_Body_to_gnu): Force evaluation of the SAVE_EXPR built for
	cached expressions of parameter attributes.
	(add_stmt_force): New function.
	(add_stmt_with_node_force): Likewise.

2010-10-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gigi): Fix formatting issues.
	(build_raise_check): Likewise.
	(gnat_to_gnu): Likewise.
	* gcc-interface/utils2.c (build_call_raise_range): Likewise.
	(build_call_raise_column): Likewise.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, exp_prag.adb, sem_ch3.adb, exp_atag.adb, layout.adb,
	sem_dist.adb, exp_ch7.adb, exp_util.adb, exp_attr.adb, exp_ch9.adb,
	sem_ch10.adb, checks.adb, sem_prag.adb, par-endh.adb, sem_ch12.adb,
	exp_smem.adb, sem_attr.adb, exp_ch4.adb, exp_ch6.adb, exp_ch8.adb,
	sem_ch6.adb, exp_disp.adb, exp_aggr.adb, exp_dist.adb, sem_ch13.adb,
	par-ch3.adb, par-ch5.adb, exp_strm.adb, exp_ch3.adb: Minor reformatting
	* opt.ads: Minor comment fix.

2010-10-26  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Document option -s for gnatlink.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* opt.ads: Move documentation on checksum stuff here from prj-nmsc
	* prj-nmsc.adb (Process_Project_Level_Array_Attributes): Move
	documentation on checksum versions to opt.ads.

2010-10-26  Vincent Celier  <celier@adacore.com>

	* opt.ads (Checksum_Accumulate_Token_Checksum): New Boolean flag,
	defaulted to True.
	(Checksum_GNAT_6_3): New name of Old_Checksums
	(Checksum_GNAT_5_03): New name of Old_Old_Checksums
	* prj-nmsc.adb (Process_Project_Level_Array_Attributes): Adapt to new
	names of Opt flags.
	Set Checksum_Accumulate_Token_Checksum to False if GNAT version is 5.03
	or before.
	* scng.adb (Accumulate_Token_Checksum_GNAT_6_3): New name of procedure
	Accumulate_Token_Checksum_Old.
	(Accumulate_Token_Checksum_GNAT_5_03): New name of procedure
	Accumulate_Token_Checksum_Old_Old.
	(Nlit): Call Accumulate_Token_Checksum only if
	Opt.Checksum_Accumulate_Token_Checksum is True.
	(Scan): Ditto

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Build_Invariant_Procedure): New calling sequence.
	(Build_Invariant_Procedure): Properly handle analysis of invariant
	expression with proper end-of-visible-decls visibility.
	* sem_ch13.ads (Build_Invariant_Procedure): Changed calling sequence.
	* sem_ch3.adb (Process_Full_View): Don't build invariant procedure
	(too late).
	(Analyze_Private_Extension_Declaration): Propagate invariant flags.
	* sem_ch7.adb (Analyze_Package_Specification): Build invariant
	procedures.

2010-10-26  Vincent Celier  <celier@adacore.com>

	* opt.ads (Old_Checksums, Old_Old_Checksums): New Boolean flags,
	defaulted to False.
	* prj-nmsc.adb (Process_Project_Level_Array_Attributes): When
	processing attribute Toolchain_Version ("Ada"), set Opt.Old_Checksums
	and Opt.Old_Old_Checksums depending on the GNAT version.
	* scng.adb (Accumulate_Token_Checksum_Old): New procedure.
	(Accumulate_Token_Checksum_Old_Old): New procedure.
	(Scan): For keywords, when Opt.Old_Checksums is True, call one of the
	alternative procedures Accumulate_Token_Checksum_Old or
	Accumulate_Token_Checksum_Old_Old, instead of Accumulate_Token_Checksum.

2010-10-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcc-interface/utils2.c (build_compound_expr): New function.
	* gcc-interface/gigi.h (build_compound_expr): Declare it.
	* gcc-interface/trans.c (Attribute_to_gnu, call_to_gnu): Use it.
	(gnat_to_gnu, case N_Expression_With_Actions): Likewise. 

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

	* sem_prag.adb (Process_Import_Or_Interface): Skip primitives of
	interface types when processing all the entities in the homonym chain
	that are declared in the same declarative part.

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

	* sem_ch3.adb (Process_Range_In_Decl): If the range is part of a
	quantified expression, the insertion point for range checks will be
	arbitrarily far in the tree.
	* sem_ch5.adb (One_Bound): Use Insert_Actions for the declaration of
	the temporary that holds the value of the bounds.
	* sem_res.adb (Resolve_Quantified_Expressions): Disable expansion of
	condition until the full expression is expanded.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* opt.ads: Comment fix.
	* sem_cat.adb: Treat categorization errors as warnings in GNAT Mode.
	* switch-c.adb: GNAT Mode does not set
	Treat_Categorization_Errors_As_Warnings.

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

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Improve warning when an
	operator renames another one with a different name.

2010-10-26  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb, exp_pakd.adb: Minor reformatting.

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

	* namet.adb: Improve hash function.

2010-10-26  Thomas Quinot  <quinot@adacore.com>

	* sem_disp.adb: Minor reformatting.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_ch4.adb, sem_disp.adb, switch-c.adb: Minor
	reformatting.
	* gnat_ugn.texi: Document -gnateP switch.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* opt.ads (Treat_Categorization_Errors_As_Warnings): New flag
	* sem_cat.adb (Check_Categorization_Dependencies):
	Use Check_Categorization_Dependencies
	* switch-c.adb: GNAT Mode sets Treat_Categorization_Errors_As_Warnings
	-gnateP sets Treat_Categorization_Errors_As_Warnings
	* usage.adb: Add line for -gnateP switch

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

	* sem_ch3.adb (Add_Internal_Interface_Entities): Handle primitives
	inherited from the parent that cover interface primitives.
	(Derive_Progenitor_Subprograms): Handle primitives inherited from
	the parent that cover interface primitives.
	* sem_disp.adb (Find_Primitive_Covering_Interface): When searching in
	the list of primitives of the type extend the test to include inherited
	private primitives.
	* sem_ch6.ads (Is_Interface_Conformant): Add missing documentation.
	* sem_ch7.adb (Declare_Inherited_Private_Subprograms): Add missing
	barrier to the loop searching for explicit overriding primitives.
	* sem_ch4.adb (Analyze_Indexed_Component_Form): Add missing barrier
	before accessing attribute Entity.

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

	* make.adb: Call Namet.Finalize, so we can get statistics.

2010-10-26  Geert Bosch  <bosch@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Use the subprogram_body
	node to determine wether the subprogram is a rewritten parameterized
	expression.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* opt.ads: Minor code reorganization.  Alphabetize Warning switches.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb, xsinfo.adb: Minor reformatting.

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

	* namet.adb (Finalize): More cleanup of statistics printouts.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* ceinfo.adb: Minor reformatting.

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

	* sem_ch6.adb (Check_Overriding_Indicator, New_Overloaded_Entity): When
	setting attribute Overridden_Operation do not reference the entities
	generated by Derive_Subprograms but their aliased entity (which
	is the primitive inherited from the parent type).

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

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

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

	* gcc-interface/Make-lang.in: Update dependencies.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (Is_Base_Type): New function, use it where
	appropriate.
	* exp_ch6.adb, exp_dbug.adb, exp_disp.adb, freeze.adb, lib-xref.adb,
	sem_aux.adb, sem_ch3.adb, sem_ch7.adb, sem_ch8.adb (Is_Base_Type): Use
	this new abstraction where appropriate.

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

	* sem_ch12.adb: Code clean up.

2010-10-26  Paul Hilfinger  <hilfinger@adacore.com>

	* exp_dbug.ads: Document effect of 'pragma Unchecked_Union' on
	debugging data.

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

	* sem_util.adb (Note_Possible_Modification): If the target of an
	assignment is the bound variable in an iterator, the domain of
	iteration, i.e. array or container, is modified as well.

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

	* Make-generated.in: Make the relevant make targets depend on
	ceinfo.adb and csinfo.adb.
	* csinfo.adb, ceinfo.adb: Make sure it raises an exception on failure,
	so when called from xeinfo, the failure will be noticed.
	* sinfo.ads: Update comments to reflect the fact that xsinfo runs csinfo
	* xsinfo.adb, xeinfo.adb: Run ceinfo to check for errors. Close files.

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

	* exp_ch4.adb: Set properly parent field of operands of concatenation.

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

	* sem_res.adb (Check_Infinite_Recursion): A recursive call within a
	conditional expression or a case expression should not generate an
	infinite recursion warning.

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

	* einfo.ads, einfo.adb (Is_Overriding_Operation): Removed.
	(Set_Is_Overriding_Operation): Removed.
	* sem_ch3.adb (Check_Abstract_Overriding): Remove redundant call to
	Is_Overriding_Operation.
	* exp_ch7.adb (Check_Visibly_Controlled): Remove redundant call to
	Is_Overriding_Operation.
	* sem_ch7.adb (Declare_Inherited_Private_Subprograms): Remove redundant
	call to Set_Is_Overriding_Operation.
	* sem_util.adb (Collect_Primitive_Operations): Replace test on
	Is_Overriding_Operation by test on the presence of attribute
	Overridden_Operation.
	(Original_Corresponding_Operation): Remove redundant call to attribute
	Is_Overriding_Operation.
	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Remove
	redundant call to Is_Overriding_Operation.
	(Verify_Overriding_Indicator): Replace several occurrences of test on
	Is_Overriding_Operation by test on the presence of attribute
	Overridden_Operation.
	(Check_Convention): Replace test on Is_Overriding_Operation by test on
	the presence of Overridden_Operation.
	(Check_Overriding_Indicator): Add missing decoration of attribute
	Overridden_Operation. Minor code cleanup.
	(New_Overloaded_Entity): Replace occurrence of test on
	Is_Overriding_Operation by test on the presence of attribute
	Overridden_Operation. Remove redundant setting of attribute
	Is_Overriding_Operation plus minor code reorganization.
	Add missing decoration of attribute Overridden_Operation.
	* sem_elim.adb (Set_Eliminated): Replace test on
	Is_Overriding_Operation by test on the presence of Overridden_Operation.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Replace test on
	Is_Overriding_Operation by test on the presence of
	Overridden_Operation. Remove a redundant test on attribute
	Is_Overriding_Operation. 
	* lib-xref.adb (Generate_Reference): Replace test on
	Is_Overriding_Operation by test on the presence of Overridden_Operation.
	(Output_References): Replace test on Is_Overriding_Operation by test on
	the presence of Overridden_Operation.
	* sem_disp.adb (Override_Dispatching_Operation): Replace test on
	Is_Overriding_Operation by test on the presence of Overridden_Operation.
	Add missing decoration of attribute Overridden_Operation.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Properly check
	RM 13.4.1(10).

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

	* sem_res.adb (Resolve_Actuals): In case of certain
	internally-generated type conversions (created by OK_Convert_To, so the
	Conversion_OK flag is set), avoid fetching the component type when it's
	not really an array type, but a private type completed by an array type.

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

	* sem_ch5.adb: Adjust format of error message.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (OK_To_Reference): Removed, no longer used.
	* exp_util.adb (Side_Effect_Free): Put in safety barrier in code to
	detect renamings to avoid problems with invariants.
	* sem_ch13.adb (Replace_Type_References_Generic): New procedure
	(Build_Invariant_Procedure): Use Replace_Type_Reference_Generic
	(Build_Predicate_Function): Use Replace_Type_Reference_Generic
	* sem_res.adb, sem_ch8.adb, sem_ch4.adb (OK_To_Reference): Remove
	references, flag is no longer set.

2010-10-26  Vincent Celier  <celier@adacore.com>

	* prj.ads (Source_Data): New Boolean component Initialized, defaulted
	to False, set to True when Source_Data is completely initialized.
	* prj-env.adb: Minor comment fix.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* sem_case.adb, sem_ch6.adb, sem_util.adb: Minor reformatting.

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

	* sem_ch5.adb (Analyze_Iteration_Scheme): Diagnose attempt to use thew
	form "for X in A" when A is an array object. This form is only intended
	for containers.
	* sem_eval.adb: Fix reference to non-existing field of type conversion
	node.
	* sem_case.adb (Check_Choices): Improve error reporting for overlapping
	choices in case statements.

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

	* exp_disp.adb (Expand_Interface_Actuals): When expanding an actual for
	a class-wide interface formal that involves applying a displacement
	conversion to the actual, check for the case of calling a build-in-place
	function and handle generation of the implicit BIP parameters (call
	Make_Build_In_Place_Call_In_Anonymous_Context).
	Add with and use of Exp_Ch6.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, sem_cat.ads: Minor reformatting.

2010-10-26  Sergey Rybin  <rybin@adacore.com>

	* vms_data.ads: Define VMS qualifier for gnatelim '--ignore' option

2010-10-26  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb (Has_Preelaborable_Initialization.Check_Components):
	For a discriminant, use Discriminant_Default_Value rather than
	Expression (Declaration_Node (D)).

2010-10-26  Geert Bosch  <bosch@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Parameterized
	expressions don't need a spec, even when style checks require
	subprograms to have one.

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

	* gnatvsn.ads: Update comments.

2010-10-26  Matthew Heaney  <heaney@adacore.com>

	* Makefile.rtl, impunit.adb: Add bounded hashed set and bounded hashed
	map containers.
	* a-cohata.ads: Add declaration of generic package for bounded hash
	table types.
	* a-chtgbo.ads, a-chtgbo.adb, a-chtgbk.ads, a-chtgbk.adb, a-cbhase.ads,
	a-cbhase.adb, a-cbhama.ads, a-cbhama.adb: New files.

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

	* sem_warn.adb: Improve warning message on overlapping actuals.

2010-10-26  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb, exp_dist.adb: Minor reformatting.

2010-10-26  Vincent Celier  <celier@adacore.com>

	* makeusg.adb (Makeusg): Add lines for switches -vl, -vm and -vh.

2010-10-26  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Move generation of
	predicate check to analyzer, since too much rewriting occurs in the
	analyzer.
	* sem_ch13.adb (Build_Predicate_Function): Change calling sequence, and
	change the order in which things are done to fix several errors in
	dealing with qualification of the type name.
	(Build_Static_Predicate): Built static predicate after full analysis
	of the body. This is necessary to fix several problems.
	* sem_ch3.adb (Analyze_Object_Declaration): Move predicate check here
	from expander, since too much expansion occurs in the analyzer to leave
	it that late.
	(Analyze_Object_Declaration): Change parameter Include_Null to new name
	Include_Implicit in Is_Partially_Initialized_Type call.
	(Analyze_Subtype_Declaration): Make sure predicates are proapagated in
	some strange cases of internal subtype generation.
	* sem_util.ads, sem_util.adb (Is_Partially_Initialized_Type): Change
	Include_Null to Include_Implicit, now includes the case of
	discriminants.

2010-10-26  Sergey Rybin  <rybin@adacore.com>

	* gnat_rm.texi: Revise the documentation for pragma Eliminate. 

2010-10-26  Matthew Heaney  <heaney@adacore.com>

	* Makefile.rtl, impunit.adb: Added bounded list container.
	* a-cbdlli.ads, a-cbdlli.adb: New file.

2010-10-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c: Include flags.h and remove prototypes.
	(build_unary_op) <TRUTH_NOT_EXPR>: When not optimizing, fold the result
	of the call to invert_truthvalue_loc.
	* gcc-interface/Make-lang.in (utils2.o): Add $(FLAGS_H).

2010-10-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (update_pointer_to): Clear TYPE_POINTER_TO and
	TYPE_REFERENCE_TO of the old type after redirecting its pointer and
	reference types.

2010-10-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Do not set
	TREE_THIS_NOTRAP on the INDIRECT_REF node built for the template.

2010-10-25  Jose Ruiz  <ruiz@adacore.com>

	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS for powerpc-linux):
	Reorganize target pairs so that it works on linux and ElinOS.

2010-10-25  Pascal Obry  <obry@adacore.com>
	
	* adaint.c (__gnat_file_time_name_attr): Use GetFileAttributesEx to get
	the timestamp. A bit faster than opening/closing the file.
	(__gnat_stat_to_attr): Remove kludge for Windows.
	(__gnat_file_exists_attr): Likewise.
	The timestamp is now retreived using GetFileAttributesEx as faster.

2010-10-25  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Derive_Interface_Subprogram): New subprogram.
	(Derive_Subprograms): For abstract private types transfer to the full
	view entities of uncovered interface primitives. Required because if
	the interface primitives are left in the private part of the package
	they will be decorated as hidden when the analysis of the enclosing
	package completes (and hence the interface primitive is not visible
	for dispatching calls).

2010-10-25  Matthew Heaney  <heaney@adacore.com>

	* Makefile.rtl, impunit.adb: Added bounded set and bounded map
	containers.
	* a-crbltr.ads: Added declaration of generic package for bounded tree
	types.
	* a-rbtgbo.ads, a-rbtgbo.adb, a-rbtgbk.ads, a-rbtgbk.adb, a-btgbso.ads,
	a-btgbso.adb, a-cborse.ads, a-cborse.adb, a-cborma.ads, a-cborma.adb:
	New.

2010-10-25  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb: Minor reformatting.
	* usage.adb: Fix usage line for -gnatwh.

2010-10-25  Thomas Quinot  <quinot@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation): For an
	instantiation in an RCI spec, omit package body if instantiation comes
	from source, even as a nested
	package.
	* exp_dist.adb (Add_Calling_Stubs_To_Declarations,
	*_Support.Add_Receiving_Stubs_To_Declarations): Handle the case of
	nested packages, package instantiations and subprogram instantiations.

2010-10-25  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb (Expand_Predicated_Loop): Remove code for loop through
	non-static predicate, since we agree not to allow this.
	(Expand_Predicated_Loop): Properlay handle false predicate (null
	list in Static_Predicate field.
	* sem_ch13.adb (Build_Static_Predicate): Extensive changes to clean up
	handling of more general predicate forms.

2010-10-25  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb, sem_util.adb: Minor reformatting.
	* sem_ch8.adb (Find_Selected_Component): Allow selection from instance
	of type in predicate or invariant expression.

2010-10-25  Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_stat_to_attr): Can set the timestamp on Windows now.
	(f2t): New routine.
	(__gnat_stat): Rewrite Win32 version.

2010-10-25  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb, einfo.ads, exp_ch4.adb: Minor comment fix
	* sem_case.adb: Comment clarification for loops through false
	predicates.
	* sem_util.adb: Minor reformatting
	(Check_Order_Dependence): Fix bad double blank in error message

2010-10-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Membership_Op): in Ada_2012 a membership
	operation can have a single alternative that is a value of the type.
	Rewrite operation as an equality test.

2010-10-25  Matthew Heaney  <heaney@adacore.com>

	* Makefile.rtl, impunit.adb: Added a-cobove (bounded vector container)
	to lists.
	* a-contai.ads: Added declaration of Capacity_Error exception.
	* a-cobove.ads, a-cobove.adb: New files.

2010-10-25  Thomas Quinot  <quinot@adacore.com>

	* uname.adb: Revert previous change, no longer needed after change
	in par-ch10.adb.

2010-10-25  Thomas Quinot  <quinot@adacore.com>

	* scos.ads: Minor comment fix.

2010-10-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assignment_Statement): Check dangerous order
	dependence.
	* sem_ch6.adb (Analyze_Procedure_Call_Statement): Ditto.
	* sem_res.adb (Analyze_Actuals): Add actual to list of actuals for
	current construct, for subsequent order dependence checking.
	(Resolve): Check order dependence on expressions that are not
	subexpressions.
	* sem_util.adb (Check_Order_Dependence): Code cleanup, to correspond
	to latest version of AI05-144-2.
	* sem_warn.adb (Warn_On_Overlapping_Actuals): Code cleanup.

2010-10-25  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Build_Static_Predicate): Moved out of
	Build_Predicate_Function.
	(Build_Static_Predicate): Complet rewrite for more general predicates

2010-10-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
            Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity, case E_Function): Allow
	In Out/Out parameters for functions.
	* gcc-interface/trans.c (gnu_return_var_stack): New variable.
	(create_init_temporary): New static function.
	(Subprogram_Body_to_gnu): Handle In Out/Out parameters for functions.
	(call_to_gnu): Likewise.  Use create_init_temporary in order to create
	temporaries for unaligned parameters and return value.  If there is an
	unaligned In Out or Out parameter passed by reference, push a binding
	level if not already done.  If a binding level has been pushed and the
	call is returning a value, create the call statement.
	(gnat_to_gnu) <N_Return_Statement>: Handle In Out/Out parameters for
	functions.

2010-10-22  Ben Brosgol  <brosgol@adacore.com>

	* gnat_rm.texi: Add chapter on Ada 2012 support.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch12.adb: Minor reformatting.

2010-10-22  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb: Mark missing case of nested package when expanding
	stubs.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* par-ch10.adb: Discard incomplete with_clause.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Enable_Range_Check): Remove code suppressing range check
	if static predicate present, not needed.
	* exp_attr.adb (Expand_Pred_Succ): Check Suppress_Assignment_Checks flag
	* exp_ch3.adb (Expand_N_Object_Declaration): Check
	Suppress_Assignment_Checks flag.
	* exp_ch4.adb (Expand_N_In): Make some corrections for proper handling
	of ranges when predicates are present.
	* exp_ch5.adb (Expand_Predicated_Loop): New procedure
	(Expand_N_Assignment_Statement): Check Suppress_Assignment_Checks flag
	(Expand_N_Loop_Statement): Handle loops over predicated types
	* sem_case.adb (Analyze_Choices): Remove extra blank in error message.
	* sem_ch13.adb (Build_Predicate_Function.Add_Call): Suppress info
	message for inheritance if within a generic instance, not useful there!
	(Build_Static_Predicate): Optimize test in predicate function
	based on static ranges determined.
	* sem_ch5.adb (Analyze_Iteration_Scheme): Error for loop through
	subtype with non-static predicate.
	* sinfo.ads, sinfo.adb (Suppress_Assignment_Checks): New flag.

2010-10-22  Thomas Quinot  <quinot@adacore.com>

	* uname.adb (Get_Unit_Name.Add_Node_Name): If encountering an error
	node in the unit name, propagate Program_Error to guard against
	cascaded errors.

2010-10-22  Javier Miranda  <miranda@adacore.com>

	* sem_ch8.adb (Find_Selected_Component): Do not generate a subtype for
	selected components of dispatch table wrappers.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb (Make_Initialize_Protection): A protected type that
	implements an interface must be treated as if it has entries, to
	support dispatching select statements.

2010-10-22  Robert Dewar  <dewar@adacore.com>

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

2010-10-22  Javier Miranda  <miranda@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate.Add): If the type of the
	aggregate has a non standard representation the attributes 'Val and
	'Pos expand into function calls and the resulting expression is
	considered non-safe for reevaluation by the backend. Relocate it into
	a constant temporary to indicate to the backend that it is side
	effects free.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Concurrent_Derived_Type): Create declaration for
	derived corresponding record type only when expansion is enabled.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* sem_case.adb, sem_attr.adb (Bad_Predicated_Subtype_Use): Change order
	of parameters.
	* sem_ch13.adb (Build_Predicate_Function): Don't give inheritance
	messages for generic actual subtypes.
	* sem_ch9.adb, sem_res.adb, sem_util.adb, sem_util.ads, sem_ch3.adb
	(Bad_Predicated_Subtype_Use): Use this procedure.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb: Minor reformatting.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* a-except-2005.adb (Rmsg_18): New message text.
	* a-except.adb (Rmsg_18): New message text.
	* atree.adb (List25): New function
	(Set_List25): New procedure
	* atree.ads (List25): New function
	(Set_List25): New procedure
	* einfo.adb (Static_Predicate): Is now a list
	(OK_To_Reference): Present in all entities
	* einfo.ads (Static_Predicate): Is now a list
	(OK_To_Reference): Applies to all entities
	* exp_ch13.adb (Build_Predicate_Function): Moved to Sem_Ch13
	* sem_attr.adb (Bad_Attribute_For_Predicate): Call
	Bad_Predicated_Subtype_Use.
	* sem_case.ads, sem_case.adb: Major surgery to deal with predicated
	subtype case.
	* sem_ch13.adb (Build_Predicate_Function): Moved from Exp_Ch13 to
	Sem_Ch13.
	(Build_Static_Predicate): New procedure handles static predicates.
	* sem_ch3.adb (Analyze_Subtype_Declaration): Delay freeze on subtype
	with no constraint if ancestor subtype has predicates.
	(Analyze_Variant_Part): New calling sequence for Analyze_Choices
	* sem_ch4.adb (Junk_Operand): Don't complain about OK_To_Reference
	entity.
	(Analyze_Case_Expression): New calling sequence for Analyze_Choices
	* sem_ch5.adb (Analyze_Case_Statement): New calling sequence for
	Analyze_Choices.
	* sem_util.ads, sem_util.adb (Bad_Predicated_Subtype_Use): New procedure
	* types.ads (PE_Bad_Predicated_Generic_Type): Replaces
	PE_Bad_Attribute_For_Predicate.
	* atree.h: Add definition of List25.

2010-10-22  Jerome Lambourg  <lambourg@adacore.com>

	* gnatlink.adb (Process_Binder_File): Remove CLI-specific code, now
	moved to dotnet-ld.
	(Gnatlink): Remove CLI-specific code, moved to dotnet-ld
	* bindgen.adb (Gen_Object_Files_Options): Do not issue -L switches with
	the .NET compiler, useless and unsupported.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads (Get_Num_Lit_From_Pos): Fix errors in documentation,
	this returns a Node_Id for a reference to the entity, not the entity
	itself!

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iteration_Scheme): use Insert_Actions when
	bounds require a temporary.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb: Minor reformatting.
	* sinfo.ads: Minor comment fixes for Ada 2012 syntax.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* par-ch5.adb: Minor reformatting.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* a-except.adb, a-except-2005.adb: Add new Rcheck entry.
	* exp_ch13.adb (Add_Call): Make sure subtype is marked with
	Has_Predicates set to True if it inherits predicates.
	* sem_attr.adb: Handle 'First/'Last/'Range for predicated types
	* types.ads (PE_Bad_Attribute_For_Predicate): New reason code
	* types.h: Add new Rcheck entry.
	* einfo.ads, einfo.adb (Static_Predicate): New field.
	Minor code reorganization (file float routines in proper section)
	Fix bad field name in comments.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb (Subtypes_Statically_Compatible): Check null exclusion
	case.

2010-10-22  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Get_Config_Switches): Detect if there is at least one
	declaration of IDE'Compiler_Command for one of the language in the main
	project.
	(Do_Autoconf): If there were at least one Compiler_Command declared and
	no target, invoke gprconfig with --target=all instead of the normalized
	host name.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* par-ch4.adb: Update syntax in comments for Ada 2012.
	* sinfo.ads: Update syntax in comments for Ada 2012
	* par-ch3.adb (Check_Restricted_Expression): Remove "in Ada 2012 mode"
	from msg.

2010-10-22  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb (Check_Or_Process_Discriminants): In Ada 2012, allow
	limited tagged types to have defaulted discriminants. Customize the
	error message for the Ada 2012 case.
	(Process_Discriminants): In Ada 2012, allow limited tagged types to have
	defaulted discriminants. Customize the error message for the Ada 2012
	case.
	* sem_ch6.adb (Create_Extra_Formals): Suppress creation of the extra
	formal for out formals of discriminated types in the case where the
	underlying type is a limited tagged type.
	* exp_attr.adb (Expand_N_Attribute_Reference, case
	Attribute_Constrained): Return True for 'Constrained when the
	underlying type of the prefix is a limited tagged type.

2010-10-22  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb (Complete_Private_Subtype): The full view of the subtype
	may already have a rep item chain inherited from the full view of the
	base type, so do not overwrite it when propagating rep items from the
	partial view of the subtype.
	* sem_ch3.adb: Minor code reorganization.  Minor reformatting.

2010-10-22  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi (gnatmetric): Remove description of debug option.

2010-10-22  Tristan Gingold  <gingold@adacore.com>

	* adaint.c (__gnat_number_of_cpus): Add implementation for VMS.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* par-ch5.adb: Set properly starting sloc of loop parameter.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (May_Be_Lvalue): An actual in a function call can be an
	lvalue in Ada2012, if the function has in-out parameters.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* cstand.adb, einfo.adb, exp_attr.adb, sem_prag.adb, sem_vfpt.adb,
	sem_ch10.adb: Minor reformatting.

2010-10-22  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Remove most of the content of gnatcheck chapter.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: Handle indexed P'old.

2010-10-22  Geert Bosch  <bosch@adacore.com>

	* cstand.adb (Build_Float_Type): Set Float_Rep according to platform.
	* einfo.ads (Float_Rep): New attribute.
	(Float_Rep_Kind): Move from body. Add comments.
	* einfo.adb (Float_Rep_Kind): Move to spec
	(Float_Rep): Now a real field instead of local function.
	(Set_Float_Rep): New procedure to set floating point representation
	(Set_Vax_Float): Remove.
	(Write_Entity_Flags): Remove Vax_Float flag.
	(Write_Field10_Name): Add E_Floating_Point_Type case for Float_Rep.
	* exp_attr.adb (Attribute_Valid): Use case statement for representation
	specific processing.
	* sem_ch3.adb (Build_Derived_Numeric_Type,
	Floating_Point_Type_Declaration): Set Float_Rep instead of Vax_Float
	attribute.
	* sem_util.ads, sem_util.adb (Is_AAMP_Float): Remove.
	* sem_vfpt.adb (Set_D_Float, Set_F_Float, Set_G_Float, Set_IEEE_Long,
	Set_IEEE_Short): Set Float_Rep instead of Vax_Float attribute.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* sprint.adb: Minor reformatting.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Do required predicate
	checks.
	* sem_ch3.adb (Complete_Private_Subtype): Propagate predicates to full
	view.
	* sem_ch6.adb (Invariants_Or_Predicates_Present): New name for
	Invariants_Present.
	(Process_PPCs): Handle predicates generating post conditions
	* sem_util.adb (Is_Partially_Initialized_Type): Add
	Include_Null parameter.
	* sem_util.ads (Is_Partially_Initialized_Type): Add
	Include_Null parameter.

2010-10-22  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi (gnatelim): Add description for '--ignore' option

2010-10-22  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb (Check_First_Subtype): Specialize error messages for
	case where argument is not a type.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, par-ch4.adb, par-ch5.adb, sem_ch5.adb, sinfo.ads: Minor
	reformatting.

2010-10-22  Arnaud Charlet  <charlet@adacore.com>

	* a-locale.adb: Minor code clean up.

2010-10-22  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb: Minor code reorganization and factoring.

2010-10-22  Thomas Quinot  <quinot@adacore.com>

	* exp_ch5.adb, sem_ch5.adb, sinfo.ads, snames.ads-tmpl, par-ch5.adb:
	Minor reformatting.

2010-10-22  Geert Bosch  <bosch@adacore.com>

	* stand.ads: Fix typo in comment.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Enable in-out parameter for functions.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Quantified_Expression): Handle properly loop
	iterators that are transformed into container iterators after analysis.
	* exp_ch4.adb (Expand_N_Quantified_Expression): Handle properly both
	iterator forms before rewriting as a loop.

2010-10-22  Brett Porter  <porter@adacore.com>

	* a-locale.adb, a-locale.ads, locales.c: New files.
	* Makefile.rtl: Add a-locale
	* gcc-interface/Makefile.in: Add locales.c

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads, sem_util.adb, sem_aux.ads, sem_aux.adb
	(Is_Generic_Formal): Moved from Sem_Util to Sem_Aux.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop): New subprogram, implements new
	iterator forms over arrays and containers, in loops and quantified
	expressions.
	* exp_util.adb (Insert_Actions): include N_Iterator_Specification.
	* par-ch4.adb (P_Quantified_Expression): Handle iterator specifications.
	* par-ch5.adb (P_Iterator_Specification): New subprogram. Modify
	P_Iteration_Scheme to handle both loop forms.
	* sem.adb: Handle N_Iterator_Specification.
	* sem_ch5.adb, sem_ch5.ads (Analyze_Iterator_Specification): New
	subprogram.
	* sinfo.adb, sinfo.ads: New node N_Iterator_Specification.
	N_Iteration_Scheme can now include an Iterator_Specification. Ditto
	for N_Quantified_Expression.
	* snames.ads-tmpl: Add names Cursor, Element, Element_Type, No_Element,
	and Previous, to support iterators over predefined containers.
	* sprint.adb: Handle N_Iterator_Specification.

2010-10-22  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb, sem_ch12.adb, sem_util.adb, sem_util.ads
	(Is_Generic_Formal): Move from body of Sem_Ch12 to Sem_Util.
	(Check_Arg_Is_Local_Name): Fix check in the case of a pragma appearing
	immediately after a library unit.
	(Analyze_Pragma, case Preelaborable_Initialization): Pragma may apply to
	a formal derived type.

2010-10-22  Geert Bosch  <bosch@adacore.com>

	* gcc-interface/Make-lang.in: Remove ttypef.ads
	* checks.adb: Use Machine_Mantissa_Value and Machine_Radix_Value instead
	of Machine_Mantissa and Machine_Radix.
	* cstand.adb (P_Float_Range): Directly print the Type_Low_Bound and
	Type_High_Bound of the type, instead of choosing constants from Ttypef.
	(Set_Float_Bounds): Compute the bounds based on Machine_Radix_Value,
	Machine_Emax_Value and Machine_Mantissa_Value instead of special-casing
	each type.
	* einfo.ads (Machine_Emax_Value, Machine_Emin_Value,
	Machine_Mantissa_Value, Machine_Radix_Value, Model_Emin_Value,
	Model_Epsilon_Value, Model_Mantissa_Value, Model_Small_Value,
	Safe_Emax_Value, Safe_First_Value, Safe_Last_Value): Add new
	synthesized floating point attributes.
	* einfo.adb (Float_Rep): Determine the kind of floating point
	representation used for a given type.
	(Machine_Emax_Value, Machine_Emin_Value, Machine_Mantissa_Value,
	Machine_Radix_Value): Implement based on Float_Rep_Kind of a type and
	the number of digits in the type.
	(Model_Emin_Value, Model_Epsilon_Value, Model_Mantissa_Value,
	Model_Small_Value, Safe_Emax_Value, Safe_First_Value, Safe_Last_Value):
	Implement new synthesized floating point attributes based on the various
	machine attributes.
	* eval_fat.ads: Remove Machine_Mantissa and Machine_Radix.
	* eval_fat.adb (Machine_Mantissa, Machine_Radix): Remove. Use the
	Machine_Mantissa_Value and Machine_Radix_Value functions instead.
	* exp_vfpt.adb (VAXFF_Digits, VAXDF_Digits, VAXFG_Digits): Define local
	constants, instead of using constants from Ttypef.
	* gnat_rm.texi: Reword comments referencing Ttypef.
	* sem_attr.ads: Reword comment referencing Ttypef.
	* sem_attr.adb (Float_Attribute_Universal_Integer,
	Float_Attribute_Universal_Real): Remove.
	(Attribute_Machine_Emax, Attribute_Machine_Emin,
	Attribute_Machine_Mantissa, Attribute_Model_Epsilon,
	Attribute_Model_Mantissa, Attribute_Model_Small, Attribute_Safe_Emax,
	Attribute_Safe_First, Attribute_Safe_Last, Model_Small_Value): Use
	attributes in Einfo instead of Float_Attribute_Universal_Real and
	Float_Attribute_Universal_Integer and all explicit constants.
	* sem_util.ads, sem_util.adb (Real_Convert): Remove.
	* sem_vfpt.adb (VAXDF_Digits, VAXFF_Digits, VAXGF_Digits, IEEEL_Digits,
	IEEES_Digits): New local constants, in order to remove dependency on
	Ttypef.
	* tbuild.ads (Make_Float_Literal): New function.
	* tbuild.adb (Make_Float_Literal): New function to create a new
	N_Real_Literal, constructing it as simple as possible for best
	output of constants in -gnatS.
	* ttypef.ads: Remove.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Apply_Predicate_Check): Remove attempt at optimization
	when subtype is the same, caused legitimate checks to be missed.
	* exp_ch13.adb (Build_Predicate_Function): Use Nearest_Ancestor to get
	inheritance from right entity.
	* freeze.adb (Freeze_Entity): Use Nearest_Ancestor to freeze in the
	derived type case if the ancestor type has predicates.
	* sem_aux.ads, sem_aux.adb (Nearest_Ancestor): New function.
	* sem_prag.adb (Check_Enabled): Minor code reorganization.

2010-10-22  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/utils.c, gcc-interface/gigi.h: Minor reformatting.

2010-10-22  Thomas Quinot  <quinot@adacore.com>

	* einfo.ads (Declaration_Node): Clarify documentation, in particular
	regarding what is returned for subprogram entities.

2010-10-22  Arnaud Charlet  <charlet@adacore.com>

	* exp_attr.adb (Make_Range_Test): Generate a Range node instead of
	explicit comparisons, generates simpler expanded code.
	* a-except-2005.adb (Rcheck_06_Ext): New.
	* gcc-interface/trans.c (gigi, gnat_to_gnu): Handle validity checks
	like range checks.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb (Array_Type_Declaration): Error for subtype wi predicate
	for index type
	(Constrain_Index): Error of subtype wi predicate in index constraint
	* sem_ch9.adb (Analyze_Entry_Declaration): Error of subtype wi
	predicate in entry family.
	* sem_res.adb (Resolve_Slice): Error of type wi predicate in slice.

2010-10-22  Javier Miranda  <miranda@adacore.com>

	* sem_util.ads, sem_util.adb (Collect_Parents): New subprogram.
	(Original_Corresponding_Operation): New subprogram.
	(Visible_Ancestors): New subprogram.
	* sem_ch6.adb (New_Overloaded_Entity): Handle new case of dispatching
	operation that overrides a hidden inherited primitive.
	* sem_disp.adb (Find_Hidden_Overridden_Primitive): New subprogram.
	(Check_Dispatching_Operation): if the new dispatching operation
	does not override a visible primtive then check if it overrides
	some hidden inherited primitive.

2010-10-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_With_Clause): If the parent_unit_name in a with
	clause is a child unit that denotes a renaming, replace the
	parent_unit_name with a reference to the renamed unit, because the
	prefix is irrelevant to subsequent visibility..

2010-10-22  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (Has_Predicates): Flag is now on all entities
	(simplifies code).
	* exp_ch13.adb (Build_Predicate_Function): Output info msgs for
	inheritance.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Make sure we have a
	freeze node for entities for which a predicate is specified.
	(Analyze_Aspect_Specifications): Avoid duplicate calls
	* sem_ch3.adb (Analyze_Full_Type_Declaration): Remove attempt to avoid
	duplicate calls to Analye_Aspect_Specifications.

2010-10-22  Thomas Quinot  <quinot@adacore.com>

	* a-exextr.adb, atree.ads, freeze.adb: Minor reformatting.

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2010-10-21  Thomas Quinot  <quinot@adacore.com>

	* einfo.ads (Next_Girder_Discriminant): Remove obsolete description for
	removed routine.

2010-10-21  Nicolas Roche  <roche@adacore.com>

	* gnatmem.adb, memroot.adb, memroot.ads, gmem.c,
	gcc-interface/Makefile.in: Remove gnatmem specific files.

2010-10-21  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb, exp_ch13.adb: Minor reformatting.

2010-10-21  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb (Check_Or_Process_Discriminant): Reject illegal attempt
	to provide a tagged full view as the completion of an untagged partial
	view if the partial view has a discriminant with default.

2010-10-21  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* checks.ads, checks.adb (Apply_Predicate_Check): New procedure
	Minor code reorganization.
	* einfo.adb (Has_Predicates): Fix assertion.
	* exp_ch13.adb (Build_Predicate_Function): Move from Sem_Ch13 spec to
	Exp_Ch13 body.
	(Expand_N_Freeze_Entity): Call build predicate function.
	* exp_ch4.adb (Expand_N_Type_Conversion): Add predicate check.
	* exp_ch5.adb (Expand_N_Assignment_Statement): Add predicate check.
	* exp_prag.adb (Expand_Pragma_Check): Use all lower case for name of
	check.
	* freeze.adb (Freeze_Entity): Move building of predicate function to
	Exp_Ch13.
	* sem_ch13.adb (Build_Predicate_Function): Move from Sem_Ch13 to
	Exp_Ch13.
	* sem_ch13.ads (Build_Predicate_Function): Move from Sem_Ch13 to
	Exp_Ch13.
	* sem_ch3.adb (Analyze_Declarations): Remove call to build predicate
	function.
	* sem_res.adb (Resolve_Actuals): Apply predicate check.

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb: Replace Predicate_Procedure by
	Predicate_Functions.
	* exp_ch4.adb (Expand_N_In): Handle predicates.
	* exp_util.ads, exp_util.adb (Make_Predicate_Call): New function.
	(Make_Predicate_Check): New function.
	* freeze.adb (Freee_Entity): Build predicate function if needed.
	* sem_ch13.adb (Build_Predicate_Function): New procedure.
	(Analyze_Aspect_Specifications): No third argument for Predicate pragma
	built from Predicate aspect.
	* sem_ch13.ads (Build_Predicate_Function): New procedure.
	* sem_ch3.adb: Add handling for predicates.
	* sem_eval.adb (Eval_Membership_Op): Never static if predicate
	functions around.
	* sem_prag.adb (Analye_Pragma, case Predicate): Does not take a third
	argument.

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb: Add handling of predicates.
	Rework handling of invariants.
	* exp_ch3.adb, exp_ch4.adb, exp_util.adb, sem_ch6.adb: Minor changes to
	handing of invariants.
	* par-prag.adb: Add dummy entry for pragma Predicate
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing for
	Predicate aspects.
	* sem_prag.adb: Add implementation of pragma Predicate.
	* snames.ads-tmpl: Add entries for pragma Predicate.

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* elists.adb: Minor reformatting.

2010-10-21  Geert Bosch  <bosch@adacore.com>

	* urealp.adb (UR_Write): Write hexadecimal constants with exponent 1 as
	decimal constants, and write any others using the exponent notation.
	Minor reformatting throughout
	(Store_Ureal_Normalized): New function (minor code reorganization)

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, xeinfo.adb: Minor reformatting.
	* s-stalib.ads: Minor comment fixes.

2010-10-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Enter_Overloaded_Entity): Refine warning message about
	hiding, to remove noise warnings about hiding predefined operators.

2010-10-21  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb (Add_Switch): Fix handling of switches with no separator
	when the parameter has length 1.

2010-10-21  Jose Ruiz  <ruiz@adacore.com>

	* sem_prag.adb (Set_Ravenscar_Profile): Enforce the restrictions of no
	dependence on Ada.Execution_Time.Timers,
	Ada.Execution_Time.Group_Budget, and
	System.Multiprocessors.Dispatching_Domains which are part of the
	Ravenscar Profile.
	* impunit.adb (Non_Imp_File_Names_05): Add the file "a-etgrbu" to the
	list of Ada 2005 files for package Ada.Execution_Time.Group_Budgets.
	(Non_Imp_File_Names_12): Add the file "s-mudido" to the list of Ada 2012
	files for package System.Mutiprocessors.Dispatching_Domains.

2010-10-21  Tristan Gingold  <gingold@adacore.com>

	* ug_words, vms_data.ads: Define the VMS qualifier for -gnateE.

2010-10-21  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.ads (Process_Discriminants): Clarify cases where this is
	called for a completion.

2010-10-21  Geert Bosch  <bosch@adacore.com>

	* uintp.ads: Expand image buffer to have enough room for 128-bit values
	* urealp.ads (UR_Write): Write constants in base 16 in hexadecimal
	notation; either as fixed point literal or in canonical radix 16
	floating point form.

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* a-cgaaso.ads, a-tags.ads, exp_ch3.adb, exp_attr.adb, exp_ch4.adb,
	exp_ch3.ads, exp_ch7.adb, exp_ch9.adb, exp_disp.adb, exp_disp.ads,
	exp_dist.adb, exp_util.adb, layout.adb, lib-xref.adb, lib.ads,
	prep.adb, prj-strt.adb, s-ststop.adb, s-taskin.ads, s-tataat.ads,
	sem_aggr.adb, sem_attr.adb, sem_ch12.adb, sem_ch3.adb, sem_ch4.adb,
	sem_ch4.ads, sem_ch5.adb, sem_res.adb, sem_util.adb, einfo.adb,
	g-sothco.ads, make.adb: Minor reformatting

2010-10-21  Vincent Celier  <celier@adacore.com>

	* vms_data.ads: Add new qualifiers /SRC_INFO= and
	/UNCHECKED_SHARED_LIB_IMPORTS for GNAT COMPILE.
	Correct qualifier /SRC_INFO= for GNAT MAKE

2010-10-21  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Flatten): An association for a subtype may be an
	expanded name.
	(Safe_Left_Hand_Side): An unchecked conversion is part of a safe
	left-hand side if the expression is.
	(Is_Safe_Index): new predicate
	* exp_ch3.adb (Expand_Freeze_Enumeration_Type): Indicate that the
	generated Rep_To_Pos function is a Pure_Function.

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document Invariant pragma.

2010-10-21  Javier Miranda  <miranda@adacore.com>

	* exp_ch5.adb: Update comment.

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Build_Invariant_Procedure): Remove commented out code
	for interfaces, since invariants are not allowed on interfaces in any
	case.

2010-10-21  Javier Miranda  <miranda@adacore.com>

	* sem_attr.adb (Resolve_Attribute): After replacing the range attribute
	node with a range expression ensure that its evaluation will not have
	side effects.
	* exp_ch5.adb (Expand_Assign_Array): Propagate the Parent to the
	unchecked conversion node generated to handle assignment of private
	types. Required to allow climbing the subtree if Insert_Action is
	invoked later.

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* par-ch3.adb (P_Interface_Type_Definition): Allow for possibility of
	aspect clause presence terminating the type definition.

2010-10-21  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb, exp_intr.adb, par-ch4.adb, scn.adb, sem_ch4.adb,
	sem_res.adb, sem_util.adb, sinfo.ads, a-except-2005.adb: Minor
	reformatting.
	* snames.ads-tmpl: Add note on Name_Some (not a reserved keyword).

2010-10-21  Geert Bosch  <bosch@adacore.com>

	* ttypef.ads: Further cleanup of Safe_XXX float attributes.

2010-10-19  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb, exp_ch4.ads (Expand_Quantified_Expression): New procedure
	* exp_util.adb (Insert_Actions): Include Quantified_Expression.
	* expander.adb: Call Expand_Qualified_Expression.
	* par.adb: New procedure P_Quantified_Expression. Make
	P_Loop_Parameter_Specification global for use in quantified expressions.
	* par-ch3.adb (P_Subtype_Mark_Resync): Allow "some" as an identifier if
	version < Ada2012.
	* par-ch4.adb: New procedure P_Quantified_Expression.
	* par-ch5.adb: P_Loop_Parameter_Specification is now global.
	* scans.adb, scans.ads: Introduce token Some. For now leave as
	unreserved.
	* scn.adb (Scan_Reserved_Identifier): For earlier versions of Ada,
	treat Some as a regular identifier.
	* sem.adb: Call Analyze_Quantified_Expression.
	* sem_ch4.adb, sem_ch4.ads: New procedure Analyze_Quantified_Expression.
	* sem_ch5.adb, sem_ch5.ads: Analyze_Iteration_Scheme is public, for use
	in quantified expressions.
	* sem_res.adb: New procedure Resolve_Qualified_Expression.
	* sinfo.adb, sinfo.ads: New node N_Quantified_Expression
	* snames.ads-tmpl: New name Some.
	* sprint.adb: Output quantified_expression.

2010-10-19  Robert Dewar  <dewar@adacore.com>

	* a-exexda.adb: Minor reformatting
	Minor code reorganization.

2010-10-19  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb: Minor reformatting.

2010-10-19  Tristan Gingold  <gingold@adacore.com>

	* exp_ch4.adb (Expand_N_And_Op, Expand_N_Or_Op, Expand_N_Xor_Op): Call
	Expand_Intrinsic_Call if the function is intrinsic.
	* exp_intr_adb (Expand_Binary_Operator): Handle VMS case for logical
	binary operator on the unsigned_quadword record.
	* exp_intr.ads (Expand_Intrinsic_Call): Update comments.

2010-10-19  Geert Bosch  <bosch@adacore.com>

	* gnat_rm.texi (pragma Float_Representation): Fix typo.

2010-10-19  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb (Scan_Front_End_Switches): Add handling of -gnateE.
	* fe.h (Exception_Extra_Info): Declare.
	* usage.adb (usage): Add -gnateE doc.
	* checks.adb (Install_Null_Excluding_Check): Use better sloc.
	* sem_util.adb (Insert_Explicit_Dereference): Ditto.
	* gnat_ugn.texi: Document -gnateE switch.
	* a-except.adb (Set_Exception_C_Msg): New parameter Column.
	* a-except-2005.adb (Set_Exception_C_Msg): New parameter Column.
	(Raise_Constraint_Error_Msg): Ditto.
	(Image): New helper function.
	(Rcheck_00_Ext, Rcheck_05_Ext, Rcheck_12_Ext): New procedure with more
	detailed exception information.
	Adjust calls to Set_Exception_C_Msg and Raise_Constraint_Error_Msg.
	* a-exexda.adb (Set_Exception_C_Msg): New parameter Column.
	* opt.ads (Exception_Extra_Info): New flag.
	* gcc-interface/utils.c (gnat_raise_decls_ext): New.
	* gcc-interface/utils2.c (build_call_raise_range,
	build_call_raise_column): New functions.
	* gcc-interface/gigi.h (exception_info_kind, gnat_raise_decls_ext,
	build_call_raise_range, build_call_raise_column): Declare.
	gcc-interface/trans.c (build_raise_check): New function.
	(gigi): Initialize gnat_raise_decls_ext.
	(gnat_to_gnu): Add initial support for -gnateE switch.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-10-19  Geert Bosch  <bosch@adacore.com>

	* ttypef.ads: Change VAXDF_Last to be -VAXDF_First, as type is
	symmetric.

2010-10-19  Robert Dewar  <dewar@adacore.com>

	* atree.h (Field29): Fix incorrect definition.
	* einfo.adb (Invariant_Procedure): New attribute
	(Has_Invariants): New flag
	(Has_Inheritable_Invariants): New flag
	(OK_To_Reference): New flag
	Minor code reorganization (use Next_Rep_Item function)
	* einfo.ads (Invariant_Procedure): New attribute
	(Has_Invariants): New flag
	(Has_Inheritable_Invariants): New flag
	(OK_To_Reference): New flag
	* exp_ch3.adb (Expand_N_Object_Declaration): Add check for invariant
	* exp_ch4.adb (Expand_N_Type_Conversion): Check invariant on type
	conversion.  Minor reformatting.
	* exp_util.ads, exp_util.adb (Make_Invariant_Call): New procedure.
	* opt.ads (List_Inherited_Aspects): New name for List_Inherited_Pre_Post
	* par-prag.adb: Add dummy entry for pragma Invariant.
	* sem_ch13.adb (Build_Invariant_Procedure): New procedure
	(Analyze_Aspect_Specification): Add support for Invariant aspect
	* sem_ch13.ads (Build_Invariant_Procedure): New procedure
	* sem_ch3.adb (Build_Derived_Type): Propagate invariant information
	(Process_Full_View): Deal with invariants, building invariant procedure
	Minor reformatting
	* sem_ch6.adb (Process_PPCs): Add processing of invariants
	* sem_ch7.adb (Analyze_Package_Specification): Build invariant
	procedures.
	* sem_prag.adb: Implement pragma Invariant.
	* sem_res.adb (Resolve_Entity_Name): Allow type reference if
	OK_To_Reference set.
	* sem_warn.adb (List_Inherited_Aspects): New name for
	List_Inherited_Pre_Post.
	* snames.ads-tmpl: Add entries for pragma Invariant.
	* treepr.adb (Print_Entity_Information): Add handling of Field29.
	* usage.adb: Warning .l/.L applies to invariant as well as pre/post.

2010-10-19  Javier Miranda  <miranda@adacore.com>

	* par-ch4.adb: Update documentation of Ada 2012 syntax rules for
	membership test.

2010-10-19  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Eval_Attribute): Implement Max_Alignment_For_Allocation
	attribute.
	* exp_attr.adb (Expand_N_Attribute_Reference): Add
	Attribute_Max_Alignment_For_Allocation to the case statement.
	* snames.ads-tmpl (Name_Max_Alignment_For_Allocation,
	Attribute_Max_Alignment_For_Allocation): New attribute name.

2010-10-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (OK_For_Limited_Init_In_05): a call to an access to
	parameterless function appears syntactically as an explicit dereference.

2010-10-19  Thomas Quinot  <quinot@adacore.com>

	* sem_ch8.adb, sem_ch12.adb, opt.ads, sem_ch6.adb, sem_res.adb,
	i-cexten.ads, exp_disp.adb, exp_ch4.adb, exp_ch9.adb: Minor reformatting

2010-10-19  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb (Collect_Primitive_Operations): A function with an
	anonymous access result designating T is a primitive operation of T.

2010-10-19  Tristan Gingold  <gingold@adacore.com>

	* init.c: On Alpha/VMS, only adjust PC for HPARITH.

2010-10-19  Tristan Gingold  <gingold@adacore.com>

	* sem_attr.adb (Eval_Attribute): Handle Attribute_Ref, which can be
	evaluated on VMS.

2010-10-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Check_Generic_Child_Unit): Handle properly the case of
	an instantiation of a renaming of the implicit generic child that
	appears within an instance of its parent.

2010-10-19  Thomas Quinot  <quinot@adacore.com>

	* exp_ch9.adb: Minor reformatting.
	* einfo.adb, einfo.ads, atree.adb, atree.ads, exp_dist.adb, atree.h:
	(Referenced_Object): Remove unused entity attribute.
	(Direct_Primitive_Operations): Move to Elist10, this is set for all
	tagged types, including synchronous ones, so can't use field15 which is
	used as Storage_Size_Variable for task types and Entry_Bodies_Array for
	protected types.
	(Add_RACW_Primitive_Declarations_And_Bodies): Remove bogus guard
	against Concurrent_Types (we must handle the case of a RACW designating
	a class-wide private synchronous type).
	Use Direct_Primitive_Operations, not Primitive_Operations, since we
	really want the former.

2010-10-19  Bob Duff  <duff@adacore.com>

	* sem_ch8.adb (Pop_Scope): Change "return;" to "raise Program_Error;".

2010-10-19  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_Set_Membership.Make_Cond): Add missing support
	for N_Range nodes.

2010-10-19  Thomas Quinot  <quinot@adacore.com>

	* einfo.ads, atree.ads: Minor comment fixes.

2010-10-18  Bob Duff  <duff@adacore.com>

	* sinfo.ads, sinfo.adb: Modify comment about adding fields to be more
	correct, and to be in a more convenient order.
	(Default_Storage_Pool): New field of N_Compilation_Unit_Aux, for
	recording the Default_Storage_Pool for a parent library unit.
	* einfo.ads (Etype): Document the case in which Etype can be Empty.
	* sem_prag.adb (Pragma_Default_Storage_Pool): Analyze the new
	Default_Storage_Pool pragma.
	* sem.ads (Save_Default_Storage_Pool): Save area for push/pop scopes.
	* gnat_ugn.texi: Document Default_Storage_Pool as a new configuration
	pragma.
	* freeze.adb (Freeze_Entity): When freezing an access type, take into
	account any Default_Storage_Pool pragma that applies. We have to do
	this at the freezing point, because up until that point, a Storage_Pool
	or Storage_Size clause could occur, which should override the
	Default_Storage_Pool.
	* par-prag.adb: Add this pragma to the list of pragmas handled entirely
	during semantics.
	* sem_ch8.adb (Push_Scope, Pop_Scope): Save and restore the
	Default_Storage_Pool information.
	* opt.ads (Default_Pool, Default_Pool_Config): New globals for recording
	currently-applicable Default_Storage_Pool pragmas.
	* opt.adb: Save/restore the globals as appropriate.
	* snames.ads-tmpl (Name_Default_Storage_Pool,
	Pragma_Default_Storage_Pool): New pragma name.

2010-10-18  Vincent Celier  <celier@adacore.com>

	* make.adb (Switches_Of): Put the spec and body suffix in canonical
	case.

2010-10-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): If subprogram is at the
	library level, the pre/postconditions must be treated as global
	declarations, i.e. placed on the Aux_Decl nodes of the compilation unit.
	* freeze.adb (Freeze_Expression): If the expression is at library level
	there is no enclosing record to check.

2010-10-18  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.ads (Find_Type_Name): Add documentation.
	* sem_ch3.adb (Analyze_Full_Type_Declaration): Code cleanup because the
	propagation of the class-wide entity is now done by routine
	Find_Type_Name to factorize this code.
	(Analyze_Private_Extension_Declaration): Handle private type that
	completes an incomplete type.
	(Tag_Mismatch): Add error message for tag mismatch in a private type
	declaration that completes an incomplete type.
	(Find_Type_Name): Handle completion of incomplete type by means of
	a private declaration. Generate an error if a tagged incomplete type
	is completed by an untagged private type.
	* sem_ch7.adb (New_Private_Type): Handle private type that completes an
	incomplete type.
	* einfo.ads (Full_View): Add documentation.

2010-10-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Formal_Package_Declaration): If the package is
	a renaming, generate a reference for it before analyzing the renamed
	entity, to prevent spurious warnings.

2010-10-18  Jose Ruiz  <ruiz@adacore.com>

	* adaint.c (__gnat_pthread_setaffinity_np,
	__gnat_pthread_attr_setaffinity_np): Remove wrappers, no longer needed.
	* s-osinte-linux.ads (pthread_setaffinity_np,
	pthread_attr_setaffinity_np): Remove use of wrappers.
	* s-taprop-linux.adb (Create_Task, Initialize): Restore check to verify
	whether the affinity functionality is available in the OS.
	* gcc-interface/utils.c: Set TREE_STATIC on functions only when there
	are defined.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb: Minor reformatting.
	* gnat_ugn.texi, ug_words: Add missing entries, fix typos.

2010-10-18  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb (Is_In_Config): When the switch accepts either a space
	or equal, we output an equal every time.

2010-10-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Entry_Call): Handle call to an entry family
	member when pre/post conditions are present.
	* exp_ch9.adb (Build_PPC_Wrapper): The PPC_Wrapper for an entry family
	includes an index parameter, and the name of the enclosed entry call is
	an indexed component.

2010-10-18  Robert Dewar  <dewar@adacore.com>

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

2010-10-18  Jose Ruiz  <ruiz@adacore.com>

	* adaint.c (__gnat_pthread_setaffinity_np,
	__gnat_pthread_attr_setaffinity_np): Add these wrappers which check the
	availability of the underlying OS functionality before calling.
	* s-osinte-linux.ads (pthread_setaffinity_np,
	pthread_attr_setaffinity_np): Call a wrapper instead of the OS function
	to perform a check of its availability.
	* s-taprop-linux.adb (Create_Task): Remove the check to verify whether
	the affinity functionality is available in the OS. Now done in a wrapper
	* gcc-interface/Makefile.in: Remove vmshandler.asm, unused.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads, sinfo.adb: Change Has_Pragma_CPU to Flag14 (Flag10 is
	standard field).

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* s-stausa.adb, s-taprop-linux.adb, s-taprop-mingw.adb, s-tassta.ads:
	Minor reformatting.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* exp_strm.adb (Build_Elementary_Input_Call): Check
	No_Default_Stream_Attributes.
	(Build_Elementary_Write_Call): Check No_Default_Stream_Attributes
	* s-rident.ads: Add restriction No_Default_Stream_Attributes
	Put restriction No_Allocators_After_Elaboration in alpha order

2010-10-18  Jose Ruiz  <ruiz@adacore.com>

	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Add field corresponding
	to the affinity when expanding the task declaration.
	(Make_Task_Create_Call): Add the affinity parameter to the call to
	create task.
	* sem_prag.adb (Analyze_Pragma): Add the analysis for pragma CPU,
	taking into account the case when it applies to a subprogram (only for
	main and with static expression) or to a task.
	* par_prag.adb:(Prag): Make pragma CPU a valid one.
	* snames.ads-tmpl (Name_uCPU, Name_CPU): Add these new name identifiers
	used by the expander for handling the affinity parameter when creating
	a task.
	(Pragma_Id): Add Pragma_CPU as a valid one.
	* rtsfind.ads (RTU_Id): Make System_Multiprocessors accesible.
	(RE_Id, RE_Unit_Table): Make the entities RE_CPU_Range and
	RE_Unspecified_CPU visible.
	* sinfo.ads, sinfo.adb (Has_Pragma_CPU, Set_Has_Pragma_CPU): Add these
	two subprograms to set/get the flag indicating whether there is a
	pragma CPU which applies to the entity.
	* lib.ads, lib.adb (Unit_Record, Default_Main_CPU, Main_CPU,
	Set_Main_CPU): Add the field Main_CPU to Unit_Record to store the value
	of the affinity associated to the main subprogram (if any).
	Default_Main_CPU is used when no affinity is set. Subprograms
	Set_Main_CPU and Main_CPU are added to set/get the affinity of the main
	subprogram.
	* ali.ads, ali.adb (ALIs_Record): Add field Main_CPU to contain the
	value of the affinity of the main subprogram.
	(Scan_ALI): Get the affinity of the main subprogram (encoded as C=XX in
	the M line).
	* lib-writ.ads, lib-writ.adb (M_Parameters): Encode the affinity of the
	main subprogram in the M (main) line using C=XX.
	* lib-load.adb (Create_Dummy_Package_Unit, Load_Main_Source,
	Load_Unit): Add new field Main_CPU.
	* bindgen.adb (Gen_Adainit_Ada, Gen_Adainit_C): Add the code to pass
	the affinity of the main subprogram to the run time.
	* s-taskin.ads (Common_ATCB): Add the field Base_CPU to store the
	affinity.
	(Unspecified_CPU): Add this constant to identify the case when no
	affinity is set for tasks.
	* s-taskin.adb (Initialize_ATCB): Store the value coming from pragma
	CPU in the common part of the ATCB.
	(Initialize): Store the value coming from pragma CPU (for the
	environment task) in the common part of the ATCB.
	* s-tassta.ads, s-tassta.adb (Create_Task): Add the affinity specified
	by pragma CPU to the ATCB.
	* s-tarest.ads, s-tarest.adb (Create_Restricted_Task): Add the affinity
	specified by pragma CPU to the ATCB.
	* s-tporft.adb (Register_Foreign_Thread): Add the new affinity
	parameter to the call to Initialize_ATCB.
	* s-taprop-linux.adb (Create_Task): Change the attributes of the thread
	to include the task affinity before creation. Additionally, the
	affinity selected with Task_Info is also enforced changing the
	attributes at task creation time, instead of changing it after creation.
	(Initialize): Change the affinity of the environment task if required
	by a pragma CPU.
	* s-osinte-linux.ads (pthread_setaffinity_np): Instead of using a
	wrapper to check whether the function is available or not, use a weak
	symbol.
	(pthread_attr_setaffinity_np): Add the import of this function which is
	used to change the affinity in the attributes used to create a thread.
	* adaint.c (__gnat_pthread_attr_setaffinity_np): Remove this wrapper.
	It was used to check whether the pthread function was available or not,
	but the use of a weak symbol handles this situation in a cleaner way.
	* s-taprop-mingw.adb (Create_Task, Initialize): Change the affinity of
	tasks (including the environment task) if required by a pragma CPU.
	* s-taprop-solaris.adb (Enter_Task): Change the affinity of tasks
	(including the environment task) if required by a pragma CPU.
	* s-taprop-vxworks.adb (Create_Task, Initialize): Change the affinity
	of tasks (including the environment task) if required by a pragma CPU.
	* init.c (__gl_main_cpu): Make this value visible to the run time. It
	will pass the affinity of the environment task.

2010-10-18  Javier Miranda  <miranda@adacore.com>

	* einfo.adb (Direct_Primitive_Operations): Complete assertion.

2010-10-18  Vincent Celier  <celier@adacore.com>

	* prj.ads (Source_Data): New Boolean flag In_The_Queue.

2010-10-18  Tristan Gingold  <gingold@adacore.com>

	* s-stausa.ads: Add the Top parameter to Initialize_Analyzer.
	* s-stausa.adb: Use the top parameter.  In Fill_Stack, use the
	stack top if known.
	* s-tassta.adb (Task_Wrapper): Call Initialize_Analyzer after Enter_Task
	so that Pri_Stack_Info.Limit can be set and used.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* einfo.ads: Minor reformatting.
	* sem_res.adb (Resolve_Allocator): Add test for violating
	No_Anonymous_Allocators.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* prj-nmsc.adb, prj.adb, sem_res.adb: Minor reformatting.

2010-10-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Insert_Explicit_Dereference): If operand is a selected
	component, we generate a reference to the ultimate prefix when it is an
	entity name. We must place the reference on the identifier for that
	prefix, and not on the operand itself, to prevent spurious extra
	references in the ali file.

2010-10-18  Vincent Celier  <celier@adacore.com>

	* projects.texi: Add documentation for attribute Ignore_Source_Sub_Dirs

2010-10-18  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads, einfo.adb: New attribute PPC_Wrapper for entries and entry
	families. Denotes a procedure that performs pre/postcondition checks
	and then performs the entry call.
	* sem_res.adb (Resolve_Entry_Call): If the entry has
	pre/postconditions, replace call with a call to the PPC_Wrapper of the
	entry.
	* exp_ch9.adb (Build_PPC_Wrapper): new procedure.
	(Expand_N_Entry_Declaration, Expand_N_Protected_Type_Declaration): call
	Build_PPC_Wrapper for all entries in task and protected definitions.

2010-10-18  Tristan Gingold  <gingold@adacore.com>

	* init.c: Add __gnat_set_stack_guard_page and __gnat_set_stack_limit.
	Implement stack limitation on VMS.
	Minor reformatting.

2010-10-18  Vincent Celier  <celier@adacore.com>

	* prj.adb (Is_Compilable): Do not modify Source.Compilable until the
	source record has been initialized.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* einfo.adb: Minor code reorganization (Primitive_Operations is a
	synthesized attribute routine and was in the wrong place).

2010-10-18  Tristan Gingold  <gingold@adacore.com>

	* init.c: Indentation, and minor changes to more closely follow GNU
	style rules.  Make more variable statics.

2010-10-18  Vincent Celier  <celier@adacore.com>

	* prj.adb (Is_Compilable): On first call for a source, cache value in
	component Compilable.
	* prj.ads (Source_Data): New component Compilable, to cache the value
	returned by function Is_Compilable.

2010-10-18  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: New project level attribute Ignore_Source_Sub_Dirs.
	* prj-nmsc.adb (Expand_Subdirectory_Pattern): New string list parameter
	Ignore.
	(Recursive_Find_Dirs): Do not consider subdirectories listed in Ignore.
	(Get_Directories): Call Find_Source_Dirs with the string list
	indicated by attribute Ignore_Source_Sub_Dirs.
	* snames.ads-tmpl: New standard name Ignore_Source_Sub_Dirs.

2010-10-18  Javier Miranda  <miranda@adacore.com>

	* einfo.ads, einfo.adb (Primitive_Operations): New synthesized
	attribute.
	(Direct_Primitive_Operations): Renaming of old Primitive_Operations.
	(Set_Direct_Primitive_Operations): Renaming of old
	Set_Primitive_Operations. Update documentation
	* sem_ch3.adb, exp_util.adb, sem_ch7.adb, sem_ch8.adb, exp_ch3.adb:
	Replace occurrences of Set_Primitive_Operations by
	Set_Direct_Primitive_Operations.
	* sem_cat.adb (Validate_RACW_Primitives): No action needed for tagged
	concurrent types.
	* exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies): Do not
	process primitives of concurrent types.
	* lib-xref.adb (Generate_Prim_Op_References): Minor code cleanup.

2010-10-18  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb (Expand_N_Subprogram_Declaration): Use Freeze_Before.
	(Expand_Protected_Object_Reference): Likewise.
	* sem_attr.adb (Resolve_Attribute): Likewise.
	* sem_ch3.adb (Analyze_Subtype_Declaration): Likewise.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Likewise.

2010-10-18  Arnaud Charlet  <charlet@adacore.com>

	* g-comlin.adb (Get_Switches): Prevent dereferencing null Config.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb: Add entries for aspects
	Read/Write/Input/Output.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing for
	handling aspects Read/Write/Input/Output.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb (Note_Possible_Modification): Do not give warning for
	use of pragma Unmodified unless we are sure this is a modification.

2010-10-18  Tristan Gingold  <gingold@adacore.com>

	* sysdep.c: Add __gnat_get_stack_bounds.
	* s-taprop-mingw.adb Call __gnat_get_stack_bounds to set Pri_Stack_Info.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* a-assert.ads: Fix bad name in header.
	* sem_ch4.adb, sem_ch6.adb, sem_ch7.adb, sem_ch10.adb: Minor
	reformatting.
	* exp_aggr.adb: Fix typo in comment.

2010-10-18  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Side_Effect_Free): Code clean up.

2010-10-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Is_Primitive_Operator_In_Use): Renamed from
	Is_Primitive_Operator. When ending the scope of a use package scope, a
	primitive operator remains in use if the base type has a current use
	(type) clause.

2010-10-18  Javier Miranda  <miranda@adacore.com>

	* einfo.ads (Is_Dynamic_Support): Add missing support for limited
	private types whose full-view is a task type.
	* sem_util.adb (Enclosing_Subprogram): Add missing support for limited
	private types whose full-view is a task type.
	* exp_ch7.adb (Find_Final_List): Minor code cleanup replacing code by
	function Nearest_Dynamic_Scope which provides the needed functionality.

2010-10-18  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Set_Exported): Do not generate error when exporting a
	variable with an address clause in codepeer mode.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* g-trasym-vms-ia64.adb: Minor reformatting.

2010-10-18  Thomas Quinot  <quinot@adacore.com>

	* sem_type.adb (Covers): If either argument is Standard_Void_Type and
	the other isn't, return False early.

2010-10-18  Ed Falis  <falis@adacore.com>

	* s-vxwext-rtp.ads, s-vxext-rtp.adb: Adapt for missing APIs for RTPs in
	VxWorks Cert.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* sem_disp.ads: Minor comment update.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (Spec_PPC_List): Is now present in Entries
	* sem_ch3.adb (Analyze_Declarations): Add processing for delaying
	visibility analysis of precondition and postcondition pragmas (and
	Pre/Post aspects).
	* sem_ch6.adb (Process_PPCs): Add handling of inherited Pre'Class
	aspects.
	* sem_ch7.adb (Analyze_Package_Specification): Remove special handling
	of pre/post conditions (no longer needed).
	* sem_disp.adb (Inherit_Subprograms): Deal with interface case.
	* sem_prag.adb (Analyze_PPC_In_Decl_Part): Remove analysis of message
	argument, since this is now done in the main processing for
	pre/postcondition pragmas when they are first seen.
	(Chain_PPC): Pre'Class and Post'Class now handled properly
	(Chain_PPC): Handle Pre/Post aspects for entries
	(Check_Precondition_Postcondition): Handle entry declaration case
	(Check_Precondition_Postcondition): Handle delay of visibility analysis
	(Check_Precondition_Postcondition): Preanalyze message argument if
	present.

2010-10-18  Robert Dewar  <dewar@adacore.com>

	* g-trasym-vms-ia64.adb, prj-nmsc.adb, prj.ads: Minor reformatting.

2010-10-14  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Set
	TREE_THIS_NOTRAP on the INDIRECT_REF node built for the template.
	* gcc-interface/trans.c (Identifier_to_gnu): Set TREE_THIS_NOTRAP on
	the INDIRECT_REF node built for objects used by reference.
	* gcc-interface/utils2.c (build_binary_op): Add short-circuit for
	constant result. Set TREE_THIS_NOTRAP on ARRAY_REF and ARRAY_RANGE_REF.
	(gnat_stabilize_reference_1): Propagate the TREE_THIS_NOTRAP flag.

2010-10-13  Richard Henderson  <rth@redhat.com>

	* gcc-interface/misc.c (gnat_eh_personality): Update call to
	build_personality_function.
	* raise-gcc.c (PERSONALITY_FUNCTION): Change to match other languages;
	use__gnat_personality_{v,sj}0.

2010-10-12  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Add_Source): Put source in hash table Source_Files_HT
	(Process_Exceptions_File_Based): Use hash table Source_Files_HT instead
	of iterating through all sources of the project.
	* prj.adb (Free): Reset hash table Source_Files_HT
	(Reset): Reset hash table Source_Files_HT
	* prj.ads (Source_Data): New component Next_With_File_Name
	(Source_Files_Htable): New hash table
	(Project_Tree_Data): New component Source_Files_HT

2010-10-12  Tristan Gingold  <gingold@adacore.com>

	* g-trasym-vms-ia64.adb: Use the documented API.
	* gcc-interface/Makefile.in: Always set NO_REORDER_ADAFLAGS.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-10-12  Thomas Quinot  <quinot@adacore.com>

	* rtsfind.ads, exp_dist.adb, exp_dist.ads (Build_General_Calling_Stubs,
	PolyORB case): Request is now a controlled type: we can declare the
	request on the stack, and we do not need explicit cleanup actions
	anymore.

2010-10-12  Bob Duff  <duff@adacore.com>

	* s-rident.ads (Profile_Info): This variable is now constant.

2010-10-12  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb, g-comlin.ads (Define_Switch): Put back (unused)
	parameter Separator for backward compatibility.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* sem_ch9.adb, par-ch9.adb, impunit.adb: Minor reformatting.

2010-10-12  Vincent Celier  <celier@adacore.com>

	* debug.adb: Put detailed documentation for gnatmake switch -dm.

2010-10-12  Vincent Celier  <celier@adacore.com>

	* gnat1drv.adb: When the compiler is invoked for a spec that needs aw
	body, do not generate an ALI file if neither -gnatc nor -gnatQ is used.

2010-10-12  Arnaud Charlet  <charlet@adacore.com>

	* g-comlin.adb (Foreach_Switch): Make this procedure generic to avoid
	using 'Access.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Add comment.
	* gnatcmd.adb, sem_ch6.adb, switch-m.adb: Minor reformatting.

2010-10-12  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Side_Effect_Free): Return true for object renaming
	declarations that were previously generated by Remove_Side_Effects.

2010-10-12  Emmanuel Briot  <briot@adacore.com>

	* xref_lib.adb (Get_Full_Type): Display "private variable" instead of
	"???" when an entity is defined as "*" in the ALI file.
	* g-comlin.ads, g-comlin.adb: Fix handling of null parameters.
	Minor reformatting.

2010-10-12  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb, g-comlin.ads (Display_Help, Getopt, Current_Section,
	Set_Usage): New subprograms.
	(Define_Switch): Change profile to add support for help messages and
	long switches.

2010-10-12  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (New_Overloaded_Entity): Add missing decoration of
	attribute Overridden_Operation in predefined dispatching primitives. 

2010-10-12  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb, g-comlin.ads (Add_Switch): Raise an exception when a
	command line configuration exists and we specify an invalid section.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Process_PPCs): Fix error in inheriting Pre'Class when no
	exception messages are generated.
	(Process_PPCs): Fix error in inheriting Pre'Class.

2010-10-12  Jose Ruiz  <ruiz@adacore.com>

	* gnatcmd.adb: Use response file for GNATstack.
	(Check_Files): Pass the list of ci files for GNATstack using a response
	file to avoid problems with command line length.
	Factor out the code handling response file into a new procedure named
	Add_To_Response_File.

2010-10-12  Vincent Celier  <celier@adacore.com>

	* debug.adb: For gnatmake, document the meaning of -dm
	* make.adb (Gnatmake): If -dm is used, indicate the maximum number of
	simultaneous compilations.
	* switch-m.adb (Scan_Make_Switches): Allow -j0, meaning as many
	simultaneous compilations as the number of processors.

2010-10-12  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/Make-lang.in (ada/misc.o): Use $(OPTIONS_H)
	instead of options.h.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Clarify that 'Old can be used in preconditions and
	postcondition pragmas.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* errout.ads, erroutc.adb: The # insertion now handles from in place of
	at.
	* exp_prag.adb (Expand_Pragma_Check): Suppress generated default
	message if new switch Exception_Locations_Suppressed is set.
	(Expand_Pragma_Check): Revised wording for default message for case
	of precondition or postcondition.
	* namet.ads, namet.adb (Build_Location_String): New procedure.
	* opt.ads (List_Inherited_Pre_Post): New flag.
	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Add call to
	list inherited pre/post aspects.
	* sem_ch13.adb (Analyze_Aspect_Specification): Improve generation of
	messages for precondition/postcondition cases.
	* sem_ch6.adb (Process_PPCs): General cleanup, and list inherited PPC's
	if flag List_Inherited_Pre_Post is set True.
	(Process_PPCs): Add initial handling for inherited preconditions
	(List_Inherited_Pre_Post_Aspects): New procedure
	* sem_ch6.ads (List_Inherited_Pre_Post_Aspects): New procedure
	* sem_disp.adb (Inherited_Subprograms): New function
	* sem_disp.ads (Inherited_Subprograms): New function
	* sem_prag.adb (Check_Duplicate_Pragma): Clean up handling of
	pre/postcondition.
	(Check_Precondition_Postcondition): Check for inherited aspects
	* sem_warn.adb: Process -gnatw.l/w.L setting List_Inherited_Pre_Post
	* sinfo.ads, sinfo.adb (Split_PPC): New flag.
	* sinput.ads, sinput.adb (Build_Location_String): New function.
	* usage.adb: Add line for -gnatw.l/-gnatw.L

2010-10-12  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Remove wrong code.

2010-10-12  Arnaud Charlet  <charlet@adacore.com>

	* xref_lib.adb: Add handling of j/J letters.

2010-10-12  Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_number_of_cpus): Add implementation for Windows.

2010-10-12  Arnaud Charlet  <charlet@adacore.com>

	* make.adb (Globalize): New procedure.
	(Compile): Set Do_Codepeer_Globalize_Step when -gnatC is used.
	(Gnatmake): Call Globalize when needed.
	(Process_Restrictions_Or_Restriction_Warnings): Ignore Restrictions
	pragmas in CodePeer mode.
	(Adjust_Global_Switches): Set No_Initialize_Scalars in CodePeer mode,
	to generate simpler and consistent code.

2010-10-12  Bob Duff  <duff@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Disable previous change,
	can cause side effects to be duplicated.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Process_PPCs): Handle inherited postconditions.

2010-10-12  Arnaud Charlet  <charlet@adacore.com>

	* exp_disp.adb (Set_All_DT_Position): Disable emit error message on
	abstract inherited private operation in CodePeer mode.

2010-10-12  Thomas Quinot  <quinot@adacore.com>

	* a-exetim.ads: Minor reformatting.
	* g-socket.ads (Port_Type): Better definition corresponding to the
	actual standard range.
	* exp_ch5.adb: Add comment.
	* sem_aux.adb: Minor reformatting.

2010-10-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Copy_Generic_Node): If node is a string literal, remove
	string_literal_subtype so that a new one can be constructed in the
	scope of the instance.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb (Has_Pragma_Priority): New name for Has_Priority_Pragma
	* gnat_rm.texi (pragma Suppress_All): Document new placement rules
	* par-prag.adb (P_Pragma, case Suppress_All): Set
	Has_Pragma_Suppress_All flag.
	* sem_prag.adb (Has_Pragma_Priority): New name for Has_Priority_Pragma
	(Analyze_Pragma, case Suppress_All): Remove placement check
	(Process_Compilation_Unit_Pragmas): Use Has_Pragma_Suppress_All flag
	* sem_prag.ads (Process_Compilation_Unit_Pragmas): Update documentation
	* sinfo.adb (Has_Pragma_Suppress_All): New flag
	(Has_Pragma_Priority): New name for Has_Priority_Pragma
	* sinfo.ads (Has_Pragma_Suppress_All): New flag
	(Has_Pragma_Priority): New name for Has_Priority_Pragma

2010-10-12  Arnaud Charlet  <charlet@adacore.com>

	* lib-xref.ads: Mark j/J as reserved for C++ classes.

2010-10-12  Jose Ruiz  <ruiz@adacore.com>

	* a-exetim-default.ads, a-exetim-posix.adb: New.
	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS for linux): Use the
	POSIX Realtime support to implement CPU clocks.
	(EXTRA_GNATRTL_TASKING_OBJS for linux): Add the a-exetim.o object
	to the tasking library.
	(THREADSLIB): Make the POSIX.1b Realtime Extensions library (librt)
	available for shared libraries.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): For Pre/Post, break
	apart expressions with AND THEN clauses into separate pragmas.
	* sinput.ads, sinput.adab (Get_Logical_Line_Number_Img): New function.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* par-ch13.adb (P_Aspect_Specifications): Fix handling of 'Class
	aspects.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Fix bad Sloc on aspects
	* sem_prag.adb (Fix_Error): Only change pragma names for pragmas from
	aspects.
	(Check_Optional_Identifier): Handle case of direct arguments
	(Chain_PPC): Test for abstract case, giving appropriate messages
	* sinfo.ads, sinfo.adb (Class_Present): Allowed on N_Pragma node

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* par-endh.adb (Check_End): Don't swallow semicolon or aspects after
	END RECORD.
	* sem_attr.adb (Eval_Attribute): Code clean up.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* par-ch12.adb (P_Formal_Private_Type_Definition): Improve error
	messages and recovery for case of out of order Abstract/Tagged/Private
	keywords.
	* par-ch3.adb (P_Type_Declaration): Improve error messages and recovery
	for case of out of order Abstract/Tagged/Private keywords.

2010-10-12  Ed Schonberg  <schonberg@adacore.com>

	* inline.adb (Analyze_Inlined_Bodies): Restrict previous change to case
	where child unit is main unit of compilation.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb (Move_Aspects): New procedure.
	* atree.ads, atree.adb: (New_Copy): Does not copy aspect specifications
	* sinfo.ads, par-ch3.adb, par-ch6.adb, par-ch7.adb, par-ch9.adb,
	par-endh.adb, par-ch13.adb, par-ch12.adb: Modify grammar to include
	aspect specifications.
	Recognize aspect specifications for all cases
	* par.adb: Recognize aspect specifications for all cases
	* sem_ch12.ads, sem_ch12.adb (Copy_Generic_Node): Copies aspect
	specifications.
	* sem_ch3.adb (Analyze_Subtype_Declaration): Improve patch to freeze
	generic actual types (was missing some guards before).
	* sem_ch9.adb (Analyze_Single_Protected_Declaration): Copy aspects to
	generated object
	(Analyze_Single_Task_Declaration): Copy aspects to generated object

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

	* usage.adb (usage): Adjust line for -gnatn switch.

2010-10-12  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb (Eval_Attribute): Only leave change active for aspect
	spec case.

2010-10-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Declaration): If this is a
	declaration of a null procedure resolve the types of the profile of the
	generated null body now.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Remove d.A flag to delay address clause (not needed any
	more). Add d.A flag to enable tree read/write of aspect spec hash table
	* sem_ch13.adb (Analyze_Aspect_Specifications): Properly delay address
	clause.
	(Rep_Item_Too_Late): No need for special processing for delayed rep
	items (and it caused difficulties in the address case).
	* tree_gen.adb: Only write aspect spec hash table if -gnatd.A is set
	* tree_in.adb: Only write aspect spec hash table if -gnatd.A is set

2010-10-11  Pat Rogers  <rogers@adacore.com>

	* gnat_ugn.texi: Minor editing.

2010-10-11  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/utils2.c (gnat_build_constructor): Use VEC_qsort.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* g-htable.ads (Get_First): New procedural version for Simple_HTable
	(Get_Next): New procedural version for Simple_HTable
	* s-htable.adb (Get_First): New procedural version for Simple_HTable
	(Get_Next): New procedural version for Simple_HTable
	* s-htable.ads (Get_First): New procedural version for Simple_HTable
	(Get_Next): New procedural version for Simple_HTable

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Propagate_Discriminants): To gather the components of a
	variant part, use the association list of the subaggregate, which
	already includes the values of the needed discriminants.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb: Changes to accomodate aspect delay
	(Tree_Write): New procedure.
	* atree.ads, atree.adb: Flag3 is now Has_Aspects and applies to all
	nodes.
	* atree.h: Flag3 is now Has_Aspects and applies to all nodes
	* debug.adb: Add debug flag gnatd.A
	* einfo.adb (Has_Delayed_Aspects): New flag
	(Get_Rep_Item_For_Entity): New function
	* einfo.ads (Has_Delayed_Aspects): New flag
	(Get_Rep_Item_For_Entity): New function
	* exp_ch13.adb (Expand_N_Freeze_Entity): Insert delayed aspects into
	tree.
	* exp_ch3.adb, exp_ch6.adb, exp_ch9.adb, exp_disp.adb: New calling
	sequence for Freeze_Entity.
	* freeze.ads, freeze.adb (Freeze_Entity): Takes node rather than source
	ptr. All calls are changed to this new interface.
	(Freeze_And_Append): Same change
	(Freeze_Entity): Evaluate deferred aspects
	* sem_attr.adb: New calling sequence for Freeze_Entity
	(Eval_Attribute): Don't try to evaluate attributes of unfrozen types
	when we are in spec expression preanalysis mode.
	* sem_ch10.adb: New calling sequence for Freeze_Entity
	* sem_ch11.adb: Simplify analysis of aspect specifications now that the
	flag Has_Aspects applies to all nodes (no need to save aspects).
	* sem_ch12.adb: Simplify analysis of aspect specifications now that the
	flag Has_Aspects applies to all nodes (no need to save aspects).
	* sem_ch13.adb (Analyze_Aspect_Specifications): Major rewrite to
	accomodate delaying aspect evaluation to the freeze point.
	(Duplicate_Clause): Simplify using Get_Rep_Item_For_Entity, and also
	accomodate delayed aspects.
	(Rep_Item_Too_Late): Deal with delayed aspects case
	* sem_ch13.ads (Rep_Item_Too_Late): Document handling of delayed
	aspects.
	* sem_ch3.adb (Analyze_Subtype_Declaration): Make sure that generic
	actual types are properly frozen (this is needed because of the new
	check in Eval_Attribute that declines to evaluate attributes
	for unfrozen types).
	Simplify analysis of aspect specifications now that the flag
	Has_Aspects applies to all nodes (no need to save aspects).
	* sem_ch3.ads (Preanalyze_Spec_Expression): Note use for delayed
	aspects.
	* sem_ch5.adb: Simplify analysis of aspect specifications now that the
	flag Has_Aspects applies to all nodes (no need to save aspects).
	New calling sequence for Freeze_Entity.
	* sem_ch9.adb, sem_ch7.adb, sem_ch6.adb: Simplify analysis of aspect
	specifications now that the flag Has_Aspects applies to all nodes
	(no need to save aspects).
	New calling sequence for Freeze_Entity
	* sem_prag.adb (Check_Duplicate_Pragma): Simplify using
	Get_Rep_Item_For_Entity
	(Get_Pragma_Arg): Moved to Sinfo
	* sinfo.ads, sinfo.adb (Aspect_Rep_Item_: New field
	(Is_Delayed_Aspect): New flag
	(Next_Rep_Item): Document use for aspects
	(Get_Pragma_Arg): Moved here from Sem_Prag
	* sprint.adb (Sprint_Aspect_Specifications): Now called after semicolon
	is output and removes semicolon (simplifies interface).
	(Sprint_Node_Actual): Simplify handling of aspects now that Has_Aspects
	applies to any node.
	* tree_gen.adb: Write contents of Aspect_Specifications hash table
	* tree_in.adb: Read and initialize Aspect_Specifications hash table
	* treepr.adb (Print_Node): Print Has_Aspects flag
	(Print_Node): Print Aspect_Specifications in Has_Aspects set
	* xtreeprs.adb: Remove obsolete references to Flag1,2,3

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb: Major revision of this package for 2nd
	stage of aspects implementation.
	* gcc-interface/Make-lang.in: Add entry for aspects.o
	* gcc-interface/Makefile.in: Add aspects.o to GNATMAKE_OBJS
	* par-ch13.adb (Aspect_Specifications_Present): New function
	(P_Aspect_Specifications): New procedure
	* par-ch3.adb (P_Type_Declaration): Handle aspect specifications
	(P_Derived_Type_Def_Or_Private_Ext_Decl): Handle aspect specifications
	(P_Identifier_Declarations): Handle aspect specifications
	(P_Component_Items): Handle aspect specifications
	(P_Subtype_Declaration): Handle aspect specifications
	* par-ch6.adb (P_Subprogram): Handle aspect specifications
	* par-ch9.adb (P_Entry_Declaration): Handle aspect specifications
	* par.adb (Aspect_Specifications_Present): New function
	(P_Aspect_Specifications): New procedure
	* sem.adb (Analyze_Full_Type_Declaration): New name for
	Analyze_Type_Declaration.
	(Analyze_Formal_Package_Declaration): New name (add _Declaration)
	(Analyze_Formal_Subprogram_Declaration): New name (add _Declaration)
	(Analyze_Protected_Type_Declaration): New name (add _Declaration)
	(Analyze_Single_Protected_Declaration): New name (add _Declaration)
	(Analyze_Single_Task_Declaration): New name (add _Declaration)
	(Analyze_Task_Type_Declaration): New name (add _Declaration)
	* sem_cat.adb (Analyze_Full_Type_Declaration): New name for
	Analyze_Type_Declaration.
	* sem_ch11.adb (Analyze_Exception_Declaration): Analyze aspect
	specifications.
	* sem_ch12.adb (Analyze_Formal_Object_Declaration): Handle aspect
	specifications.
	(Analyze_Formal_Package_Declaration): New name (add _Declaration)
	(Analyze_Formal_Package_Declaration): Handle aspect specifications
	(Analyze_Formal_Subprogram_Declaration): New name (add _Declaration)
	(Analyze_Formal_Subprogram_Declaration): Handle aspect specifications
	(Analyze_Formal_Type_Declaration): Handle aspect specifications
	(Analyze_Generic_Package_Declaration): Handle aspect specifications
	(Analyze_Generic_Subprogram_Declaration): Handle aspect specifications
	(Analyze_Package_Instantiation): Handle aspect specifications
	(Analyze_Subprogram_Instantiation): Handle aspect specifications
	* sem_ch12.ads (Analyze_Formal_Package_Declaration): New name (add
	_Declaration).
	(Analyze_Formal_Subprogram_Declaration): New name (add _Declaration)
	* sem_ch13.adb (Analyze_Aspect_Specifications): New procedure
	(Duplicate_Clause): New function, calls to this function are added to
	processing for all aspects.
	* sem_ch13.ads (Analyze_Aspect_Specifications): New procedure
	* sem_ch3.adb (Analyze_Full_Type_Declaration): New name for
	Analyze_Type_Declaration.
	* sem_ch3.ads (Analyze_Full_Type_Declaration): New name for
	Analyze_Type_Declaration.
	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Analyze aspect
	specifications.
	(Analyze_Subprogram_Declaration): Analyze aspect specifications
	* sem_ch7.adb (Analyze_Package_Declaration): Analyze aspect
	specifications.
	(Analyze_Private_Type_Declaration): Analyze aspect specifications
	* sem_ch9.adb (Analyze_Protected_Type_Declaration): Analyze aspect
	specifications.
	(Analyze_Protected_Type_Declaration): New name (add _Declaration)
	(Analyze_Single_Protected_Declaration): Analyze aspect specifications
	(Analyze_Single_Protected_Declaration): New name (add _Declaration)
	(Analyze_Single_Task_Declaration): Analyze aspect specifications
	(Analyze_Single_Task_Declaration): New name (add _Declaration)
	(Analyze_Task_Type_Declaration): Analyze aspect specifications
	(Analyze_Task_Type_Declaration): New name (add _Declaration)
	* sem_ch9.ads (Analyze_Protected_Type_Declaration): New name (add
	_Declaration).
	(Analyze_Single_Protected_Declaration): New name (add _Declaration)
	(Analyze_Single_Task_Declaration): New name (add _Declaration)
	(Analyze_Task_Type_Declaration): New name (add _Declaration)
	* sem_prag.adb: Use Get_Pragma_Arg systematically so that we do not
	have to generate unnecessary pragma argument associations (this matches
	the doc).
	Throughout do changes to accomodate aspect specifications, including
	specializing messages, handling the case of not going through all
	homonyms, and allowing for cancellation.
	* sinfo.ads, sinfo.adb: Clean up obsolete documentation for Flag1,2,3
	(Aspect_Cancel): New flag
	(From_Aspect_Specification): New flag
	(First_Aspect): Removed flag
	(Last_Aspect): Removed flag
	* sprint.adb (Sprint_Aspect_Specifications): New procedure
	(Sprint_Node_Actual): Add calls to Sprint_Aspect_Specifications

2010-10-11  Bob Duff  <duff@adacore.com>

	* sem_res.adb (Resolve_Actuals): Minor change to warning messages so
	they match in Ada 95, 2005, and 2012 modes, in the case where the
	language didn't change. Same thing for the run-time exception message.

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* debug.adb Document that switch -gnatd.p enables the CIL verifier.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* s-htable.adb: Minor reformatting.

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* debug.adb: Update comment.

2010-10-11  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (GNATCmd): Set Opt.Unchecked_Shared_Lib_Imports to True
	unconditionally as for "gnat make" the projects are not processed in
	the GNAT driver.

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.ads, sem_ch10.adb (Load_Needed_Body): Add parameter to
	suppress semantic analysis of the body when inlining, prior to
	verifying that the body does not have a with_clause on a descendant
	unit.
	* inline.adb (Analyze_Inlined_Bodies): Do not inline a body if it has a
	with_clause on a descendant. 
	(Scope_In_Main_Unit): Simplify.

2010-10-11  Robert Dewar  <dewar@adacore.com>

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

2010-10-11  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (GNATCmd): For all tools other than gnatmake, allow
	shared library projects to import projects that are not shared library
	projects.

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* debug.adb: Document that switch -gnatd.o generates the CIL listing.

2010-10-11  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Process_Suppress_Unsuppress): Only ignore
	Suppress/Unsuppress pragmas in codepeer mode on user code.

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_Call): For VM platforms, add missing expansion of
	tag check in case of dispatching call through "=".

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Subprogram_Declaration): In Ada2012 an incomplete
	type is legal in the profile of any basic declaration.
	* sem_ch6.adb (Analyze_Return_Type, Process_Formals): In Ada2012 an
	incomplete type, including a limited view of a type, is legal in the
	profile of any subprogram declaration.
	If the type is tagged, its use is also legal in a body.
	* sem_ch10.adb (Install_Limited_With_Clause): Do not process context
	item if misplaced.
	(Install_Limited_Withed_Unit): Refine legality checks when both the
	limited and the non-limited view of a package are visible in the
	context of a unit.
	If this is not an error case, the limited view is ignored.
	freeze.adb (Freeze_Entity): In Ada2012, an incomplete type is legal in
	access to subprogram declarations

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb: Code clean up.
	* exp_util.adb: Minor reformatting.

2010-10-11  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch3.adb, exp_ch6.adb
	(Make_Build_In_Place_Call_In_Anonymous_Context,
	Make_Build_In_Place_Call_In_Assignment,
	Make_Build_In_Place_Call_In_Object_Declaration): Fix calls to
	Add_Task_Actuals_To_Build_In_Place_Call in case of No_Task_Hierarchy
	restriction.
	(Access_Definition): Add missing handling of No_Task_Hierarchy.

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Remove_Side_Effects): No action needed for renamings of
	class-wide expressions.

2010-10-11  Arnaud Charlet  <charlet@adacore.com>

	* xr_tabls.adb, sem_res.adb: Minor reformatting

2010-10-11  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi, exp_attr.adb, sem_attr.adb, sem_attr.ads,
	snames.ads-tmpl (Analyze_Attribute, Expand_N_Attribute_Reference): Add
	handling of Attribute_Ref. Add missing blanks in some error messages.
	(Attribute_Ref, Name_Ref): Declare.
	Document 'Ref attribute.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb: Minor reformatting.

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* sem_ch8.adb (Attribute_Renaming): Add missing check to avoid loading
	package System.Aux_Dec in VM platforms.

2010-10-11  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Process_Suppress_Unsuppress): Ignore
	Suppress/Unsuppress pragmas in codepeer mode.
	(Analyze_Pragma [Pragma_Suppress_All]): Do not generate error message
	in codepeer mode.
	* einfo.ads: Fix typo.

2010-10-11  Emmanuel Briot  <briot@adacore.com>

	* sinfo.adb: Use GNAT.HTable rather than System.HTable.
	* prj-nmsc.adb: Minor reformatting.

2010-10-11  Thomas Quinot  <quinot@adacore.com>

	* sem_attr.adb (Type_Key): Code simplification.

2010-10-11  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/utils2.c (maybe_wrap_malloc): Fix crash when allocating
	very large object on VMS.

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* sem_ch10.adb (Analyze_With_Clause): Add missing test to ensure
	availability of attribute Instance_Spec.

2010-10-11  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Disable codepeer mode if
	checking syntax only or in ASIS mode.

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Delayed_Subprogram): Abstract subprograms may also
	need a freeze node if some type in the profile has one.
	* gcc-interface/trans.c (case N_Abstract_Subprogram_Declaration): If
	entity has a freeze node, defer elaboration.

2010-10-11  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb (Check_Aggregate_Project): Add support for finding all
	aggregated projects.

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Entry_Call): Generate 's' reference for entry
	call.
	* sem_ch6.adb: Diagnose additional error condition.

2010-10-11  Bob Duff  <duff@adacore.com>

	* par.adb (Par): Clarify wording of certain error messages.

2010-10-11  Gary Dismukes  <dismukes@adacore.com>

	* sem_disp.adb (Check_Dispatching_Operation): Revise test for warning
	about nondispatching subprograms to use In_Same_List (reducing use of
	Parent links).

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* xr_tabls.adb, sem_res.adb, lib-xref.adb, lib-xref.ads: Use s for
	reference in a static call.

2010-10-11  Steve Baird  <baird@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, case Type_Key): Type_Key
	attribute should always be transformed into a string literal in
	Analyze_Attribute.
	* par-ch4.adb: Type_Key attribute's type is String; update value of
	Is_Parameterless_Attribute constant to reflect this.
	* sem_attr.adb (Analyze_Attribute): Recognize Type_Key attribute and
	rewrite it as a string literal (attribute value is always known
	statically).
	* snames.ads-tmpl: Add entries for Type_Key attribute.

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb (Output_References): Common handling for objects and
	formals of an anonymous access type.

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

	* make.adb (Scan_Make_Arg): Also pass -O to both compiler and linker.

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Fix check for illegal equality declaration in Ada2012

2010-10-11  Gary Dismukes  <dismukes@adacore.com>

	* sem_disp.adb (Check_Dispatching_Operation): When testing for issuing
	a warning about subprograms of a tagged type not being dispatching,
	limit this to cases where the tagged type and the subprogram are
	declared within the same declaration list.

2010-10-11  Jerome Lambourg  <lambourg@adacore.com>

	* projects.texi, prj-attr.adb: Add new attribute documentation_dir.

2010-10-11  Bob Duff  <duff@adacore.com>

	* par-ch9.adb, sem_aggr.adb, exp_ch5.adb, sem_ch3.adb, impunit.adb,
	impunit.ads, sem_ch5.adb, sem_type.adb, exp_imgv.adb, exp_util.adb,
	switch-c.adb, exp_attr.adb, exp_ch9.adb, par-ch11.adb, usage.adb,
	sem_ch9.adb, sem_ch10.adb, scng.adb, checks.adb, sem_prag.adb,
	sem_ch12.adb, par-ch2.adb, freeze.adb, par-ch4.adb, sem_util.adb,
	sem_res.adb, sem_attr.adb, par-ch6.adb, exp_ch4.adb, exp_ch6.adb,
	sem_ch4.adb, exp_ch8.adb, par-ch10.adb, sem_ch6.adb, par-prag.adb,
	exp_disp.adb, par-ch12.adb, sem_ch8.adb, snames.adb-tmpl, opt.ads,
	exp_aggr.adb, sem_cat.adb, sem_ch13.adb, par-ch3.adb, exp_strm.adb,
	exp_cg.adb, lib-xref.adb, sem_disp.adb, exp_ch3.adb: Use Ada_2005
	instead of Ada_05 (Ada_Version_Type).

2010-10-11  Bob Duff  <duff@adacore.com>

	* sem_aggr.adb, impunit.adb, impunit.ads, switch-c.adb, usage.adb,
	sem_ch10.adb, sem_prag.adb, sem_ch12.adb, par-ch4.adb, par-ch6.adb,
	par-ch8.adb, exp_ch4.adb, sem_ch4.adb, sem_ch6.adb, par-prag.adb,
	opt.ads, par-ch3.adb, lib-xref.adb: Use Ada_2012 instead of Ada_12
	(Ada_Version_Type).

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Safe_Prefixed_Reference): If the prefix is an explicit
	dereference then do not exclude dereferences of access-to-constant
	types to handle them as constant view of variables (and hence remove
	side effects when required).
	* sem_res.adb (Resolve_Slice): Ensure that side effects in the bounds
	are properly handled.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, sem_aggr.adb, sprint.adb: Minor reformatting.

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* exp_ch5.ads, exp_ch6.ads (Expand_N_Extended_Return_Statement): Moved
	to exp_ch6.
	(Expand_N_Simple_Return_Statement): Moved to exp_ch6.
	* exp_ch5.adb, exp_ch6.adb (Expand_Non_Function_Return): Moved to
	exp_ch6.
	(Expand_Simple_Function_Return): Move to exp_ch6.
	(Expand_N_Extended_Return_Statement): Moved to exp_ch6.
	(Expand_N_Simple_Return_Statement): Moved to exp_ch6.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* snames.ads-tmpl: Add names for aspects.
	* aspects.ads, aspects.adb: New.
	* gcc-interface/Make-lang.in: Update dependencies.
2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Actuals): If an actual is the current instance of
	a task type, it must be replaced with a reference to Self.

2010-10-11  Vincent Celier  <celier@adacore.com>

	* adaint.h: Add prototype for function __gnat_create_output_file_new.

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* sem_aggr.adb (Collect_Aggr_Bounds): Remove side effects of collected
	aggregate bounds.

2010-10-11  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Check_Interrupt_Or_Attach_Handler): Do not emit error
	for AI05-0033 in CodePeer mode.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* atree.h, atree.ads, atree.adb (Flag3): New flag (replaces Unused_1)
	* csinfo.adb: Aspect_Specifications is a new special field
	* einfo.adb (Flag3): New unused flag
	* exp_util.adb (Insert_Actions): Add processing for
	N_Aspect_Specification.
	* sem.adb: Add entry for N_Aspect_Specification.
	* sinfo.ads, sinfo.adb (N_Aspect_Specification): New node
	(Has_Aspect_Specifications): New flag
	(Permits_Aspect_Specifications): New function
	(Aspect_Specifications): New function
	(Set_Aspect_Specifications): New procedure
	* sprint.adb (Sprint_Node): Put N_At_Clause in proper alpha order
	(Sprint_Node): Add dummy entry for N_Aspect_Specification
	* treepr.adb (Flag3): New flag to be listed

2010-10-11  Vincent Celier  <celier@adacore.com>

	* adaint.c: Minor reformatting.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb, s-htable.ads: Minor reformatting.

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): If the selector is
	invisible in an instantiation, and both the formal and the actual are
	private extensions of the same type, look for the desired component in
	the proper view of the parent type.

2010-10-11  Vincent Celier  <celier@adacore.com>

	* adaint.c (__gnat_number_of_cpus): Add implementation for Solaris,
	AIX, Tru64, Darwin, IRIX and HP-UX.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* a-textio.adb: Minor reformatting

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* a-suesen.ads, a-suenst.ads,
	a-suesen.adb, a-suenst.adb,
	a-suewse.adb, a-suewst.adb,
	a-suewse.ads, a-suewst.ads,
	a-suezse.ads, a-suezst.ads,
	a-suezse.adb, a-suezst.adb: New name for string encoding packages.
	* impunit.adb: New names for string encoding units
	* Makefile.rtl: New names for string encoding units
	* rtsfind.ads: Minor code reorganization.

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb: Code clean up.

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Limited_Return): Specialize warning on limited
	returns when in a generic context.
	(Analyze_Function_Return): ditto.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* s-multip.ads: Fix header.
	* sem_ch3.adb, s-multip.adb, a-tigeli.adb: Minor reformatting.

2010-10-11  Vincent Celier  <celier@adacore.com>

	* Makefile.rtl: Add s-multip.
	* adaint.c: New function __gnat_number_of_cpus, implemented for Linux,
	defaulting to 1 for other platforms.
	* adaint.h: New function __gnat_number_of_cpus.
	* impunit.adb (Non_Imp_File_Names_12): New file list for Ada 2012,
	with a single component "s-multip".
	* impunit.ads (Kind_Of_Unit): New enumerated value Ada_12_Unit for Ada
	2012.
	* rtsfind.ads (RTU_Id): New enumerated value System_Multiprocessors
	* s-multip.ads, s-multip.adb: New Ada 2012 package.
	* sem_ch10.adb (Analyze_With_Clause): Check also Ada 2012 units.

2010-10-11  Javier Miranda  <miranda@adacore.com>

	* a-textio.adb: Move new implementation of Get_Line to a subunit.
	* a-tigeli.adb: New subunit containing the implementation of Get_Line.

2010-10-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.adb: Code clean up.

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_aux.adb, sem_ch6.adb: Minor reformatting

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* einfo.adb, atree.h, atree.ads, atree.adb: Define seven new flags
	Flag248-Flag254.  Define new field Field29.

2010-10-10  Olivier Hainque  <hainque@adacore.com>
            Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/lang.opt (gdwarf+): Remove.
	* gcc-interface/gigi.h (get_parallel_type): Likewise
	* gcc-interface/misc.c (gnat_dwarf_extensions): Likewise.
	(gnat_handle_option): Remove OPT_gdwarfplus case.
	(gnat_post_options): Remove setting of use_gnu_debug_info_extensions
	from gnat_dwarf_extensions.
	* gcc-interface/trans.c (gigi): Remove -gdwarf+ initializations.
	* gcc-interface/utils.c (get_parallel_type): Remove.

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

	* gcc-interface/trans.c (gnat_to_gnu) <N_Not_In>: Use
	invert_truthvalue_loc instead of invert_truthvalue.
	* gcc-interface/utils2.c (build_binary_op) <NE_EXPR>: Likewise.
	(build_unary_op) <TRUTH_NOT_EXPR>: Likewise.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Add
	assertion on the types of the parameters.  Use KIND local variable.
	<E_Incomplete_Type>: Likewise.

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

	* gcc-interface/ada-tree.h (DECL_BY_DOUBLE_REF_P): New macro.
	* gcc-interface/gigi.h (annotate_object): Add BY_DOUBLE_REF parameter.
	* gcc-interface/decl.c (annotate_object): Likewise and handle it.
	(gnat_to_gnu_entity): Adjust calls to annotate_object.
	(gnat_to_gnu_param): If fat pointer types are passed by reference on
	the target, pass them by explicit reference.
	* gcc-interface/misc.c (default_pass_by_ref): Fix type of constant.
	* gcc-interface/trans.c (Identifier_to_gnu): Do DECL_BY_DOUBLE_REF_P.
	(Subprogram_Body_to_gnu): Adjust call to annotate_object.
	(call_to_gnu): Handle DECL_BY_DOUBLE_REF_P.
	* gcc-interface/utils.c (convert_vms_descriptor): Add BY_REF parameter
	and handle it.
	(build_function_stub): Iterate on the parameters of the subprogram in
	lieu of on the argument types.  Adjust call to convert_vms_descriptor.

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

	* gcc-interface/misc.c: Delete prototypes.
	(gnat_init_options): Use local variable.
	(lang_hooks): Move to the end of the file.

2010-10-08  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/misc.c (gnat_init_options_struct): New.  Split out
	from gnat_init_options.
	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.

2010-10-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.adb: Cleanup Is_Immutably_Limited_Type.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb: Minor reformatting.
	* exp_ch5.adb: Add comment.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Check_Duplicate_Pragma): Check for entity match
	* gcc-interface/Make-lang.in: Update dependencies.
	* einfo.ads: Minor reformatting.

2010-10-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb, sem_ch3.adb, exp_ch7.adb, exp_util.adb, sem_aux.adb,
	sem_aux.ads, exp_ch4.adb, exp_ch6.adb, sem_ch6.adb, exp_aggr.adb,
	exp_ch3.adb: Change Is_Inherently_Limited_Type to
	Is_Immutably_Limited_Type to accord with new RM terminology.
	* sem_aux.adb (Is_Immutably_Limited_Type): A type that is a descendant
	of a formal limited private type is not immutably limited in a generic
	body.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Check_Duplicate_Pragma): New procedure
	Add calls to this new procedure where appropriate

2010-10-08  Vincent Celier  <celier@adacore.com>

	* a-textio.adb (Get_Chunk): Code clean up.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* a-strbou.ads, a-strfix.adb, a-strfix.ads, a-strsea.adb, a-strsea.ads,
	a-strsup.adb, a-strsup.ads, a-strunb-shared.adb, a-strunb-shared.ads,
	a-strunb.adb, a-strunb.ads, a-stwibo.ads, a-stwifi.adb, a-stwifi.ads,
	a-stwise.adb, a-stwise.ads, a-stwisu.adb, a-stwisu.ads,
	a-stwiun-shared.adb, a-stwiun-shared.ads, a-stwiun.adb, a-stwiun.ads,
	a-stzbou.ads, a-stzfix.adb, a-stzfix.ads, a-stzsea.adb, a-stzsea.ads,
	a-stzsup.adb, a-stzsup.ads, a-stzunb-shared.adb, a-stzunb-shared.ads,
	a-stzunb.adb, a-stzunb.ads (Find_Token): New version with From
	parameter.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_cat.adb (Check_Categorization_Dependencies): Remote types
	packages can depend on preleborated packages.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Check_Interrupt_Or_Attach_Handler): Pragmas
	Interrupt_Handler and Attach_Handler not allowed in generics.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* ali.adb: Set Allocator_In_Body if AB parameter present on M line
	* ali.ads (Allocator_In_Body): New flag
	* bcheck.adb (Check_Consistent_Restrictions): Handle case of main
	program violating No_Allocators_After_Elaboration restriction.
	* gnatbind.adb (No_Restriction_List): Add entries for
	No_Anonymous_Allocators, and No_Allocators_After_Elaboration.
	* lib-load.adb: Initialize Has_Allocator flag
	* lib-writ.adb: Initialize Has_Allocator flag
	(M_Parameters): Set AB switch if Has_Allocator flag set
	* lib-writ.ads: Document AB flag on M line
	* lib.adb (Has_Allocator): New function
	(Set_Has_Allocator): New procedure
	* lib.ads (Has_Allocator): New function
	(Set_Has_Allocator): New procedure
	(Has_Allocator): New flag in Unit_Record
	* sem_ch4.adb (Analyze_Allocator): Add processing for
	No_Allocators_After_Elaboration.

2010-10-08  Geert Bosch  <bosch@adacore.com>

	* a-textio.adb (Get_Line): Rewrite to use fgets instead of fgetc.

2010-10-08  Javier Miranda  <miranda@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Relax semantic rule of
	Java_Constructors because in the JRE library we generate occurrences
	in which the "this" parameter is not the first formal.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* par-ch3.adb: Minor reformatting.

2010-10-08  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_DT): Do not generate dispatch tables for CIL/Java
	types.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* par-ch8.adb (P_Use_Type_Clause): Recognize ALL keyword in Ada 2012
	mode.
	* sinfo.adb (Use_Type_Clause): Add All_Present flag.
	* sinfo.ads (Use_Type_Clause): Add All_Present flag.
	* s-rident.ads: Add entry for No_Allocators_After_Elaboration,
	No_Anonymous_Allocators.

2010-10-08  Vincent Celier  <celier@adacore.com>

	* bindgen.adb (Gen_Restrictions_Ada): No new line after last
	restriction, so that the last comma is always replaced with a left
	parenthesis.

2010-10-08  Javier Miranda  <miranda@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Add specific check on the type of the
	first formal of delegates.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb: Minor reformatting.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* exp_imgv.adb (Expand_Image_Attribute): Handle special calling
	sequence for soft hyphen for Character'Image case.
	* rtsfind.ads (Image_Character_05): New entry
	* s-imgcha.adb (Image_Character_05): New procedurew
	* s-imgcha.ads (Image_Character_05): New procedure
	* s-imgwch.adb (Image_Wide_Character): Deal with Ada 2005 soft hyphen
	case.
	* s-valcha.adb (Value_Character): Recognize SOFT_HYPHEN for 16#AD#
	* sem_attr.adb (Eval_Attribute, case Width): Handle soft_hyphen name
	properly.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb (Eval_Attribute, case Width): Avoid ludicrous long loop
	for case of Wide_[Wide_]Character.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb: Minor reformating
	Minor code reorganization.

2010-10-08  Javier Miranda  <miranda@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Add missing checks on wrong use of
	pragmas CIL_Constructor and Java_Constructor.
	* exp_ch3.adb (Expand_Freeze_Record_Type): Do not generate the
	predefined primitives for CIL/Java tagged types.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb: Minor reformatting.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb: Add call to Validate_Independence.
	* par-prag.adb: Add dummy entries for Independent,
	Independent_Componentsa.
	* sem_ch13.adb (Validate_Independence): New procedure
	(Initialize): Initialize address clause and independence check tables
	* sem_ch13.ads (Independence_Checks): New table
	(Validate_Independence): New procedure
	* sem_prag.adb: Add processing for pragma Independent[_Components]
	* snames.ads-tmpl: Add entries for pragma Independent[_Components]

2010-10-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Propagate_Discriminants): When expanding an aggregate
	component with box initialization, if the component is a variant record
	use the values of the discriminants to select the proper variant for
	further box initialization.

2010-10-08  Thomas Quinot  <quinot@adacore.com>

	* xsnames.adb: Remove obsolete file.
	* make.adb, sem_ch8.adb, einfo.ads: Minor reformatting.

2010-10-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb: Complete previous change.

2010-10-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Return_Subtype): The subtype indication in an
	extended return must match statically the return subtype of the
	enclosing function if the type is an elementary type or if it is
	constrained.

2010-10-08  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Add_Source): Report all duplicate units and source file
	names.  Do not report the same duplicate unit several times.
	* prj.ads (Source_Data): New Boolean component Duplicate_Unit,
	defaulted to False, to avoid reporting the same unit as duplicate
	several times.

2010-10-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): If the expression in an
	others choice is a literal, analyze it to enable later optimizations.
	* exp_aggr.adb (Expand_Record_Aggregate): An aggregate with static size
	and components can be handled by the backend even if it is of a limited
	type.

2010-10-08  Arnaud Charlet  <charlet@adacore.com>

	* a-rttiev.adb (task Timer): Since this package may be elaborated
	before System.Interrupt, we need to call Setup_Interrupt_Mask
	explicitly to ensure that this task has the proper signal mask.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Entity): For array case, move some processing for
	pragma Pack, Component_Size clause and atomic/volatile components here
	instead of trying to do the job in Sem_Ch13 and Freeze.
	* layout.adb: Use new Addressable function
	* sem_ch13.adb (Analyze_Attribute_Representation_Clause, case
	Component_Size): Move some handling to freeze point in
	Freeze.Freeze_Entity.
	* sem_prag.adb (Analyze_pragma, case Pack): Move some handling to
	freeze point in Freese.Freeze_Entity.
	* sem_util.ads, sem_util.adb (Addressable): New function.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sprint.adb: Minor reformatting.

2010-10-08  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Real_Range_Check): Declare temporary as constant.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2010-10-08  Vincent Celier  <celier@adacore.com>

	* ali-util.adb (Get_File_Checksum): Make sure that external_as_list is
	not a reserved word.
	* prj-proc.adb (Expression): Process string list external references.
	* prj-strt.adb (External_Reference): Parse external_as_list external
	references.
	* prj-tree.ads (Expression_Kind_Of): Allowed for N_External_Value nodes
	(Set_Expression_Kind_Of): Ditto
	* prj.adb (Initialize): Set external_as_list as a reserved word
	* projects.texi: Document new string external reference
	external_as_list.
	* scans.ads (Token_Type): New token Tok_External_As_List
	* snames.ads-tmpl: New standard name Name_External_As_List

2010-10-08  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb: Minor reformatting.

2010-10-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Derived_Type_Declaration): In the private part of an
	instance, it is legal to derive from a non-limited actual when the
	formal type is untagged limited.
	* sem_ch12.adb (Instantiate_Type): For a formal private type, use
	analyzed formal as Generic_Parent_Type, to simplify later checks.

2010-10-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Insert_Default): If default value is already a
	raise_constraint_error do not rewrite it as new raise node, to prevent
	infinite loops in the warning removal machinery.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb, sem_prag.adb: Minor reformatting

2010-10-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* gnat_rm.texi: Remove the section on pragma Implemented_By_Entry.
	Add section on pragma Implemented.

2010-10-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Derive_Subprogram): If an abstract extension has a
	concrete parent with a concrete constructor, the inherited constructor
	is abstract even if the derived type is a null extension.

2010-10-08  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2010-10-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Flag 232 (formerly Implemented_By_Entry) is now unused.
	(Implemented_By_Entry): Removed.
	(Set_Implemented_By_Entry): Removed.
	(Write_Entity_Flags): Remove the output for Implemented_By_Entry.
	* einfo.ads: Remove Implemented_By_Entry and its usage in entities.
	(Implemented_By_Entry): Removed along with its associated pragma.
	(Set_Implemented_By_Entry): Removed along with its associated pragma.
	* exp_ch9.adb: Alphabetize with and use clauses of Exp_Ch9.
	(Build_Dispatching_Call_Equivalent): New routine.
	(Build_Dispatching_Requeue): New routine.
	(Build_Dispatching_Requeue_To_Any): New routine.
	(Build_Normal_Requeue): New routine.
	(Build_Skip_Statement): New routine.
	(Expand_N_Requeue_Statement): Rewritten. The logic has been split into
	several subroutines.
	* par-prag.adb: Replace Pragma_Implemented_By_Entry by
	Pragma_Implemented.
	* sem_ch3.adb (Check_Abstract_Overriding): Perform checks concerning
	pragma Implemented.
	(Check_Pragma_Implemented): New routines.
	(Inherit_Pragma_Implemented): New routine.
	* sem_ch9.adb (Analyze_Requeue): Update the predicate which detects a
	dispatching requeue.
	* sem_prag.adb: Update array Sig_Flags by removing Implemented_By_Entry
	and adding Implemented.
	(Ada_2012_Pragma): New routine.
	(Analyze_Pragma, case Implemented): Perform all necessary checks
	concerning pragma Implemented and register the pragma as a
	representation item with the procedure_LOCAL_NAME.
	(Analyze_Pragma, case Implemented_By_Entry): Removed.
	* sem_util.adb (Implementation_Kind): New routine.
	* sem_util.ads (Implementation_Kind): New routine.
	* snames.ads-tmpl: Remove Name_Implemented_By_Entry and add
	Name_Implemented. Remove pragma name Pragma_Implemented_By_Entry and
	add Pragma_Implemented. Add special names By_Any, By_Entry and
	By_Protected_Procedure.

2010-10-08  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Expand_Freeeze_Record_Type): Code cleanup: remove local
	variable Has_Static_DT by invocation of function Building_Static_DT.

2010-10-08  Vincent Celier  <celier@adacore.com>

	* g-dirope.adb (Remove_Dir): Do not change the current directory when
	doing a recursive remove of a subdirectory.

2010-10-08  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.ad (Freeze_Subprogram): Factorize code.
	* exp_disp.adb (Make_Secondary_DT): Factorize code.
	(Make_DT): Factorize code.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2010-10-08  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Check_Conformance): Check null exclusion match for full
	conformance.

2010-10-08  Thomas Quinot  <quinot@adacore.com>

	* sem_ch12.adb (Instantiate_Object): Rename Formal_Id to Gen_Obj, for
	consistency with Gen_T in Instantiate_Type.
	Introduce constant A_Gen_Obj to avoid repeated queries for
	Defining_Identifier (Analyzed_Formal).

2010-10-08  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb: Minor comment fix.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, sem_ch13.adb: Implement AI05-0012-1/02.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-10-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.ad: (Instantiate_Object): For an in-out formal of a child
	unit, if the type of the formal is declared in a parent unit and is not
	a formal itself, the actual must be located from an enclosing parent
	instance by normal visibility.

2010-10-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): In Ada 2012, a null_exclusion
	indicator is illegal for an uninitialized allocator.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Attribute_Definition_Clause, case
	Component_Size): Complete previous change.

2010-10-07  Vincent Celier  <celier@adacore.com>

	* scng.adb (Scan): Call Accumulate_Token_Checksum for Tok_Identifier,
	even for keywords, to avoid having the checksum to depend on the Ada
	version.

2010-10-07  Gary Dismukes  <dismukes@adacore.com>

	* sem_aggr.adb, sem_ch12.adb, sem_ch6.adb, par-ch5.adb,
	exp_ch3.adb: Minor reformatting.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case
	Component_Size): It is now illegal to give an incorrect component size
	clause in the case of aliased or atomic components.
	* sem_prag.adb (Analyze_Pragma, case Pack): It is now illegal to give
	an effective pragma Pack in the case of aliased or atomic components.

2010-10-07  Steve Baird  <baird@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator): Do not bypass expansion
	in the case of a violation of an active No_Task_Hierarchy restriction.

2010-10-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Validate_Derived_Type_Instance): If a formal derived
	type is non-limited, an actual for it cannot be limited.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* einfo.ads (No_Pool_Assigned): Update documentation.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case
	Storage_Size): We only set No_Pool_Assigned if the expression is a
	static constant and zero.
	* sem_res.adb (Resolve_Allocator): Allocation from empty storage pool
	should be an error not a warning.

2010-10-07  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Expand_Array_Aggregate): Recognize additional cases
	where an aggregate in an assignment can be built directly into the
	target, and does not require the creation of a temporary that may
	overflow the stack.

2010-10-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Analyze_Record_Aggregate): In Ada2012, a choice list
	in a record aggregate can correspond to several components of
	anonymous access types, as long as the designated subtypes match.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi, exp_util.adb, sinfo.adb, sinfo.ads, sem_ch12.adb,
	sem.adb, gnat_ugn.texi, sem_util.ads, par-ch6.adb, targparm.ads,
	restrict.adb, sem_ch6.adb, sem_ch6.ads, sprint.adb, i-c.ads: Change
	spelling parametrize(d) => parameterize(d).

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* sem_ch12.adb: Add comment.
	* sem_ch6.adb: Minor reformatting.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* par-ch3.adb, par-ch6.adb, par-ch7.adb, par-ch9.adb, par-ch10.adb: Add
	Pexp to Pf_Rec constants
	(P_Subprogram): Expression is always enclosed in parentheses
	* par.adb (Pf_Rec): add Pexp flag for parametrized expression
	* sinfo.ads (N_Parametrized_Expression): Expression must be in parens

2010-10-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Specification): Implement Ada2012
	checks on functions that return an abstract type or have a controlling
	result whose designated type is an abstract type.
	(Check_Private_Overriding): Implement Ada2012 checks on functions
	declared in the private part, if an abstract type is involved.
	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): In Ada2012,
	reject a generic function that returns an abstract type.
	* exp_ch5.adb (Expand_Simple_Function_Return): in Ada2012, if a
	function has a controlling access result, check that the tag of the
	return value matches the designated type of the return expression.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* par-ch6.adb: Fix error in handling of parametrized expressions.
	* par-ch4.adb (P_Name): Allow qualified expression as name in Ada 2012
	mode.
	(P_Simple_Expression): Better message for qualified expression prefix
	* s-crc32.adb: Minor reformatting.
	* exp_intr.adb (Expand_Unc_Deallocation): Remove test for empty
	storage pool (this test is moved to Sem_Intr).
	* sem_intr.adb (Check_Intrinsic_Call): Add check for deallocation from
	empty storage pool, moved here from Exp_Intr and made into error.
	(Check_Intrinsic_Call): Remove assumption in generating not-null free
	warning that the name of the instantiation is Free.
	* sinput.adb (Tree_Read): Document use of illegal free call allowed in
	GNAT mode.
	* types.ads: Remove storage size clauses from big types (since we may
	need to do deallocations, which are now illegal for empty pools).

2010-10-07  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Add missing word.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb (Insert_Actions): Add handling of
	N_Parametrized_Expression.
	* par-ch6.adb (P_Subprogram): Add parsing of parametrized expression
	* sem.adb: Add entry for N_Parametrized_Expression
	* sem_ch6.adb (Analyze_Parametrized_Expression): New procedure
	* sem_ch6.ads (Analyze_Parametrized_Expression): New procedure
	* sinfo.ads, sinfo.adb: Add N_Parametrized_Expression
	* sprint.adb (Sprint_Node): Add handling for N_Parametrized_Expression
	* par-ch4.adb: Minor reformatting.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* scng.adb (Skip_Other_Format_Characters): New procedure
	(Start_Of_Wide_Character): New procedure
	(Scan): Use Start_Of_Wide_Character where appropriate
	(Scan): Improve error message for other_format chars in identifier
	(Scan): Allow other_format chars between tokens

2010-10-07  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Safe_Prefixed_Reference): When removing side effects,
	Add missing support for explicit dereferences.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* par-ch10.adb, par-ch3.adb, par.adb: Minor reformatting.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* exp_disp.adb, exp_dist.adb, exp_util.ads, exp_util.adb,
	exp_ch11.adb: Rename Full_Qualified_Name to Fully_Qualified_Name_String
	* sem_util.adb, sem_util.ads (Full_Qualified_Name): Moved to
	Exp_Util.Fully_Qualified_Name_String.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* rtsfind.ads: Add entry for Ada.Real_Time.Timing_Events.Set_Handler
	* sem_res.adb (Resolve_Call): A call to
	Ada.Real_Time.Timing_Events.Set_Handler violates restriction
	No_Relative_Delay (AI-0211).

2010-10-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb: Small change in error message.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* tbuild.ads: Minor reformatting.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* gnatcmd.adb, make.adb, prj-nmsc.adb, sem_elab.adb: Minor reformatting

2010-10-07  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch11.adb (Expand_N_Exception_Declaration): Update comments.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb: Minor reformatting

2010-10-07  Olivier Ramonat  <ramonat@adacore.com>

	* gnat_ugn.texi: Minor editing.
	* opt.ads: Document that scripts rely on specific formats in opt.ads

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* a-wichun.ads, a-wichun.adb (To_Lower_Case): New function
	(To_Upper_Case): Fix to be inverse of To_Lower_Case
	* a-zchuni.ads, a-zchuni.adb (To_Lower_Case): New function
	(To_Upper_Case): Fix to be inverse of To_Lower_Case

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* a-wichha.adb, a-wichha.ads, a-zchhan.adb, a-zchhan.ads: New file.
	* impunit.adb: Add entries for a-wichha/a-zchhan
	* Makefile.rtl: Add entries for a-wichha/a-zchhan

2010-10-07  Vincent Celier  <celier@adacore.com>

	* make.adb (Check): Call Check_Source_Info_In_ALI with Project_Tree
	* makeutl.adb (Check_Source_Info_In_ALI): If there is at least one
	replaced source, check that none of the replaced sources are in the
	dependencies.
	* makeutl.ads (Check_Source_Info_In_ALI): New parameter Tree
	* prj-nmsc.adb (Remove_Source): New parameter Tree. If the source is
	replaced with a source with a different file name, put it in the hash
	table Replaced_Sources.
	(Add_Source): Call Remove_Source with Data.Tree. If there is at least
	one replaced source, check if it has the same file name as the current
	source; if it has, remove it from the hash table Replaced_Sources.
	* prj.adb (Reset): Reset hash table Tree.Replaced_Sources
	* prj.ads (Replaced_Source_HTable): New hash table
	(Project_Tree_Data): New components Replaced_Sources and
	Replaced_Source_Number.

2010-10-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_elab.adb (Check_A_Call): After inserting elaboration check, set
	proper flag to prevent a double elaboration check on the same call.
	* exp_util.adb (Insert_Actions): If the enclosing node is an
	Expression_With_Actions and it has been analyzed already, find
	insertion point further up in the tree.

2010-10-07  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Record_Representation_Clause): Alphabetize all
	local variables. Remove the general restriction which prohibits the
	application of record rep clauses to Unchecked_Union types. Add Ada
	2012 check to detect improper naming of an Unchecked_Union
	discriminant in record rep clause.
	* sem_prag.adb: Add with and use clause for Exp_Ch7.
	(Analyze_Pragma): Unchecked_Union case: Propagate the Unchecked_Union
	type to all invocations of Check_Component and Check_Variant.
	(Check_Component): Add formal parameters UU_Typ and In_Variant_Part.
	Rewritten.  Add Ada 2012 check to detect improper use of formal
	private types and private extensions as component types of an
	Unchecked_Union declared inside a generic body.
	(Check_Variant): Add formal parameter UU_Typ. Propagate the
	Unchecked_Union type to all calls of Check_Component. Signal that the
	current component comes from the variant part of an Unchecked_Union
	type.
	(Inside_Generic_Body): New routine.

2010-10-07  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_Composite_Equality): When looking for a primitive
	equality operation for a record component, verify that both formals
	have the same type, and the result type is boolean.

2010-10-07  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (Check_Files): When looking for the .ci file for a
	binder generated file, look for both b~xxx and b__xxx as gprbuild
	always uses b__ as the prefix of such files.

2010-10-07  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Minor reformatting.

2010-10-07  Arnaud Charlet  <charlet@adacore.com>

	* debug.adb: Update -gnatd.J documentation.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document handling of invalid values
	* s-utf_32.ads, s-utf_32.adb (UTF_To_Lower_Case): Fix implementation
	to match new spec.
	(UTF_To_Upper_Case): New function.

2010-10-07  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb: Minor reformatting.
	* einfo.ads, einfo.adb (Is_Ada_2012_Only): New flag
	* itypes.adb (Create_Null_Excluding_Itype): Set Is_Ada_2012_Only flag
	properly.
	* lib-xref.adb (Generate_Reference): Warn on use of Ada 2012 entity in
	non-Ada 2012 mode.
	* opt.ads (Warn_On_Ada_2012_Compatibility): New flag
	* sem_ch3.adb (Analye_Subtype_Declaration): Inherit Is_Ada_2012_Only
	* sem_ch7.adb (Preserve_Full_Attributes): Preserve Is_Ada_2012_Only
	flag.
	* sem_prag.adb (Analyze_Pragma, case Ada_12/Ada_2012): Allow form with
	argument.
	* sem_type.adb (Disambiguate): Deal with Is_Ada_2012_Only.
	* sem_warn.adb (Warn_On_Ada_2012_Compatibility): New flag, treated
	same as 2005 flag.

2010-10-07  Javier Miranda  <miranda@adacore.com>

	* a-tags.ads: Use new support for pragma Ada_2012 with function
	Type_Is_Abstract.

2010-10-07  Ed Schonberg  <schonberg@adacore.com>

	* par-ch5.adb (P_Sequence_Of_Statements): In Ada2012 a label can end a
	sequence of statements.

2010-10-07  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (Check_Files): Only add a .ci files if it exists

2010-10-07  Javier Miranda  <miranda@adacore.com>

	* a-tags.ads, a-tags.adb (Type_Is_Abstract): New subprogram.
	* rtsfind.ads (RE_Type_Is_Abstract): New entity.
	* exp_disp.adb (Make_DT): Initialize TSD component Type_Is_Abstract.

2010-10-07  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch12.adb (Mark_Context): Removed, no longer needed.
	(Analyze_Package_Instantiation): No longer analyze systematically a
	generic body in CodePeer mode.
	* freeze.adb, sem_attr.adb: Update comments.

2010-10-05  Robert Dewar  <dewar@adacore.com>

	* par-ch5.adb (Test_Statement_Required): Allow all pragmas in Ada 2012
	mode.

2010-10-05  Pascal Obry  <obry@adacore.com>

	* gnat_rm.texi: Fix typo.

2010-10-05  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Add note about identifiers with same name and
	-fdump-ada-spec.

2010-10-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb: Minor reformatting.
	* a-direct.ads: Minor comment update.

2010-10-05  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Add_Internal_Interface_Entities): Removing code that is
	no longer required after change in New_Overloaded_Entity.
	* sem_ch6.adb (New_Overloaded_Entity): Code reorganization to isolate
	the fragment of code that handles derivations of interface primitives.
	Add missing dependence on global variable Inside_Freezing_Actions to
	ensure the correct management of internal interface entities.
	* sem_ch13.adb (Analyze_Freeze_Entity): Add missing increase/decrease
	of the global variable Inside_Freezing_Actions to ensure that internal
	interface entities are well handled by New_Overloaded_Entity.
	* sem_disp.adb (Find_Primitive_Covering_Interface): Add documentation
	and complete the algorithm to catch hidden primitives derived of
	private type that covers the interface.
	* sem_disp.ads (Find_Primitive_Covering_Interface): Add missing
	documentation.

2010-10-05  Robert Dewar  <dewar@adacore.com>

	* prj-util.adb, prj-util.ads, prj.ads, s-vxwext-rtp.adb, sem_ch4.adb,
	sem_ch7.adb, sem_res.adb, sem_type.adb: Minor reformatting.
	Minor code reorganization (use Nkind_In).

2010-10-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_Task_Body_Stub): Diagnose duplicate stub for
	task.

2010-10-05  Vincent Celier  <celier@adacore.com>

	* gnatbind.adb: If the main library file is not for a suitable main
	program, change the error message.

2010-10-05  Vincent Celier  <celier@adacore.com>

	* a-direct.ads: Minor spelling error fixes in comments.
	* gnat_rm.texi: Add three entries in "Implementation Defined
	Characteristics" for the interpretations of the Form parameters in
	Ada.Directories.

2010-10-05  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb, exp_ch5.adb, exp_disp.adb, exp_dist.adb, gnatlink.adb,
	makeutl.adb, par-ch6.adb, prj-dect.adb, prj-env.adb, prj-env.ads,
	prj-ext.adb, prj-nmsc.adb, prj-part.adb, prj-pp.ads: Minor code
	reorganization.
	Minor reformatting.

2010-10-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Check_Parameterless_Call): If the prefix of 'Address is
	an explicit dereference of an access to function, the prefix is not
	interpreted as a parameterless call.

2010-10-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb: For 'Read and 'Write, use full view of base type if
	private.

2010-10-05  Vincent Celier  <celier@adacore.com>

	* make.adb (Switches_Of): Allow wild cards in index of attributes
	Switches.
	* prj-util.adb (Value_Of): When Allow_Wildcards is True, use the index
	of the associative array as a glob regular expression.
	* prj-util.ads (Value_Of (Index, In_Array)): New Boolean parameter
	Allow_Wildcards, defaulted to False.
	(Value_Of (Name, Attribute_Or_Array_Name)): Ditto
	* projects.texi: Document that attribute Switches (<file name>) may
	use wild cards in the index.

2010-10-05  Robert Dewar  <dewar@adacore.com>

	* a-direct.adb, a-direct.ads, back_end.adb, checks.adb,
	einfo.adb: Minor reformatting.
	* debug.adb: Remove obsolete documentation for d.Z flag.

2010-10-05  Vincent Celier  <celier@adacore.com>

	* vms_data.ads: Add VMS qualifier /SRC_INFO= corresponding to gnatmake
	switch --create-info-file=.
	* gnat_ugn.texi: Add documentation for new gnatmake switch
	--source-info=

2010-10-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: Do not elaborate type definition if syntax error.

2010-10-05  Javier Miranda  <miranda@adacore.com>

	* sprint.adb (Sprint_Node_Actual): Improve output of subprogram bodies
	to generate the full-qualified names of its corresponding spec.
	This facilitates locating the corresponing body when reading
	the DG output.

2010-10-05  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (Make_Helper_Function_Name): For a tagged type, use
	canonical name without serial number only if the helper is becoming a
	primitive of the type.

2010-10-05  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_DT): Minor code reorganization.

2010-10-05  Ed Schonberg  <schonberg@adacore.com>

	* par-ch6.adb: improve recovery with extra paren in function spec.

2010-10-05  Quentin Ochem  <ochem@adacore.com>

	* prj-tree.ads: Project_Path is now aliased.

2010-10-05  Thomas Quinot  <quinot@adacore.com>

	* checks.adb: Minor reformatting.

2010-10-05  Eric Botcazou  <ebotcazou@adacore.com>

	* mlib-tgt-specific-mingw.adb (No_Argument_List): Delete.
	(Shared_Libgcc): New aliased variable.
	(Shared_Libgcc_Switch): New constant.
	(Build_Dynamic_Library): Pass Shared_Libgcc_Switch to the compiler
	* gcc-interface/Makefile.in (gnatlib-shared-win32): Pass -shared-libgcc
	to the compiler.
	* gcc-interface/Make-lang.in: Update dependencies.
	
2010-10-05  Vincent Celier  <celier@adacore.com>

	* prj-part.adb (Parse_Simple_Project): When checking if a child project
	imports its parent project, also look in projects being extended by
	imported projects.

2010-10-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi: Adjust instructions in G.10 Building DLLs with GNAT.

2010-10-05  Javier Miranda  <miranda@adacore.com>

	* exp_cg.adb (Slot_Number): Add support to handle aliased entities.
	(Generate_CG_Output): Switch -gnatd.Z is no longer needed to
	activate this output.

2010-10-05  Arnaud Charlet  <charlet@adacore.com>

	* back_end.adb (Call_Back_End): Generate an error message when scil
	generation is enabled, and no scil back-end (by default) is available.

2010-10-05  Javier Miranda  <miranda@adacore.com>

	* debug.adb: Update documentation since -gnatd.Z is no longer required
	to generate the call-graph information.

2010-10-05  Javier Miranda  <miranda@adacore.com>

	* exp_ch5.adb (Expand_Simple_Function_Return): Rewrite expansion of a
	runtime access check by an equivalent expansion that causes
	no problems in the VM backend. The original expansion was
	not good for the VM backends because when Tagged_Type_Expansion
	is disabled the attribute Access_Disp_Table is not available.

2010-10-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Covers): In a dispatching context, T1 covers T2 if T2
	is class-wide and T1 is its specific type.

2010-10-05  Ed Schonberg  <schonberg@adacore.com>

	* einfo.adb: Add guard to Is_String_Type to prevent cascaded errors.

2010-10-05  Vincent Celier  <celier@adacore.com>

	* back_end.ads: Minor spelling error correction.

2010-10-05  Arnaud Charlet  <charlet@adacore.com>

	* switch-c.adb, gnat1drv.adb (Scan_Front_End_Switches): Disable
	warnings when -gnatC is specified here so that warnings can be
	re-enabled  explicitly.
	(Adjust_Global_Switches): No longer suppress warnings.

2010-10-05  Vincent Celier  <celier@adacore.com>

	* makeutl.adb: Minor reformatting.

2010-10-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb: add guard in Analyze_One_Call to prevent crash when a
	non-discrete type appears as an actual in a call.

2010-10-05  Vincent Celier  <celier@adacore.com>

	* make.adb (Scan_Make_Arg): Take into account new switch
	--source-info=file.
	* makeusg.adb: Add line for new switch --source-info=file.
	* makeutl.ads (Source_Info_Option): New constant String for new builder
	switch.
	* prj-conf.adb: Put subprograms in alphabetical order
	(Process_Project_And_Apply_Config): Read/write an eventual source info
	file, if necessary.
	* prj-nmsc.adb (Look_For_Sources.Get_Sources_From_Source_Info): New
	procedure.
	(Look_For_Sources): If a source info file was successfully read, get
	the source data from the data read from the source info file.
	* prj-util.adb (Source_Info_Table): New table
	(Source_Info_Project_HTable): New hash table
	(Create): New procedure
	(Put (File), Put_Line): New procedures
	(Write_Source_Info_File): New procedure
	(Read_Source_Info_File): New procedure
	(Initialize): New procedure
	(Source_Info_Of): New procedure
	(Next): New procedure
	(Close): When file is an out file, fail if the buffer cannot be written
	or if the file cannot be close successfully.
	(Get_Line): Fail if file is an out file
	* prj-util.ads (Create): New procedure
	(Put (File), Put_Line): New procedures
	(Write_Source_Info_File): New procedure
	(Read_Source_Info_File): New procedure
	(Source_Info_Data): New record type
	(Source_Info_Iterator): New private type
	(Initialize): New procedure
	(Source_Info_Of): New procedure
	(Next): New procedure
	* prj.ads (Project_Tree_Data): New components Source_Info_File_Name and
	Source_Info_File_Exists.

2010-10-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb: Fix typo.

2010-10-05  Thomas Quinot  <quinot@adacore.com>

	* lib-writ.adb: Minor reformatting.

2010-10-05  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Access_Definition): Remove useless code.

2010-10-05  Emmanuel Briot  <briot@adacore.com>

	* prj-env.adb, prj-env.ads (Set_Path): New subprogram.
	(Deep_Copy): Removed, not used.

2010-10-05  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Add_Internal_Interface_Entities): Code reorganization:
	move code that searches in the list of primitives of a tagged type for
	the entity that will be overridden by user-defined routines.
	* sem_disp.adb (Find_Primitive_Covering_Interface): Move here code
	previously located in routine Add_Internal_Interface_Entities.
	* sem_disp.ads (Find_Primitive_Covering_Interface): Update docs.
	* sem_ch6.adb (New_Overloaded_Entity): Add missing check on
	availability of attribute Alias.

2010-10-05  Ed Falis  <falis@adacore.com>

	* s-taprop-vxworks.adb, s-osinte-vxworks.adb, s-osinte-vxworks.ads,
	s-vxwext.ads, s-vxwext-kernel.ads, s-vxwext-rtp.adb, s-vxwext-rtp.ads:
	Move definition of intContext to System.OS_Interface.
	Add necessary variants in System.VxWorks.Extensions.

2010-10-05  Doug Rupp  <rupp@adacore.com>

	* s-asthan-vms-alpha.adb: On VMS, a task using
	pragma AST_Entry exhibits a memory leak when the task terminates
	because the vector allocated for the AST interface is not freed. Fixed
	by making the vector a controlled type.

2010-10-05  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb (Expand_Subdirectory_Pattern): Check that the prefix in
	a "**" pattern properly exists, and report an error otherwise.

2010-10-05  Emmanuel Briot  <briot@adacore.com>

	* prj-env.ads: Use GNAT.OS_Lib rather than System.OS_Lib.

2010-10-05  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb, prj-err.adb (Expand_Subdirectory_Pattern): New
	subprogram.
	Extract some code from Get_Directories, to share with the handling
	of aggregate projects (for the Project_Files attributes)

2010-10-05  Emmanuel Briot  <briot@adacore.com>

	* gnatcmd.adb, prj-proc.adb, prj-part.adb, prj-ext.adb, prj-ext.ads,
	switch-m.adb, clean.adb, prj-nmsc.adb, prj-nmsc.ads, prj-env.adb,
	prj-env.ads, prj-tree.adb, prj-tree.ads (Project_Search_Path): New
	type.

2010-10-05  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch5.adb (Make_Field_Expr): Revert previous change (removed).

2010-10-05  Emmanuel Briot  <briot@adacore.com>

	* prj-dect.adb, prj-nmsc.adb, prj-attr.adb, snames.ads-tmpl
	(Aggregate projects): added support for parsing aggregate projects.
	In particular, check the presence and value of the new attributes
	related to aggregate projects, ie Project_Files, Project_Path
	and External.
	(Check_Attribute_Allowed, Check_Package_Allowed,
	Rename_Obsolescent_Attributes): new subprogram, extracting code
	from existing subprogram to keep their sizes smaller.
	(Check_Aggregate_Project, Check_Abstract_Project,
	Check_Missing_Sources): new subprograms
	(Check): remove comments that duplicated either the name of the
	following subprogram call, or the comment on that subprogram.
	* prj-part.adb (Check_Extending_All_Imports): New subprogram, extracted
	from Parse_Single_Project.
	(Check_Aggregate_Imports): new subprogram.

2010-10-05  Vincent Celier  <celier@adacore.com>

	* make.adb (Check): When compiling with -gnatc, recompile if the ALI
	file has not been generated for the current source, for example if it
	has been generated for the spec, but we are compiling the body.

2010-10-05  Bob Duff  <duff@adacore.com>

	* xgnatugn.adb: Remove unused procedure.

2010-10-04  Vincent Celier  <celier@adacore.com>

	* a-direct.adb (Copy_File): Interpret the Form parameter and call
	System.OS_Lib.Copy_File to do the work accordingly. Raise Use_Error if
	the Form parameter contains an incorrect value for field preserve= or
	mode=.
	* a-direct.ads (Create_Directory, Create_Path): Indicate that the Form
	parameter is ignored.
	(Copy_File): Indicate the interpretation of the Form parameter.

2010-10-04  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): When there are no foreign languages declared and
	a main in attribute Main of the main project does not exist or is a
	source of another project, fail immediately before attempting
	compilation.

2010-10-04  Javier Miranda  <miranda@adacore.com>

	* exp_disp.ads (Convert_Tag_To_Interface): New function which must be
	used to convert a node referencing a tag to a class-wide interface
	type.
	* exp_disp.adb (Convert_Tag_To_Interface): New function.
	(Expand_Interface_Conversion): Replace invocation of
	Unchecked_Conversion by new function Convert_Tag_To_Interface.
	(Write_DT): Add support for null primitives.
	* exp_ch3.adb (Expand_N_Object_Declaration): For tagged type objects,
	cleanup code that handles interface conversions and avoid unchecked
	conversion of referenced tag components.
	* exp_ch5.adb (Expand_N_Assignment_Statement): Code cleanup. Avoid
	unrequired conversions when generating a dispatching call to _assign.
	* sprint.adb (Write_Itype): Fix wrong output of not null access itypes.

2010-10-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Not): Handle properly both operands when the
	parent is a binary boolean operation and the operand is an unpacked
	array.
	(Build_Boolean_Array_Proc_Call): If the operands are both negations,
	the operands of the rewritten node are the operands of the negations,
	not the negations themselves.

2010-10-04  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Set_Biased): New procedure, now used throughout, adds
	name of entity to biased warning msg.
	(Analyze_Enumeration_Representation_Clause): Remove attempt to use
	biased rep (wrong and never worked anyway).

2010-10-04  Arnaud Charlet  <charlet@adacore.com>

	* sem_elab.adb: Minor reformatting.

2010-10-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Null): Handle properly the case of a subtype of
	an access_to_protected subprogram type, and convert null value into
	corresponding aggregate.

2010-10-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi: Clarify first point of 7.1.5 about pragma Inline.

2010-10-04  Eric Botcazou  <ebotcazou@adacore.com>

	* make.adb (Scan_Make_Arg): Pass -Oxxx switches to the linker as well.
	* gnatlink.adb (Gnatlink): Filter out -Oxxx switches for CLI, RTX and
	AAMP.

2010-10-04  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch4.adb (Analyze_Indexed_Component_Form): Remove redundant test
	for N_Operator_Symbol.
	(Indicate_Name_And_Type): Likewise.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Likewise.
	* sem_res.adb (Resolve): Likewise.
	* sem_type.adb (Add_One_Interp): Likewise.
	(Disambiguate): Likewise.
	
2010-10-04  Vincent Celier  <celier@adacore.com>

	* osint.adb (Read_Library_Info_From_Full): If object timestamp is less
	than ALI file timestamp, return null.

2010-10-04  Vincent Celier  <celier@adacore.com>

	* prj-makr.adb (Finalize): Invoke Pretty_Print with Max_Length of 79.
	* prj-pp.adb (Pretty_Print): New parameter Max_Line_Length, that
	replaces global constant with the same name. When a line is too long,
	indent properly the next continuation line.
	* prj-pp.ads (Pretty_Print): New parameter Max_Line_Length with a range
	from 50 to 255, defaulted to 255, to indicate the maximum length of
	lines in the project file.

2010-10-04  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch7.adb (Analyze_Package_Body_Helper) <Has_Referencer>: New
	Check_Subprogram_Ref function and Check_Subprogram_Refs instantiation
	of Traverse_Func on it to look for subprogram references in a body.
	Call Check_Subprogram_Refs on the body of inlined subprograms at the
	outer level and keep clearing the Is_Public flag of subprograms as long
	as it returns OK.  Do not look at anything else than subprograms once
	an inlined subprogram has been seen.

2010-10-04  Javier Miranda  <miranda@adacore.com>

	* exp_cg.adb (Expand_N_Assignment_Statement): Restore tag check when
	the target object is an interface.
	* sem_disp.adb (Propagate_Tag): If the controlling argument is an
	interface type then we generate an implicit conversion to force
	displacement of the pointer to the object to reference the secondary
	dispatch table associated with the interface.

2010-10-04  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Enumeration_Representation_Clause): Set
	Enumeration_Rep_Expr to point to the literal, not the identifier.
	(Analyze_Enumeration_Representation_Clause): Improve error message for
	size too small for enum rep value
	(Analyze_Enumeration_Representation_Clause): Fix size test to use
	proper size (RM_Size, not Esize).

2010-10-04  Robert Dewar  <dewar@adacore.com>

	* s-taprop-vxworks.adb, sem_res.adb: Minor reformatting.

2010-10-04  Javier Miranda  <miranda@adacore.com>

	* exp_cg.adb (Write_Call_Info): Code clean up.

2010-10-04  Arnaud Charlet  <charlet@adacore.com>

	* s-taprop-mingw.adb (Create_Task): Initialize Thread_Id field to 0.

2010-10-04  Robert Dewar  <dewar@adacore.com>

	* exp_cg.adb: Minor code reorganization
	Minor reformatting.
	* exp_ch5.adb, prj-nmsc.adb: Minor reformatting.

2010-10-04  Bob Duff  <duff@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): If a type conversion is needed
	to make a qualified expression into a name (syntax-wise), then do not
	consider it redundant.

2010-10-04  Thomas Quinot  <quinot@adacore.com>

	* sem_warn.ads: Fix typo.

2010-10-04  Javier Miranda  <miranda@adacore.com>

	* exp_cg.adb (Is_Predefined_Dispatching_Operation): Handle suffix in
	TSS names.
	(Write_Call_Info): Add missing support for renamed primitives.

2010-10-04  Thomas Quinot  <quinot@adacore.com>

	* exp_ch5.adb (Make_Field_Expr): New subprogram, to factor duplicated
	code between Make_Component_List_Assign and Make_Field_Assign.

2010-10-04  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Get_Directories): For non extending projects that
	declare that they have no sources, do not create a non existing object
	or exec directory if builder switch -p is used.

2010-10-04  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi (gnatcheck): Change the description of the report file
	format.

2010-10-04  Ed Falis  <falis@adacore.com>

	* s-taprop-vxworks.adb (Is_Task_Context): Import VxWorks intContext to
	determine whether Set_True is called from a task or an ISR.
	(Set_True): test for being in a task context before trying to
	dereference Defer_Abort or Undefer_Abort.

2010-10-04  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb, sinput-l.adb: Minor reformatting.

2010-10-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): Do not generate a tag
	check when the target object is an interface since the expression of
	the right hand side must only cover the interface.

2010-10-04  Vincent Celier  <celier@adacore.com>

	* frontend.adb: Set Lib.Parsing_Main_Extended_Source to True before
	loading the main source, so that if it is preprocessed and -gnateG is
	used, the preprocessed file is written.
	* lib.ads (Analysing_Subunit_Of_Main): New global variable to indicate
	if a subunit is from the main unit when it is loaded.
	* sem_ch10.adb (Analyze_Proper_Body): Set Lib.Analysing_Subunit_Of_Main
	to True before loading a subunit.
	* sem_ch12.adb (Copy_Generic_Node): Set Lib.Analysing_Subunit_Of_Main
	to True when the main is a generic unit before loading one of its
	subunits.
	* sinput-l.adb (Load_File): If -gnateG is used, write the preprocessed
	file only for the main unit (spec, body and subunits).

2010-10-04  Vincent Celier  <celier@adacore.com>

	* sinput-l.adb (Load_File): Do not fail when switch -gnateG is
	specified and the processed file cannot be written. Just issue a
	warning and continue.

2010-10-04  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Minor reformatting.

2010-10-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): If the renamed operation
	is an overridden inherited operation, the desired operation is the
	overriding one, which is the alias of the visible one.

2010-10-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Find_Corresponding_Spec): Check that the wrapper body is
	present before deleting from the tree, when an inherited function with
	a controlling result that returns a null extension is overridden by a
	later declaration or body.

2010-10-04  Gary Dismukes  <dismukes@adacore.com>

	* checks.adb: Update comment.

2010-09-30  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/misc.c (optimize, optimize_size): Undefine as macros
	and define as variables.
	(gnat_post_options): Set optimize and optimize_size variables.

2010-09-29  Joel Sherrill  <joel.sherrill@oarcorp.com>

	* g-socket.adb: Move pragma to disable warnings in case multiple errnos
	are not defined by target.

2010-09-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (handle_leaf_attribute): Fix long line.

2010-09-28  Richard Henderson  <rth@redhat.com>

	* gcc-interface/misc.c (gnat_eh_personality): Use
	targetm.except_unwind_info.

2010-09-28  Jan Hubicka  <jh@suse.cz>

	* gcc-interface/utils.c (handle_leaf_attribute): New function.
	(gnat_internal_attribute_tables): Add leaf.

2010-09-22  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/lang.opt (-all-warnings, -include-barrier,
	-include-directory, -include-directory=, -no-standard-includes,
	-no-standard-libraries): New.

2010-09-20  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Replace calls to
	build_array_type with calls to build_nonshared_array_type.
	(substitute_in_type): Likewise.
	* gcc-interface/misc.c (LANG_HOOKS_HASH_TYPES): Delete.
	(LANG_HOOKS_TYPE_HASH_EQ): Define.
	(gnat_post_options): Add 'static' keyword.
	(gnat_type_hash_eq): New static function.
	* gcc-interface/utils.c (fntype_same_flags_p): New function.
	(create_subprog_type): Call it.
	(create_index_type): Call build_nonshared_range_type and tidy up.
	(create_range_type): Likewise.
	* gcc-interface/gigi.h (fntype_same_flags_p): Declare.

2010-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_pushdecl): Do not do anything special
	for PARM_DECLs.
	(end_subprog_body): If the body is a BIND_EXPR, make its associated
	block the top-level one.
	(build_function_stub): Build a statement group for the whole function.
	* gcc-interface/utils.c (Subprogram_Body_to_gnu): If copy-in/copy-out
	is used, create the enclosing block early and process first the OUT
	parameters.

2010-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Type>: Do
	not generate debug info for individual enumerators.

2010-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Use record
	type instead of enumeral type as the dummy type built for the template
	type of fat pointers.

2010-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (get_elaboration_procedure): Declare.
	(gnat_zaplevel): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not force global
	binding level for an external constant.
	<E_Constant>: Force the local context and create a fake scope before
	translating the defining expression of an external constant.
	<object>: Treat external constants at the global level explicitly for
	renaming declarations.
	(elaborate_expression_1): Force the variable to be static if the
	expression is global.
	* gcc-interface/trans.c (get_elaboration_procedure): New function.
	(call_to_gnu): Use it.
	(gnat_to_gnu): Likewise.
	<N_Object_Declaration>: Do not test Is_Public to force the creation of
	an initialization variable.
	(add_decl_expr): Discard the statement if the declaration is external.
	* gcc-interface/utils.c (gnat_pushdecl): Do not put the declaration in
	the current block if it is external.
	(create_var_decl_1): Do not test Is_Public to set TREE_STATIC.
	(gnat_zaplevel): New global function.

2010-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Explicitly test _LEVEL
	variables against zero in all cases.
	(rest_of_type_decl_compilation): Likewise.
	* gcc-interface/trans.c (gigi): Pass properly typed constants to
	create_var_decl.
	(call_to_gnu): Fix formatting.
	(Handled_Sequence_Of_Statements_to_gnu): Likewise.
	(Exception_Handler_to_gnu_zcx): Likewise.
	(gnat_to_gnu) <N_Object_Declaration>: Short-circuit handling of
	constant
	expressions in presence of a freeze node.

2010-09-19  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Look into
	expressions for external constants that are aggregates.
	* gcc-interface/utils2.c (build_simple_component_ref): If the field
	is an inherited component in an extension, look through the extension.

2010-09-10  Vincent Celier  <celier@adacore.com>

	* projects.texi: Add documentation for package extensions
	Add some documentation for attributes Leading_Library_Options and
	Linker'Leading_Switches.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Expand_Subtype_From_Expression): When expansion is
	disabled, compute subtype for all string types.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add documentation for -gnatw.s/S
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case
	Component_Size): Implement warning on overriden size clause.
	(Analyze_Record_Representation_Clause): Implement warning on overriden
	size clause.
	* sem_warn.ads, sem_warn.adb (Warn_On_Overridden_Size): New flag
	(-gnatw.s/S).
	* ug_words: Add entries for -gnatw.s/S.
	* vms_data.ads, usage.adb: Add line for -gnatw.s/-gnatw.S.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-09-10  Vincent Celier  <celier@adacore.com>

	* prj-dect.adb (Parse_Package_Declaration): Allow a package to extend
	a package with the same name from an imported or extended project.
	* prj-proc.adb (Process_Declarative_Items): Process package extensions

2010-09-10  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_Call): Do not perform a null_exclusion check on
	'out' parameters.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* sem.adb: Minor reformatting.

2010-09-10  Bob Duff  <duff@adacore.com>

	* s-os_lib.ads, g-expect.ads: Add comments.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb: Minor reformatting.

2010-09-10  Thomas Quinot  <quinot@adacore.com>

	* scos.ads: Add comments.

2010-09-10  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (Get_Closure): Remove useless invocation of Close.

2010-09-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb, exp_ch6.adb (Expand_Call): Establish a transient scope
	for a controlled build-in-place function call which appears in an
	anonymous context. The transient scope ensures that the intermediate
	function result is cleaned up after the master is left.
	(Make_Build_In_Place_Call_In_Anonymous_Context): Remove the creation
	of the transient scope. This is now done in Exand_Call which covers
	additional cases other than secondary stack release.

2010-09-10  Arnaud Charlet  <charlet@adacore.com>

	* sem.adb (Do_Unit_And_Dependents): Add guard.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb: Update comments.
	* exp_dist.adb: Minor reformatting.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Check_Record_Representation_Clause): Implement record
	gap warnings.
	* sem_warn.ads, sem_warn.adb (Warn_On_Record_Holes): New warning flag.
	* usage.adb: Add lines for -gnatw.h/H
	* gnat_ugn.texi: Add documentation for J519-010
	Warn on record holes/gaps
	* ug_words: Add entries for -gnatw.h/-gnatw.H
	* vms_data.ads: Add entries for [NO]AVOIDGAPS

2010-09-10  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.adb: Update comment.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Private_Type): Mark generated declaration
	of full view analyzed after analyzing the corresponding record
	declaration, to prevent spurious name conflicts with original
	declaration.

2010-09-10  Jerome Lambourg  <lambourg@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): In the VM case,
	just issue a warning, but continue with the normal processing.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb, prj-nmsc.adb, sem_ch4.adb, sem_res.adb: Minor
	reformatting.

2010-09-10  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (Build_From_Any_Call, Build_To_Any_Call,
	Build_TypeCode_Call): For a subtype inserted for the expansion of a
	generic actual type, go to the underlying type of the original actual
	type.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Assign_Array_Loop): In CodePeer mode, place a
	guard around the increment statement, to prevent an off-by-one-value
	on the last iteration.

2010-09-10  Vincent Celier  <celier@adacore.com>

	* sem_aggr.adb, exp_prag.adb, sem_ch3.adb, exp_attr.adb,
	sem_res.adb, sem_attr.adb, sem_elab.adb, sem_ch4.adb, exp_disp.adb,
	exp_aggr.adb, exp_dist.adb: Change all mentions of "at run-time" to
	"at run time" in comments and error/warning messages.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* exp_cg.adb: Handle properly bodies without specs.

2010-09-10  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb (Find_Source_Dirs): When a source directory is not
	present, and the user requested to either ignore this or display a
	warning (as opposed to an error), we still need to register the
	directory.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* errout.adb: Remove tests of Parsing_Main_Subunit, since this test is
	now done in In_Extended_Main_Source_Unit.
	* errout.ads (Compiler_State[_Type]): Moved from Errout to Lib
	(Parsing_Main_Subunit): Moved from Errout to Lib and renamed
	as Parsing_Main_Extended_Source.
	* frontend.adb: Set Parsing_Main_Extended_Source True for parsing main
	unit.
	* lib-load.adb (Load_Unit): Add PMES parameter
	Set PMES appropriately in all calls to Load_Unit
	* lib-load.ads (Load_Unit): Add PMES parameter
	* lib.adb (In_Extended_Main_Source_Unit): When called with
	Compiler_State set to Parsing, test new flag
	Compiling_Main_Extended_Source.
	* lib.ads (Compiler_State[_Type]): Moved from Errout to Lib
	(Parsing_Main_Subunit): Moved from Errout to Lib and renamed
	as Parsing_Main_Extended_Source
	* par-load.adb (Load): Set PMES properly in call to Load_Unit

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* exp_cg.adb: Use proper entity to handle overloads.
	* sem_res.adb (Check_Parameterless_Call): An operator node without
	actuals cannot be a call, and must be treated as a string.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* frontend.adb: Minor reformatting.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* par-ch4.adb (P_Conditional_Expression): Use P_Condition for condition
	* par-ch5.adb (P_Condition): Move from body to spec
	* par.adb (Ch5.P_Condition): Move from body to spec

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* exp_cg.adb (Write_Call_Info): If a type that has been registered in
	the call table is private, use its full view to generate information
	on its operations.

2010-09-10  Jose Ruiz  <ruiz@adacore.com>

	* exp_cg.adb (Is_Predefined_Dispatching_Operation): When trying the
	pattern matching to detect predefined primitive operations take into
	account that there can be an extra suffix related to body-nested
	package entities.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* s-pooglo.ads: Add overriding indicators.

2010-09-10  Vincent Celier  <celier@adacore.com>

	* vms_data.ads: Add new GNAT BIND qualifiers /32_MALLOC (for -H32) and
	/64_MALLOC (for -H64).

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Error_Msg_Internal): Test Parsing_Main_Subunit flag
	(Error_Msg_NW): Test Parsing_Main_Subunit flag
	* errout.ads (Parsing_Main_Subunit): New flag
	* lib-load.adb (Load_Unit): Set Parsing_Main_Subunit flag
	* par-ch6.adb: Minor style fix (remove redandant parentheses)
	* par-ch9.adb: Minor style fix (remove redundant parens)
	* par-load.adb: (Load): Deal with setting Parsing_Main_Subunit

2010-09-10  Vincent Celier  <celier@adacore.com>

	* make.adb (Create_Binder_Mapping_File): Remove procedure. Replaced by
	function of the same name in Makeutl.
	(Gnatmake): Call function Create_Binder_Mapping_File in Makeutl, instead
	of removed procedure when creating a binder mapping file.
	* makeutl.adb (Create_Binder_Mapping_File): New function. Was a
	procedure in Make.
	* makeutl.ads (Create_Binder_Mapping_File): New function

2010-09-10  Jose Ruiz  <ruiz@adacore.com>

	* exp_cg.adb (Is_Predefined_Dispatching_Operation): Add the "__" scope
	separator when trying the pattern matching to detect predefined
	primitive operations.

2010-09-10  Robert Dewar  <dewar@adacore.com>

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

2010-09-10  Ben Brosgol  <brosgol@adacore.com>

	* ug_words, gnat_ugn.texi: Revised "Transitioning to 64-Bit GNAT for
	OpenVMS" section.

2010-09-10  Doug Rupp  <rupp@adacore.com>

	* bindgen.adb: Minor comment fix for -H switch.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* exp_cg.adb (Register_CG_Node): Determine enclosing subprogram or
	library unit now, by traversing tree before context is expanded.
	(Write_Call_Info): Use enclosing unit name directly.
	* exp_ch9.adb (Expand_N_Accept_Statement): Attach generated block to
	tree earlier, to ensure that subsequent declarations are analyzed in a
	connected structure.
	* exp_intr.adb (Expand_Unc_Deallocation): Ditto for generated statement
	list.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* symbols-processing-vms-alpha.adb: Minor reformatting.

2010-09-10  Jerome Lambourg  <lambourg@adacore.com>

	* bindgen.adb (Gen_Adainit_Ada): In .NET, don't call
	__gnat_install_handler in case the binder is called with -n.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_In_Object_Declaration): Use proper
	sloc for renaming declaration and set Comes_From_Source properly to
	ensure that references are properly generated for an object declaration
	that is built in place.

2010-09-10  Tristan Gingold  <gingold@adacore.com>

	* symbols-processing-vms-alpha.adb: Allow gnatsym to work as a cross
	tool.
	* gcc-interface/Make-lang.in: Install gnatsym when cross compiling.
	* gcc-interface/Makefile.in: gnat.hlp is now generated by
	Make-generated.in

2010-09-10  Bob Duff  <duff@adacore.com>

	* exp_pakd.adb (Expand_Bit_Packed_Element_Set): For things like ""X(J)
	:= ...;", remove side effects from the right-hand side, because they
	might affect the value of the left-hand side, but the left-hand side is
	first READ (so we can do shifting and masking) and then written back,
	which would cause the side effects to be incorrectly overwritten.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb: Minor reformatting.
	* exp_ch6.adb: Add comment on testing limited on full type
	* gnat_rm.texi: Add documentation on Pure_Function.

2010-09-10  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Add_Source): Allow an Ada source to have the same name
	as a source of another project and of another language.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Defend against previous
	errors.
	* freeze.adb (Check_Unsigned_Type): Ditto.
	* sem_aggr.adb (Resolve_Aggr_Expr): Ditto.
	* sem_ch3.adb (Convert_Scalar_Bounds): Ditto.
	(Set_Scalar_Range_For_Subtype): Ditto.
	* sem_eval.adb (Subtypes_Statically_Match): Ditto.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* repinfo.adb (List_Type_Info): List Small and Range for fixed-point
	types.
	* sprint.adb (Write_Ureal_With_Col_Check_Sloc): Use square brackets
	rather than parens for fixed constants.
	* sprint.ads: Use square brackets rather than parens for fixed constants
	* urealp.adb (UR_Write): Use square brackets rather than parens
	(UR_Write): Add Brackets argument
	(UR_Write): Add many more special cases to output literals
	* urealp.ads (UR_Write): Use square brackets rather than parens
	(UR_Write): Add Brackets argument

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2010-09-10  Richard Guenther  <rguenther@suse.de>

	* gcc-interface/utils.c (create_index_type): Use build_range_type.

2010-09-10  Arnaud Charlet  <charlet@adacore.com>

	* vms_cmds.ads: New.

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

	* exp_dbug.ads: Mention enhanced encoding for array types.

2010-09-10  Jerome Lambourg  <lambourg@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Size clause are
	unsupported in VM targets. Display a warning in this case.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* sprint.adb (Sprint_Node_Actual, case N_Derived_Type_Definition): Do
	not reset Sloc when printing keyword "new".

2010-09-10  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (GNATCmd): Put the command line in environment variable
	GNAT_DRIVER_COMMAND_LINE.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* sem.adb (Do_Unit_And_Dependents): if Withed_Body is set on a context
	clause, process the body at once.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): Do not warn on a redundant
	conversion is the expression is a qualified expression used to
	disambiguate a function call.

2010-09-10  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Add_Source): Allow an Ada source to have the same name
	as a source of another project and of another language.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* prj-util.adb: Minor reformatting.

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

	* exp_disp.adb: Minor reformatting.

2010-09-10  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Ignore Inline_Always pragma in
	CodePeer mode.

2010-09-10  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Minor reformatting.
	* exp_ch9.adb, rtsfind.ads, exp_ch4.adb, exp_ch3.adb: Do not hardcode
	magic constants for task master levels (instead, reference
	named numbers from System.Tasking).

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

	* gnatvsn.ads (Ver_Prefix): New constant string.
	* bindgen.adb (Gen_Output_File_Ada): Use it in lieu of hardcoded value.
	(Gen_Output_File_C): Likewise.
	* g-comver.adb (Ver_Prefix): Add cross-reference to Gnatvsn.Ver_Prefix
	in comment.
	
2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* sem.adb (Walk_Library_Items): Do not traverse children of the main
	unit, to prevent spurious circularities in the walk order.
	(Depends_On_Main): Use elsewhere to prevent circularities when the body
	of an ancestor of the main unit depends on a child of the main unit.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* gnatlink.adb, prj-ext.adb, prj-util.adb, s-tporft.adb,
	sem_ch3.adb: Minor reformatting.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Derive_Subprograms): An interface primitive operation
	that is a renaming must be derived like any other primitive operation,
	the renamed operation is not relevant to the derivation.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* sem_aux.ads: Add comment for Is_Inherently_Limited_Type.
	* checks.adb: Minor reformatting.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add section on intent of style checking options.

2010-09-10  Arnaud Charlet  <charlet@adacore.com>

	* xref_lib.adb (Get_Full_Type): Fix handling of 'a' char.

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: Improve error message on derivation from class-wide type

2010-09-10  Steve Baird  <baird@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Enable Expression_With_Actions
	generation when Generate_SCIL is True.

2010-09-10  Geert Bosch  <bosch@adacore.com>

	* gnatlink.adb (Check_ Existing_Executable): New procedure for checking
	validity of executable name and removing any existing executable
	(Gnatlink): Call Check_Existing_Executable.

2010-09-10  Arnaud Charlet  <charlet@adacore.com>

	* s-tporft.adb, s-taskin.ads (Register_Foreign_Thread): Move
	initialization of Task_Alternate_Stack here, cleaner since in case of
	ranvescar, Restricted_Ada_Task_Control_Block is not initialized
	implicitly.

2010-09-10  Thomas Quinot  <quinot@adacore.com>

	* s-fileio.adb, a-dirval.adb: Minor reformatting.

2010-09-10  Emmanuel Briot  <briot@adacore.com>

	* prj-util.adb (Executable_Of): Fix CE when the project does not
	contain a Builder package.

2010-09-10  Vincent Celier  <celier@adacore.com>

	* prj-ext.adb (Initialize_Project_Path): Add <prefix>/lib/gpr/<target>
	to the project path, if Prefix and Target_Name are defined.
	* prj-tree.ads (Project_Node_Tree_Data): New component Target_Name

2010-09-10  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Ensure_Valid): If the expression is a boolean expression
	or short-circuit operation, do no emit a validity check: only the
	elementary operands of the expression need checking.

2010-09-10  Ben Brosgol  <brosgol@adacore.com>

	* gnat_rm.texi: Document Short_Descriptors.

2010-09-10  Arnaud Charlet  <charlet@adacore.com>

	* s-taprop-linux.adb, s-taskin.ads (Task_Alternate_Stack): Default
	initialize to Null_Address.
	(Enter_Task): Do not set up an alternate stack for foreign threads.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* opt.adb (Short_Descriptors): New flag
	(Short_Descriptors_Config): New flag
	* opt.ads (Short_Descriptors): New flag
	(Short_Descriptors_Config): New flag
	* par-prag.adb: Add dummy entry for Short_Descriptors pragma
	* sem_prag.adb (Set_Mechanism_Value): Deal with Short_Descriptors.
	(Analyze_Pragma): Implement Short_Descriptors pragma
	* snames.ads-tmpl: Add entry for Short_Descriptors pragma

2010-09-10  Emmanuel Briot  <briot@adacore.com>

	* prj-util.adb, prj-util.ads (Executable_Of): Take into account the
	project's Executable_Suffix.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* g-pehage.ads: Minor reformatting

	* gnat_ugn.texi: Clarifying comment on -gnatyc
	* exp_ch6.adb (Expand_N_Subprogram_Body): Reset Is_Pure if limited
	arguments.

2010-09-10  Tristan Gingold  <gingold@adacore.com>

	* Make-generated.in (gnat.hlp): New rule.

2010-09-10  Emmanuel Briot  <briot@adacore.com>

	* prj-util.adb, prj-util.ads (Executable_Of): New parameter
	Include_Suffix.

2010-09-10  Robert Dewar  <dewar@adacore.com>

	* einfo.adb: Minor code cleanup: Add assertion to
	Set_Corresponding_Protected_Entry.

2010-09-10  Bob Duff  <duff@adacore.com>

	* g-pehage.ads, g-pehage.adb (Produce): Add a new flag to allow sending
	the output to standard output.

2010-09-09  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Add documentation for new gnatmake switch
	--create-map-file.
	* make.adb (Map_File): New global variable to store the value of switch
	--create-map-file.
	(Gnatmake): Add switch -M to gnatlink if switch --create-map-file has
	been specified.
	(Scan_Make_Arg): Recognize switch --create-map-file
	* makeutl.ads (Create_Map_File_Switch): New constant string for new
	gnatmake and gprbuild switch --create-map-file.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* sinput-p.ads: Minor comment update.

2010-09-09  Arnaud Charlet  <charlet@adacore.com>

	* s-tpobop.adb, s-taenca.adb (Wait_For_Completion_With_Timeout): Reset
	Entry_Call.State if needed so that the call is marked as cancelled by
	Check_Pending_Actions_For_Entry_Call.
	(Timed_Protected_Entry_Call): Adjust calls to Defer/Under_Abort, since
	this procedure may be called from a controlled operation
	(Initialize/Finalize).

2010-09-09  Vadim Godunko  <godunko@adacore.com>

	* impunit.adb: Correct spelling of package's name in the comment.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* gnatcmd.adb, gnatlink.adb, sem_ch12.adb, sem_eval.adb, sinput-p.adb:
	Minor reformatting

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* impunit.adb: Add entry for a-izteio.
	* checks.adb: Add comment.
	* debug.adb, exp_disp.adb: Minor reformatting.
	* exp_dbug.ads: Minor reformatting throughout (pack block comments).

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_eval.adb (Is_Same_Value): Two occurrences of the same
	discriminant cannot be assumed to be the same value because they may
	refer to bounds of a component of two different instances of a
	discriminated type.

2010-09-09  Gary Dismukes  <dismukes@adacore.com>

	* checks.adb (Apply_Arithmetic_Overflow_Check): When converting the
	operands of an operator to the type of an enclosing conversion, rewrite
	the operator so the conversion can't be flagged as redundant.
	Remove useless assignments to Typ and Rtyp.

2010-09-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi: Fix another long line.

2010-09-09  Bob Duff  <duff@adacore.com>

	* sem_warn.adb (Output_Reference_Error): Don't warn for renames read
	but never assigned.

2010-09-09  Matthew Heaney  <heaney@adacore.com>

	* a-convec.adb, a-coinve.adb (Clear, Delete, Delete_Last, Finalize,
	Merge, Insert, Insert_Space, Move, Reserve_Capacity, Generic_Sorting,
	Replace_Element, Reverse_Elements, Swap): Change exception message to
	correctly indicate kind of tampering (cursor or element).
	* a-cdlili.adb, a-cidlli.adb (Clear, Delete, Delete_First, Delete_Last,
	Merge, Generic_Sorting, Insert, Move, Reverse_Elements, Splice,
	Swap_Links, Replace_Element, Swap): Ditto.
	* a-coorse.adb, a-ciorse.adb (Include, Replace, Replace_Element): Ditto
	* a-coorma.adb, a-ciorma.adb (Include, Replace, Replace_Element): Ditto
	* a-coormu.adb, a-ciormu.adb (Replace_Element): Ditto
	* a-chtgke.adb (Delete_Key_Sans_Free, Generic_Conditional_Insert,
	Generic_Replace_Element): Ditto
	* a-chtgop.adb (Clear, Move, Reserve_Capacity): Ditto
	* a-cohama.adb, a-cihama.adb (Delete, Include, Replace,
	Replace_Element): Ditto.
	* a-cohase.adb, a-cihase.adb (Delete, Difference, Intersection,
	Symmetric_Difference, Union, Include, Replace): Ditto

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* sprint.adb (Write_Id): If the parent node is an expanded name, check
	that its entity_or_associated_node is an entity before writing it out.
	* exp_disp.adb (Make_Tags); if a type is declared in C++ and has no
	constructors, there is no need for a dispatch table pointer because the
	table is fully inherited from the C++ code.

2010-09-09  Thomas Quinot  <quinot@adacore.com>

	* projects.texi: Fix wrong identifiers on package end lines in project
	files examples.
	* exp_ch6.adb: Minor reformatting.

2010-09-09  Tristan Gingold  <gingold@adacore.com>

	* gnatcmd.adb, vms_conv.ads: Extract Command_Type.

2010-09-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi: Fix description of -O3 optimization level.

2010-09-09  Yannick Moy  <moy@adacore.com>

	* a-cihama.adb, a-cohama.adb: Fix comments.

2010-09-09  Arnaud Charlet  <charlet@adacore.com>

	* i-cexten.ads: Add comments.
	(Signed_128): New type, used by some C bindings.
	* debug.adb: Update comment.

2010-09-09  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: For ASIS tools (gnatpp, gnatcheck, gnatelim,
	gnatmetric and gnatstub) add a note that '-gnat05' should be used if
	the tool should process Ada 2005 sources.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Remove_Parent): If the scope containing the child
	instance is a block, examine the enclosing scope to determine if it is
	a parent instance.

2010-09-09  Doug Rupp  <rupp@adacore.com>

	* sem_prag.adb (pragma Ident): Pass --identification= vice 
	IDENTIFICATION=
	* gnatlink.adb (Linker_Options): Look for --identification= vice 
	IDENTIFICATION=

2010-09-09  Gary Dismukes  <dismukes@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, case Attribute_Old): When
	inserting and analyzing the object declaration for the temporary object
	created to hold a 'Old value, push the scope for the subprogram where
	the object is inserted, so that its Scope (and that of related objects)
	will be set properly.

2010-09-09  Vincent Celier  <celier@adacore.com>

	* prj.adb (Get_Object_Directory): Return object directory display name
	* adaint.c (__gnat_get_file_names_case_sensitive): When environment
	variable GNAT_FILE_NAME_CASE_SENSITIVE has a value of "0" or "1",
	return this value, otherwise return the default for the platform.

2010-09-09  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Update
	dependencies. Remove handling of gnatlbr.
	Do not remove s-stratt-xdr for the run-time when installing.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb: Minor reformatting.

2010-09-09  Thomas Quinot  <quinot@adacore.com>

	* socket.c (__gnat_socket_ioctl): On Darwin, the req parameter is an
	unsigned long, not an int.

2010-09-09  Vincent Celier  <celier@adacore.com>

	* make.adb, mlib-prj.adb, prj.adb, prj-nmsc.adb, mlib-tgt.adb,
	prj-conf.adb, prj-env.adb: Use Display_Name instead of Name whenever
	we are not checking for equality of path or file names.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Remove_Side_Effects): If the expression is a packed
	array reference, reset the Analyzed flag so that it is properly
	expanded when the resulting object declaration is analyzed.

2010-09-09  Vincent Celier  <celier@adacore.com>

	* sinput-p.adb (Source_File_Is_Subunit): Return False if X is
	No_Source_File.

2010-09-09  Ramon Fernandez  <fernandez@adacore.com>

	* sysdep.c: The wrSbc8548 BSP in MILS doesn't know anything about the
	VX_SPE_TASK option, so disable it.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* sem.adb (Walk_Library_Items): Traverse context of subunits of the
	main unit.
	(Is_Subunit_Of_Main): Handle null nodes properly.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* par-ch2.adb: Update comments.

2010-09-09  Ben Brosgol  <brosgol@adacore.com>

	* gnat_rm.texi: Minor wordsmithing of section on pragma Ordered.

2010-09-09  Arnaud Charlet  <charlet@adacore.com>

	* par-ch2.adb (Scan_Pragma_Argument_Association): In CodePeer mode,
	do not generate an error for compatibility with legacy code.
	ignored when generating SCIL.
	* sem_attr.adb (Resolve_Attribute): Ignore AI-229 in CodePeer mode.

2010-09-09  Thomas Quinot  <quinot@adacore.com>

	* s-strxdr.adb, gnat_rm.texi, s-stratt-xdr.adb, s-stratt.ads: Rename
	s-strxdr.adb to s-stratt-xdr.adb

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* ali-util.adb (Obsolescent_Check): Removed.
	* gprep.adb (Obsolescent_Check): Removed.
	Remove Obsolescent_Check parameter in Scng instantiation
	* prj-err.adb (Obsolescent_Check): Removed.
	* prj-err.ads (Obsolescent_Check): Removed.
	Remove Obsolescent_Check parameter in Scng instantiation
	* scans.ads (Based_Literal_Uses_Colon): New flag
	* scn.adb (Obsolscent_Check_Flag): Removed
	(Obsolscent_Check): Removed
	(Set_Obsolescent_Check): Removed
	(Post_Scan): Add handling for obsolescent features
	* scn.ads (Obsolscent_Check): Removed
	(Set_Obsolescent_Check): Removed
	(Post_Scan): Can no longer be inlined
	Remove Obsolescent_Check from instantiation of Scng
	* scng.adb (Nlit): Set Based_Literal_Uses_Colon
	(Nlit): Remove handling of obsolescent check
	(Scan, case '%'): Remove handling of obsolescent check
	(Scan, case '|'): Call Post_Scan
	(Scan, case '!'): Remove handling of obsolescent check, call Post_Scan
	* scng.ads Remove Obsolescent_Check argument from Scng generic
	(Post_Scan): Now called for Tok_Vertical_Bar
	* sinput-l.adb: Remove calls to Set_Obsolescent_Check

2010-09-09  Doug Rupp  <rupp@adacore.com>

	* gnatlbr.adb: Removed.
	* gnat_rm.texi, ug_words, gnat_ugn.texi: Remove mention of gnatlbr.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): Catch more cases of redundant
	conversions.

2010-09-09  Vincent Celier  <celier@adacore.com>

	* gnatlbr.adb: Remove redundant conversions.

2010-09-09  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb: Minor comment spelling error fix.
	* osint.ads (Env_Vars_Case_Sensitive): Use function
	Get_Env_Vars_Case_Sensitive, not Get_File_Names_Case_Sensitive to
	compute value.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Equality_Op): Implement Ada2012 rule for
	resolution of conditional expressions whose dependent expressions are
	anonymous access types.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* a-ststio.adb: Minor code reorganization.
	* s-direio.adb, prj.adb, prj-nmsc.adb, sem_type.adb: Remove redundant
	conversion.
	* types.ads: Minor reformatting.
	* binde.adb, vms_conv.adb, gnatls.adb, s-strxdr.adb, uintp.adb: Remove
	redundant conversions.
	* output.adb: Minor reformatting.
	* sem_ch8.adb (Find_Type): Test for redundant base applies to user
	types.
	* opt.ads: Add pragma Ordered for Verbosity_Level.
	* prj.ads: Add pragma Ordered for type Verbosity.

2010-09-09  Vincent Celier  <celier@adacore.com>

	* osint.adb (Canonical_Case_File_Name): Use procedure To_Lower in
	System.Case_Util
	(Canonical_Case_Env_Var_Name): Ditto

2010-09-09  Bob Duff  <duff@adacore.com>

	* g-pehage.adb (Allocate): Initialize the allocated elements of IT.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* cstand.adb: Mark Boolean and Character types as Ordered
	* einfo.adb (Has_Pragma_Ordered): New flag
	* einfo.ads (Has_Pragma_Ordered): New flag
	* g-calend.ads: Mark Day_Name as Ordered
	* opt.ads: Mark Ada_Version_Type as Ordered
	(Warn_On_Unordered_Enumeration_Type): New flag
	* par-prag.adb: Add procdessing for pragma Ordered
	* s-ficobl.ads (Read_File_Mode): New subtype
	* s-fileio.adb: Use Read_File_Mode instead of explicit ranges
	* s-taskin.ads: Mark Entry_Call_State as ordered
	* sem_ch3.adb (Build_Derived_Enumeration_Type): Inherit
	Has_Pragma_Ordered.
	* sem_ch6.ads: Mark Conformance_Type as Ordered
	* sem_prag.adb: Implement pragma Ordered
	* sem_res.adb (Bad_Unordered_Enumeration_Reference): New function
	(Resolve_Comparison_Op): Diagnose unordered comparison
	(Resolve_Range): Diagnose unordered range
	* sem_warn.adb (Warn_On_Unordered_Enumeration_Type): New flag (from
	-gnatw.u/U)
	* snames.ads-tmpl: Add entry for pragma Ordered
	* style.ads (Check_Enumeration_Subrange): Removed
	* styleg.adb (Check_Enumeration_Subrange): Removed
	* styleg.ads (Check_Enumeration_Subrange): Removed
	* stylesw.adb: Remove handling of -gnatyE switch
	* stylesw.ads: (Style_Check_Enumeration_Subranges): Removed
	* vms_data.ads: Remove -gnatyE entries
	Add -gnatw.u entries
	* ug_words: Entries for -gnatw.u and -gnatw.U
	* gnat_ugn.texi: Document -gnatw.u/-gnatw.U switches
	* gnat_rm.texi: Document pragma Ordered.
	* s-tasren.adb: Avoid unnecessary comparison on unordered enumeration.
	* s-tpobop.adb: Remove comparison on unordered enumeration type.

2010-09-09  Vincent Celier  <celier@adacore.com>

	* adaint.c: New function __gnat_get_env_vars_case_sensitive, returns 0
	for VMS and Windows, and 1 for all other platforms.
	* adaint.h: New function __gnat_get_env_vars_case_sensitive
	* osint.ads, osint.adb (Canonical_Case_Env_Var_Name): New procedure.
	* prj-ext.adb (Add): Call Canonical_Case_Env_Var_Name instead of
	Canonical_Case_File_Name, as we are dealing with environment variables,
	not files.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb: Minor reformatting

2010-09-09  Vincent Celier  <celier@adacore.com>

	* vms_data.ads: Add documentation for S_Make_Single.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Same_Object): include formal parameters.

2010-09-09  Vincent Celier  <celier@adacore.com>

	* make.adb (Queue): New package implementing a new impementation of the
	queue, taking into account the new switch --single-compile-per-obj-dir.
	* makeutl.ads (Single_Compile_Per_Obj_Dir_Switch): New constant String
	for gnatmake and gprbuild new switch --single-compile-per-obj-dir.
	* opt.ads (One_Compilation_Per_Obj_Dir): New Boolean flag, defauted to
	False.
	* switch-m.adb (Scan_Make_Switches): Take into account new gnatmake
	switch --single-compile-per-obj-dir.
	* vms_data.ads: Add qualifier SINGLE_COMPILE_PER_OBJ_DIR for gnatmake
	switch --single-compile-per-obj-dir.
	* gnat_ugn.texi: Add documentation for new gnatmake switch
	--single-compile-per-obj-dir.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* einfo.adb, einfo.ads: Clarify use of Corresponding_Protected_Entry.

2010-09-09  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Is_Progenitor): Relocated to sem_type.
	(Replace_Type): Code cleanup.
	* sem_type.ads, sem_type.adb (Is_Progenitor): Relocated from sem_ch3

2010-09-09  Thomas Quinot  <quinot@adacore.com>

	* exp_ch8.adb: Minor reformatting.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb, einfo.adb, einfo.ads: New attribute
	Corresponding_Protected_Entry.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Build_Untagged_Equality): Do not set alias of implicit
	inequality, it is always rewritten as the negation of the corresponding
	equality operation.
	* exp_ch8.adb (Expand_N_Subprogram_Renaming): If the subprogram renames
	the predefined equality of an untagged record, create a body at the
	point of the renaming, to capture the current meaning of equality for
	the type.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* sem.adb, sem_warn.adb: Minor reformatting.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Improve error message on untagged equality.
	* sem.adb (Semantics): Include subprogram bodies that act as spec.

2010-09-09  Javier Miranda  <miranda@adacore.com>

	* sem_ch13.adb, exp_ch13.adb: Undo previous change, unneeded.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb, sem_ch6.adb, exp_ch3.adb: Minor reformatting.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* einfo.adb (Is_Aggregate_Type): New function.
	* einfo.ads (Aggregate_Kind): New enumeration subtype
	(Is_Aggregate_Type): New function.
	* sem_type.adb (Is_Array_Class_Record_Type): Removed, replaced by
	Is_Aggregate_Typea.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* exp_ch11.adb, frontend.adb, sem_attr.adb, sem_ch10.adb, sem_ch3.adb,
	sem_ch4.adb, sem_ch9.adb, sem_res.adb: Use Restriction_Check_Needed
	where appropriate.
	* restrict.ads, restrict.adb: Ditto.
	(Restriction_Check_Needed): New function

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.ads (Find_Master_Scope): New function, extracted from
	Build_Master_Entity, to find the proper scope for the master entity of
	a type that may contain tasks, in the presence of transient scopes.
	* exp_ch9.adb (Build_Master_Entity) Use new function.
	* exp_ch3.adb (Build_Class_Wide_Master): ditto.

2010-09-09  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: Add new attributes Leading_Library_Options and
	Linker'Leading_Switches.
	* snames.ads-tmpl: Add new standard names Leading_Library_Options and
	Leading_Switches.

2010-09-09  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Derive_Subprogram): The code that checks if a
	dispatching primitive covers some interface primitive is incomplete.
	Replace such code by the invocation of a new subprogram that provides
	this functionality.
	* sem_ch6.ads (Is_Interface_Conformant): Add missing documentation.
	* sem_ch6.adb (Check_Missing_Return): Minor reformating
	(Check_Convention): Complete if-statement conditition when reporting
	errors (to avoid assertion failure).
	* sem_ch13.adb (Make_Null_Procedure_Specs): This routine was previously
	located in exp_ch3. Relocated inside Analyze_Freeze_Entity.
	(Analyze_Freeze_Entity): Invoke routine that adds the spec of non
	overridden null interface primitives.
	* sem_type.adb (Is_Ancestor): If the parent of the partial view of a
	private type is an interface then use the parent of its full view to
	climb to its ancestor type.
	* sem_disp.ads, sem_disp.adb (Covers_Some_Interface): New subprogram.
	(Check_Dispatching_Operation): Extend assertion to handle wrappers of
	null interface primitives.
	(Is_Null_Interface_Primitive): New subprogram.
	* exp_ch3.adb (Make_Null_Procedure_Specs): Removed.
	(Expand_Freeze_Record_Type): Do not generate specs of null interface
	subprograms because they are now generated by Analyze_Freeze_Entity.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* a-calfor.adb, sem_ch3.adb: Minor reformatting.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* bindgen.adb (Gen_Restrictions_Ada): Avoid explicit enumeration ranges
	(Gen_Restrictions_C): Avoid explicit enumeration ranges
	(Set_String_Replace): New procedure
	* casing.ads (Known_Casing): New subtype declaration
	* prj-attr.ads (All_Case_Insensitive_Associative_Array): New subtype
	declaration
	* prj-dect.adb (Parse_Attribute_Declaration): Avoid enumeration range
	* prj-nmsc.adb (Check_Naming): Avoid unnecessary enumeration range
	* prj-strt.adb (Attribute_Reference): Avoid enumeration range test
	* prj.adb (Known_Casing): Moved to Casing spec (avoid enum range)
	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Avoid enumeration
	ranges.
	* sem_res.adb (Resolve_Range): Check for enumeration subrange style
	rule.
	* sem_type.adb (Is_Array_Class_Record_Type): New.
	* style.ads (Check_Enumeration_Subrange): New procedure
	* styleg.adb (Check_Enumeration_Subrange): New procedure
	* styleg.ads (Check_Enumeration_Subrange): New procedure
	* stylesw.adb Add handling for Style_Check_Enumeration_Subranges
	* stylesw.ads (Style_Check_Enumeration_Subranges): New flag
	* usage.adb: Add line for -gnatyE
	* vms_data.ads: Add entries for [NO]ENUMERATION_RANGES
	Add missing entry for NOBOOLEAN_OPERATORS
	* gnat_ugn.texi: Add documentation for -gnatyE

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* namet.adb (Initialize): Is now a dummy procedure
	(Reinitialize): New procedure
	Call Reinitialize from package initialization
	* namet.ads (Initialize): Is now a dummy procedure
	(Reinitialize): New procedure
	* clean.adb, gnat1drv.adb, gnatbind.adb, gnatcmd.adb, gnatlink.adb,
	gnatls.adb, gprep.adb, make.adb, prj-makr.adb: Remove obsolete call to
	Namet.Initialize.

2010-09-09  Bob Duff  <duff@adacore.com>

	* sem_elab.adb, s-os_lib.ads: Minor comment fixes.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* s-bitops.adb (Raise_Error): Add exception message

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* par-ch5.adb (Test_Statement_Required): Deal with Ada 2012 allowing no
	null statement after label.
	* sinfo.ads: Minor comment updates.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* nlists.ads, nlists.adb (In_Same_List): New function.
	Use Node_Or_Entity_Id where appropriate.
	* par-labl.adb, sem_ch6.adb, sem_type.adb: Use In_Same_List.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* restrict.ads, restrict.adb (Check_Wide_Character_Restriction): New
	procedure.
	* sem_ch3.adb: Use Check_Wide_Character_Restriction
	(Enumeration_Type_Declaration): Check violation of No_Wide_Characters
	* sem_ch8.adb (Find_Direct_Name): Check violation of No_Wide_Characters
	(Find_Expanded_Name): Check violation of No_Wide_Characters

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* par-ch5.adb: Minor reformatting.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* prj-env.adb: Minor code reorganization.
	* par-ch3.adb: Minor reformatting.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb (Build_Activation_Chain_Entity): The construct enclosing
	a task declaration can be an entry body.

2010-09-09  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_DT): Decorate as "static" variables containing
	tags of library level tagged types.
	(Make_Tags): Disable backend optimizations about aliasing for
	declarations of access to dispatch tables.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Reset_Entity): If the entity is an itype created as a
	subtype for a null-excluding access type, recover the original
	subtype_mark to get the proper visibility on the original name.

2010-09-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Build_Untagged_Equality): For Ada2012, new procedure to
	create the primitive equality operation for an untagged record. The
	operation is the predefined equality if no record component has a
	user-defined equality, or if there is a user-defined equality for the
	type as a whole, or when the type is derived and it has an inherited
	equality. Otherwise the body of the operations is built as for tagged
	types.
	(Expand_Freeze_Record_Type): Call Build_Untagged_Equality when needed.
	(Make_Eq_Body): New function to create the expanded body of the
	equality operation for tagged and untagged records.  In both cases the
	operation composes, and the primitive operation of each record
	component is used to generate the equality function for the type.
	* exp_ch4.adb (Expand_Composite_Equality): In Ada2012, if a component
	has an abstract equality defined, replace its call with a
	Raise_Program_Error.
	* sem_ch6.adb (New_Overloaded_Entity): if Ada2012, verify that a
	user-defined equality operator for an untagged record type does not
	happen after type is frozen, and appears in the visible part if partial
	view of type is not limited.

2010-09-09  Tristan Gingold  <gingold@adacore.com>

	* gnatlbr.adb: Make Create_Directory more portable: use __gnat_mkdir.

2010-09-09  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Remove incorrect statement about -E being the default.

2010-09-09  Pascal Obry  <obry@adacore.com>

	* gnat_ugn.texi: Update doc on windows related topics.

2010-09-09  Geert Bosch  <bosch@adacore.com>

	* s-fatgen.adb: Update comments.

2010-09-09  Robert Dewar  <dewar@adacore.com>

	* par-ch4.adb (Box_Error): New procedure.

2010-09-09  Thomas Quinot  <quinot@adacore.com>

	* sem.adb: Minor reformatting.

2010-09-09  Pascal Obry  <obry@adacore.com>

	* prj-env.adb: Style fix, use /and then/ and /or else/.
	* gnat_ugn.texi: Fix typos.

2010-09-03  Joseph Myers  <joseph@codesourcery.com>

	PR ada/45499
	* gcc-interface/misc.c (gnat_init_options): Allow options with
	empty canonical form.  Generate a single save_argv element from -I
	options.

2010-08-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (gnat_pushdecl): Remove test for PARM_DECLs.
	Attach fake PARM_DECLs to the topmost block of the function.

2010-08-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (call_to_gnu): Also force the return slot opt
	for the call to a function whose return type was unconstrained.

2010-08-30  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/decl.c (FOREIGN_FORCE_REALIGN_STACK): New macro,
	replacement for FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN.
	(gnat_to_gnu_entity) <case ..., E_Procedure>: Use it.

2010-08-21  Eric Botcazou  <ebotcazou@adacore.com>

	* tracebak.c: Fix typo in comment.

2010-08-20  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/decl.c: Use FOR_EACH_VEC_ELT.
	* gcc-interface/trans.c: Likewise.
	* gcc-interface/utils.c: Likewise.

2010-08-18  Eric Botcazou  <ebotcazou@adacore.com>

	* tracebak.c (i386): Use GCC unwinder on Linux with GCC > 4.5.

2010-08-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb, sem_ch8.ads: Change name Write_Scopes to ws.
	* sem_util.adb: Minor reformatting.

2010-08-10  Javier Miranda  <miranda@adacore.com>

	* sem_aggr.adb (Resolve_Extension_Aggregate): Warn on the use of C++
	constructors that leave the object partially initialized.
	* exp_atag.ads, exp_atags.adb (Build_Inherit_CPP_Prims): New subprogram
	that copies from parent of Typ the dispatch table slots of inherited
	C++ primitives. It handles primary and secondary dispatch tables.
	* einfo.adb (Related_Type): Moved from Node26 to Node27. Required to
	use this attribute with E_Variable entities.
	(Set_Is_Tag): Relax assertion to allow its use with variables that
	store tags.
	(Set_Related_Type): Relax assertion to allow its use with variables
	that store the tag of a C++ class.
	(Write_26_Field_Name): Remove Related_Type.
	(Write_27_Field_Name): Add Related_Type.
	* einfo.ads (Related_Type): Moved from Node26 to Node27. Available also
	with E_Variable entities.
	* sem_prag.adb (CPP_Constructor): Warn on duplicated occurrence of this
	pragma.
	* sem_util.adb (Search_Tag): Add missing support for CPP types.
	(Enclosing_CPP_Parent): New subprogram.
	(Has_Suffix): New subprogram.
	* sem_util.ads (Enclosing_CPP_Parent): New subprogram that returns the
	closest ancestor of a type that is a C++ type.
	(Has_Suffix): New subprogram. Used in assertions to check the suffix of
	internal entities.
	* sem_attr.adb (Analyze_Access_Attribute): Check wrong use of current
	instance in derivations of C++ types.
	* exp_tss.adb (CPP_Init_Proc): New subprogram.
	(Is_CPP_Init_Proc): New subprogram.
	(Set_TSS): Handle new C++ init routines.
	* exp_tss.ads (TSS_CPP_Init): New TSS name. For initialization of C++
	dispatch tables.
	(CPP_Init_Proc): New subprogram.
	(Is_CPP_Init_Proc): New subprogram.
	* exp_disp.adb (CPP_Num_Prims): New subprogram.
	(Has_CPP_Constructors): New subprogram.
	(Make_Secondary_DT, Make_DT): For derivations of CPP types, do not
	initialize slots located in the C++ part of the dispatch table.
	(Make_Tags): For CPP types declare variables used by the IP routine to
	store the C++ tag values after the first invocation of the C++
	constructor.
	(Build_CPP_Init_DT): New subprogram.
	(Set_CPP_Constructors): New implementation that builds an IP for each
	CPP constructor. These IP are wrappers of the C++ constructors that,
	after the first invocation of the constructor, read the C++ tags from
	the object and save them locally. These copies of the C++ tags are used
	by the IC routines to initialize tables of Ada derivations of CPP
	types.
	(Write_DT): Indicate what primitives are imported from C++
	* exp_disp.ads (CPP_Num_Prims): New subprogram.
	(Has_CPP_Constructors): New subprogram.
	* exp_aggr.adb (Build_Record_Aggr_Code): For derivations of C++ types
	invoke the IC routine to inherit the slots of the parents.
	* sem_ch13.adb (Analyze_Freeze_Entity): Add new warnings on CPP types.
	* exp_ch3.adb (Is_Variable_Size_Array): New subprogram.
	(Is_Variable_Size_Record): Factorize code calling
	Is_Variable_Size_Array.
	(Build_CPP_Init_Procedure): New subprogram that builds the tree
	corresponding to the procedure that initializes the C++ part of the
	dispatch table of an Ada tagged type that is a derivation of a CPP
	type.
	(Build_Init_Procedure): Adding documentation plus code reorganization
	to leave more clear the construction of the IP with C++ types.
	(Expand_Freeze_Record_Type): Delay call to Set_CPP_Constructors because
	it cannot be called after Make_Tags has been invoked.
	(Inherit_CPP_Tag): Removed.
	(Init_Secondary_Tags): For derivations of CPP types, warn on tags
	located at variable offset.
	* freeze.ads: Minor reformating.
	* sem_ch8.adb (Write_Scopes): Add pragma export. Required to have it
	available in gdb.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-08-10  Robert Dewar  <dewar@adacore.com>

	* a-chahan.ads: Add comments on handling of obsolescent entries.
	* opt.ads: Add Ada_2005 and Ada_2012 renamings for versions.
	* restrict.adb (Check_Obsolescent_2005_Entity): New procedure.
	* restrict.ads (Check_Obsolescent_2005_Entity): New procedure.
	* sem_attr.adb (Analyze_Access_Attribute): Call
	Check_Obsolescent_2005_Entity to check for access to obsolescent
	Ada.Characters.Handling subprogram.
	(Analyze_Attribute, case Class): Applying Class to untagged incomplete
	type is obsolescent in Ada 2005.
	(Analyze_Attribute, case Constrained): Better placement of flag when
	flagged as obsolescent feature.
	(Analyze_Attribute, case Storage_Size): Use with tasks is obsolescent
	* sem_ch10.adb (Analyze_With_Clause): With of renamings such as Text_IO
	is an obsolescent feature.
	* sem_ch11.adb (Analyze_Raise_Statement): Numeric_Error is obsolescent
	feature.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Call
	Check_Obsolescent_2005_Entity to check for renaming obsolete
	Ada.Characters.Handling subprogram.
	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): Check
	for obsolescent restrictions in Ada 2005.
	(Analyze_Pragma, case Suppress): Entity arg is obsolescent in Ada 2005
	(Analyze_Pragma, case Interface): Interface is obsolescent in Ada 2005
	* sem_res.adb (Resolve_Call): Call Check_Obsolescent_2005_Entity to
	check for obsolescent references to Ada.Characters.Handling subprograms

2010-08-10  Robert Dewar  <dewar@adacore.com>

	* einfo.adb, einfo.ads: Fix bad -gnatdt output for incomplete type.

2010-08-10  Robert Dewar  <dewar@adacore.com>

	* errout.ads: Add VMS table entries for 2005, 12, 2012 switches
	* par-ch4.adb: Change wording of Ada 2012 messages
	* vms_data.ads: Add VMS entries for /2005, /12, /2012

2010-08-10  Robert Dewar  <dewar@adacore.com>

	* a-suenco.adb (Convert): Fix bug in UTF-16 to UTF-8 conversion for
	codes in the range 16#80#..16#7FF#.
	* sem_ch10.adb: Minor reformatting.

2010-08-10  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Scan_Front_End_Switches): Always perform semantics and
	generate ali files in CodePeer mode, so that a gnatmake -c -k will
	proceed further when possible
	* freeze.adb (Freeze_Static_Object): Fix thinko. Do not generate error
	messages when ignoring representation clauses (-gnatI).

2010-08-10  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Selected_Component): Do not attempt to
	constant-fold discriminant reference if the constraint is an object
	with non-static expression. Expression may contain volatile references
	in the presence of renamings.

2010-08-10  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb (Get_Attribute_Index): If Index is All_Other_Names,
	returns Index.
	* prj-strt.adb (Attribute_Reference): Recognize 'others' as a valid
	index for an associative array where it is allowed.

2010-08-10  Thomas Quinot  <quinot@adacore.com>

	* exp_attr.adb: Add comments.

2010-08-10  Jerome Lambourg  <lambourg@adacore.com>

	* adaint.c (__gnat_get_file_names_case_sensitive): return 0 on darwin.

2010-08-09  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/utils.c (gnat_poplevel): Use blocks_nreverse.

2010-08-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (build_vms_descriptor32): Fix formatting.
	(build_vms_descriptor): Likewise.

2010-08-08  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/utils.c (make_descriptor_field): Add tree parameter.
	(build_vms_descriptor32): Adjust calls to it for new parameter.
	(build_vms_descriptor): Likewise.

2010-08-08  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/decl.c (rec_variant):  Declare.  Declare a VEC of it.
	(build_variant_list): Take and return a VEC instead of a tree.
	(create_variant_part_from): Take a VEC instead of a tree for
	variant_list.  Adjust accordingly.
	(gnat_to_gnu_entity): Adjust for changes to previous functions.

2010-08-07  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Use XALLOCAVEC instead
	of alloca.
	(components_to_record): Likewise.
	* gcc-interface/trans.c (gnat_to_gnu): Likewise.
	* gcc-interface/utils.c (max_size): Likewise.
	(build_vms_descriptor32): Likewise.
	(build_vms_descriptor): Likewise.

2010-08-07  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/decl.c (subst_pair): Declare.  Declare a VEC of it.
	(build_subst_list): Return a VEC instead of a tree.
	(build_variant_list): Take a VEC for subst_list.  Adjust
	accordingly.
	(create_field_decl_from): Likewise.
	(create_variant_part_from): Likewise.
	(copy_and_substitute_in_size): Likewise.
	(gnat_to_gnu_entity): Adjust for new interface to build_subst_list.
	Free the built vector.

2010-08-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Do not build an
	allocator for large imported objects.

2010-08-05  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb: Minor reformatting.

2010-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem.adb (Do_Unit_And_Dependents): If some parent unit is an
	instantiation, process its body before the spec of the main unit,
	because it may contain subprograms invoked in the spec of main.
	* einfo.ads: Add documention of delayed freeze.

2010-08-05  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Process_Linker): Take into account new values for
	attribute Response_File_Format.
	* prj.ads (Response_File_Format): New enumeration values GCC_GNU,
	GCC_Object_List and GCC_Option_List.

2010-08-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Selected_Component): Do not constant-fold a
	selected component that denotes a discriminant if it is the
	discriminant of a component of an unconstrained record type.

2010-08-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Insert_Actions): If the action appears within a
	conditional expression that is already analyzed, insert action further
	out.

2010-08-05  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor reformatting.

2010-08-05  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb: Minor reformatting
	* gnat1drv.adb: Minor reformatting.
	Minor code reorganization (use Nkind_In).

2010-08-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.ads, exp_util.adb (Needs_Constant_Address): New predicate to
	determine whether the expression in an address clause for an
	initialized object must be constant. Code moved from freeze.adb.
	(Remove_Side_Effects): When the temporary is initialized with a
	reference, indicate that the temporary is a constant as done in all
	other cases.
	* freeze.adb (Check_Address_Clause): use Needs_Constant_Address.
	* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case 'Address):
	If object does not need a constant address, remove side effects from
	address expression, so it is elaborated at the point of the address
	clause and not at the freeze point of the object, so that elaboration
	order is respected.

2010-08-05  Vincent Celier  <celier@adacore.com>

	* prj.adb (Is_Compilable): Return False for header files of non Ada
	languages.

2010-08-05  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb: The Missing_Source_Files flag also considers a missing
	exec directory as a warning rather than an error.

2010-08-05  Thomas Quinot  <quinot@adacore.com>

	* sem_ch6.adb, gnat1drv.adb, exp_ch6.adb, sem_eval.adb: Minor
	reformatting.

2010-08-05  Steve Baird  <baird@adacore.com>

	* exp_util.adb (Remove_Side_Effects): An access value which designates
	a volatile object of a nonvolatile type is prohibited.
	Do not call Make_Reference to construct a reference to such an object.

2010-08-05  Robert Dewar  <dewar@adacore.com>

	* a-suezse.adb, a-suezse.ads, a-suezen.adb, a-suezen.ads: Removed.
	* a-suewse.adb, a-suewse.ads, a-suesen.adb, a-suesen.ads,
	a-suewen.adb, a-suewen.ads: New files.
	* Makefile.rtl, impunit.adb: Update implementation of Ada 2012 string
	encoding packages.
	* sem_elab.adb: Minor reformatting.

2010-08-05  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch8.adb (Use_One_Type): Protect against empty scopes.
	* exp_util.adb (Component_May_Be_Bit_Aligned): Prevent assert failure
	in case of null Comp.

2010-08-05  Robert Dewar  <dewar@adacore.com>

	* errout.adb, a-suewen.adb, a-suezen.adb: Minor reformatting.

2010-08-05  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): Flag errors on allocators of a
	nested access type whose designated type has tasks or is a protected
	object when the restrictions No_Task_Hierarchy or
	No_Local_Protected_Objects apply. Add ??? comment.
	* sem_ch9.adb (Analyze_Protected_Type): Give a warning when a protected
	type is not a library-level type and No_Local_Protected_Objects applies.
	(Analyze_Task_Type): Give a warning when a task type is not a
	library-level type and No_Task_Hierarchy applies.

2010-08-05  Arnaud Charlet  <charlet@adacore.com>

	* sem.adb: Minor reformatting
	* sem_ch4.adb (Analyze_Reference): Disable error message in CodePeer
	mode, not useful.

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

	* gcc-interface/decl.c: Do not undefine IN_GCC_FRONTEND and do not
	include expr.h.
	(gnat_to_gnu_entity) <object>: Force address of -1 at the tree level
	for the debug-only entity.
	* gcc-interface/Make-lang.in (ada/decl.o): Adjust dependencies.

2010-08-03  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/lang-specs.h: Don't pass -a options.

2010-07-28  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/misc.c (gnat_init_options): Ignore erroneous
	options.  Check canonical_option_num_elements on options copied.

2010-07-27  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/misc.c (gnat_handle_option): Update prototype and
	return value type.  Don't check for missing arguments here.

2010-07-27  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/misc.c (gnat_option_lang_mask): New.
	(gnat_init_options): Update prototype.  Reconstruct argv array
	from decoded options.

2010-07-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (update_pointer_to): In the unconstrained array
	case, merge the alias set of the old pointer type.

2010-07-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (gnat_types_compatible_p): Revert latest change
	and recurse only for multidimensional array types instead.

2010-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/44892
	* gcc-interface/utils.c (convert): Fix thinko in test.
	(unchecked_convert): When converting from a scalar type to a type with
	a different size, pad to have the same size on both sides.

2010-07-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (gnat_types_compatible_p): Don't require strict
	equality for the component type of array types.

2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/decl.c: Carefully replace TREE_CHAIN with DECL_CHAIN.
	* gcc-interface/trans.c: Likewise.
	* gcc-interface/utils.c: Likewise.
	* gcc-interface/utils2.c: Likewise.

2010-07-13  Laurent GUERBY  <laurent@guerby.net>

	PR bootstrap/44458
	* gcc-interface/targtyps.c: Include tm_p.h.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-07-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_gimplify_expr) <ADDR_EXPR>: Deal with
	CALL_EXPR.

2010-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* gcc-interface/utils.c: Include diagnostic-core.h in every file
	that includes toplev.h.

2010-07-03  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Type>:
	Branch to common code handling the alignment of discrete types.
	<E_Signed_Integer_Type>: Likewise.
	<E_Modular_Integer_Type>: Likewise.

2010-07-02  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_handle_option): Do not populate gnat_argv.
	(gnat_handle_option): Allocate only one element for gnat_argv.
	(gnat_init): Do not populate gnat_argv.

2010-06-30  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* gcc-interface/trans.c: Do not include tree-flow.h.
	* gcc-interface/Make-lang.in: Adjust dependencies.

2010-06-29  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/gigi.h (gnat_build_constructor): Take a VEC instead
	of a TREE_LIST.  Update comment.
	* gcc-interface/trans.c (gigi): Build a VEC instead of a TREE_LIST.
	Adjust call to gnat_build_constructor.
	(Attribute_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.
	(pos_to_constructor): Likewise.
	(extract_values): Likewise.
	* gcc-interface/utils.c (build_template): Likewise.
	(convert_vms_descriptor64): Likewise.
	(convert_vms_descriptor32): Likewise.
	(convert_to_fat_pointer): Likewise.
	(convert): Likewise.
	(unchecked_convert): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Likewise.
	* gcc-interface/utils2.c (build_allocator): Likewise.
	(fill_vms_descriptor): Likewise.
	(gnat_build_constructor): Take a VEC instead of a TREE_LIST.
	(compare_elmt_bitpos): Adjust for parameters being constructor_elts
	instead of TREE_LISTs.

2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>

	* gcc-interface/misc.c: Do not include except.h.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c: Include tree-flow.h.
	(gnu_switch_label_stack): Delete.
	(Case_Statement_to_gnu): Do not emit the goto at the end of a case if
	its associated block cannot fall through.  Do not emit the final label
	if no cases branch to it.
	* gcc-interface/Make-lang.in (ada/trans.o): Add $(TREE_FLOW_H).

2010-06-23  Thomas Quinot  <quinot@adacore.com>

	* exp_attr.adb (Expand_Access_To_Protected_Op): When rewriting a
	reference to a protected subprogram outside of the protected's scope,
	ensure the corresponding external subprogram is frozen before the
	reference.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb: Fix typo in error message.
	* sem.adb: Refine previous change.

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* impunit.adb, a-suewen.adb, a-suewen.ads, a-suenco.adb, a-suenco.ads,
	a-suezen.adb, a-suezen.ads, a-stuten.adb, a-stuten.ads, Makefile.rtl:
	Implement Ada 2012 string encoding packages.

2010-06-23  Arnaud Charlet  <charlet@adacore.com>

	* a-stwiun-shared.adb, a-stwiun-shared.ads, a-stzunb-shared.adb,
	a-stzunb-shared.ads, a-swunau-shared.adb, a-swuwti-shared.adb,
	a-szunau-shared.adb, a-szuzti-shared.adb, a-strunb-shared.adb,
	a-strunb-shared.ads, a-stunau-shared.adb, a-suteio-shared.adb: New
	files.
	* gcc-interface/Makefile.in: Enable use of above files.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Constant_Address_Clauses): Do not check legality
	of address clauses if if Ignore_Rep_Clauses is active.
	* freeze.adb (Check_Address_Clause): If Ignore_Rep_Clauses is active,
	remove address clause from tree so that it does not reach the backend.

2010-06-23  Arnaud Charlet  <charlet@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference [Attribute_Valid]): Do not
	expand 'Valid from user code in CodePeer mode, will be handled by the
	back-end directly.

2010-06-23  Bob Duff  <duff@adacore.com>

	* g-comlin.ads: Minor comment improvements.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Uses_SS): The expression that initializes a controlled
	component of a record type may be a user-defined operator that is
	rewritten as a function call.

2010-06-23  Bob Duff  <duff@adacore.com>

	* g-comlin.ads, sem_ch13.adb: Minor comment fix.

2010-06-23  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch11.adb (Expand_Local_Exception_Handlers): Propagate the end
	label to the new sequence of statements.  Set the sloc of the raise
	statement onto the new goto statements.

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* a-stuten.ads, a-stuten.adb: New files.
	* impunit.adb: Add engtry for Ada.Strings.UTF_Encoding (a-stuten.ads)
	* Makefile.rtl: Add entry for a-stuten (Ada.Strings.UTF_Encoding)

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add documentation of -gnat12 switch
	Add documentation of -gnatX switch.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* inline.ads: Include the current Ada_Version in the info for pending
	instance bodies, so that declaration and body are compiled with the
	same Ada_Version.
	* inline.adb: Move with_clause for Opt to spec.
	* sem_ch12.adb (Analyze_Package_Instantiation,
	Analyze_Subprogram_Instantiation): Save current Ada_Version in
	Pending_Instantiation information.
	(Instantiate_Package_Body, Instantiate_Subprogram_Body,
	Inline_Package_Body): Use the Ada_Version present in the body
	information.

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* usage.adb: Add documentation for -gnat12 switch.
	* errout.ads: Add VMS alias entry for -gnat12 switch
	* gnat_rm.texi: Add documentation for pragma Ada_12 and Ada_2012
	Add documentation for pragma Extensions_Allowed.
	* opt.ads: Add entry for Ada 2012 mode.
	* sem_ch4.adb, par-ch3.adb, par-ch4.adb: Use new Ada 2012 mode for 2012
	features.
	* sem_prag.adb, par-prag.adb: Add processing for pragma Ada_12 and
	Ada_2012.
	* sem_ch13.adb: Add handling for Ada 2012 mode.
	* snames.ads-tmpl: Add entries for pragma Ada_2012 and Ada_12.
	* switch-c.adb: Add handling for -gnat12 switch.
	Implement -gnat2005 and -gnat2012.
	* usage.adb: Add documentation for -gnat12 switch.
	* vms_data.ads: Add /12 switch for Ada 2012 mode.

2010-06-23  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator): Fix potential crash when using
	No_Task_Hierarchy restriction. Add comment.
	* exp_ch9.adb, exp_ch3.adb: Update comments.

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb (Process_Bounds): Remove some junk initializations.
	* sem_res.adb: Add comments.
	* sem_util.adb: Minor reformatting. Add comments.
	Change increment on Actuals_In_Call table.
	* opt.ads: Minor: add 'constant'.

2010-06-23  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_DT): Initialize the Size_Func component of the
	TSD to Null_Address if No_Dispatching_Calls is active.

2010-06-23  Vincent Celier  <celier@adacore.com>

	* a-comlin.ads: Indicate that use of this package is not supported
	during the elaboration of an auto-initialized Stand-Alone Library.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Is_Possibly_Misaligned_Object): Do not rely on an
	alignment clause on a record type to determine if a component may be
	misaligned. The decision must be taken in the back-end where target
	alignment information is known.

2010-06-23  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Enable some restrictions
	systematically in CodePeer mode to simplify generated code.
	* restrict.adb (Check_Restriction): Do nothing in CodePeer mode.
	* exp_ch4.adb (Expand_N_Allocator): Generate proper code when
	No_Task_Hierarchy is set instead of crasshing.

2010-06-23  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb: Minor code cleanup: test for proper entity instead of
	testing just Chars attribute when checking whether a given scope is
	System.
	* exp_ch4.adb, einfo.adb: Minor reformatting.

2010-06-23  Vincent Celier  <celier@adacore.com>

	PR ada/44633
	* switch-m.adb (Normalize_Compiler_Switches): Take into account
	switches -gnatB, -gnatD=nn, -gnatG (incuding -gnatG=nn), -gnatI,
	-gnatl=file, -gnatS, -gnatjnn, -gnateI=nn and -gnatWx.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Membership_Op): If left operand is a mixed mode
	operation with a universal real operand, and the right operand is a
	range with universal bounds, find unique fixed point that may be
	candidate, and warn appropriately.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Intrinsic_Operator): Add guards to handle
	properly the rare cases where VMS operators are visible through
	Extend_System, but the default System is being used and Address is a
	private type.
	* sem_util.adb: Widen predicate Is_VMS_Operator.

2010-06-23  Vincent Celier  <celier@adacore.com>

	* switch-m.adb (Normalize_Compiler_Switches): Take into account -gnatC
	and -gnateS.

2010-06-23  Olivier Hainque  <hainque@adacore.com>

	* einfo.adb (Has_Foreign_Convention): Consider Intrinsic with
	Interface_Name as foreign. These are GCC builtin imports for
	which Ada specific processing doesn't apply.

2010-06-23  Thomas Quinot  <quinot@adacore.com>

	* sem_ch12.adb: Minor reformatting.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_VMS_Operator): Use scope of system extension to
	determine whether an intrinsic subprogram is VMS specific.

2010-06-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* treepr.adb (Print_Entity_Info): Output the contents of Field28 if it
	is present in the entity.

2010-06-23  Arnaud Charlet  <charlet@adacore.com>

	* xr_tabls.adb, xref_lib.adb: Update to latest lib-xref.ads
	Fix handling of parameters.
	Add protection against unexpected cases.
	* sem_ch6.adb (Create_Extra_Formals): Use suffix "L" instead of "A" for
	access level, since "A" suffix is already used elsewhere. Similarly,
	use suffix "O" instead of "C" for 'Constrained since "C" suffix is used
	for xxx'Class.

2010-06-23  Thomas Quinot  <quinot@adacore.com>

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

2010-06-23  Vincent Celier  <celier@adacore.com>

	* prj.ads (Gprclean_Flags.Missing_Source_Files): Set to Error to keep
	the previous behavior of gprclean when there are missing files.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Load_Body_Of_Generic): In CodePeer mode, a missing
	generic body is not a fatal error.
	(Mark_Context): Handle properly names of child units.
	* sem.adb (Walk_Library_Items.Do_Action): Remove assertion on
	instantiations.

2010-06-23  Vincent Celier  <celier@adacore.com>

	* ali.adb (Scan_ALI): When ignoring R lines, do not skip the next
	non-empty line.

2010-06-23  Bob Duff  <duff@adacore.com>

	* g-pehage.ads, g-pehage.adb: Switch default optimization mode to
	Memory_Space, because CPU_Time doesn't seem to provide any significant
	speed advantage in practice. Cleanup: Get rid of constant
	Default_Optimization; doesn't seem to add anything. Use case
	statements instead of if statements; seems cleaner.

2010-06-23  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <case E_Procedure>: Use
	Wshadow instead of Wextra to guard warning on absence of internal
	builtin decl for an import.  Fix use of quote in warning text.
	(intrin_arglists_compatible_p): Remove processing of integer trailing
	args on the Ada side.  Fix use of literal > in warning text.
	(intrin_return_compatible_p): Never warn on "function imported as
	procedure".  Defer the void/void case to the common type compatibility
	check.
	(gnat_to_gnu_param): Use void_ptr GCC type for System.Address argument
	of GCC builtin imports.

2010-06-23  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/decl.c (intrin_types_incompatible_p): New function,
	helper for ...
	(intrin_arglists_compatible_p, intrin_return_compatible_p): New
	functions, helpers for ...
	(intrin_profiles_compatible_p): New function, replacement for ...
	(compatible_signatures_p): Removed.
	(gnat_to_gnu_entity) <case E_Procedure>: If -Wextra, warn on
	attempt to bind an unregistered builtin function.  When we have
	one, use it and warn on profile incompatibilities.

2010-06-23  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Mark_Coextensions): If the expression in the allocator
	for a coextension in an object declaration is a concatenation, treat
	coextension as dynamic.

2010-06-23  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Add_Internal_Interface_Entities): Ensure that the
	internal entities are added to the scope of the tagged type.
	(Derive_Subprograms): Do not stop derivation when we find the first
	internal entity that has attribute Interface_Alias. After the change
	done to Override_Dispatching_Operations it is no longer true that
	these primirives are always located at the end of the list of
	primitives.
	* einfo.ads (Primitive_Operations): Add documentation.
	* exp_disp.adb (Write_DT): Improve output adding to the name of the
	primitive a prefix indicating its corresponding tagged type.
	* sem_disp.adb (Override_Dispatching_Operations): If the overridden
	entity covers the primitive of an interface that is not an ancestor of
	this tagged type then the new primitive is added at the end of the list
	of primitives.  Required to fulfill the C++ ABI.

2010-06-23  Javier Miranda  <miranda@adacore.com>

	* atree.ads (Set_Reporting_Proc): New subprogram.
	* atree.adb: Remove dependency on packages Opt and SCIL_LL.
	(Allocate_Initialize_Node, Replace, Rewrite): Replace direct calls
	to routines of package Scil_ll by indirect call to the registered
	subprogram.
	(Set_Reporting_Proc): New subprogram. Used to register a subprogram
	that is invoked when a node is allocated, replaced or rewritten.
	* scil_ll.adb (Copy_SCIL_Node): New routine that takes care of copying
	the SCIL node. Used as argument for Set_Reporting_Proc.
	(Initialize): Register Copy_SCIL_Node as the reporting routine that
	is invoked by atree.

2010-06-23  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.ads: Minor reformatting.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation): In CodePeer mode,
	always analyze the generic body and instance, because it may be needed
	downstream.
	(Mark_Context): Prepend the with clauses for needed generic units, so
	they appear in a better order for CodePeer.
	* sem_util.adb, sem_util.ads: Prototype code for AI05-0144.

2010-06-23  Emmanuel Briot  <briot@adacore.com>

	* prj.ads, prj-nmsc.adb (Error_Or_Warning): New subprogram.

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* g-pehage.adb, exp_ch13.adb: Minor reformatting.

2010-06-23  Thomas Quinot  <quinot@adacore.com>

	* a-tags.ads: Fix description of TSD structure.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Mark_Context): When indicating that the body of a
	generic unit is needed prior to the unit containing an instantiation,
	search recursively the context of the generic to add other generic
	bodies that may be instantiated indirectly through the current instance.

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* freeze.adb: Minor reformatting.

2010-06-23  Bob Duff  <duff@adacore.com>

	* g-pehage.adb (Trim_Trailing_Nuls): Fix the code to match the comment.

2010-06-23  Vincent Celier  <celier@adacore.com>

	* make.adb (Compile_Sources): Complete previous change.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Add_Extra_Formal): Use suffix "C" in the name of the
	Constrained extra formal.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch13.adb (Expand_Freeze_Actions): If validity checks and
	Initialize_Scalars are enabled, compile the generated equality function
	for a composite type with full checks enabled, so that validity checks
	are performed on individual components.

2010-06-23  Emmanuel Briot  <briot@adacore.com>

	* prj.adb, prj.ads, prj-nmsc.adb (Processing_Flags): New flag
	Missing_Source_Files.

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb, exp_util.adb: Minor reformatting.

2010-06-23  Jose Ruiz  <ruiz@adacore.com>

	* a-reatim.adb, a-retide.adb: Move the initialization of the tasking
	run time from Ada.Real_Time.Delays to Ada.Real_Time. This way, calls to
	Clock (without delays) use a run time which is properly initialized.

2010-06-23  Vincent Celier  <celier@adacore.com>

	* make.adb: Do not set Check_Readonly_Files when setting Must_Compile,
	when -f -u and a main is specified on the command line. However,
	attempt to compile even when the ALI file is read-only when
	Must_Compile is True.

2010-06-23  Thomas Quinot  <quinot@adacore.com>

	* checks.adb, g-pehage.adb, cstand.adb: Minor code factorization.

2010-06-23  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Add_Internal_Interface_Entities): Generate internal
	entities for parent types that are interfaces. Needed in generics to
	handle formals that implement interfaces.
	(Derive_Subprograms): Add assertion for derivation of tagged types that
	do not cover interfaces. For generics, complete code that handles
	derivation of type that covers interfaces because the previous
	condition was weak (it required only name consistency; arguments were
	not checked). Add new code to locate primitives covering interfaces
	defined in generic units or instantiatons.
	* sem_util.adb (Has_Interfaces): Add missing support for derived types.
	* sem_ch6.adb (Check_Overriding_Indicator): Minor code cleanups.
	* exp_disp.adb (Make_Select_Specific_Data_Table): Skip primitives of
	interfaces that are parents of the type because they share the primary
	dispatch table.
	(Register_Primitive): Do not register primitives of interfaces that
	are parents of the type.
	* sem_ch13.adb (Analyze_Freeze_Entity): Add documentation.
	* exp_cg.adb (Write_Type_Info): When displaying overriding of interface
	primitives skip primitives of interfaces that are parents of the type.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Eval_Attribute): If the prefix is an array, the
	attribute cannot be constant-folded if an index type is a formal type,
	or is derived from one.
	* checks.adb (Determine_Range): ditto.

2010-06-23  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi, gnatxref.adb: Add support for --ext switch.

2010-06-23  Bob Duff  <duff@adacore.com>

	* g-pehage.ads, g-pehage.adb (Put): Fix off-by-one bug.
	(Insert): Disallow nul characters.
	(misc output routines): Assert no nul characters.

2010-06-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb: Use predefined unsigned type in all cases.

2010-06-23  Bob Duff  <duff@adacore.com>

	* s-rannum.adb (Reset): Avoid overflow in calculation of Initiator.
	* g-pehage.ads: Minor comment fixes.
	* g-pehage.adb: Minor: Add some additional debugging printouts under
	Verbose flag.

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* binde.adb (Better_Choice): Always prefer Pure/Preelab.
	(Worse_Choice): Always prefer Pure/Preelab.

2010-06-23  Vincent Celier  <celier@adacore.com>

	* a-reatim.adb: Call System.OS_Primitives.Initialize during elaboration

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Properly handle
	checking returns in generic case.
	(Check_Missing_Return): New procedure.

2010-06-23  Robert Dewar  <dewar@adacore.com>

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

2010-06-23  Javier Miranda  <miranda@adacore.com>

	* frontend.adb (Frontend): Add call to initialize the new package
	SCIL_LL.
	* exp_ch7.adb (Wrap_Transient_Expression): Remove call to
	Adjust_SCIL_Node.
	(Wrap_Transient_Statement): Remove call to Adjust_SCIL_Node.
	* sem_ch5.adb (Analyze_Iteration_Scheme.Process_Bounds): Remove call to
	Adjust_SCIL_Node.
	* exp_util.adb (Insert_Actions): Remove code for
	N_SCIL_Dispatch_Table_Object_Init and N_SCIL_Tag_Init nodes.
	(Remove_Side_Effects): Remove calls to Adjust_SCIL_Node.
	* sinfo.adb (SCIL_Entity, SCIL_Tag_Value): Remove checks on
	N_SCIL_Tag_Init and N_SCIL_Dispatch_Table_Object_Init in the assertion.
	(SCIL_Related_Node, Set_SCIL_Related_Node): Removed.
	* sinfo.ads (SCIL_Related_Node): Field removed.
	(N_SCIL_Dispatch_Table_Object_Init): Node removed.
	(N_SCIL_Tag_Init): Node removed.
	* sem_scil.ads, sem_scil.adb (Adjust_SCIL_Node): Removed.
	(Check_SCIL_Node): New implementation.
	(Find_SCIL_Node): Removed.
	* sem.adb (Analyze): Remove management of
	N_SCIL_Dispatch_Table_Object_Init and N_SCIL_Tag_Init nodes.
	* sem_util.adb (Insert_Explicit_Dereference): Remove call to
	Adjust_SCIL_Node.
	* exp_ch4.adb (Expand_N_In): Code cleanup: remove call to
	Set_SCIL_Related_Node and avoid adding the SCIL node before the
	referenced node using Insert_Action because this is not longer
	required.
	(Expand_Short_Circuit_Operator): Remove call to SCIL node.
	* exp_ch6.adb (Expand_Call): Remove call to Adjust_SCIL_Node.
	* sem_ch4.adb (Analyze_Type_Conversion): Remove call to
	Adjust_SCIL_Node.
	* exp_disp.adb (Expand_Dispatching_Call): Minor code reorganization
	because we no longer require to generate the SCIL node before the call.
	(Make_DT): Remove generation of SCI_Dispatch_Table_Object_Init node.
	Remove calls to Set_SCIL_Related_Node and avoid adding the SCIL
	nodes before the referenced node using Insert_Action because this
	is not longer required.
	* atree.adb (Allocate_Initialize_Node, Replace, Rewrite): Add call to
	update the SCIL_Node field.
	* sprint.adb (Sprint_Node_Actual): Remove code for
	N_SCIL_Dispatch_Table_Object_Init and N_SCIL_Tag_Init nodes.
	* treepr.adb (Print_Node): Print the SCIL node field (if available).
	* exp_ch3.adb (Build_Init_Procedure): Remove generation of
	SCIL_Tag_Init nodes.
	* scil_ll.ads, scil_ll.adb: New files.
	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Update
	dependencies.

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb: Minor reformatting.

2010-06-23  Doug Rupp  <rupp@adacore.com>

	* bindusg.adb (Display): Write -Hnn line.
	* bindgen.adb (Gen_Adainit_Ada): Write Heap_Size to binder file as 
	necessary.
	* init.c (__gl_heap_size): Rename from __gl_no_malloc_64 and change
	valid values to 32 and 64.
	(GNAT$NO_MALLOC_64): Recognize TRUE, 1, FALSE, and 0 in addition to
	ENABLE, DISABLE as valid settings.
	* switch-b.adb (Scan_Binder_Switches): Process -Hnn switch.
	* opt.ads (Heap_Size): New global variable.
	* gcc-interface/utils2.c (maybe_wrap_malloc): Remove mostly redundant 
	TARGET_MALLOC64 check. Fix comment.

2010-06-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb, exp_ch4.adb, s-rannum.ads, sem.adb, sem_ch12.adb: Minor
	reformatting.  Add comments.
	* errout.adb (Finalize): Properly adjust warning count when deleting
	continuations.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Finalize): Set Prev pointers.
	(Finalize): Delete continuations for deletion by warnings off(str).
	* erroutc.ads: Add Prev pointer to error message structure.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* sem.adb (Do_Unit_And_Dependents): If the spec of the main unit is a
	child unit, examine context of parent units to locate instantiated
	generics whose bodies may be needed. 
	* sem_ch12.adb: (Mark_Context): if the enclosing unit does not have a
	with_clause for the instantiated generic, examine the context of its
	parents, to set Withed_Body flag, so that it can be visited earlier.
	* exp_ch4.adb (Expand_N_Op_Not): If this is a VMS operator applied to
	an unsigned type, use a type of the proper size for the intermediate
	value, to prevent alignment problems on unchecked conversion.

2010-06-22  Geert Bosch  <bosch@adacore.com>

	* s-rannum.ads Change Generator type to be self-referential to allow
	Random to update its argument. Use "in" mode for the generator in the
	Reset procedures to allow them to be called from the Ada.Numerics
	packages without tricks.
	* s-rannum.adb: Use the self-referencing argument to get write access
	to the internal state of the random generator.
	* a-nudira.ads: Make Generator a derived type of
	System.Random_Numbers.Generator.
	* a-nudira.adb: Remove use of 'Unrestricted_Access.
	Put subprograms in alpha order and add headers.
	* g-mbdira.ads: Change Generator type to be self-referential.
	* g-mbdira.adb: Remove use of 'Unrestricted_Access.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* freeze.adb: Minor reformatting
	Minor code reorganization (use Nkind_In and Ekind_In).

2010-06-22  Bob Duff  <duff@adacore.com>

	* gnat1drv.adb (Gnat1drv): Remove the messages that recommend using 
	-gnatc when a file is compiled that we cannot generate code for, not
	helpful and confusing.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* switch-m.adb (Normalize_Compiler_Switches): Process correctly
	switches -gnatknn.

2010-06-22  Paul Hilfinger  <hilfinger@adacore.com>

	* s-rannum.adb: Replace constants with commented symbols.
	* s-rannum.ads: Explain significance of the initial value of the data
	structure.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* a-ngcoty.adb: Clarify comment.

2010-06-22  Gary Dismukes  <dismukes@adacore.com>

	* exp_pakd.adb (Expand_Bit_Packed_Element_Set): Return without
	expansion for indexing packed arrays with small power-of-2 component
	sizes when the target is AAMP.
	(Expand_Packed_Element_Reference): Return without expansion for
	indexing packed arrays with small power-of-2 component sizes when the
	target is AAMP.

2010-06-22  Geert Bosch  <bosch@adacore.com>

	* exp_ch4.adb (Expand_N_In): Do not substitute a valid check for X in
	Float'Range.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* g-mbdira.adb, g-mbflra.adb, a-nuflra.adb, a-nudira.adb: Minor comment
	updates.

2010-06-22  Doug Rupp  <rupp@adacore.com>

	* system-vms.ads, system-vms-zcx.ads: Remove old unused VMS system
	packages.
	* system-vms_64.ads, system-vms-ia64.ads: Minor reformatting.
	(pragma Ident): Add a default ident string in the private part.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* cstand.adb: Minor reformatting.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Build_And_Analyze_Renamed_Body): For expansion purposes,
	recognize the Shift and Rotation intrinsics that are known to the
	compiler but have no interface name.

2010-06-22  Geert Bosch  <bosch@adacore.com>

	* a-ngcoty.adb ("*"): Rewrite complex multiplication to use proper
	scaling in case of overflow or NaN results.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* cstand.adb: Complete previous change.
	* g-dirope.ads: Add comment.
	* s-stchop.adb, sfn_scan.adb: Minor reformatting.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* cstand.adb: Add tree nodes for pragma Pack on string types.

2010-06-22  Javier Miranda  <miranda@adacore.com>

	* einfo.ads, einfo.adb (Last_Formal): New synthesized attribute.
	* exp_util.adb (Find_Prim_Op): Use new attribute to locate the last
	formal of a primitive.
	* exp_disp.adb (Is_Predefined_Dispatching_Operation,
	 Is_Predefined_Dispatching_Alias): Use new attribute to locate the last
	formal of a primitive.
	* exp_cg.adb (Is_Predefined_Dispatching_Operation): Use new attribute
	to obtain the last formal of a primitive.

2010-06-22  Geert Bosch  <bosch@adacore.com>

	* sysdep.c, init.c, adaint.c, cstreams.c: Remove conditional code
	depending on __EMX__ or MSDOS being defined.
	* i-cstrea.ads, gnat_rm.texi: Remove mentions of OS/2, DOS and Xenix.
	* a-excpol-abort.adb: Update comment indicating users of the file.
	* xref_lib.adb, sfn_scan.adb: Remove mention of OS/2, replace NT by
	Windows.
	* env.c: Remove empty conditional for MSDOS.
	* s-stchop.adb, g-dirope.ads, s-fileio.adb, osint.ads: Remove mention
	of OS/2 in comment.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* s-rannum.adb: Minor reformatting.

2010-06-22  Javier Miranda  <miranda@adacore.com>

	* sem_aux.adb, sem_aux.ads, sem_util.adb, sem_util.ads, sem_elim.adb,
	exp_cg.adb: Minor code reorganization: Move routine Ultimate_Alias from
	package Sem_Util to package Sem_Aux.

2010-06-22  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_Secondary_DT, Make_DT): Minor code cleanup:
	remove useless restriction on imported routines when building the
	dispatch tables.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* cstand.adb (Create_Standard): Set Has_Pragma_Pack for standard string
	types.

2010-06-22  Javier Miranda  <miranda@adacore.com>

	* sem_ch4.adb (Collect_Generic_Type_Ops): Protect code that handles
	generic subprogram declarations to ensure proper context. Add missing
	support for generic actuals.
	(Try_Primitive_Operation): Add missing support for concurrent types
	that have no Corresponding_Record_Type. Required to diagnose errors
	compiling
	generics or when compiling with no code generation (-gnatc).
	* sem_ch9.adb (Analyze_Protected_Type, Analyze_Task_Type): Do not build
	the corresponding record type.
	* sem_disp.ads, sem_disp.adb (Check_Dispatching_Operation): Complete
	documentation. Do minimum decoration when processing a primitive of a
	concurrent tagged type that covers interfaces. Required to diagnose
	errors in the Object.Operation notation compiling generics or under
	-gnatc.
	* exp_ch9.ads, exp_ch9.adb (Build_Corresponding_Record): Add missing
	propagation of attribute Interface_List to the corresponding record.
	(Expand_N_Task_Type_Declaration): Code cleanup.
	(Expand_N_Protected_Type_Declaration): Code cleanup.

2010-06-22  Matthew Heaney  <heaney@adacore.com>

	* a-convec.adb, a-coinve.adb: Removed 64-bit types Int and UInt.

2010-06-22  Paul Hilfinger  <hilfinger@adacore.com>

	* s-rannum.adb (Random_Float_Template): Replace with unbiased version
	that is able to produce all representable floating-point numbers in the
	unit interval. Remove template parameter Shift_Right, no longer used.
	* gnat_rm.texi: Document the period of the pseudo-random number
	generator under the description of its algorithm.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* exp_aggr.adb (Rewrite_Discriminant): Fix predicate used to identify
	reference to discriminant (can be an expanded name as well as an
	identifier).

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb: Clarify comment.

2010-06-22  Geert Bosch  <bosch@adacore.com>

	* exp_imgv.adb (Expand_Image_Attribute): Treat ordinary fixed point
	with decimal small as decimal types, avoiding FP arithmetic.
	(Has_Decimal_Small): New function.
	* einfo.ads, einfo.adb (Aft_Value): New synthesized attributed for
	fixed point types.
	* sem_attr.adb (Eval_Attribute): Remove Aft_Value function and update
	callers to call the new function in Einfo that takes the entity as
	parameter.

2010-06-22  Robert Dewar  <dewar@adacore.com>

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

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* sem_elab.adb: Minor reformatting.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* gnatsym.adb: Put the object files in the table in increasing
	aphabetical order of base names.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Set_Entity_Or_Discriminal): New procedure used by
	Find_Direct_Name and Find_Expanded_Name, to replace a discriminant with
	the corresponding discriminal within a record declaration.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* exp_aggr.adb (Rewrite_Discriminant): Rewriting must occur only for an
	expression referring to a discriminal of the type of the aggregate (not
	a discriminal of some other unrelated type), and the prefix in the
	generated selected component must come from Lhs, not Obj.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): Fix predicate determining
	when to freeze the parent type.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* s-rannum.adb, a-nudira.adb, types.ads, freeze.adb, sem_aggr.adb,
	exp_aggr.adb: Minor reformatting.
	* gnat_rm.texi: Document GNAT.MBBS_Discrete_Random and
	GNAT.MBSS_Float_Random.
	* g-mbdira.adb, g-mbflra.adb, g-mbdira.ads, g-mbflra.ads: Fix header.

2010-06-22  Paul Hilfinger  <hilfinger@adacore.com>

	* a-nudira.adb, a-nudira.ads, a-nuflra.adb, a-nuflra.ads,
	gnat_rm.texi, impunit.adb, Makefile.rtl, s-rannum.adb
	(Random_Float_Template, Random): New method of creating
	uniform floating-point variables that allow the creation of all machine
	values in [0 .. 1).  

	* g-mbdira.adb, g-mbflra.adb, g-mbdira.ads, g-mbflra.ads: New file.

2010-06-22  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch5.adb (Analyze_Assignment): Revise test for illegal assignment
	to abstract targets to check that the type is tagged and comes from
	source, rather than only testing for targets of interface types. Remove
	premature return.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* vms_data.ads: Modify the declarations of qualifiers
	/UNCHECKED_SHARED_LIB_IMPORTS to allow the generation of gnat.hlp
	without error.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Function): Predicate is false if
	expansion is disabled.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* makeusg.adb: Minor reformatting.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* types.ads: (Dint): Removed, no longer used anywhere.
	* uintp.adb (UI_From_CC): Use UI_From_Int, range is sufficient.
	(UI_Mul): Avoid use of UI_From_Dint.
	(UI_From_Dint): Removed, not used.
	* uintp.ads (UI_From_Dint): Removed, not used.
	(Uint_Min/Max_Simple_Mul): New constants.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* clean.adb (Parse_Cmd_Line): Recognize switch
	--unchecked-shared-lib-imports.
	(Usage): Add line for switch --unchecked-shared-lib-imports
	* makeusg.adb: Add line for switch --unchecked-shared-lib-imports
	* makeutl.ads: (Unchecked_Shared_Lib_Imports): New constant string
	moved from GPR_Util.
	* switch-m.adb (Scan_Make_Switches): Recognize switch
	--unchecked-shared-lib-imports.
	* vms_data.ads: Add VMS qualifiers /UNCHECKED_SHARED_LIB_IMPORTS.
	* gnat_ugn.texi: Add documentation for new switch
	--unchecked-shared-lib-imports.  Add also documentation for --subdirs.

2010-06-22  Javier Miranda  <miranda@adacore.com>

	* sem_prag.adb, sem_util.adb, sem_util.ads, sem_attr.adb, exp_ch6.adb,
	exp_disp.adb, sem_eval.adb, exp_dist.adb lib-xref.adb: Code cleanup,
	this patch replaces duplication of code that traverses the chain of
	aliased primitives by a call to routine Ultimate_Alias that
	provides this functionality.

2010-06-22  Arnaud Charlet  <charlet@adacore.com>

	* fmap.adb, opt.ads, osint.adb, osint.ads, output.ads, scng.adb,
	sinput-c.adb, switch-m.ads, tree_io.ads: Use simpler form of
	Warnings Off/On.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* einfo.ads: Minor reformatting.

2010-06-22  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Thunk): Do not generate thunk of
	eliminated primitives.
	(Make_DT): Avoid referencing eliminated primitives.
	(Register_Primitive): Do not register eliminated primitives in the
	dispatch table. Required to add this functionality when the program is
	compiled without static dispatch tables (-gnatd.t)

2010-06-22  Emmanuel Briot  <briot@adacore.com>

	* fmap.adb, scng.adb, switch-m.ads, sinput-c.adb, opt.ads, output.ads,
	tree_io.ads, osint.adb, osint.ads: Use configuration pragmas to prevent
	warnings on use of internal GNAT units.

2010-06-22  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-vxworks.adb (Set_Priority): Update comments.

2010-06-22  Paul Hilfinger  <hilfinger@adacore.com>

	* s-rannum.adb: Make stylistic change to remove mystery constant in
	Extract_Value.  Image_Numeral_Length: new symbolic constant.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads, einfo.adb: Make Is_Protected_Interface,
	Is_Synchronized_Interface, Is_Task_Interface into computable
	predicates, to free three flags in entity nodes.
	* sem_ch3.adb: Remove setting of these flags.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* uintp.adb, osint.adb, prj-conf.adb, prj-part.adb, prj.adb: Minor
	reformatting.
	* s-taprop-vxworks.adb: Add comment for Set_Priority.
	* impunit.adb (Map_Array): Add entries for s-htable.ads and s-crc32.ads
	* projects.texi: Move @cindex to the left margin, since otherwise we
	are missing entries in the index.

2010-06-22  Emmanuel Briot  <briot@adacore.com>

	* prj-part.adb, prj.adb, tempdir.ads, makeutl.adb: Use
	packages from the GNAT hierarchy instead of System when possible.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-22  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-vxworks.adb (Set_Priority): Remove the code that was
	previously in place to reorder the ready queue when a task drops its
	priority due to the loss of inherited priority.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* projects.texi: Minor spelling error fixes.
	Minor reformatting.

2010-06-22  Emmanuel Briot  <briot@adacore.com>

	* prj-part.adb, prj-ext.adb, prj.adb, makeutl.adb, prj-conf.adb: Remove
	warnings for some with clauses.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Unwind_Internal_Type): Improve handling of First_Subtype
	test to catch more cases where first subtype is the results we want.
	* sem_res.adb (Make_Call_Into_Operator): Don't go to First_Subtype in
	error case, since Errout will now handle this correctly.
	* gcc-interface/Make-lang.in: Add Sem_Aux to list of GNATBIND objects.
	Update dependencies.

2010-06-22  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Set Related_Node properly
	when calling Make_Temporary.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Subprogram_Declaration): An anonymous access to
	subprogram can be associated with an entry body.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* scos.ads: Add note on membership test handling.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* projects.texi: Minor spelling fixes.
	Minor reformatting.

2010-06-22  Paul Hilfinger  <hilfinger@adacore.com>

	* s-rannum.adb: Correct off-by-one error in Extract_Value.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* mlib-prj.adb (Display): In non verbose mode, truncate after fourth
	argument.
	* mlib-utl.adb (Gcc): In non verbose mode, truncate the display of the
	gcc command if it is too long.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Set_Msg_Node): Fix incorrect reference to node.

2010-06-22  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch6.adb (Expand_Actuals): Use Actual as the related node when
	calling Make_Temporary.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb, sem_aux.adb, errout.adb: Minor reformatting.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb: Additional special-case for VMS.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* gnatsym.adb: Minor comment fix.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Process_Naming_Scheme): Initialize Lib_Data_Table.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* par-ch4.adb (P_Name): Recognize 'Mod attribute in Ada 95 mode
	* sem_attr.adb (Attribute_05): Add Name_Mod so that 'Mod recognized in
	Ada 95 mode as an implementation defined attribute.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* bindusg.adb (Display): Update line for -R
	* switch-b.adb (Scan_Binder_Switches): Allow generation of the binder
	generated files when -R is used.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Lib_Data_Table): New table.
	(Check_Library_Attributes): Check if the same library name is used in
	two different projects that do not extend each other.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* lib-writ.ads, errout.adb, einfo.adb, einfo.ads: Minor reformatting.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* adaint.c (__gnat_locate_regular_file): If a directory in the path is
	empty, make it the current working directory.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): When deriving a tagged
	private type with discriminants, make sure the parent type is frozen.

2010-06-22  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Bit>: Deal
	with packed array references specially.
	* exp_ch4.adb (Expand_N_Indexed_Component): Do not convert a reference
	to a component of a bit packed array if it is the prefix of 'Bit.
	* exp_pakd.ads (Expand_Packed_Bit_Reference): Declare.
	* exp_pakd.adb (Expand_Packed_Bit_Reference): New procedure.  Expand a
	'Bit reference, where the prefix involves a packed array reference.
	(Get_Base_And_Bit_Offset): New helper, extracted from...
	(Expand_Packed_Address_Reference): ...here.  Call above procedure to
	get the outer object and offset expression.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* exp_attr.adb, lib-writ.ads, bindgen.adb: Minor reformatting.
	* einfo.adb (Related_Expression, Set_Related_Expression): Add
	assertions.

2010-06-22  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Add_Internal_Interface_Entities): Minor code
	reorganization to properly check if the operation has been inherited as
	an abstract operation.

2010-06-22  Ed Falis  <falis@adacore.com>

	* s-osinte-vxworks.ads: Complete previous change.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Add comment.
	* projects.texi, gnat_ugn.texi: Remove macro.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: Remove project level attribute Main_Language.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* switch-b.adb, osint-b.adb: Minor reformatting.

2010-06-22  Pascal Obry  <obry@adacore.com>

	* g-socthi-mingw.adb (C_Sendmsg): Do not attempt to send data from a
	vector if previous send was not fully successful. If only part of
	the vector data was sent, we exit the loop.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb (Make_Call_Into_Operator): Use First_Subtype for better
	error reporting with generic types.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* bindgen.adb, bindusg.adb, gnatbind.adb, gnat_ugn.texi, opt.ads,
	osint-b.adb, osint-b.ads, output.adb, output.ads, switch-b.adb,
	vms_data.ads: Add a new command line switch -A to gnatbind to output
	the list of all ALI files for the partition.

2010-06-22  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-vxworks.ads: Fix casing.
	* s-vxwext-kernel.ads, s-vxwext-rtp.ads: Complete previous
	change: Interfaces.C does not provide a long_long type.

2010-06-22  Emmanuel Briot  <briot@adacore.com>

	* gnat_ugn.texi, projects.texi: Preprocess projects.texi for VMS and
	native user's guide, since this document contains the two versions.
	* gcc-interface/Make-lang.in: Update doc dependencies.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting.  Minor code reorganization.

2010-06-22  Emmanuel Briot  <briot@adacore.com>

	* gnat_ugn.texi, projects.texi: Remove toplevel menu, since we should
	not build this file on its own (only through gnat_ugn.texi).
	Remove macro definitions and insert simpler version in gnat_ugn.texi.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* ali-util.ads: Minor comment update.
	* g-socthi-mingw.adb: Minor reformatting.

2010-06-22  Ed Falis  <falis@adacore.com>

	* s-osinte-vxworks.ads: Take sigset_t definition of System.VxWorks.Ext.
	* s-vxwext.ads, s-vxwext-kernel.ads, s-vxwext-rtp.ads: Define sigset_t
	for specific versions of VxWorks.

2010-06-22  Emmanuel Briot  <briot@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi, projects.texi: Remove all project files
	related sections from user's guide and reference manual, since they
	have now been merged together into a separate document (projects.texi).
	This removes a lot of duplication where attributes where described
	in several places.
	The grammar for the project files is now in each of the sections
	(packages,expressions,...) instead of being duplicates in two other
	sections (one in the user's guide that contained the full grammar,
	and various sections in the rm that contained extracts of the same
	grammar).
	Added the full list of all supported attributes, since existing lists
	were incomplete
	Rename "associative array" into "indexed attribute"
	Remove sections that were duplicates ("External References in
	Project Files" and "External Values", and "Project Extensions"
	for instance). The list of valid packages in project files is now in
	a single place.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Add_Internal_Interface_Entities): If
	Find_Primitive_Covering_Interface does not find the operation, it may
	be because of a name conflict between the inherited operation and a
	local non-overloadable name. In that case look for the operation among
	the primitive operations of the type. This search must succeed
	regardless of visibility.

2010-06-22  Pascal Obry  <obry@adacore.com>

	* g-socthi-mingw.adb: Properly honor MSG_WAITALL in recvmsg.
	(C_Recvmsg): Propely honor the MSG_WAITALL flag in Windows
	recvmsg emulation.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb (Analyze_Conditional_Expression): Defend against
	malformed tree.
	* sprint.adb (Sprint_Node_Actual, case N_Conditional_Expression):
	Ditto.

2010-06-22  Arnaud Charlet  <charlet@adacore.com>

	* s-intman-vxworks.ads: Code clean up.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb (Resolve_Slice): When the prefix is an explicit
	dereference, construct actual subtype of designated object to generate
	proper bounds checks.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* ali-util.adb, ali-util.ads, gnatbind.adb (Read_ALI): Rename to
	Read_Withed_ALIs, which is more descriptive.

2010-06-22  Pascal Obry  <obry@adacore.com>

	* g-sothco.ads: Minor reformatting.
	* g-socthi-mingw.adb: Remove part of work on the C_Recvmsg and
	C_Sendmsg implementation.
	(C_Sendmsg): Do not use lock (not needed).
	(C_Recvmsg): Likewise and also do not wait for incoming data.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* uintp.adb: Fix scope error in operator call.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Executable_Prefix_Path): on VMS, return "/gnu/".
	* prj-conf.adb (Get_Or_Create_Configuration_File): On VMS, if
	autoconfiguration is needed, fail indicating that no config project
	file can be found, as there is no autoconfiguration on VMS.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Make_Call_Into_Operator): Diagnose an incorrect scope
	for an operator in a functional notation, when operands are universal.

2010-06-22  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb (Resolve_Record_Aggregate): Do style check on component
	name.
	* sem_ch10.adb (Analyze_Subunit): Do style check on parent unit name.
	* sem_ch8.adb (Find_Direct_Name): For non-overloadable entities, do
	style check.
	* sem_res.adb (Resolve_Entity_Name): Do style check for enumeration
	literals.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* make.adb (Scan_Make_Arg): No longer pass -nostdlib to the compiler as
	it has no effect. Always pass -nostdlib to gnatlink, even on VMS.

2010-06-22  Pascal Obry  <obry@adacore.com>

	* g-socthi-mingw.adb: Fix implementation of the vectored sockets on
	Windows.
	(C_Recvmsg): Make sure the routine is atomic. Also fully
	fill vectors in the proper order.
	(C_Sendmsg): Make sure the routine is atomic.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb: Update comment.
	* sem_res.adb: Minor code reorganization (use Ekind_In).

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Add_Implicit_Operator): If the context of the expanded
	name is a call, use the number of actuals to determine whether this is
	a binary or unary operator, rather than relying on later information
	to resolve the overload.

2010-06-22  Robert Dewar  <dewar@adacore.com>

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

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_disp.adb: Minor code fixes.
	* sem_eval.adb: Minor reformatting.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* make.adb (Scan_Make_Arg): When invoked with -nostdlib, pass -nostdlib
	to gnatlink, except on Open VMS.
	* osint.adb (Add_Default_Search_Dirs): Do not suppress the default
	object directories if -nostdlib is used.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb (Is_Delegate): Put in proper alpha order.
	* sem_eval.adb: Minor reformatting.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* g-expect-vms.adb, sem_res.adb: Minor reformatting.
	* exp_aggr.adb: Minor comment changes and reformatting.
	* sem_eval.adb (Find_Universal_Operator_Type): Put in proper alpha
	order.
	* sem_util.ads: Add some missing pragma Inline's.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb (Build_Actual_Subtype): Record original expression in
	Related_Expression attribute of the constructed subtype.
	* einfo.adb, einfo.ads (Underlying_View): Move to Node28 to free up
	Node24 on types for...
	(Related_Expression): Make attribute available on types as well.

2010-06-22  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb (Find_Interface_ADT): Retrieve Designated_Type instead
	of Directly_Designated_Type when the type argument is an access type.
	(Find_Interface_Tag): Retrieve Designated_Type instead of
	Directly_Designated_Type when the type argument is an access type.
	(Has_Controlled_Coextensions): Retrieve Designated_Type instead of
	Directly_Designated_Type of each access discriminant.
	* sem_res.adb (Resolve_Type_Conversion): Retrieve Designated_Type
	instead of Directly_Designated_Type when the operand and target types
	are access types.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* exp_aggr.adb (Flatten): Return False if one choice is statically
	known to be out of bounds.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Call): If the call is rewritten as an indexed of
	a parameterless function call, preserve parentheses of original
	expression, for proper handling by pretty printer.
	* sem_attr.adb (Analyze_Attribute, case 'Old): Add guard to Process
	procedure, to handle quietly identifiers that have no entity names.
	* exp_util.adb (Get_Current_Value_Condition): If the parent of an
	elsif_part is missing, it has been rewritten as a nested if, and there
	is no useful information on the current value of the variable.

2010-06-22  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb (Build_Discriminal): Set default scopes for newly created
	discriminals to the current scope.
	* sem_util.adb (Find_Body_Discriminal): Remove setting of discriminal's
	scope, which could overwrite a different already set value.

2010-06-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Valid_Conversion): If expression is a predefined
	operator, use sloc of type of interpretation to improve error message
	when operand is of some derived type.
	* sem_eval.adb (Is_Mixed_Mode_Operand): New function, use it.

2010-06-22  Emmanuel Briot  <briot@adacore.com>

	* g-expect-vms.adb (Expect_Internal): No longer raises an exception, so
	that it can set out parameters as well. When a process has died, reset
	its Input_Fd to Invalid_Fd, so that when using multiple processes we
	can find out which process has died.

2010-06-22  Thomas Quinot  <quinot@adacore.com>

	* sem_eval.adb (Find_Universal_Operator_Type): New
	subprogram to identify the operand type of an operator on universal
	operands, when an explicit scope indication is present. Diagnose the
	case where such a call is ambiguous.
	(Eval_Arithmetic_Op, Eval_Relational_Op, Eval_Unary_Op):
	Use the above to identify the operand type so it can be properly
	frozen.
	* sem_res.adb (Make_Call_Into_Operator): Remove bogus freeze of operand
	type, done in an arbitrary, possibly incorrect type (the presence of
	some numeric type in the scope is checked for legality, but when more
	than one such type is in the scope, we just pick a random one, not
	necessarily the expected one).
	* sem_utils.ads, sem_utils.adb (Is_Universal_Numeric_Type): New utility
	subprogram.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb: Minor reformatting.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Conditional_Expression): Use
	Expression_With_Actions to clean up the code generated when folding
	constant expressions.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* g-expect-vms.adb: Add new subprograms Free, First_Dead_Process and
	Has_Process.

2010-06-22  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Find_Sources): When a source from a multi-unit file is
	found, check if it's path has aready been found, whatever its index.

2010-06-22  Robert Dewar  <dewar@adacore.com>

	* atree.adb, gnatbind.adb: Minor reformatting.
	Minor code reorganization.

2010-06-21  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Conditional_Expression): Fold if condition
	known at compile time.

2010-06-21  Gary Dismukes  <dismukes@adacore.com>

	* atree.adb: Fix comment typo.

2010-06-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_eval.adb (Test_Ambiguous_Operator): New procedure to check
	whether a universal arithmetic expression in a conversion, which is
	rewritten from a function call with an expanded name, is ambiguous.

2010-06-21  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Name_Location): New Boolean component Listed, to record
	source files in specified list of sources.
	(Check_Package_Naming): Remove out parameters Bodies and Specs, as they
	are never used.
	(Add_Source): Set the Location of the new source
	(Process_Exceptions_File_Based): Call Add_Source with the Location
	(Get_Sources_From_File): If an exception is found, set its Listed to
	True
	(Find_Sources): When Source_Files is specified, if an exception is
	found, set its Listed to True. Remove any exception that is not in a
	specified list of sources.
	* prj.ads (Source_Data): New component Location

2010-06-21  Vincent Celier  <celier@adacore.com>

	* gnatbind.adb (Closure_Sources): Global table, moved from block.

2010-06-21  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Minor reformatting.
	* atree.adb: New debugging hook "rr" for node rewrites.

2010-06-21  Robert Dewar  <dewar@adacore.com>

	* g-expect.ads, g-expect.adb: Minor reformatting.

2010-06-21  Emmanuel Briot  <briot@adacore.com>

	* s-regpat.adb (Next_Pointer_Bytes): New named constant. Code clean up.

2010-06-21  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-21  Thomas Quinot  <quinot@adacore.com>

	* bindgen.ads: Update comments.

2010-06-21  Vincent Celier  <celier@adacore.com>

	* gnatbind.adb: Suppress dupicates when listing the sources in the
	closure (switch -R).

2010-06-21  Emmanuel Briot  <briot@adacore.com>

	* s-regpat.adb (Link_Tail): Fix error when size of the pattern matcher
	is too small.

2010-06-21  Emmanuel Briot  <briot@adacore.com>

	* g-expect.adb, g-expect.ads (First_Dead_Process, Free, Has_Process):
	New subprograms.
	(Expect_Internal): No longer raises an exception, so that it can set
	out parameters as well. When a process has died, reset its Input_Fd
	to Invalid_Fd, so that when using multiple processes we can find out
	which process has died.

2010-06-21  Robert Dewar  <dewar@adacore.com>

	* s-regpat.adb, s-tpoben.adb, sem_attr.adb, sem_util.adb, sem_util.ads,
	checks.adb, sem_res.adb: Minor reformatting. Add comments.

2010-06-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (New_Overloaded_Entity): If the new entity is a
	rederivation associated with a full declaration in a private part, and
	there is a partial view that derives the same parent subprogram, the
	new entity does not become visible. This check must be applied to
	interface operations as well.

2010-06-21  Thomas Quinot  <quinot@adacore.com>

	* checks.adb: Add comments.
	* prj-nmsc.adb: Minor reformatting.

2010-06-21  Thomas Quinot  <quinot@adacore.com>

	* sem_ch9.adb, checks.adb, sem_util.adb, sem_util.ads, sem_res.adb,
	sem_attr.adb (Get_E_First_Or_Last): Use attribute references on E to
	extract bounds, to ensure that we get the proper captured values,
	rather than an expression that may have changed value since the point
	where the subtype was elaborated.
	(Find_Body_Discriminal): New utility subprogram to share code
	between...
	(Eval_Attribute): For the case of a subtype bound that references a
	discriminant of the current concurrent type, insert appropriate
	discriminal reference.
	(Resolve_Entry.Actual_Index_Type.Actual_Discriminant_Ref): For a
	requeue to an entry in a family in the current task, use corresponding
	body discriminal. 
	(Analyze_Accept_Statement): Rely on expansion of attribute references
	to insert proper discriminal references in range check for entry in
	family.

2010-06-21  Emmanuel Briot  <briot@adacore.com>

	* s-regpat.adb (Compile): Fix handling of big patterns.

2010-06-21  Robert Dewar  <dewar@adacore.com>

	* a-tifiio.adb: Minor reformatting.

2010-06-21  Pascal Obry  <obry@adacore.com>

	* prj-nmsc.adb (Search_Directories): Use the non-translated directory
	path to open it.

2010-06-21  Javier Miranda  <miranda@adacore.com>

	* exp_cg.adb (Write_Call_Info): Fill the component sourcename using the
	external name.

2010-06-21  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_Concatenate): If an object declaration is created
	to hold the result, indicate that the target of the declaration does
	not need an initialization, to prevent spurious errors when
	Initialize_Scalars is enabled.

2010-06-21  Ed Schonberg  <schonberg@adacore.com>

	* a-tifiio.adb (Put): In the procedure that performs I/O on a String,
	Fore is not bound by line length. The Fore parameter of the internal
	procedure that performs the operation is an integer.

2010-06-21  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb, checks.adb: Minor reformatting.

2010-06-21  Emmanuel Briot  <briot@adacore.com>

	* s-regpat.adb (Next_Instruction, Get_Next_Offset): Removed, merged
	into Get_Next.
	(Insert_Operator_Before): New subprogram, avoids duplicated code
	(Compile): Avoid doing two compilations when the pattern matcher ends
	up being small.

2010-06-21  Emmanuel Briot  <briot@adacore.com>

	* s-regpat.adb: Improve debug traces
	(Dump): Change output format to keep it smaller.

2010-06-21  Javier Miranda  <miranda@adacore.com>

	* exp_cg.adb (Generate_CG_Output): Disable redirection of standard
	output to the output file when this routine completes its work.

2010-06-20  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Use while instead of
	for loop.  Call build_constructor_from_list directly in the CICO case.

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Build_And_Analyze_Renamed_Body): If the renaming
	declaration appears in the same unit and ealier than the renamed
	entity, retain generated body to prevent order-of-elaboration issues in
	gigi.

2010-06-18  Arnaud Charlet  <charlet@adacore.com>

	* s-tpoben.adb: Update comments.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Minor comment change.

2010-06-18  Javier Miranda  <miranda@adacore.com>

	* exp_cg.adb: Code clean up.
	* debug.adb: Complete documentation of switch -gnatd.Z.
	* gcc-interface/misc.c (callgraph_info_file): Declare.

2010-06-18  Javier Miranda  <miranda@adacore.com>

	* exp_cg.adb (Homonym_Suffix_Length): Minor code reorganization.

2010-06-18  Thomas Quinot  <quinot@adacore.com>

	* sprint.ads: Minor reformatting.
	* output.ads: Update obsolete comment.

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Build_And_Analyze_Renamed_Body): if the renamed entity is
	an external intrinsic operation (e.g. a GCC numeric function) indicate
	that the renaming entity has the same characteristics, so a call to it
	is properly expanded.

2010-06-18  Javier Miranda  <miranda@adacore.com>

	* exp_cg.adb, exp_cg.ads, exp_disp.adb, gnat1drv.adb: Add initial
	support for dispatch table/callgraph info generation.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb: Minor reformatting.
	* gnatname.adb: Add comment.

2010-06-18  Vincent Celier  <celier@adacore.com>

	* gnatname.adb (Scan_Args): When --and is used, make sure that the
	dynamic tables in the newly allocated Argument_Data are properly
	initialized.

2010-06-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat1drv.adb: Fix comment.

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Inlined_Call): If the inlined subprogram is a
	renaming, re-expand the call with the renamed subprogram if that one
	is marked inlined as well.

2010-06-18  Gary Dismukes  <dismukes@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Enable
	Use_Expression_With_Actions for AAMP and VM targets.

2010-06-18  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Process_Linker): Recognize response file format GCC.

2010-06-18  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb: Minor reformatting.

2010-06-18  Javier Miranda  <miranda@adacore.com>

	* debug.ads Add documentation on -gnatd.Z.

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_elim.adb: Proper error message on improperly eliminated instances

2010-06-18  Vincent Celier  <celier@adacore.com>

	* prj.ads (Response_File_Format): New value GCC.

2010-06-18  Thomas Quinot  <quinot@adacore.com>

	* gnat1drv.adb: Minor reformatting.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* make.adb, sem_cat.adb: Minor reformatting.
	* sem_eval.adb: Fix typos.

2010-06-18  Pascal Obry  <obry@adacore.com>

	* prj-nmsc.adb: Fix source filenames casing in debug output.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* gnatcmd.adb: Minor reformatting.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb (Eval_Conditional_Expression): Result is static if
	condition and both sub-expressions are static (and result is selected
	expression).

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* g-pehage.adb: Minor reformatting

2010-06-18  Pascal Obry  <obry@adacore.com>

	* prj-nmsc.adb (Search_Directories): Insert canonical filenames into
	source hash table.

2010-06-18  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Update
	dependencies. Fix target pairs on darwin.
	(gnatlib-sjlj, gnatlib-zcx): Pass THREAD_KIND.

2010-06-18  Pascal Obry  <obry@adacore.com>

	* make.adb, prj-nmsc.adb: Fix source filenames casing in debug output.

2010-06-18  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: For gnatcheck, add -gnatec= switch for a global
	configuration pragmas file and, if -U is not used, for a local one.

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_elim.adb (Check_Eliminated): Use full information on entity name
	when it is given in the pragma by a selected component.
	(Check_For_Eliminated_Subprogram): Do no emit error if within a
	instance body that is itself within a generic unit.
	* sem_ch12.adb (Analyze_Subprogram_Instance): If the subprogram is
	eliminated, mark as well the anonymous subprogram that is its alias
	and appears within the wrapper package.

2010-06-18  Bob Duff  <duff@adacore.com>

	* g-pehage.ads, g-pehage.adb (Produce): Clean up some of the code.
	Raise an exception if the output file cannot be opened. Add comments.

2010-06-18  Thomas Quinot  <quinot@adacore.com>

	* sem_cat.adb (Validate_Object_Declaration): A variable declaration is
	not illegal per E.2.2(7) if it occurs in the private part of a
	Remote_Types unit.

2010-06-18  Arnaud Charlet  <charlet@adacore.com>

	* par-ch9.adb, sem_aggr.adb, sem_ch3.adb, layout.adb, sem_ch4.adb,
	sem_ch5.adb, sem_mech.adb, exp_util.adb, par-ch10.adb, sem_ch6.adb,
	par-ch11.adb, sem_ch7.adb, par-prag.adb, exp_disp.adb, par-ch12.adb,
	sem_ch8.adb, style.adb, sem_ch9.adb, sem_ch10.adb, prep.adb,
	sem_warn.adb, par-util.adb, scng.adb, sem_eval.adb, checks.adb,
	sem_prag.adb, sem_ch12.adb, styleg.adb, sem_ch13.adb, par-ch3.adb,
	par-tchk.adb, freeze.adb, sfn_scan.adb, par-ch4.adb, sem_util.adb,
	sem_res.adb, par-ch5.adb, lib-xref.adb, sem_attr.adb, par-ch6.adb,
	sem_disp.adb, prepcomp.adb, par-ch7.adb, sem_elab.adb, exp_ch4.adb,
	errout.ads: Update comments. Minor reformatting.

	* g-spipat.adb, a-swunau.adb, a-swunau.ads, g-spitbo.adb,
	a-szunau.adb, a-szunau.ads, a-stunau.adb, a-stunau.ads,
	a-strunb.adb (Big_String. Big_String_Access): New type.

	* par-labl.adb, restrict.adb, s-osinte-hpux-dce.ads, sem_ch11.adb,
	exp_pakd.adb, s-filofl.ads, par-endh.adb, exp_intr.adb, sem_cat.adb,
	sem_case.adb, exp_ch11.adb, s-osinte-linux.ads: Fix copyright notices.

2010-06-18  Geert Bosch  <bosch@adacore.com>

	* i-forbla-darwin.adb: Include -lgnala and -lm in linker options for
	Darwin.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Set Use_Expression_With_Actions
	true for gcc.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* sprint.adb: Minor format change for N_Expression_With_Actions.
	* repinfo.adb: Minor reformatting.

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_elim.adb (Check_Eliminated): If within a subunit, use
	Defining_Entity to obtain the name of the entity in the proper body, to
	properly handle both separate packages and subprograms.

2010-06-18  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb (Check_File): New parameter Display_Path.

2010-06-18  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb, g-socket.ads (Null_Selector): New object.

2010-06-18  Pascal Obry  <obry@adacore.com>

	* gnat_ugn.texi: Minor clarification.

2010-06-18  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb (Find_Source_Dirs): Minor refactoring to avoid duplicate
	code when using the project dir as the source dir.
	(Search_Directories): use the normalized name for the source directory,
	where symbolic names have potentially been resolved.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Conditional_Expression): Clear Actions field
	when we create N_Expression_With_Actions node.
	(Expand_Short_Circuit): Ditto.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb: Minor reformatting.

2010-06-18  Thomas Quinot  <quinot@adacore.com>

	* types.ads: Clean up obsolete comments
	* tbuild.adb: Minor reformatting.
	* exp_ch5.adb, sem_intr.adb, sem_ch10.adb, rtsfind.adb, s-shasto.adb,
	exp_strm.adb, aa_drive.adb: Minor reformatting.
	* sem_res.adb (Is_Predefined_Operator): An operator that is an imported
	intrinsic with an Interface_Name denotes an imported back-end builtin,
	and must be rewritten into a call, not left in the tree as an operator,
	so return False in that case.

2010-06-18  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Make a copy for an allocator.
	
2010-06-18  Robert Dewar  <dewar@adacore.com>

	* scos.ads: Add proposed output for case expression

2010-06-18  Jose Ruiz  <ruiz@adacore.com>

	* gnat_ugn.texi: Document that, when using the RTX compiler to generate
	RTSS modules, we need to use the Microsoft linker.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Safe_To_Capture_In_Parameter_Value): Deal with case
	expression (cannot count on a particular branch being executed).
	* exp_ch4.adb (Expand_N_Case_Expression): New procedure.
	* exp_ch4.ads (Expand_N_Case_Expression): New procedure.
	* exp_util.adb (Insert_Actions): Deal with proper insertion of actions
	within case expression.
	* expander.adb (Expand): Add call to Expand_N_Case_Expression
	* par-ch4.adb Add calls to P_Case_Expression at appropriate points
	(P_Case_Expression): New procedure
	(P_Case_Expression_Alternative): New procedure
	* par.adb (P_Case_Expression): New procedure
	* par_sco.adb (Process_Decisions): Add dummy place holder entry for
	N_Case_Expression.
	* sem.adb (Analyze): Add call to Analyze_Case_Expression
	* sem_case.ads (Analyze_Choices): Also used for case expressions now,
	this is a documentation change only.
	* sem_ch4.ads, sem_ch4.adb (Analyze_Case_Expression): New procedure.
	* sem_ch6.adb (Fully_Conformant_Expressions): Add handling of case
	expressions.
	* sem_eval.ads, sem_eval.adb (Eval_Case_Expression): New procedure.
	* sem_res.adb (Resolve_Case_Expression): New procedure.
	* sem_scil.adb (Find_SCIL_Node): Add processing for
	N_Case_Expression_Alternative.
	* sinfo.ads, sinfo.adb (N_Case_Expression): New node.
	(N_Case_Expression_Alternative): New node.
	* sprint.adb (Sprint_Node_Actual): Add processing for new nodes
	N_Case_Expression and N_Case_Expression_Alternative.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* par-ch7.adb, sem_warn.adb, types.ads, par-ch3.adb: Minor
	reformatting.
	* gnat1drv.adb: Fix typo.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* par-prag.adb (Prag, case Style_Checks): All_Checks sets gnat style
	for -gnatg.
	* sem_prag.adb (Analyze_Pragma, case Style_Checks): All_Checks sets
	gnat style for -gnatg.
	* gnat_rm.texi: Add documentation for ALL_CHECKS in GNAT mode.

2010-06-18  Thomas Quinot  <quinot@adacore.com>

	* sem_eval.adb (Test_In_Range): New subprogram, factoring duplicated
	code between...
	(Is_In_Range, Is_Out_Of_Range): Reimplement in terms of call to
	Test_In_Range.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* sprint.adb: Minor change in output format for expression wi actions.
	* par-ch3.adb: Minor code reorganization.  Minor reformatting.
	* sem_ch5.adb: Minor comment fix.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* debug.adb: New debug flag -gnatd.L to control
	Back_End_Handles_Limited_Types.
	* exp_ch4.adb (Expand_N_Conditional_Expression): Let back end handle
	limited case if Back_End_Handles_Limited_Types is True.
	(Expand_N_Conditional_Expression): Use N_Expression_With_Actions to
	simplify expansion if Use_Expression_With_Actions is True.
	* gnat1drv.adb (Adjust_Global_Switches): Set
	Back_End_Handles_Limited_Types.
	* opt.ads (Back_End_Handles_Limited_Types): New flag.

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Rewrite_Operator_As_Call): Do not rewrite user-defined
	intrinsic operator if expansion is not enabled, because in an
	instantiation the original operator must be present to verify the
	legality of the operation.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* exp_disp.adb, sem_ch12.adb: Minor reformatting

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Make_Subtype_From_Expr): If the unconstrained type is
	the class-wide type for a private extension, and the completion is a
	subtype, set the type of the class-wide type to the base type of the
	full view.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* g-socket.ads, sem_aggr.adb, einfo.ads, sem_elim.adb,
	sem_intr.adb, sem_eval.adb: Minor reformatting

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Is_Ancestor): If either type is private, examine full
	view.

2010-06-18  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb, g-socket.ads (Check_Selector): Make Selector an IN
	parameter rather than IN OUT.

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb: Add extra guard.

2010-06-18  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb (Object_Access_Level): For Ada 2005, determine the
	accessibility level of a function call from the level of the innermost
	enclosing dynamic scope.
	(Innermost_Master_Scope_Depth): New function to find the depth of the
	nearest dynamic scope enclosing a node.

2010-06-18  Tristan Gingold  <gingold@adacore.com>

	* adaint.c: Make ATTR_UNSET static as it is not used outside this file.

2010-06-18  Thomas Quinot  <quinot@adacore.com>

	* g-socket.ads: Minor reformatting.

2010-06-18  Vincent Celier  <celier@adacore.com>

	* make.adb (Must_Compile): New Boolean global variable
	(Main_On_Command_Line): New Boolean global variable
	(Collect_Arguments_And_Compile): Do compile if Must_Compile is True,
	even when the project is externally built.
	(Start_Compile_If_Possible): Compile in -aL directories if
	Check_Readonly_Files is True. Do compile if Must_Compile is True, even
	when the project is externally built.
	(Gnatmake): Set Must_Compile and Check_Readonly_Files to True when
	invoked with -f -u and one or several mains on the command line.
	(Scan_Make_Arg): Set Main_On_Command_Line to True when at least one
	main is specified on the command line.

2010-06-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Build_Body_For_Inline): Handle
	extended_return_statements.
	* exp_ch6.adb (Expand_Inlined_Call): when possible, inline a body
	containing extented_return statements.
	* exp_util.adb (Make_CW_Equivalent_Type): If the root type is already
	constrained, do not build subtype declaration.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Analyze_Indexed_Component, Analyze_Selected_Component):
	Warn on assigning to packed atomic component.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads: Minor reformatting
	* einfo.ads, einfo.adb: Minor doc clarification (scope of decls in
	Expression_With_Actions).
	* snames.ads-tmpl: Minor comment fix

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Diagnose_Multiple_Pragmas): New procedure
	(Set_Imported): Use Import_Interface_Present to control message output
	* sinfo.ads, sinfo.adb (Import_Interface_Present): New flag
	* gnat_rm.texi: Document that we can have pragma Import and pragma
	Interface for the same subprogram.

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* lib-xref.adb (Generate_Reference): Fix bad reference to
	Has_Pragma_Unreferenced (clients should always use Has_Unreferenced).

2010-06-17  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (set_gnu_expr_location_from_node): New static
	function.
	(gnat_to_gnu) <N_Expression_With_Actions>: New case.
	Use set_gnu_expr_location_from_node to set location information on the
	result.

2010-06-17  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Atomic_Object): Predicate does not apply to
	subprograms.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Clean up documentation on warning and
	style check messages.
	* sem_res.adb (Resolve_Call): Don't call
	Check_For_Eliminated_Subprogram if we are analyzing within a spec
	expression.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Add documentation for debug flags .X and .Y
	* exp_ch4.adb (Expand_Short_Circuit_Operator): Use
	Use_Expression_With_Actions.
	* gnat1drv.adb (Adjust_Global_Switches): Set
	Use_Expression_With_Actions.
	* opt.ads (Use_Expression_With_Actions): New switch.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* exp_intr.adb: Minor code reorganization (use UI_Max)
	* sem_intr.adb: use underlying type to check legality.
	* einfo.adb (Known_Static_Esize): False for generic types
	(Known_Static_RM_Size): False for generic types
	* einfo.ads (Known_Static_Esize): False for generic types
	(Known_Static_RM_Size): False for generic types

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.ads: Minor code reorganization (specs in alpha order).

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* debug.adb: New debug flag -gnatd.X to use Expression_With_Actions
	node when expanding short circuit form with actions present for right
	opnd.
	* exp_ch4.adb: Minor reformatting
	(Expand_Short_Circuit_Operator): Use new Expression_With_Actions node
	if right opeand has actions present, and debug flag -gnatd.X is set.
	* exp_util.adb (Insert_Actions): Handle case of Expression_With_Actions
	node.
	* nlists.adb (Prepend_List): New procedure
	(Prepend_List_To): New procedure
	* nlists.ads (Prepend_List): New procedure
	(Prepend_List_To): New procedure
	* sem.adb: Add processing for Expression_With_Actions
	* sem_ch4.adb (Analyze_Expression_With_Actions): New procedure
	* sem_ch4.ads (Analyze_Expression_With_Actions): New procedure
	* sem_res.adb: Add processing for Expression_With_Actions.
	* sem_scil.adb: Add processing for Expression_With_Actions
	* sinfo.ads, sinfo.adb (N_Expression_With_Actions): New node.
	* sprint.ads, sprint.adb: Add processing for Expression_With_Actions

2010-06-17  Doug Rupp  <rupp@adacore.com>

	* sem_intr.adb (Check_Intrinsic_Operator): Check that the types
	involved both have underlying integer types.
	* exp_intr.adb (Expand_Binary_Operator) New subprogram to expand a call
	to an intrinsic operator when the operand types or sizes are not
	identical.
	* s-auxdec-vms_64.ads: Revert "+" "-" ops back to Address now that
	64/32 Address/Integer works.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Mark_Context): Refine placement of Withed_Body flag, so
	that it marks a unit as needed by a spec only if the corresponding
	instantiation appears in that spec (and not in the corresponding body).
	* sem_elim.adb (Check_Eliminated): If we are within a subunit, the name
	in the pragma Eliminate has been parsed as a child unit, but the
	current compilation unit is in fact the parent in which the subunit is
	embedded.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* gnat_rm.texi: Fix typo

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb: Minor reformatting

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* sem.adb (Do_Withed_Unit): if the unit in the with_clause is a generic
	instance, the clause now denotes the instance body. Traverse the
	corresponding spec because there may be no other dependence that will
	force the traversal of its own context.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Is_Ancestor_Unit): Subsidiary to
	Install_Limited_Context_Clauses, to determine whether a limited_with in
	some parent of the current unit designates some other parent, in which
	case the limited_with clause must not be installed.
	(In_Context): Refine test.

2010-06-17  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb (Collect_Primitive_Operations): In the of an untagged
	type with a dispatching equality operator that is overridden (for a
	tagged full type), don't include the overridden equality in the list of
	primitives. The overridden equality is detected by testing for an
	Aliased field that references the overriding equality.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* freeze.adb: Minor reformatting.

2010-06-17  Joel Brobecker  <brobecker@adacore.com>

	* gnat_ugn.texi: Add a section introducing gdbserver.

2010-06-17  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb, sem_ch4.adb, s-stoele.adb, par-labl.adb: Minor
	reformatting.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Valid_Ancestor_Type): handle properly the case of a
	constrained discriminated parent that is a private type.
	(Analyze_Record_Aggregate): when collecting inherited discriminants,
	handle properly an ancestor type that is a constrained private type.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Enclosing_Subprogram): If the called subprogram is
	protected, use the protected_subprogram_body only if the original
	subprogram has not been eliminated.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Expression): The designated type of an
	access_to_suprogram type can only be frozen if all types in its profile
	are fully defined.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* par.adb: Minor comment fix
	* sem_aggr.adb, sem_ch3.adb: Minor reformatting

2010-06-17  Doug Rupp  <rupp@adacore.com>

	* s-auxdec-vms_64.ads: Revert Integer to Long_Integer change, instead
	change Address to Short_Address in functions where both must be the
	same size for intrinsics to work.

2010-06-17  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): A selected component may
	not denote a (private) component of a protected object.

2010-06-17  Bob Duff  <duff@adacore.com>

	* par-labl.adb (Try_Loop): Test whether the label and the goto are in
	the same list.

2010-06-17  Joel Brobecker  <brobecker@adacore.com>

	* gnat_ugn.texi: Update the documentation about GDB re: exception
	catchpoints.

2010-06-17  Arnaud Charlet  <charlet@adacore.com>

	* gnatvsn.ads: Bump to 4.6 version.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): The
	designated type of the generated pointer is the type of the original
	expression, not that of the function call itself, because the return
	type may be an untagged  derived type and the function may be an
	inherited operation.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor reformatting.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads, sinfo.adb (Inherited_Discriminant): New flag on
	N_Component_Association nodes, to indicate that a component association
	of an extension aggregate denotes the value of a discriminant of an
	ancestor type that has been constrained by the derivation.
	* sem_aggr.adb (Discr_Present): use Inherited_Discriminant to prevent a
	double expansion of the aggregate appearing in a context that delays
	expansion, to prevent double insertion of discriminant values when the
	aggregate is reanalyzed.

2010-06-17  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Do not use
	Allocator as the Related_Node of Return_Obj_Access in call to
	Make_Temporary below as this would create a sort of infinite
	"recursion".

2010-06-17  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi: Update gnatcheck doc.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Incomplete_Type_Declaration): If there is an
	incomplete view of the type that is not tagged, and the full type is a
	tagged extension, create class_wide type now, and warn that the
	incomplete view should be tagged as well.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (Non_VMS_Usage): Do not issue usage for gnat sync.
	Update the last line of the usage, indicating what commands do not
	accept project file switches.
	* vms_conv.adb: Do not issue usage line for GNAT SYNC
	* vms_data.ads: Fix errors in the qualifiers /LOGFILE and /MAIN of
	GNAT ELIM.
	* gnat_ugn.texi: Document the relaxed rules for library directories in
	externally built library projects.

2010-06-17  Doug Rupp  <rupp@adacore.com>

	* s-auxdec-vms_64.ads: Make boolean and arithmetic operations intrinsic
	where possible.
	* s-auxdec-vms-alpha.adb: Remove kludges for aforemention.
	* gcc-interface/Makefile.in: Update VMS target pairs.

2010-06-17  Vasiliy Fofanov  <fofanov@adacore.com>

	* adaint.c: Reorganized in order to avoid use of GetProcessId to stay
	compatible with Windows NT 4.0 which doesn't provide this function.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* ali-util.adb (Time_Stamp_Mismatch): In Verbose mode, if there is
	different timestamps but the checksum is the same, issue a short
	message saying so.

2010-06-17  Arnaud Charlet  <charlet@adacore.com>

	* s-interr.adb (Finalize): If the Abort_Task signal is set to system,
	it means that we cannot reset interrupt handlers since this would
	require potentially sending the abort signal to the Server_Task.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb: expand NOT for VMS types.
	* sem_util.adb: Use OpenVMS_On_Target for IS_VMS_Operator.

2010-06-17  Sergey Rybin  <rybin@adacore.com>

	* vms_data.ads: Add qualifier for '--no-elim-dispatch' gnatelim option.
	* gnat_ugn.texi (gnatelim): add description for --no-elim-dispatch
	option.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Call): Do not expand a call to an internal
	protected operation if the subprogram has been eliminated.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Library_Attributes): Allow the different
	directories associated with a library to be any directory when the
	library project is externally built.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* make.adb (Check): If switch -m is used, deallocate the memory that
	may be allocated when computing the checksum.

2010-06-17  Eric Botcazou  <ebotcazou@adacore.com>

	* g-socthi-mingw.adb (C_Recvmsg): Add 'use type' clause for C.size_t;
	(C_Sendmsg): Likewise.

2010-06-17  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Update comments.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* back_end.adb (Scan_Compiler_Arguments): Process last argument

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb, exp_ch6.adb, exp_smem.adb, exp_util.adb: Use Ekind_In.
	* layout.adb, freeze.adb: Use Make_Temporary.

2010-06-17  Jerome Lambourg  <lambourg@adacore.com>

	* exp_ch11.adb (Expand_N_Raise_Statement): Expand raise statements in
	.NET/JVM normally as this is now perfectly supported by the backend.

2010-06-17  Pascal Obry  <obry@adacore.com>

	* gnat_rm.texi: Fix minor typo, remove duplicate blank lines.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* make.adb (Collect_Arguments_And_Compile): Create include path file
	only when -x is specified.
	(Gnatmake): Ditto
	* opt.ads (Use_Include_Path_File): New Boolean flag, initialized to
	False.
	* prj-env.adb (Set_Ada_Paths): New Boolean parameters Include_Path and
	Objects_Path, defaulted to True. Only create include path file if
	Include_Path is True, only create objects path file if Objects_Path is
	True.
	* prj-env.ads (Set_Ada_Paths): New Boolean parameters Include_Path and
	Objects_Path, defaulted to True.
	* switch-m.adb (Scan_Make_Switches): Set Use_Include_Path_File to True
	when -x is used.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Build_Interface_Thunk): Use base type of formal to
	determine whether it has the controlling type, when the formal is an
	access parameter.

2010-06-17  Eric Botcazou  <ebotcazou@adacore.com>

	* s-crtl.ads (ssize_t): New type.
	(read): Fix signature.
	(write): Likewise.
	* g-socthi.ads: Add 'with System.CRTL' clause.  Remove ssize_t and
	'use type' directive for C.size_t, add one for System.CRTL.ssize_t.
	(C_Recvmsg): Replace ssize_t with System.CRTL.ssize_t.
	(C_Sendmsg): Likewise.
	* g-socthi.adb (Syscall_Recvmsg): Likewise.
	(Syscall_Sendmsg): Likewise.
	(C_Recvmsg): Likewise.
	(C_Sendmsg): Likewise.
	* g-socthi-mingw.ads: Add 'with System.CRTL' clause.  Remove ssize_t
	and 'use type' directive for C.size_t, add one for System.CRTL.ssize_t.
	(C_Recvmsg): Replace ssize_t with System.CRTL.ssize_t.
	(C_Sendmsg): Likewise.
	* g-socthi-mingw.adb (C_Recvmsg): Likewise.
	(C_Sendmsg): Likewise.
	* g-socthi-vms.ads: Add 'with System.CRTL' clause.  Remove ssize_t and
	'use type' directive for C.size_t, add one for System.CRTL.ssize_t.
	(C_Recvmsg): Replace ssize_t with System.CRTL.ssize_t.
	(C_Sendmsg): Likewise.
	* g-socthi-vms.adb (C_Recvmsg): Likewise.
	(C_Sendmsg): Likewise.
	* g-socthi-vxworks.ads Add 'with System.CRTL' clause.  Remove ssize_t
	and 'use type' directive for C.size_t, add one for System.CRTL.ssize_t.
	(C_Recvmsg): Replace ssize_t with System.CRTL.ssize_t.
	(C_Sendmsg): Likewise.
	* g-socthi-vxworks.adb (C_Recvmsg): Likewise.
	(C_Sendmsg): Likewise.
	* g-sercom-linux.adb (Read): Use correct types to call 'read'.
	(Write): Likewise to call 'write'.
	* s-os_lib.adb (Read): Use correct type to call System.CRTL.read.
	(Write): Use correct type to call System.CRTL.write.
	* s-tasdeb.adb (Write): Likewise.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb (Copy_Package_Declarations): Change argument name
	Naming_Restricted to Restricted. If Restricted is True, do not copy the
	value of attribute Linker_Options.

2010-06-17  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (push_stack, pop_stack): Delete.
	(Case_Statement_to_gnu): Adjust.
	(Loop_Statement_to_gnu): Likewise.
	(Subprogram_Body_to_gnu): Likewise.
	(Handled_Sequence_Of_Statements_to_gnu): Likewise.
	(Compilation_Unit_to_gnu): Likewise.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* exp_fixd.adb, exp_imgv.adb, exp_intr.adb, exp_pakd.adb, exp_prag.adb,
	exp_sel.adb, exp_util.adb, sem_ch10.adb, sem_ch12.adb, sem_ch13.adb,
	sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch8.adb, sem_ch9.adb,
	sem_dist.adb, sem_util.adb: Use Make_Temporary
	* itypes.ads, tbuild.ads: Minor comment update
	* exp_ch9.adb, exp_dist.adb: Minor reformatting

2010-06-17  Thomas Quinot  <quinot@adacore.com>

	* exp_imgv.adb, exp_ch7.ads: Minor reformatting.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, exp_disp.adb, exp_dist.adb: Use Make_Temporary.

2010-06-17  Thomas Quinot  <quinot@adacore.com>

	* sprint.adb (pg): Set Dump_Freeze_Null, to be consistent with -gnatdg.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb, exp_ch7.adb, exp_ch5.adb: Use Make_Temporary
	* tbuild.ads (Make_Temporary): More comment updates
	* tbuild.adb: Minor reformatting

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* checks.adb, exp_aggr.adb, exp_atag.adb, exp_attr.adb, exp_ch11.adb,
	exp_ch3.adb, exp_ch4.adb: Minor code reorganization.
	Use Make_Temporary.
	* tbuild.ads, tbuild.adb (Make_Temporary): Clean up, use Entity_Id
	instead of Node_Id.
	(Make_Temporary): Add more extensive documentation

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* sem_intr.adb, sem_prag.adb, sem_res.adb, sem_type.adb, sem_util.adb,
	sem_warn.adb, sem_eval.adb: Minor reformatting.  Use Ekind_In.
	(Set_Slice_Subtype): Explicitly freeze the slice's itype at the point
	where the slice's actions are inserted.
	(Decompose_Expr): Account for possible rewriting of slice bounds
	resulting from side effects suppression caused by the above freezing,
	so that folding of bounds is preserved by such rewriting.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (Get_Record_Representation_Clause): New
	function.
	* freeze.adb (Freeze_Record_Type): Add call to
	Check_Record_Representation_Clause.
	* sem_ch13.adb (Check_Record_Representation_Clause): New function
	(Analyze_Record_Representation_Clause): Split out overlap code into
	this new function.
	(Check_Component_Overlap): Moved inside
	Check_Record_Representation_Clause.
	* sem_ch13.ads (Check_Record_Representation_Clause): New function.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* back_end.adb, sem_res.adb, switch-c.adb, sem_scil.adb: Minor
	reformatting.
	* sem_attr.adb, sem_cat.adb, sem_disp.adb, sem_elab.adb, sem_elim.adb,
	sem_eval.adb: Use Ekind_In

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb: better error message for illegal inherited discriminant

2010-06-17  Vincent Celier  <celier@adacore.com>

	* bindusg.adb: Remove lines for -A and -C
	* gnat_ugn.texi: Remove all documentation and examples of switches -A
	and -C for gnatbind and gnatlink.
	* gnatlink.adb (Usage): Remove lines for -A and -C
	* switch-b.adb (Scan_Binder_Switches): Issue warning when switch -C is
	specified.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* back_end.adb (Scan_Compiler_Arguments): Put all arguments in new
	local Argument_List variable Args.
	* switch-c.adb (Scan_Front_End_Switches): New Argument_List argument
	Args.
	(Switch_Subsequently_Cancelled): New Argument_List argument Args. Look
	for subsequent switches in Args.
	* switch-c.ads (Scan_Front_End_Switches): New Argument_List argument
	Args.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* einfo.adb: Minor code fix, allow E_Class_Wide_Type for
	Equivalent_Type to match documentation.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb, sem_ch7.adb: Minor reformatting.
	* sem_ch3.adb, sem_ch5.adb, sem_ch9.adb, sem_ch10.adb, sem_ch12.adb,
	sem_ch4.adb, sem_ch8.adb, sem_ch13.adb: Make use of Ekind_In.

2010-06-17  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb (Set_Slice_Subtype): Always freeze the slice's itype.

2010-06-17  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Freeze_Expression): Short circuit operators are valid
	freeze node insertion points.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* switch-c.ads, switch-c.adb, sem_ch13.adb: Minor reformatting.
	* sem_ch12.adb: Add pragmas Assert and Check to previous change.

2010-06-17  Gary Dismukes  <dismukes@adacore.com>

	* layout.adb (Layout_Type): Broaden test for setting an array type's
	Component_Size to include all scalar types, not just discrete types
	(components of real types were missed).
	* sem_ch3.adb (Constrain_Index): Add missing setting of First_Literal
	on the itype created for an index (consistent with Make_Index and
	avoids possible Assert_Failures).

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* atree.ads, atree.adb: Add 6-parameter version of Ekind_In
	* einfo.adb: Minor code reformatting (use Ekind_In)

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb (Test_Ref): Abandon scan if access subprogram parameter
	found.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* back_end.adb: Minor comment updates
	* switch-c.adb: Remove dependencies on gcc C sources
        * gcc-interface/Make-lang.in: Add a-comlin.o to the object file list
	for the compiler.

2010-06-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: propagate Pragma_Enabled flag to generic.
	* get_scos.adb: Set C2 flag in decision entry of pragma to 'e'.
	* par_sco.ads, par_sco.adb (Set_SCO_Pragma_Enabled): New procedure
	Remove use of Node field in SCOs table
	(Output_Header): Set 'd' to initially disable pragma entry
	* put_scos.adb (Put_SCOs): New flag indicating if pragma is enabled
	* scos.ads, scos.adb: Remove Node field from internal SCOs table.
	Use C2 field of pragma decision header to indicate enabled.
	* sem_prag.adb: Add calls to Set_SCO_Pragma_Enabled.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-17  Vincent Celier  <celier@adacore.com>

	* back_end.adb (Next_Arg): Moved to procedure Scan_Compiler_Arguments
	(Scan_Compiler_Arguments): Call Scan_Front_End_Switches with Next_Arg
	(Switch_Subsequently_Cancelled): Function moved to the body of Switch.C
	* back_end.ads (Scan_Front_End_Switches): Function moved to the body of
	Switch.C.
	* switch-c.adb: Copied a number of global declarations from
	back_end.adb.
	(Len_Arg): New function copied from back_end.adb
	(Switch_Subsequently_Cancelled): New function moved from back_end.adb
	(Scan_Front_End_Switches): New parameter Arg_Rank used to call
	Switch_Subsequently_Cancelled.
	* switch-c.ads (Scan_Front_End_Switches): New parameter Arg_Rank.
	* gcc-interface/Makefile.in: Add line so that shared libgnat is linked
	with -lexc on Tru64.

2010-06-17  Robert Dewar  <dewar@adacore.com>

	* prj.ads, prj.adb: Minor reformatting

2010-06-17  Thomas Quinot  <quinot@adacore.com>

	* put_scos.adb: Do not generate a blank line in SCOs when omitting the
	CP line for a disabled pragma.

2010-06-17  Emmanuel Briot  <briot@adacore.com>

	* prj-proc.adb, prj.adb, prj.ads (Check_Or_Set_Typed_Variable): New
	subprogram.
	(Process_Declarative_Item): An invalid value in an typed variable
	declaration is no longer always fatal.

2010-06-16  Arnaud Charlet  <charlet@adacore.com>

	* get_scos.adb, par_sco.adb, par_sco.ads, put_scos.adb, scos.adb,
	scos.ads, exp_ch4.adb, sem_warn.adb: Code clean up, update
	documentation.

2010-06-16  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Dispatching_Call): Adjust the decoration of the
	node referenced by the SCIL node of dispatching "=" to skip the tags
	comparison.

2010-06-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Exit_Statement): Return if no enclosing loop,
	to prevent cascaded errors and compilation aborts.

2010-06-16  Robert Dewar  <dewar@adacore.com>

	* back_end.adb (Switch_Subsequently_Cancelled): New function
	Move declarations to package body level to support this change
	* back_end.ads (Switch_Subsequently_Cancelled): New function
	* gnat_ugn.texi: Document -gnat-p switch
	* switch-c.adb (Scan_Front_End_Switches): Implement -gnat-p switch
	* ug_words: Add entry for -gnat-p (UNSUPPRESS_ALL)
	* usage.adb: Add line for -gnat-p switch
	* vms_data.ads: Add entry for UNSUPPRESS_ALL (-gnat-p)

2010-06-16  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb (Check_Infinite_Loop_Warning): Declaration counts as
	modification.

2010-06-16  Robert Dewar  <dewar@adacore.com>

	* exp_disp.adb: Minor reformatting

2010-06-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Complete_Private_Subtype): Inherit class_wide type from
	base type only if it was not previously created for the partial view.

2010-06-16  Thomas Quinot  <quinot@adacore.com>

	* tbuild.ads: Minor comment fix

2010-06-15  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/trans.c (gnu_stack_free_list): Delete.
	(gnu_except_ptr_stack): Change type to VEC.  Update comment.
	(gnu_elab_proc_stack): Likewise.
	(gnu_return_label_stack): Likewise.
	(gnu_loop_label_stack): Likewise.
	(gnu_switch_label_stack): Likewise.
	(gnu_constraint_label_stack): Likewise.
	(gnu_storage_error_label_stack): Likewise.
	(gnu_program_error_label_stack): Likewise.
	(push_exception_label_stack): Take a VEC ** instead of a tree *.
	(push_stack): Likewise.  Remove unused second parameter.  Update
	callers.
	(pop_stack): Take a VEC * instead of a tree *.  Update callers.
	(gigi): Initialize stacks as VECs.
	(Identifier_to_gnu): Use VEC_last instead of TREE_VALUE.
	(Case_Statement_to_gnu): Likewise.
	(Subprogram_Body_to_gnu): Likewise.
	(call_to_gnu): Likewise.
	(Exception_Handler_to_gnu_sjlj): Likewise.
	(gnat_to_gnu): Likewise.
	(get_exception_label): Likewise.

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): if derived type is an
	anonymous base generated when the parent is a constrained discriminated
	type, propagate interface list to first subtype because it may appear
	in a current instance within the extension part of the derived type
	declaration, and its own subtype declaration has not been elaborated
	yet.
	* exp_disp.adb (Build_Interface_Thunk): Use base type of formal to
	determine whether it has the controlling type.

2010-06-14  Jerome Lambourg  <lambourg@adacore.com>

	* exp_ch11.adb (Expand_N_Raise_Statement): Make sure that the explicit
	raise of CE, SE and PE have the reason correctly set and are properly
	expanded before stopping the expansions of .NET/JVM exceptions.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* opt.ads (Check_Policy_List): Add some clarifying comments
	* sem_prag.adb (Analyze_Pragma, case Check): Set Pragma_Enabled flag
	on rewritten Assert pragma.

2010-06-14  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.adb (Check_Overriding_Indicator): Add a special check for
	controlled operations, so that they will be treated as overriding even
	if the overridden subprogram is marked Is_Hidden, as long as the
	overridden subprogram's parent subprogram is not hidden.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Entry for gnatw.d no longer specific for while loops
	* einfo.adb (First_Exit_Statement): New attribute for E_Loop
	* einfo.ads (First_Exit_Statement): New attribute for E_Loop
	* sem_ch5.adb (Analyze_Loop_Statement): Check_Infinite_Loop_Warning has
	new calling sequence to include test for EXIT WHEN.
	(Analyze_Exit_Statement): Chain EXIT statement into exit statement
	chain
	* sem_warn.ads, sem_warn.adb (Check_Infinite_Loop_Warning): Now handles
	EXIT WHEN case.
	* sinfo.adb (Next_Exit_Statement): New attribute of N_Exit_Statement
	node.
	* sinfo.ads (N_Pragma): Correct comment on Sloc field (points to
	PRAGMA, not to pragma identifier).
	(Next_Exit_Statement): New attribute of N_Exit_Statement node

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Short_Circuit): Fix sloc of "assertion/check
	would fail" msg.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* par-ch2.adb (Scan_Pragma_Argument_Association): Clarify message for
	missing pragma argument identifier.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* atree.ads, atree.adb (Ekind_In): New functions.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Expon): Optimize 2**N in stand alone context

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* usage.adb (Usage): Redo documentation of -gnatwa.

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Type): The attribute 'class cannot be applied to
	an untagged incomplete type that is a limited view.

2010-06-14  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Add description of '-cargs gcc_switches' to gnatstub
	and gnatppa.

2010-06-14  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb (Expand_Short_Circuit_Operator): New subprogram,
	factoring duplicated code between...
	(Expand_N_And_Than, Expand_N_Or_Else): Remove duplicated code.
	* a-envvar.ads: Minor reformatting

2010-06-14  Arnaud Charlet  <charlet@adacore.com>

	* ali.adb, ali.ads, lib-xref.ads: Document new '+' letter for C/C++
	static entities.
	(Scan_ALI): Take into account new Visibility field.
	(Visibility_Kind): New type.
	(Xref_Entity_Record): Replace Lib field by Visibility.

	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-14  Pascal Obry  <obry@adacore.com>

	* raise.h: Remove unused defintions.

2010-06-14  Bob Duff  <duff@adacore.com>

	* par-ch10.adb (P_Subunit): If the next token after "separate(X)" is
	Tok_Not or Tok_Overriding, call P_Subprogram. We had previously given
	the incorrect error "proper body expected".
	* par-ch6.adb (P_Subprogram): Suppress "overriding indicator not
	allowed here" error in case of subunits, which was triggered by the
	above change to P_Subunit.

2010-06-14  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi, vms_data.ads: Update gnatelim doc.

2010-06-14  Thomas Quinot  <quinot@adacore.com>

	* lib-util.adb: Minor code reorganization.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* ali.adb (Scan_ALI): Implement reading and storing of N lines
	(Known_ALI_Lines): Add entry for 'N' (notes)
	* ali.ads (Notes): New table to store Notes information
	* alloc.ads: Add entries for Notes table
	* lib-util.adb (Write_Info_Int): New procedure
	(Write_Info_Slit): New procedure
	(Write_Info_Uint): New procedure
	* lib-util.ads (Write_Info_Int): New procedure
	(Write_Info_Slit): New procedure
	(Write_Info_Uint): New procedure
	* lib-writ.adb (Write_Unit_Information): Output N (notes) lines
	* lib-writ.ads: Update documentation for N (Notes) lines
	* lib.adb (Store_Note): New procedure
	* lib.ads (Notes): New table
	(Store_Note): New procedure
	* sem_prag.adb: Call Store_Note for affected pragmas

2010-06-14  Thomas Quinot  <quinot@adacore.com>

	* socket.c: Fix wrong condition in #ifdef
	* g-socket.adb, g-sothco.ads: Functions imported from socket.c that
	take or return char* values can't use Interfaces.C.Strings.chars_ptr,
	because on VMS this type is a 32-bit pointer which is not compatible
	with the default for C pointers for code compiled with gcc on that
	platform.

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_util (Is_VMS_Operator): New predicate to determine whether an
	operator is an intrinsic operator declared in the DEC system extension.
	* sem_res.adb (Resolve_Logical_Op): operation is legal on signed types
	if the operator is a VMS intrinsic.
	* sem_eval.adb (Eval_Logical_Op): Operation is legal and be
	constant-folded if the operands are signed and the operator is a VMS
	intrinsic.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* g-socket.adb, gnatcmd.adb: Minor reformatting.

2010-06-14  Pascal Obry  <obry@adacore.com>

	* s-finimp.adb: Fix typo.
	* raise.h: Remove duplicate blank line.

2010-06-14  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Add_Sources): Always set the object file and the
	switches file names, as the configuration of the language may change
	in an extending project.
	(Process_Naming_Scheme): For sources of projects that are extended, set
	the configuration of the language from the highest extending project
	where the language is declared.

2010-06-14  Gary Dismukes  <dismukes@adacore.com>

	* sem_res.adb (Resolve_Call): For infinite recursion check, test
	whether the called subprogram is inherited from a containing
	subprogram.
	(Same_Or_Aliased_Subprograms): New function

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (End_Use_Type): Before indicating that an operator is not
	use-visible, check whether it is a primitive for more than one type.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb (Copy_And_Swap): Copy Has_Pragma_Unmodified flag.

	* sem_ch7.adb (Preserve_Full_Attributes): Preserve
	Has_Pragma_Unmodified flag.

2010-06-14  Thomas Quinot  <quinot@adacore.com>

	* g-sttsne-locking.adb, g-sttsne-locking.ads, g-sttsne.ads,
	g-sttsne-vxworks.adb, g-sttsne-dummy.ads: Removed. Mutual exclusion is
	now done in GNAT.Sockets if necessary.
	* gsocket.h, g-socket.adb, g-sothco.ads (GNAT.Sockets.Get_XXX_By_YYY):
	Ensure mutual exclusion for netdb operations if the target platform
	requires it.
	(GNAT.Sockets.Thin_Common): New binding for getXXXbyYYY, treating
	struct hostent as an opaque type to improve portability.
	* s-oscons-tmplt.c, socket.c: For the case of Vxworks, emulate
	gethostbyYYY using proprietary VxWorks API so that a uniform interface
	is available for the Ada side.
	* gcc-interface/Makefile.in: Remove g-sttsne-*
	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-14  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (Mapping_File): New function.

2010-06-14  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Derive_Subprograms): Remove over-restrictive assertion.

2010-06-14  Arnaud Charlet  <charlet@adacore.com>

	* ali.adb: Fix typo.
	* s-auxdec-vms-alpha.adb, scng.ads: Minor reformatting.

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Make Mark_Context transitive, and apply to subprogram
	instances.

	* sem_ch8.adb (Find_Expanded_Name): If a candidate compilation unit in
	the context does not have a homonym of the selector, emit default
	error message.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* sem.adb, sem_ch12.adb, sem_util.adb: Minor reformatting and
	comment addition.

2010-06-14  Arnaud Charlet  <charlet@adacore.com>

	* lib-xref.ads: Doc updates:
	 - Allocate 'Q' for #include entity kind
	 - Free 'Z'
	 - Allocate 'g' for regular macros
	 - Allocate 'G' for function-like macros

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads, sinfo.adb (Withed_Body): New attribute of a with_clause.
	Indicates that there is an instantiation in the current unit that
	loaded the body of the unit denoted by the with_clause.
	* sem_ch12.adb (Mark_Context): When instanting a generic body, check
	whether a with_clause in the current context denotes the unit that
	holds the generic declaration, and mark the with_clause accordingly.
	(Instantiate_Package_Body): call Mark_Context.
	* sem.adb (Process_Bodies_In_Context): Use Withed_Body to determine
	whether a given body should be traversed before the spec of the main
	unit.

2010-06-14  Ed Falis  <falis@adacore.com>

	* sysdep.c: Fix 653 build against vThreads headers.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads: Minor reformatting.

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body): Do not check conformance when
	the spec has been generated for a body without spec that carries an
	Inline_Always pragma.

2010-06-14  Arnaud Charlet  <charlet@adacore.com>

	* lib-xref.ads: Documentation change: allocate 'Z' letter to C/C++
	macro.

2010-06-14  Jerome Lambourg  <lambourg@adacore.com>

	* exp_dbug.adb (Debug_Renaming_Declaration): Do not output any debug
	declaration for VMs, as those are useless and might lead to duplicated
	local variable names in the generated code.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* opt.ads, sem.adb, sem_elab.adb: Minor reformatting

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* exp_aggr.adb (Has_Address_Clause): Moved to Exp_Util, and there it
	is renamed as Has_Following_Address_Clause.
	* exp_ch3.adb (Needs_Simple_Initialization): Add Consider_IS argument
	to allow the caller to avoid Initialize_Scalars having an effect.
	(Expand_N_Object_Declaration): Do not do Initialize_Scalars stuff for
	scalars with an address clause specified.
	* exp_ch3.ads (Needs_Simple_Initialization): Add Consider_IS argument
	to allow the caller to avoid Initialize_Scalars having an effect.
	* exp_util.adb (Has_Following_Address_Clause): Moved here from Exp_Aggr
	(where it was called Has_Address_Clause).
	* exp_util.ads (Has_Following_Address_Clause): Moved here from Exp_Aggr
	(where it was called Has_Address_Clause).
	* freeze.adb (Warn_Overlay): Suppress message about overlaying causing
	problems for Initialize_Scalars (since we no longer initialize objects
	with an address clause.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb (Expand_Pragma_Check): Set Loc of generated code from
	condition.

2010-06-14  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Set Debug_Info_Needed
	on the entity of an implicitly generated postcondition procedure.

2010-06-14  Thomas Quinot  <quinot@adacore.com>

	* sem_ch7.adb (Preserve_Full_Attributes): Propagate
	Discriminant_Constraint elist from full view to private view.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb: Minor reformatting.

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem.adb: New version of unit traversal.

	* sem_elab.adb (Check_Internal_Call): Do not place a call appearing
	within a generic unit in the table of delayed calls.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* gnatcmd.adb, sem_util.adb, exp_ch3.adb: Minor reformatting

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Save_References): If an identifier has been rewritten
	during analysis as an explicit dereference, keep the reference implicit
	in the generic, but preserve the entity if global. This prevents
	malformed generic trees in the presence of some nested generics.

2010-06-14  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: For the GNAT driver, clarify the effect of calling the
	tool with '-files=' option. Also fix some small errors (wrong brackets)

2010-06-14  Vincent Celier  <celier@adacore.com>

	* gnatbind.adb: Call Scan_ALI with Directly_Scanned set to True for all
	the ALI files on the command line.

	* ali.adb (Scan_ALI): Set component Directly_Scanned of the unit(s) to
	the same value as the parameter of the same name.
	* ali.ads (Scan_ALI): New Boolean parameter Directly_Scanned, defaulted
	to False.
	* bindgen.adb (Gen_Versions_Ada): Never emit version symbols for
	Stand-Alone Library interfaces. When binding Stand-Alone Libraries,
	emit version symbols only for the units of the library.
	(Gen_Versions_C): Ditto.

2010-06-14  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb: Fix typo.

2010-06-14  Vasiliy Fofanov  <fofanov@adacore.com>

	* s-oscons-tmplt.c (IOV_MAX): redefine on Tru64 and VMS since the
	vector IO doesn't work at default value properly.

2010-06-14  Doug Rupp  <rupp@adacore.com>

	* s-stoele.adb: Remove unnecessary qualification of To_Address for VMS.

2010-06-14  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (Check_Files): Do not invoke the tool with all the
	sources of the project if a switch -files= is used.

2010-06-14  Thomas Quinot  <quinot@adacore.com>

	* exp_attr.adb: Minor reformatting.

2010-06-14  Gary Dismukes  <dismukes@adacore.com>

	* gnat_ugn.texi: Minor typo fixes and wording changes.

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_One_Call): If the call has been rewritten from a
	prefixed form, do not re-analyze first actual, which may need an
	implicit dereference.
	* sem_ch6.adb (Analyze_Procedure_Call): If the call is given in
	prefixed notation, the analysis will rewrite the node, and possible
	errors appear in the rewritten name of the node.
	* sem_res.adb: If a call is ambiguous because its first parameter is
	an overloaded call, report list of candidates, to clarify ambiguity of
	enclosing call.

2010-06-14  Doug Rupp  <rupp@adacore.com>

	* s-auxdec-vms-alpha.adb: New package body implementing legacy
	VAX instructions with Asm insertions.
	* s-auxdec-vms_64.ads: Inline VAX queue functions
	* s-stoele.adb: Resolve some ambiguities in To_Addresss with s-suxdec
	that show up only on VMS.
	* gcc-interface/Makefile.in: Provide translation for
	s-auxdec-vms-alpha.adb.

2010-06-14  Olivier Hainque  <hainque@adacore.com>

	* initialize.c (VxWorks section): Update comments.

2010-06-14  Robert Dewar  <dewar@adacore.com>

	* a-convec.adb, sem_prag.adb, checks.adb: Minor reformatting.

2010-06-14  Eric Botcazou  <ebotcazou@adacore.com>

	* init.c: Code clean up.

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case Address): Do
	not insert address clause in table for later validation if type of
	entity is generic, to prevent possible spurious errors. 

	* sem_ch8.adb: Code clean up.

2010-06-14  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi: Expanded @ovar macro inline to solve problem with
	texi2pdf and texi2html.
	Document how to change scheduling properties on HP-UX.

2010-06-14  Thomas Quinot  <quinot@adacore.com>

	* g-socket.ads: Remove misleading comments.

2010-06-14  Jerome Lambourg  <lambourg@adacore.com>

	* sem_prag.adb (Check_Duplicated_Export_Name): Remove check for
	CLI_Target as this prevents proper detection of exported names
	duplicates when the exported language is different to CIL.
	(Process_Interface_Name): Add check for CIL convention exports,
	replacing the old one from Check_Duplicated_Export_Name.

2010-06-14  Matthew Heaney  <heaney@adacore.com>

	* a-coinve.adb, a-convec.adb (operator "&"): Check both that new length
	and new last satisfy constraints.
	(Delete_Last): prevent overflow for subtraction of index values
	(To_Vector): prevent overflow for addition of index values

2010-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Complete_Object_Operation): After analyzing the
	rewritten call, preserve the resulting type to prevent spurious errors,
	when the call is implicitly dereferenced in the context of an in-out
	actual.

	* checks.adb (Apply_Discriminant_Check): If the target of the
	assignment is a renaming of a heap object, create constrained type for
	it to apply check.

2010-06-14  Pascal Obry  <obry@adacore.com>

	* prj-proc.adb: Fix copy of object directory for extending projects.

2010-06-14  Jose Ruiz  <ruiz@adacore.com>

	* init.c (__gnat_alternate_stack): Define this space for PowerPC linux
	(__gnat_install_handler, PowerPC linux): Activate the alternative
	signal stack.

2010-06-13  Gerald Pfeifer  <gerald@pfeifer.com>

	* gnat_rm.texi: Move to GFDL version 1.3.
	* gnat-style.texi: Ditto.
	* gnat_ugn.texi: Ditto.

2010-06-12  Kai Tietz  <kai.tietz@onevision.com>

	PR ada/43731
	* gcc-interface/Makefile.in: Add rules for multilib x86/x64
	mingw targets.

2010-06-11  Alexandre Oliva  <aoliva@redhat.com>

	* gcc-interface/utils.c (update_pointer_to): Initialize last.

2010-06-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h: Fix formatting nits.

2010-06-08  Laurynas Biveinis  <laurynas.biveinis@gmail.com>

	* gcc-interface/utils.c (init_gnat_to_gnu): Use typed GC
	allocation.
	(init_dummy_type): Likewise.
	(gnat_pushlevel): Likewise.

	* gcc-interface/trans.c (Attribute_to_gnu): Likewise.
	(Subprogram_Body_to_gnu): Likewise.
	(Compilation_Unit_to_gnu): Likewise.
	(start_stmt_group): Likewise.
	(extract_encoding): Likewise.
	(decode_name): Likewise.

	* gcc-interface/misc.c (gnat_printable_name): Likewise.

	* gcc-interface/decl.c (annotate_value): Likewise.

	* gcc-interface/ada-tree.h (struct lang_type): Add variable_size
	GTY option.
	(struct lang_decl): Likewise.
	(SET_TYPE_LANG_SPECIFIC): Use typed GC allocation.
	(SET_DECL_LANG_SPECIFIC): Likewise.

2010-06-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatlink.adb (gnatlink): Remove support for -fsjlj switch.
	* gcc-interface/lang-specs.h: Likewise.

2010-06-03  H.J. Lu  <hongjiu.lu@intel.com>

	PR c++/44294
	* gcc-interface/decl.c (MAX_FIXED_MODE_SIZE): Removed.

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

	* gnat_ugn.texi: Improve doc on -fdump-ada-spec, mention limitations.

2010-05-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Task_Type>: Reuse the
	TYPE_DECL of the equivalent type instead of building a new one.

2010-05-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust warning message.
	Fix nits in comments.
	* gcc-interface/misc.c (gnat_init_gcc_eh): Likewise.
	* gcc-interface/trans.c (gigi): Likewise.
	(Attribute_to_gnu): Likewise.
	(Case_Statement_to_gnu): Likewise.
	(gnat_to_gnu): Adjust warning message.
	* gcc-interface/utils.c (create_var_decl_1): Fix nits in comments.
	(build_vms_descriptor32): Likewise.

2010-05-27  Steven Bosscher  <steven@gcc.gnu.org>

	* gcc-interface/decl.c: Pretend to be a backend file by undefining
	IN_GCC_FRONTEND (still need rtl.h here).

2010-05-26  Steven Bosscher  <steven@gcc.gnu.org>

	* gcc-interface/trans.c: Do not include rtl.h, insclude libfuncs.h.
	(gigi): Adjust call to set_stack_check_libfunc.

2010-05-26  Steven Bosscher  <steven@gcc.gnu.org>

	* gcc-interface/utils.c: Do not include rtl.h.

2010-05-25  Steven Bosscher  <steven@gcc.gnu.org>

	* gcc-interface/utils.c: Do not include function.h, pointer-set.h,
	and gimple.h.  Explain why rtl.h has to be included.
	(handle_vector_size_attribute): Call reconstruct_complex_type directly.
	* gcc-interface/targtyps.c: Do not include tm_p.h
	* gcc-interface/utils2.c: Do not include flags.h.
	* gcc-interface/trans.c: Do not include expr.h.  Include rtl.h instead,
	and explain why it has to be included.
	* gcc-interface/misc.c: Do not include expr.h, libfuncs.h, cgraph.h,
	and optabs.h.
	Include function.h and explain why.  Explain why except.h is included.
	(enumerate_modes): Remove unused function. 
	* gcc-interface/gigi.h (enumerate_modes): Remove prototype.
	* gcc-interface/Make-lang.in: Update dependencies.

2010-05-25  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/misc.c (internal_error_function): Add context
	parameter.  Use it to access show_column flag and instead of using
	global_dc.  Call warn_if_plugins.
	* gcc-interface/Make-lang.in (ada/misc.o): Update dependencies.

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

	* gcc-interface/misc.c (LANG_HOOKS_DEEP_UNSHARING): Redefine.
	* gcc-interface/trans.c (unshare_save_expr): Delete.
	(gigi): Do not unshare trees under SAVE_EXPRs here.

2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/trans.c (call_to_gnu): Use build_call_vec instead of
	build_call_list.
	* gcc-interface/utils.c (build_function_stub): Likewise.

2010-05-16  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* gcc-interface/misc.c (gnat_handle_option): Remove special logic
	for Wuninitialized without -O.
	
2010-05-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (enum standard_datatypes): Add new value
	ADT_exception_data_name_id.
	(exception_data_name_id): New define.
	* gcc-interface/trans.c (gigi): Initialize it.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Use the standard
	exception type for standard exception definitions.  Do not make them
	volatile.
	<E_Record_Type>: Equate fields of types associated with an exception
	definition to those of the standard exception type.

2010-05-13  Andreas Schwab  <schwab@linux-m68k.org>

	* tracebak.c (__gnat_backtrace): Mark top_stack with ATTRIBUTE_UNUSED.

2010-05-12  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Tidy up
	code, improve comments and fix formatting nits.

2010-05-12  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (update_pointer_to): Return early if the old
	pointer already points to the new type.  Chain the old pointer and its
	variants at the end of new pointer's chain after updating them.

2010-05-10  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_disp.adb (Make_Tags): Mark the imported view of dispatch tables
	built for interfaces.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Use
	imported_p instead of Is_Imported when considering constants.
	Do not promote alignment of exported objects.
	<E_Record_Subtype>: Strip all suffixes for dispatch table entities.

2010-05-08  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_disp.adb (Make_Tags): Mark the imported view of dispatch tables.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Make imported
	constants really constant.
	<E_Record_Subtype>: Strip the suffix for dispatch table entities.

2010-05-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (make_aligning_type): Declare the type.

2010-05-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Create variables for size
	expressions of variant part of record types declared at library level.

2010-05-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (create_field_decl): Move PACKED parameter.
	* gcc-interface/utils.c (create_field_decl): Move PACKED parameter.
	(rest_of_record_type_compilation): Adjust call to create_field_decl.
	(make_descriptor_field): Likewise and pass correctly typed constants.
	(build_unc_object_type): Likewise.
	(unchecked_convert): Likewise.
	* gcc-interface/decl.c (elaborate_expression_2): New static function.
	(gnat_to_gnu_entity): Use it to make alignment factors explicit.
	Adjust call to create_field_decl.
	(make_aligning_type): Likewise.
	(make_packable_type): Likewise.
	(maybe_pad_type): Likewise.
	(gnat_to_gnu_field): Likewise.
	(components_to_record): Likewise.
	(create_field_decl_from): Likewise.
	(create_variant_part_from): Remove superfluous test.
	* gcc-interface/trans.c (gigi): Adjust call to create_field_decl.

2010-05-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (build_unc_object_type): Add DEBUG_INFO_P param.
	(build_unc_object_type_from_ptr): Likewise.
	* gcc-interface/utils.c (build_unc_object_type): Add DEBUG_INFO_P param
	and pass it to create_type_decl.  Declare the type.  Simplify.
	(build_unc_object_type_from_ptr): Add DEBUG_INFO_P parameter and pass
	it to build_unc_object_type.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust to above change.
	* gcc-interface/trans.c (Attribute_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.
	* gcc-interface/utils2.c (build_allocator): Likewise.

2010-05-07  Eric Botcazou  <ebotcazou@adacore.com>

	PR 40989
	* gcc-interface/misc.c (gnat_handle_option): Fix long line.

2010-05-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Makefile.in: Removed mips-sgi-irix5* support.

2010-05-06  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR 40989
	* gcc-interface/misc.c (gnat_handle_option): Add argument kind.

2010-05-02  Giuseppe Scrivano  <gscrivano@gnu.org>

	* gnathtml.pl: Use 755 as mask for new directories.

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

	* gcc-interface/trans.c (gnat_gimplify_expr) <ADDR_EXPR>: Uniquize
	constant constructors before taking their address.

2010-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_dbug.ads: Fix outdated description.  Mention link between XVS
	and XVZ objects.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Set
	XVZ variable as unit size of XVS type.
	(maybe_pad_type): Likewise.

2010-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Do not
	use memmove if the array type is bit-packed.

2010-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_init): Remove second argument in call to
	build_common_tree_nodes.

2010-04-18  Ozkan Sezer  <sezeroz@gmail.com>

	* gsocket.h: Make sure that winsock2.h is included before windows.h.

2010-04-17  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (build_unary_op) <ATTR_ADDR_EXPR>: Do not
	issue warning.

2010-04-17  Eric Botcazou  <ebotcazou@adacore.com>

	* uintp.h (UI_Lt): Declare.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Do the size
	computation in sizetype.
	<E_Array_Subtype>: Use unified handling for all index types.  Do not
	generate MAX_EXPR-based expressions, only COND_EXPR-based ones.  Add
	bypass for PATs.
	(annotate_value): Change test for negative values.
	(validate_size): Apply test for negative values on GNAT nodes.
	(set_rm_size): Likewise.
	* gcc-interface/misc.c (gnat_init): Set unsigned types for sizetypes.
	* gcc-interface/utils.c (rest_of_record_type_compilation): Change test
	for negative values.
	(max_size) <MINUS_EXPR>: Do not reassociate a COND_EXPR on the LHS.
	(builtin_type_for_size): Adjust definition of signed_size_type_node.
	* gcc-interface/utils2.c (compare_arrays): Optimize comparison of
	lengths against zero.

2010-04-17  Eric Botcazou  <ebotcazou@adacore.com>

	* back-end.adb (Call_Back_End): Pass Standard_Character to gigi.
	* gcc-interface/gigi.h (gigi): Add standard_character parameter.
	(CHAR_TYPE_SIZE, SHORT_TYPE_SIZE, INT_TYPE_SIZE, LONG_TYPE_SIZE, 
	LONG_LONG_TYPE_SIZE, FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE,
	LONG_DOUBLE_TYPE_SIZE, SIZE_TYPE): Delete.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Call
	rm_size.
	* gcc-interface/misc.c (gnat_init): Set signedness of char as per
	flag_signed_char.  Tag sizetype with "size_type" moniker.
	* gcc-interface/trans.c (gigi): Add standard_character parameter.
	Remove useless built-in types.  Equate unsigned_char_type_node to
	Standard.Character.  Use it instead of char_type_node throughout.
	(Attribute_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.
	* gcc-interface/utils2.c (build_call_raise): Likewise.

2010-04-17  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (enum standard_datatypes): Add new values
	ADT_sbitsize_one_node and ADT_sbitsize_unit_node.
	(sbitsize_one_node): New macro.
	(sbitsize_unit_node): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Fix
	latent bug in the computation of subrange_p.  Fold wider_p predicate.
	(cannot_be_superflat_p): Use an explicitly signed 64-bit type to do
	the final comparison.
	(make_aligning_type): Build real negation and use sizetype throughout
	the offset computation.
	(maybe_pad_type): Do not issue the warning when the new size expression
	is too complex.
	(annotate_value) <INTEGER_CST>: Simplify code handling negative values.
	* gcc-interface/misc.c (gnat_init): Initialize sbitsize_one_node and
	sbitsize_unit_node.
	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Pool_Address>: Fold
	double negation.
	(gnat_to_gnu) <N_Free_Statement>: Likewise.
	* gcc-interface/utils.c (convert): Use sbitsize_unit_node.
	* gcc-interface/utils2.c (compare_arrays): Compute real lengths and use
	constants in sizetype.  Remove dead code and tweak comments.  Generate
	equality instead of inequality comparisons for zero length tests.

2010-04-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (gnat_init_decl_processing): Delete.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Constify a few variables.
	<object>: Do not create the fake PARM_DECL if no debug info is needed.
	Do not create the corresponding VAR_DECL of a CONST_DECL for debugging
	purposes if no debug info is needed.
	Fix formatting.  Reorder and add comments.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Attribute_Reference>: Constify
	variable and remove obsolete comment.
	* gcc-interface/utils.c (convert_vms_descriptor64): Tweak comment.
	(convert_vms_descriptor32): Likewise.
	(convert): Remove dead code.
	<UNCONSTRAINED_ARRAY_REF>: Pass the field instead of its name to build
	the reference to the P_ARRAY pointer.
	<POINTER_TYPE>: Likewise.
	(maybe_unconstrained_array) <UNCONSTRAINED_ARRAY_TYPE>: Likewise.
	(gnat_init_decl_processing): Delete, move contents to...
	* gcc-interface/misc.c (gnat_init): ...here.

2010-04-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (unchecked_conversion_nop): Handle function
	calls.  Return true for conversion from a record subtype to its type.

2010-04-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Use boolean_type_node in
	lieu of integer_type_node for boolean operations.
	(choices_to_gnu): Likewise.
	* gcc-interface/trans.c (Attribute_to_gnu): Likewise.
	(Loop_Statement_to_gnu): Likewise.
	(establish_gnat_vms_condition_handler): Likewise.
	(Exception_Handler_to_gnu_sjlj): Likewise.
	(gnat_to_gnu): Likewise.
	(build_unary_op_trapv): Likewise.
	(build_binary_op_trapv): Likewise.
	(emit_range_check): Likewise.
	(emit_index_check): Likewise.
	(convert_with_check): Likewise.
	* gcc-interface/utils.c (convert_vms_descriptor64): Likewise.
	(convert_vms_descriptor32): Likewise.
	(convert_vms_descriptor): Likewise.
	* gcc-interface/utils2.c (nonbinary_modular_operation): Likewise.
	(compare_arrays): Use boolean instead of integer constants.
	(build_binary_op) <TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR,
	TRUTH_OR_EXPR, TRUTH_XOR_EXPR>: New case.  Check that the result type
	is a boolean type.
	<GE_EXPR, LE_EXPR, GT_EXPR, LT_EXPR>: Remove obsolete assertion.
	<EQ_EXPR, NE_EXPR>: Check that the result type is a boolean type.
	<PREINC/PREDECREMENT_EXPR, POSTINC/POSTDECREMENT_EXPR>: Delete.
	<TRUTH_NOT_EXPR>: Check that the result type is a boolean type.
	(build_unary_op): Use boolean_type_node in lieu of integer_type_node
	for boolean operations.
	(fill_vms_descriptor): Likewise.  Fix formatting nits.

2010-04-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.def (LOOP_STMT): Change to 4-operand nodes.
	* gcc-interface/ada-tree.h (LOOP_STMT_TOP_COND, LOOP_STMT_BOT_COND):
	Merge into...
	(LOOP_STMT_COND): ...this.
	(LOOP_STMT_BOTTOM_COND_P): New flag.
	(LOOP_STMT_TOP_UPDATE_P): Likewise.
	* gcc-interface/trans.c (can_equal_min_or_max_val_p): New function.
	(can_equal_min_val_p): New static inline function.
	(can_equal_max_val_p): Likewise.
	(Loop_Statement_to_gnu): Use build4 in lieu of build5 and adjust to
	new LOOP_STMT semantics.  Use two different strategies depending on
	whether optimization is enabled to translate the loop.
	(gnat_gimplify_stmt) <LOOP_STMT>: Adjust to new LOOP_STMT semantics.

2010-04-16  Eric Botcazou  <ebotcazou@adacore.com>

	* uintp.adb (UI_From_Dint): Remove useless code.
	(UI_From_Int): Likewise.
	* uintp.h: Reorder declarations.
	(UI_From_gnu): Declare.
	(UI_Base): Likewise.
	(Vector_Template): Likewise.
	(Vector_To_Uint): Likewise.
	(Uint_0): Remove.
	(Uint_1): Likewise.
	* gcc-interface/gigi.h: Tweak comments.
	* gcc-interface/cuintp.c (UI_From_gnu): New global function.
	* gcc-interface/decl.c (maybe_pad_type): Do not warn if either size
	overflows.
	(annotate_value) <INTEGER_CST>: Call UI_From_gnu.
	* gcc-interface/trans.c (post_error_ne_num): Call post_error_ne.
	(post_error_ne_tree): Call UI_From_gnu and post_error_ne.
	* gcc-interface/utils.c (max_size) <tcc_binary>: Do not special-case
	TYPE_MAX_VALUE.

2010-04-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (make_type_from_size) <INTEGER_TYPE>: Just copy
	TYPE_NAME.
	* gcc-interface/trans.c (smaller_packable_type_p): Rename into...
	(smaller_form_type_p): ...this.  Change parameter and variable names.
	(call_to_gnu): Use the nominal type of the parameter to create the
	temporary if it's a smaller form of the actual type.
	(addressable_p): Return false if the actual type is integral and its
	size is greater than that of the expected type.

2010-04-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/cuintp.c (UI_To_gnu): Fix long line.
	* gcc-interface/gigi.h (MARK_VISITED): Skip objects of constant class.
	(process_attributes): Delete.
	(post_error_ne_num): Change parameter name.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not force debug info
	with -g3.  Remove a couple of obsolete lines.  Minor tweaks.
	If type annotating mode, operate on trees to compute the adjustment to
	the sizes of tagged types.  Fix long line.
	(cannot_be_superflat_p): Tweak head comment.
	(annotate_value): Fold local constant.
	(set_rm_size): Fix long line.
	* gcc-interface/trans.c (Identifier_to_gnu): Rework comments.
	(Attribute_to_gnu): Fix long line.
	<Attr_Size>: Remove useless assertion.
	Reorder statements.  Use size_binop routine.
	(Loop_Statement_to_gnu): Use build5 in lieu of build_nt.
	Create local variables for the label and the test.  Tweak comments.
	(Subprogram_Body_to_gnu): Reset cfun to NULL.
	(Compilation_Unit_to_gnu): Use the Sloc of the Unit node.
	(process_inlined_subprograms): Integrate into...
	(Compilation_Unit_to_gnu): ...this.
	(gnat_to_gnu): Fix long line.
	(post_error_ne_num): Change parameter name.
	* gcc-interface/utils.c (process_attributes): Static-ify.
	<ATTR_MACHINE_ATTRIBUTE>: Set input_location before proceeding.
	(create_type_decl): Add comment.
	(create_var_decl_1): Process the attributes after adding the VAR_DECL
	to the current binding level.
	(create_subprog_decl): Likewise for the FUNCTION_DECL.
	(end_subprog_body): Do not reset cfun to NULL.
	(build_vms_descriptor32): Fix long line.
	(build_vms_descriptor): Likewise.
	(handle_nonnull_attribute): Likewise.
	(convert_vms_descriptor64): Likewise.
	* gcc-interface/utils2.c (fill_vms_descriptor): Fix long line.
	(gnat_protect_expr): Fix thinko.

2010-04-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gigi): Set DECL_IGNORED_P on EH functions.
	(gnat_to_gnu) <N_Op_Eq>: Restore the value of input_location
	before translating the top-level node.
	(lvalue_required_p) <N_Function_Call>: Return 1 if !constant.
	<N_Object_Declaration>: Likewise.
	<N_Assignment_Statement>: Likewise.
	<N_Unchecked_Type_Conversion>: Likewise.
	(call_to_gnu): Remove kludge.
	(gnat_to_gnu) <N_Return_Statement>: When not optimizing, force labels
	associated with user returns to be preserved.
	(gnat_to_gnu): Add special code to deal with boolean rvalues.
	* gcc-interface/utils2.c (compare_arrays): Set input_location on all
	comparisons.
	(build_unary_op) <ADDR_EXPR>: Call build_fold_addr_expr.
	<INDIRECT_REF>: Call build_fold_indirect_ref.

2010-04-15  Joel Sherrill  <joel.sherrill@oarcorp.com>

	* g-socket.adb: A target can have multiple missing errno's.  This
	will result in multiple errno's being defined as -1.  Because of this
	we can not use a case but must use a series of if's to avoid 
	a duplicate case error in GNAT.Sockets.Resolve_Error.

2010-04-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (call_to_gnu): Open a nesting level if this is
	a statement.  Otherwise, if at top-level, push the processing of the
	elaboration routine.  In the misaligned case, issue the error messages
	again on entry and create the temporary explicitly.  Do not issue them
	for CONSTRUCTORs.
	For a function call, emit the range check if necessary.
	In the copy-in copy-out case, create the temporary for the return
	value explicitly.
	Do not unnecessarily convert by-ref parameters to the formal's type.
	Remove obsolete guards in conditions.
	(gnat_to_gnu) <N_Assignment_Statement>: For a function call, pass the
	target to call_to_gnu in all cases.
	(gnat_gimplify_expr) <ADDR_EXPR>: Remove handling of SAVE_EXPR.
	(addressable_p) <CONSTRUCTOR>: Return false if not static.
	<COMPOUND_EXPR>: New case.
	* gcc-interface/utils2.c (build_unary_op) <ADDR_EXPR>: Fold a compound
	expression if it has unconstrained array type.
	(gnat_mark_addressable) <COMPOUND_EXPR>: New case.
	(gnat_stabilize_reference) <COMPOUND_EXPR>: Stabilize operands on an
	individual basis.

2010-04-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gigi): Do not start statement group.
	(Compilation_Unit_to_gnu): Set current_function_decl to NULL.
	Start statement group and push binding level here...
	(gnat_to_gnu) <N_Compilation_Unit>: ...and not here.
	Do not push fake contexts at top level.  Remove redundant code.
	(call_to_gnu): Rename a local variable and constify another.
	* gcc-interface/utils.c (gnat_pushlevel): Fix formatting nits.
	(set_current_block_context): Set it as the group's block.
	(gnat_init_decl_processing): Delete unrelated init code.
	(end_subprog_body): Use NULL_TREE.

2010-04-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (call_to_gnu): Do not unnecessarily force
	side-effects of actual parameters before the call.

2010-04-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (validate_size): Reorder, remove obsolete test
	and warning.
	(set_rm_size): Reorder and remove obsolete test.

2010-04-14  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h: Reorder declarations and tweak comments.
	(gigi): Adjust ATTRIBUTE_UNUSED markers.
	* gcc-interface/gadaint.h: New file.
	* gcc-interface/trans.c: Include it in lieu of adaint.h.  Reorder.
	(__gnat_to_canonical_file_spec): Remove declaration.
	(number_names): Delete.
	(number_files): Likewise.
	(gigi): Adjust.
	* gcc-interface/Make-lang.in (ada/trans.o): Adjust dependencies to
	above change.

2010-04-14  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Class_Wide_Type>: Fix
	comment.
	* gcc-interface/trans.c (process_freeze_entity): Use local copy of
	Ekind.  Return early for class-wide types.  Do not compute initializer
	unless necessary.  Reuse the tree for an associated class-wide type
	only if processing its root type.

2010-04-13  Joel Sherrill  <joel.sherrill@oarcorp.com>

	* gsocket.h: Run-time can no longer be built without network
	OS headers available.  Changing RTEMS GNAT build procedure to
	reflect this and letting run-time build use network .h files.

2010-04-13  Duncan Sands  <baldrick@free.fr>

	* gcc-interface/misc.c (gnat_eh_type_covers): Remove.
	* gcc-interface/trans.c (Exception_Handler_to_gnu_zcx): Update comment.

2010-04-13  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (standard_datatypes): Add ADT_parent_name_id.
	(parent_name_id): New macro.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Use it.
	* gcc-interface/trans.c (gigi): Initialize it.
	(lvalue_required_p) <N_Type_Conversion>: New case.
	<N_Qualified_Expression>: Likewise.
	<N_Allocator>: Likewise.
	* gcc-interface/utils.c (convert): Try to properly upcast tagged types.

2010-04-13  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (TYPE_BY_REFERENCE_P): Delete.
	(DECL_CONST_ADDRESS_P): New macro.
	(SET_DECL_ORIGINAL_FIELD_TO_FIELD): Likewise.
	(SAME_FIELD_P): Likewise.
	* gcc-interface/decl.c (constructor_address_p): New static function.
	(gnat_to_gnu_entity) <object>: Set DECL_CONST_ADDRESS_P according to
	the return value of above function.
	(gnat_to_gnu_entity) <E_Record_Type>: Force BLKmode for all types
	passed by reference.
	<E_Record_Subtype>: Likewise.
	Set TREE_ADDRESSABLE on the type if it passed by reference.
	(make_packable_type): Use SET_DECL_ORIGINAL_FIELD_TO_FIELD.
	(create_field_decl_from): Likewise.
	(substitute_in_type): Likewise.
	(purpose_member_field): Use SAME_FIELD_P.
	* gcc-interface/misc.c (must_pass_by_ref): Test TREE_ADDRESSABLE.
	* gcc-interface/trans.c (lvalue_required_p): Add ADDRESS_OF_CONSTANT
	parameter and adjust recursive calls.
	<N_Explicit_Dereference>: New case.
	<N_Object_Declaration>: Return 1 if the object is of a class-wide type.
	Adjust calls to lvalue_required_p.  Do not return the initializer of a
	DECL_CONST_ADDRESS_P constant if an lvalue is required for it.
	(call_to_gnu): Delay issuing error message for a misaligned actual and
	avoid the associated back-end assertion.  Test TREE_ADDRESSABLE.
	(gnat_gimplify_expr) <ADDR_EXPR>: Handle non-static constructors.
	* gcc-interface/utils.c (make_dummy_type): Set TREE_ADDRESSABLE if the
	type is passed by reference.
	(convert) <CONSTRUCTOR>: Convert in-place in more cases.
	* gcc-interface/utils2.c (build_cond_expr): Drop TYPE_BY_REFERENCE_P.
	(build_simple_component_ref): Use SAME_FIELD_P.

2010-04-12  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Identifier_to_gnu): Use boolean variable.
	(call_to_gnu): Test gigi's flag TYPE_BY_REFERENCE_P instead of calling
	front-end's predicate Is_By_Reference_Type.  Use consistent order and
	remove ??? comment.  Use original conversion in all cases, if any.
	* gcc-interface/utils.c (make_dummy_type): Minor tweak.
	(convert): Use local copy in more cases.
	<INDIRECT_REF>: Remove deactivated code.
	(unchecked_convert): Use a couple of local copies.

2010-04-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (lvalue_required_for_attribute_p): New static
	function.
	(lvalue_required_p) <N_Attribute_Reference>: Call it.
	(gnat_to_gnu) <N_Selected_Component>: Prevent build_component_ref from
	folding the result only if lvalue_required_for_attribute_p is true.
	* gcc-interface/utils.c (maybe_unconstrained_array): Pass correctly
	typed constant to build_component_ref.
	(unchecked_convert): Likewise.
	* gcc-interface/utils2.c (maybe_wrap_malloc): Likewise.
	(build_allocator): Likewise.

2010-04-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (build_cond_expr): Take the address and
	dereference if the result type is passed by reference.

2010-04-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Case_Statement_to_gnu): Bool-ify variable.
	(gnat_to_gnu) <N_Null_Statement>: When not optimizing, generate a
	goto to the next statement.

2010-04-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (maybe_variable): Delete.
	(protect_multiple_eval): Likewise.
	(maybe_stabilize_reference): Likewise.
	(gnat_save_expr): Declare.
	(gnat_protect_expr): Likewise.
	(gnat_stabilize_reference): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Use
	gnat_stabilize_reference.
	(maybe_variable): Delete.
	(elaborate_expression_1): Use gnat_save_expr.
	* gcc-interface/trans.c (Attribute_to_gnu): Use gnat_protect_expr.
	(call_to_gnu): Pass NULL to gnat_stabilize_reference.
	(gnat_to_gnu) <N_Object_Declaration>: Use gnat_save_expr.
	<N_Slice>: Use gnat_protect_exp.
	<N_Selected_Component>: Pass NULL to gnat_stabilize_reference.
	<N_In>: Use gnat_protect_expr.
	Pass NULL to gnat_stabilize_reference.
	(build_unary_op_trapv): Use gnat_protect_expr.
	(build_binary_op_trapv): Likewise.
	(emit_range_check): Likewise.
	(emit_index_check): Likewise.
	(convert_with_check): Likewise.
	(protect_multiple_eval): Move to utils2.c file.
	(maybe_stabilize_reference): Merge into...
	(gnat_stabilize_reference): ...this.  Move to utils2.c file.
	(gnat_stabilize_reference_1): Likewise.
	* gcc-interface/utils.c (convert_to_fat_pointer): Use gnat_protect_expr
	instead of protect_multiple_eval.
	* gcc-interface/utils2.c (compare_arrays): Likewise.
	(nonbinary_modular_operation): Likewise.
	(maybe_wrap_malloc): Likewise.
	(build_allocator): Likewise.
	(gnat_save_expr): New function.
	(gnat_protect_expr): Rename from protect_multiple_eval.  Early return
	in common cases.  Propagate TREE_READONLY onto dereferences.
	(gnat_stabilize_reference_1): Move from trans.c file.
	(gnat_stabilize_reference): Likewise.

2010-04-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (gnat_mark_addressable): Rename parameter.
	* gcc-interface/decl.c (maybe_variable): Do not set TREE_STATIC on _REF
	node.  Use the type of the operand to set TREE_READONLY.
	* gcc-interface/trans.c (Identifier_to_gnu): Do not set TREE_STATIC on
	_REF node.  Do not overwrite TREE_READONLY.
	(call_to_gnu): Rename local variable and fix various nits.  In the
	copy-in/copy-out case, build the SAVE_EXPR manually.
	(convert_with_check): Call protect_multiple_eval in lieu of save_expr
	and fold the computations.
	(protect_multiple_eval): Always save entire fat pointers.
	(maybe_stabilize_reference): Minor tweaks.
	(gnat_stabilize_reference_1): Likewise.  Do not deal with tcc_constant,
	tcc_type and tcc_statement.
	* gcc-interface/utils.c (convert_to_fat_pointer): Call
	protect_multiple_eval in lieu of save_expr.
	(convert): Minor tweaks.
	(maybe_unconstrained_array): Do not set TREE_STATIC on _REF node.
	(builtin_type_for_size): Call gnat_type_for_size directly.
	* gcc-interface/utils2.c (contains_save_expr_p): Delete.
	(contains_null_expr): Likewise
	(gnat_build_constructor): Do not call it.
	(compare_arrays): Deal with all side-effects, use protect_multiple_eval
	instead of gnat_stabilize_reference to protect the operands.
	(nonbinary_modular_operation): Call protect_multiple_eval in lieu of
	save_expr.
	(maybe_wrap_malloc): Likewise.
	(build_allocator): Likewise.
	(build_unary_op) <INDIRECT_REF>: Do not set TREE_STATIC on _REF node.
	(gnat_mark_addressable): Rename parameter.

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

	* gcc-interface/ada-tree.h (TYPE_RETURNS_UNCONSTRAINED_P): Rename into.
	(TYPE_RETURN_UNCONSTRAINED_P): ...this.
	(TYPE_RETURNS_BY_REF_P): Rename into.
	(TYPE_RETURN_BY_DIRECT_REF_P): ...this.
	(TYPE_RETURNS_BY_TARGET_PTR_P): Delete.
	* gcc-interface/gigi.h (create_subprog_type): Adjust parameter names.
	(build_return_expr): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>:
	Rename local variables.  If the return Mechanism is By_Reference, pass
	return_by_invisible_ref_p to create_subprog_type instead of toggling
	TREE_ADDRESSABLE.  Test return_by_invisible_ref_p in order to annotate
	the mechanism.  Use regular return for contrained types with non-static
	size and return by invisible reference for unconstrained return types
	with default discriminants.  Update comment.
	* gcc-interface/trans.c (Subprogram_Body_to_gnu): If the function
	returns by invisible reference, turn the RESULT_DECL into a pointer.
	Do not handle DECL_BY_REF_P in the CICO case here.
	(call_to_gnu): Remove code handling return by target pointer.  For a
	function call, if the return type has non-constant size, generate the
	assignment with an INIT_EXPR.
	(gnat_to_gnu) <N_Return_Statement>: Remove dead code in the CICO case.
	If the function returns by invisible reference, build the copy return
	operation manually.
	(add_decl_expr): Initialize the variable with an INIT_EXPR.
	* gcc-interface/utils.c (create_subprog_type): Adjust parameter names.
	Adjust for renaming of macros.  Copy the node only when necessary.
	(create_subprog_decl): Do not toggle TREE_ADDRESSABLE on the return
	type, only change DECL_BY_REFERENCE on the RETURN_DECL.
	(convert_from_reference): Delete.
	(is_byref_result): Likewise.
	(gnat_genericize_r): Likewise.
	(gnat_genericize): Likewise.
	(end_subprog_body): Do not call gnat_genericize.
	* gcc-interface/utils2.c (build_binary_op) <INIT_EXPR>: New case.
	(build_return_expr): Adjust parameter names, logic and comment.

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

	* exp_pakd.adb (Create_Packed_Array_Type): Always use a modular type
	if the size is small enough.  Propagate the alignment if there is an
	alignment clause on the original array type.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Subtype>
	Deal with under-aligned packed array types.  Copy the size onto the
	justified modular type and don't lay it out again.  Likewise for the
	padding type built for other under-aligned subtypes.
	* gcc-interface/utils.c (finish_record_type): Do not set a default mode
	on the type.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Set default
	alignment on the RETURN type built for the Copy-In Copy-Out mechanism.

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

	* gcc-interface/trans.c (call_to_gnu): In the return-by-target-ptr case
	do not set the result type if there is a specified target and do not
	convert the result in any cases.
	(protect_multiple_eval): Make direct SAVE_EXPR for CALL_EXPR.
	(maybe_stabilize_reference) <COMPOUND_EXPR>: Merge with CALL_EXPR.

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

	* gcc-interface/Makefile.in (SPARC/Solaris): Use sparcv8plus.

2010-02-27  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/42253
	* gcc-interface/utils2.c (build_binary_op) <EQ_EXPR>: Assert that fat
	pointer base types are variant of each other.  Apply special treatment
	for null to fat pointer types in all cases.

2010-01-28  Pascal Obry  <obry@adacore.com>

	* s-win32.ads: Add some missing constants.

2010-01-28  Vincent Celier  <celier@adacore.com>

	* prj-attr-pm.adb (Add_Attribute): Do nothing if To_Package is
	Unknown_Package.

2010-01-28  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor correction

2010-01-27  Pascal Obry  <obry@adacore.com>

	* g-awk.adb: ensure that an AWK session is reusable.

2010-01-27  Vasiliy Fofanov  <fofanov@adacore.com>

	* g-regist.adb (For_Every_Key): Fix previous change.
	Minor reformatting.

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

	* lib-writ.ads: Current version of spec for new N (note) ALI lines

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

	* a-cdlili.adb (Insert): Correct exception message when cursor
	designates wrong list.

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

	* gnatcmd.adb: When there is only one main specified, the package
	support Switches (<main>) and attribute Switches is specified for the
	main, use these switches, instead of Default_Switches ("Ada").

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

	* sem_prag.adb, par-prag.adb, snames.ads-tmpl: pragma Dimension initial
	implementation.
	* exp_disp.adb: Minor reformatting

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

	* seh_init.c: Use __ImageBase instead of _ImageBase.

2010-01-27  Javier Miranda  <miranda@adacore.com>

	* exp_disp.ads, exp_disp.adb (Expand_Interface_Thunk): Modify the
	profile of interface thunks. The type of the controlling formal is now
	the covered interface type (instead of the target tagged type).

2010-01-27  Sergey Rybin  <rybin@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Update gnatcheck doc.

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

	* sinput.ads, sinput.adb (Sloc_Range): Applies to all nodes, formal
	changed from Expr to N.

2010-01-26  Thomas Quinot  <quinot@adacore.com>

	* gnat_ugn.texi: Adjust documentation of -gnatz switches.
	* usage.adb: Replace line for -gnatz with two lines for -gnatzc and
	-gnatzr.

2010-01-26  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: Add new attribute Library_Install_Name_Option
	Replace attribute Run_Path_Origin_Supported with Run_Path_Origin
	* prj-nmsc.adb (Process_Project_Level_Simple_Attributes): Process
	attributes Run_Path_Option and Library_Install_Name_Option.
	* prj.ads (Project_Configuration): Replace component
	Run_Path_Origin_Supported with component Run_Path_Origin. Add new
	component Library_Install_Name_Option.
	* snames.ads-tmpl: Add new standard name Library_Install_Name_Option
	Replace Run_Path_Origin_Supported with Run_Path_Origin

2010-01-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Use_One_Package): Within an instance, an actual package
	is not hidden by a homograph declared in another actual package.

2010-01-26  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb (Traverse_Declarations_Or_Statements): Only generate
	decisions for pragmas Assert, Check, Precondition, Postcondition if
	-gnata set.
	* scos.ads: Update comments.
	* get_scos.adb, put_scos.adb: Minor fix to code reading statement SCOs.
	Also remove obsolete code for CT (exit point) SCOs.

2010-01-26  Thomas Quinot  <quinot@adacore.com>

	* switch-c.adb: Fix handling of -gnatz*

2010-01-26  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb (Traverse_Declarations_Or_Statements): Separate F/W
	qualifiers for FOR/WHILE loops
	* scos.ads: Use separate type letters F/W for for/while loops

2010-01-26  Robert Dewar  <dewar@adacore.com>

	* get_scos.adb (Get_SCOs): Implement new form of CS entries (multiple
	entries per line, one for each statement in the sequence).
	* par_sco.adb (Traverse_Declarations_Or_Statements): Increase array
	size from 100 to 10_000 for SC_Array to avoid any real possibility of
	overflow. Output decisions in for loops.
	Exclude labels from CS lines.
	* scos.ads: Clarify that label is not included in the entry point

2010-01-26  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb (Traverse_Declarations_Or_Statments): Implement new
	format of statement sequence SCO entries (one location/statement).
	* put_scos.adb (Put_SCOs): Implement new format of CS lines
	* scos.ads: Update comments.
	* sem_eval.adb: Minor reformatting.

2010-01-26  Robert Dewar  <dewar@adacore.com>

	* par_sco.ads, par_sco.adb (Set_Statement_Entry): New handling of exits
	(Extend_Statement_Sequence): New procedures
	(Traverse_Declarations_Or_Statements): New handling for exits.

2010-01-26  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for
	Case.

2010-01-26  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR
	* scos.ads: Clarify handling of logical operators

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

	* s-tpoben.adb: Update comments.

2010-01-26  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Set_Small_Size): Don't set size if alignment clause
	present.

2010-01-26  Robert Dewar  <dewar@adacore.com>

	* scos.ads: Clean up documentation, remove obsolete XOR references
2010-01-26  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Complete documentation on the restrictions for
	combined options in -gnatxxx switches.
	Fix typo.

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

	* s-tpoben.adb (Initialize_Protection_Entries): If a PO is created from
	a controlled operation, abort is already deferred at this point, so we
	need to use Defer_Abort_Nestable.

2010-01-26  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Get_Config_Switches): Check for a default language for
	a project extending a project with no languages.

2010-01-26  Vincent Celier  <celier@adacore.com>

	* switch-c.adb (Scan_Front_End_Switches): Take into account options
	that follow -gnatef.
	Allow -gnateG to be followed by other options.

2010-01-26  Robert Dewar  <dewar@adacore.com>

	* s-commun.ads, s-osprim-mingw.adb, s-stchop-vxworks.adb, sem_aggr.adb,
	s-vxwext.adb, sem_ch10.adb, sem_eval.adb, sem_prag.adb: Minor
	reformatting.

2010-01-26  Vasiliy Fofanov  <fofanov@adacore.com>

	* g-regist.adb, g-regist.ads (For_Every_Key): New generic procedure
	that allows to iterate over all subkeys of a key.

2010-01-26  Ed Falis  <falis@adacore.com>

	* sysdep.c: enable NFS for VxWorks MILS
	* env.c: enable __gnat_environ for VxWorks MILS
	* gcc-interface/Makefile.in: Add VxWorks MILS target pairs.

2010-01-25  Bob Duff  <duff@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): Check for the case where this
	is an internally-generated positional aggregate, and the bounds are
	already correctly set. We don't want to overwrite those bounds with
	bounds determined by context.

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

	* g-sercom.ads, gnatcmd.adb, gnatlink.adb, a-ststio.adb, exp_ch6.adb,
	exp_ch9.adb, g-sechas.ads: Minor reformatting.

2010-01-25  Thomas Quinot  <quinot@adacore.com>

	* s-commun.adb (Last_Index): Count must be converted to SEO (a signed
	integer type) before subtracting 1, otherwise the computation may wrap
	(because size_t is modular) and cause the conversion to fail.

2010-01-25  Ed Falis  <falis@adacore.com>

	* sysdep.c, init.c: Adapt to support full run-time on VxWorks MILS.

2010-01-25  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: New attribute Run_Path_Origin_Required
	* prj-nmsc.adb (Process_Project_Level_Simple_Attributes): Process new
	attribute Run_Path_Origin_Required.
	* prj.ads (Project_Configuration): New component
	Run_Path_Origin_Supported.
	* snames.ads-tmpl: New standard name Run_Path_Origin_Required

2010-01-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): If the bounds in a choice
	have errors, do not continue resolution of the aggregate.
	* sem_eval.adb (Eval_Indexed_Component): Do not attempt to evaluate if
	the array type indicates an error.

2010-01-25  Bob Duff  <duff@adacore.com>

	* sinfo.ads: Minor comment fixes.

2010-01-25  Bob Duff  <duff@adacore.com>

	* exp_ch4.adb, exp_aggr.adb: Minor comment fixes and code clean up.

2010-01-25  Arnaud Charlet  <charlet@adacore.com>

	* gnatvsn.ads (Current_Year): Update.

2010-01-25  Florian Villoing  <villoing@adacore.com>

	* gnat_ugn.texi: Fix typo.

2010-01-25  Thomas Quinot  <quinot@adacore.com>

	* scos.ads: Update specification.

2010-01-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_PPCs): If a postcondition is present and the
	enclosing subprogram has no previous spec, attach postcondition
	procedure to the defining entity for the body.

2010-01-25  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Build_Record_Aggr_Code); Do not generate call to
	initialization procedure of the ancestor part of an extension aggregate
	if it is an interface type.

2010-01-25  Vincent Celier  <celier@adacore.com>

	* gnatlink.adb (Process_Binder_File): The directory for the shared
	version of libgcc in the run path options is found in the subdirectory
	indicated by __gnat_default_libgcc_subdir.
	* link.c: Declare new const char * __gnat_default_libgcc_subdir for
	each platform.

2010-01-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb: More flexible pragma Annotate.

2010-01-22  Eric Botcazou  <ebotcazou@adacore.com>

	* system-linux-armel.ads (Stack_Check_Probes): Set to True.
	* system-linux-armeb.ads (Stack_Check_Probes): Likewise.

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

	* gcc-interface/utils.c (create_var_decl_1): Fix formatting nits.

2010-01-18  Jan Hubicka  <jh@suse.cz>

	PR middle-end/42068
	* gcc-interface/utils.c (create_var_decl_1): Do not set COMMON flag for
	unit local variables.

2010-01-17  Laurent GUERBY  <laurent@guerby.net>

	* gcc-interface/Makefile.in: Fix typo in arm*-*-linux-gnueabi.

2010-01-11  Mikael Pettersson  <mikpe@it.uu.se>

	* gcc-interface/Makefile.in: Add arm*-*-linux-gnueabi.
	* system-linux-armeb.ads, system-linux-armel.ads: New files.

2010-01-09  Simon Wright  <simon@pushface.org>

	PR ada/42626
	* gcc-interface/Makefile.in (gnatlib-shared-darwin): Add missing
	end-quote.



Copyright (C) 2010 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.
