2008-12-09  Jakub Jelinek  <jakub@redhat.com>

	PR ada/38450
	* gcc-interface/utils.c (finish_record_type): Use SET_TYPE_MODE.
	* gcc-interface/decl.c (gnat_to_gnu_entity, make_aligning_type):
	Likewise.

2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>

	PR bootstrap/38262
	* gcc-interface/Make-lang.in (gnat1): Add BACKENDLIBS, remove GMPLIBS.

2008-11-29  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/30827
	* g-comver.adb (Ver_Len_Max): Fix inconsistency.

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

	* gcc-interface/decl.c: Fix various nits.

2008-11-20  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (init_gigi_decls): Fix type mismatch.

2008-11-16  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/38127
	* gcc-interface/decl.c (make_type_from_size) <INTEGER_TYPE>: Do not
	special-case boolean types.  Propagate  the name.
	* gcc-interface/targtyps.c: Tweak comment.

2008-11-15  Geert Bosch  <bosch@adacore.com>

	* gcc-interface/trans.c (emit_check): Put back a final save_expr
	to prevent exponential expansion during gimplification.

2008-11-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/lang-specs.h: Expand -coverage and reorder switches.

2008-11-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Force constants
	initialized to a static constant to be statically allocated even if
	they are of a padding type, provided the original type also has
	constant size.

2008-11-15  Laurent Guerby  <laurent@guerby.net>

	PR ada/37993
	* gcc-interface/Makefile.in: Add multilib handling for x86_64
	on darwin.
	* system-darwin-x86_64.ads: New file.

2008-11-13  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <case E_Function>:
	Turn Ada Pure on subprograms back into GCC CONST when eh constructs
	are explicit to the middle-end.  Tidy.

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

	* gcc-interface/ada-tree.def (PLUS_NOMOD_EXPR): New tree code.
	(MINUS_NOMOD_EXPR): Likewise.
	* gcc-interface/utils2.c (build_binary_op) <PREINCREMENT_EXPR>: Make
	unreachable.
	<PLUS_NOMOD_EXPR>: New case.
	<MINUS_NOMOD_EXPR>: Likewise.
	* gcc-interface/trans.c (Loop_Statement_to_gnu): Build increment-and-
	assignment statement instead of using an increment operator.

2008-11-07  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* system-irix-n64.ads: New file.
	* gcc-interface/Makefile.in (mips-sgi-irix6*): Support O32 and N64
	multilibs.

2008-11-07  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	PR ada/37681
	* system-solaris-x86_64.ads: New file.
	* gcc-interface/Makefile.in (*86-solaris2*): Support x86_64 multilib.

2008-11-07  Bechir Zalila  <bechir.zalila@gmail.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/34289
	* lib.ads: (Enable_Switch_Storing): Declare.
	* lib.adb: (Enable_Switch_Storing): New procedure.
	* switch-c.adb (Scan_Front_End_Switches): Add support for -gnatea.
	* make.adb: (Compile_Sources.Compile): Add -gnatea as first option.
	(Display): Never display -gnatea
	* gcc-interface/lang-specs.h: If -gnatea is present, pass -gnatez.

2008-11-07  Thomas Quinot  <quinot@adacore.com>

	* gcc-interface/trans.c (Attribute_to_gnu, case Attr_Length): Check
	for empty range in original base type, not converted result type.

2008-11-07  Geert Bosch  <bosch@adacore.com>

	* gcc-interface/trans.c (build_binary_op_trapv): Convert arguments
	and result for call to __gnat_mulv64.

2008-11-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c: Fix formatting nits.

2008-11-07  Geert Bosch  <bosch@adacore.com>

	* gcc-interface/trans.c (build_binary_op_trapv): Avoid emitting
	overflow check for constant result.

2008-11-07  Geert Bosch  <bosch@adacore.com>

	* gcc-interface/trans.c (build_binary_op_trapv): Use more efficient
	overflow check for addition/subtraction if neither operand is constant.

2008-11-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in (SPARC/Solaris): Use a common set of
	files for the target-dependent part of the runtime.
	(SPARC/Linux): Likewise.

2008-11-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Out_Parameter>: If not
	optimizing, create a PARM_DECL pointing to the VAR_DECL for debugging
	purposes.

2008-11-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_printable_name): Always return a copy
	in GC memory.

2008-11-06  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/19419
	* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>:
	Generate a call to memmove for an assignment between overlapping
	array slices.

2008-11-02  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	PR target/37977
	* gcc-interface/Makefile.in: Add multilib handling for
	s390-linux and s390x-linux.

2008-10-24  Jakub Jelinek  <jakub@redhat.com>

	* gcc-interface/Make-lang.in (check-ada-subtargets): Depend on
	check-acats-subtargets and check-gnat-subtargets.
	(check_acats_targets): New variable.
	(check-acats-subtargets, check-acats%): New targets.
	(check-acats): If -j is used and CHAPTERS is empty, run the testing
	in multiple make goals, possibly parallel, and afterwards run
	dg-extract-results.sh to merge the sum and log files.

2008-10-17  Geert Bosch  <bosch@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu) <N_Slice>: Simplify expansion
	to use only a single check instead of three, and avoid unnecessary
	COMPOUND_EXPR.
	(emit_check): Avoid useless COMPOUND_EXPRs and SAVE_EXPRs, sometimes
	creating more opportunities for optimizations.

2008-10-13  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/37601
	* gcc-interface/utils.c (gnat_types_compatible_p): Handle
	NULL TYPE_DOMAIN.

2008-10-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Move code
	dealing with volatileness to after code dealing with renaming.

2008-10-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Minor tweaks.
	* gcc-interface/trans.c (Pragma_to_gnu): Likewise.

2008-10-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (can_fold_for_view_convert_p): New predicate.
	(unchecked_convert): Use it to disable problematic folding with
	VIEW_CONVERT_EXPR in the general case.  Always disable it for the
	special VIEW_CONVERT_EXPR built for integral types and cope with
	its addressability issues by preserving the first conversion.

2008-10-01  Andreas Schwab  <schwab@suse.de>

	* system-linux-ppc64.ads: New file.
	* gcc-interface/Makefile.in: Add multilib handling for
	powerpc-linux.

2008-09-26  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <object>: Cap the alignment promotion
	to that of ptr_mode instead of word_mode.

2008-09-26  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/5911
	* gcc-interface/Makefile.in (SPARC/Solaris): Add multilib support.

2008-09-25  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/37641
	* adaint.c (__gnat_set_non_writable): Use FILE_WRITE_EA
	instead of deprecated FILE_WRITE_PROPERTIES.

2008-09-22  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Even when they
	are never assigned, volatile entities are not constant for code
	generation purposes.

2008-09-21  Laurent Guerby  <laurent@guerby.net>

	PR ada/5911
	* gcc-interface/Makefile.in: Add multilib handling for x86_64
	and sparc.
	* system-linux-sparcv9.ads: New file.

2008-09-20  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_dbug.ads: Document new convention for the XVZ variable.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Generate
	debug info if necessary for the type padding the component type.
	<E_Array_Subtype>: Likewise.
	(maybe_pad_type): Emit the XVZ variable in units.
	* gcc-interface/trans.c (Loop_Statement_to_gnu): Fix formatting nits.
	(Subprogram_Body_to_gnu): Set the source line of the subprogram's node
	on statements generated to initialize the parameter attributes cache.
	Set the source line of the end label of the body on the special return
	statement built for a procedure with copy-in copy-out parameters.

2008-09-20  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/37585
	* gcc-interface/utils.c (create_subprog_decl): Disable inlining for
	inlined external functions if they contain a nested function not
	declared inline.

2008-09-18  Jan Hubicka  <jh@suse.cz>

	* gcc-interface/utils.c (create_subprog_decl): Use DECL_DECLARED_INLINE_P.
	(end_subprog_body): Do not set DECL_INLINE.

2008-09-17  Pascal Rigaux  <pixel@mandriva.com>

	PR ada/21327
	* gnat_ugn.texi: Use proper format in direntry.

2008-09-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gigi): Declare the name of the compilation
	unit as the first global name.

2008-09-14  Jan Hubicka  <jh@suse.cz>

	* gcc-interface/Make-lang.in (gnat1): Add CFLAGS.

2008-09-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* a-crbtgk.adb, a-direct.ads, a-tasatt.adb, ali.ads,
	bindgen.adb, checks.adb, einfo.ads, exp_aggr.adb, exp_ch11.adb,
	exp_ch3.adb, exp_ch4.adb, exp_ch6.adb, exp_ch7.adb, exp_ch9.adb,
	exp_dbug.ads, exp_disp.adb, exp_dist.adb, exp_pakd.adb,
	exp_util.adb, g-alveop.ads, g-comlin.adb, g-comlin.ads,
	g-diopit.adb, g-socket.ads, gcc-interface/decl.c,
	gcc-interface/gigi.h, gcc-interface/trans.c,
	lib-load.adb, lib-xref.ads, make.adb, mlib-prj.adb, nlists.ads,
	opt.ads, par-ch10.adb, par-ch5.adb, par.adb, s-os_lib.ads,
	s-oscons-tmplt.c, s-parint.ads, s-regpat.ads, s-shasto.ads,
	s-stausa.ads, s-taprop-vms.adb, sem.adb, sem_ch10.adb,
	sem_ch11.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb,
	sem_ch3.ads, sem_ch4.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb,
	sem_elim.adb, sem_prag.adb, sem_util.adb, sem_util.ads,
	sem_warn.adb, sinfo.ads, styleg.adb, vms_data.ads: Fix typos in
	comments.
	* gnathtml.pl: Fix typos.

2008-09-10  Joel Sherrill <joel.sherrill@oarcorp.com>

	* gcc-interface/Makefile.in: Switch RTEMS to s-interr-hwint.adb.
	* s-osinte-rtems.ads: Add shared hardware interrupt adapter
	layer. RTEMS binds to OS provided adapter routines so there are
	no modifications to s-osinte-rtems.adb.

2008-09-09  Arnaud Charlet  <charlet@adacore.com>
	    Joel Sherrill  <joel.sherrill@oarcorp.com>

       * gcc-interface/Makefile.in: Switch VxWorks to s-interr-hwint.adb.

       * s-interr-vxworks.adb: Renamed to s-interr-hwint.adb

       * s-interr-hwint.adb: New file.

	* s-osinte-vxworks.ads, s-osinte-vxworks.adb: Add new functions
	needed by s-interr-hwint.adb.

	* s-osinte-vxworks-kernel.adb: New file.

2008-09-05  Joel Sherrill <joel.sherrill@oarcorp.com>

	* s-stchop-rtems.adb: Add file missed in early commit.  Already
	referenced in gcc-interface/Makefile.in.

2008-08-30  Thomas Quinot  <quinot@adacore.com>

	* gcc-interface/Make-lang.in: Allow s-oscons.{o,ali} to
	be built even without a separate libada directory.

2008-08-22  Arnaud Charlet  <charlet@adacore.com>

	* lib-xref.ads: Fix typo in subprogram reference definition.

2008-08-22  Robert Dewar  <dewar@adacore.com>

	* s-sopco3.adb, s-sopco4.adb, s-sopco5.adb, s-strops.adb: Minor code fix
	to avoid warning.

	* g-trasym.adb: Ditto

	* s-utf_32.adb (Get_Category): Fix obvious typo

	* s-wwdcha.adb: Minor code reorganization
	Remove dead code

2008-08-22  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Determine_Range): Deal with values that might be invalid

	* opt.adb, opt.ads (Assume_No_Invalid_Values[_Config]): New
	configuration switches.

	* par-prag.adb: Dummy entry for pragma Assume_No_Invalid_Values

	* sem_prag.adb: Implement pragma Assume_No_Default_Values

	* snames.adb, snames.ads, snames.h:
	Add entries for pragma Assume_No_Invalid_Values

	* switch-c.adb: Add processing for -gnatB switch

	* usage.adb: Add entry for flag -gnatB (no bad invalid values)

2008-08-22  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Build_Init_Statements): Transfer to the body of the
	init procedure all the expanded code associated with the spec of
	task types and protected types.

2008-08-22  Gary Dismukes  <dismukes@adacore.com>

	* exp_aggr.adb (Static_Array_Aggregate): Call Analyze_And_Resolve on the
	component expression copies rather than directly setting Etype and
	Is_Static_Expression.

2008-08-22  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb (Has_Preelaborable_Initialization): Revise checking of
	private types to allow for types derived from a private type with
	preelaborable initialization, but return False for a private extension
	(unless it has the pragma).

2008-08-22  Robert Dewar  <dewar@adacore.com>

	* opt.ads: Minor code reorganization (put entries in alpha order)

2008-08-22  Pascal Obry  <obry@adacore.com>

	* initialize.c, adaint.c: Use Lock_Task and Unlock_Task for non-blocking
	spawn.

2008-08-22  Geert Bosch  <bosch@adacore.com>

	* gcc-interface/trans.c: Define FP_ARITH_MAY_WIDEN
	(convert_with_check): Only use longest_float_type if FP_ARITH_MAY_WIDEN is 0

2008-08-22  Doug Rupp  <rupp@adacore.com>

	* bindgen.adb [VMS] (Gen_Adainit_Ada, Gen_Adainit_C): Import and call
	__gnat_set_features.

	* init.c
	(__gnat_set_features): New function.
	(__gnat_features_set): New tracking variable.
	(__gl_no_malloc_64): New feature global variable

2008-08-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Use_One_Type): Do not emit warning message about redundant
	use_type_clause in an instance.

2008-08-22  Bob Duff  <duff@adacore.com>

	* exp_ch6.ads: Remove pragma Precondition, since it breaks some builds.

2008-08-22  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb: Minor reformatting

	* exp_ch7.adb: Minor reformatting

	* exp_ch7.ads: Put routines in proper alpha order

	* exp_dist.adb: Minor reformatting

2008-08-22  Vincent Celier  <celier@adacore.com>

	* prj.ads: Minor comment update

2008-08-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb (One_Bound): Fix latent bug involving secondary stack

2008-08-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_tss.adb:
	(Base_Init_Proc): For a protected subtype, use the base type of the
	corresponding record to locate the propoer initialization procedure.

2008-08-22  Robert Dewar  <dewar@adacore.com>

	* checks.adb:
	(In_Subrange_Of): New calling sequence
	(Determine_Range): Prepare for new processing using base type

	* exp_ch4.adb:
	(Compile_Time_Compare): Use new calling sequence

	* exp_ch5.adb:
	(Compile_Time_Compare): Use new calling sequence

	* sem_eval.adb:
	(Compile_Time_Compare): New calling sequence allows dealing with
	invalid values.
	(In_Subrange_Of): Ditto

	* sem_eval.ads:
	(Compile_Time_Compare): New calling sequence allows dealing with
	invalid values.
	(In_Subrange_Of): Ditto

2008-08-22  Pascal Obry  <obry@adacore.com>

	* adaint.c: Fix possible race condition on win32_wait().

2008-08-22  Bob Duff  <duff@adacore.com>

	* exp_ch5.adb, exp_ch7.adb, exp_ch7.ads, exp_util.adb, freeze.adb,
	exp_ch4.adb, exp_ch6.ads, exp_ch6.adb, sem_ch6.adb, exp_aggr.adb,
	exp_intr.adb, exp_ch3.adb: Rename:
	Exp_Ch7.Controlled_Type => Needs_Finalization
	Exp_Ch7.CW_Or_Controlled_Type => CW_Or_Has_Controlled_Part
	Exp_Ch5.Expand_N_Extended_Return_Statement.Controlled_Type =>
	 Has_Controlled_Parts
	(Has_Some_Controlled_Component): Fix bug in array case.

2008-08-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb: Minor reformatting

2008-08-22  Kevin Pouget  <pouget@adacore.com>

	* s-shasto.ads, s-shasto.adb: Move Shared_Var_ROpen, Shared_Var_WOpen and
	Shared_Var_Close procedure specifications from package spec to package body.

	* rtsfind.ads: Remove RE_Shared_Var_Close, RE_Shared_Var_ROpen,
	RE_Shared_Var_WOpen entries.

	* exp_dist.adb: Update RE_Any_Content_Ptr to RE_Any_Container_Ptr in
	Build_To_Any_Call, Build_TypeCode_Call and Build_From_Any_Call procedures.

2008-08-22  Eric Botcazou  <ebotcazou@adacore.com>

	* init.c: adjust EH support code on Alpha/Tru64 as well.

	* raise-gcc.c: Add back a couple of comments.

2008-08-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Simple_Function_Return): If secondary stack is
	involved and the return type is class-wide, use the type of the expression
	for the generated access type. Suppress useless discriminant checks on the
	allocator.

2008-08-22  Bob Duff  <duff@adacore.com>

	* exp_ch7.adb: Minor comment fix

	* exp_ch6.ads: Minor comment fix

2008-08-22  Thomas Quinot  <quinot@adacore.com>

	* sem_ch8.adb: Minor reformatting
	Minor code reorganization (introduce subprogram to factor duplicated
	code).

2008-08-22  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Change the description of gnatcheck default rule
	settings.

2008-08-22  Eric Botcazou  <ebotcazou@adacore.com>

	* init.c (__gnat_adjust_context_for_raise): Delete for AIX, HP-UX,
	Solaris, FreeBSD, VxWorks and PowerPC/Linux.  For x86{-64}/Linux,
	do not adjust the PC anymore.
	(__gnat_error_handler): Do not call __gnat_adjust_context_for_raise
	on AIX, HP-UX, Solaris, FreeBSD and VxWorks.

	* raise-gcc.c (get_call_site_action_for): Use _Unwind_GetIPInfo
	instead of _Unwind_GetIP.

2008-08-22  Gary Dismukes  <dismukes@adacore.com>

	* exp_aggr.adb (Static_Array_Aggregate): When a static array aggregate
	with a range is transformed into a positional aggregate, any copied
	component literals should be marked Is_Static_Expression.

	* sem_eval.adb (Compile_Time_Known_Value): Don't treat null literals as
	not being known at at compile time when Configurable_Run_Time_Mode is
	true.

2008-08-22  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb:
	(Expand_N_Attribute_Reference): No validity checking on OUT parameter of
	Read or Input attribute.

2008-08-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Use_One_Type): when checking which of two use_type
	clauses in related units is redundant, if one of the units is a package
	instantiation, use its instance_spec to determine which unit is the
	ancestor of the other.

2008-08-22  Javier Miranda  <miranda@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): In case of access
	attributes add missing support to handle designated types that come
	from the limited view.

	* exp_disp.adb (Expand_Interface_Conversion): Remove wrong assertion.

2008-08-22  Sergey Rybin  <rybin@adacore.com>

	* vms_data.ads: Add entry for new gnatcheck -mNNN option

	* gnat_ugn.texi: Add description for gnatcheck option '-m'

2008-08-22  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Update the gnatcheck subsection for metric rules
	acoording to the latest changes in the metric rule interface

2008-08-22  Vincent Celier  <celier@adacore.com>

	* make.adb (Check.File_Not_A_Source_Of): New Boolean function
	(Check): Check if the file names registered in the ALI file for the
	spec, the body and each of the subunits are the ones expected.

2008-08-22  Robert Dewar  <dewar@adacore.com>

	* g-catiio.adb: Code cleanup.

2008-08-20  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): Remove extra space in version line

	* ali.adb:
	(Scan_ALI): Use Name_Find, not Name_Enter to get the name of a subunit,
	as the name may already have been entered in the table by the Project
	Manager.

2008-08-20  Jose Ruiz  <ruiz@adacore.com>

	* errno.c (__get_errno, __set_errno for MaRTE): Transform then into
	weak symbols so we use the version provided by MaRTE when available.

2008-08-20  Emmanuel Briot  <briot@adacore.com>

	* g-catiio.ads, g-catiio.adb:
	(Value): Avoid an unnecessary system call to Clock in most cases.
	This call is only needed when only the time is provided in the string,
	and ignored in all other cases. This is more efficient.

2008-08-20  Eric Botcazou  <ebotcazou@adacore.com>

	* raise-gcc.c: Fix formatting nits.

2008-08-20  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb:
	(Adjust_Record_For_Reverse_Bit_Order): Do not access First_Bit for
	non-existing component clause.

	* exp_ch5.adb: Minor reformatting

	* g-comlin.adb: Minor reformatting

	* make.adb: Minor reformatting

	* prj-proc.adb: Minor reformatting

	* stylesw.ads: Minor reformatting

2008-08-20  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake_Switch_Found): New Boolean global variable
	(Switch_May_Be_Passed_To_The_Compiler): New Boolean global variable
	(Add_Switches): New Boolean parameter Unknown_Switches_To_The_Compiler
	 defaulted to True. Fail when Unknown_Switches_To_The_Compiler is False
	and a switch is not recognized by gnatmake.
	(Gnatmake): Implement new scheme for gnatmake switches and global
	compilation switches.
	(Switches_Of): Try successively Switches (<file name>),
	Switches ("Ada"), Switches (others) and Default_Switches ("Ada").

2008-08-20  Ed Schonberg  <schonberg@adacore.com>

	* styleg-c.ads, styleg-c.adb (Missing_Overriding): new procedure to
	implement style check that overriding operations are explicitly marked
	at such.

	* style.ads (Missing_Overriding): new procedure that provides interface
	to previous one.

	* stylesw.ads, stylesw.adb: New style switch -gnatyO, to enable check
	that the declaration or body of overriding operations carries an
	explicit overriding indicator.

	* sem_ch8.adb
	(Analyze_Subprogram_Renaming): if operation is overriding, check whether
	explicit indicator should be present.

	* sem_ch6.adb (Verify_Overriding_Indicator,
	Check_Overriding_Indicator): If operation is overriding, check whether
	declaration and/or body of subprogram should be present

2008-08-20  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Naming_Schemes): Accept source file names for
	gprbuild when casing is MixedCase, whatever the casing of the letters
	in the file name.

2008-08-20  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch3.adb (Build_Array_Init_Proc): Clarify comment related to
	creating dummy init proc.
	(Requires_Init_Proc): Return False in the case No_Default_Initialization
	is in force and the type does not have associated default
	initialization. Move test of Is_Public (with tests of restrictions
	No_Initialize_Scalars and No_Default_Initialization) to end, past tests
	for default initialization.

2008-08-20  Jerome Lambourg  <lambourg@adacore.com>

	* g-comlin.adb (For_Each_Simple_Switch): Take care of switches not part
	of any alias or prefix but having attached parameters (as \"-O2\").

2008-08-20  Robert Dewar  <dewar@adacore.com>

	* s-fileio.adb: Minor reformatting

2008-08-20  Thomas Quinot  <quinot@adacore.com>

	* exp_strm.adb (Build_Elementary_Input_Call,
	Build_Elementary_Write_Call): Fix incorrect condition in circuitry that
	selects the stream attribute routines for long float types.

2008-08-20  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb (Process_Declarative_Items): Add Location for Array_Data

	* prj.ads (Array_Data): Add a component Location

2008-08-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb:
	(Analyze_Pragma, case Obsolescent): Add entity information on the pragma
	argument for ASIS and navigation use.

2008-08-20  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads: Add comment.

2008-08-20  Bob Duff  <duff@adacore.com>

	* sem_eval.ads: Minor comment fix.

2008-08-20  Bob Duff  <duff@adacore.com>

	* exp_ch4.adb (Expand_N_And_Then, Expand_N_Or_Else): Improve constant
	folding. We were folding things like "False and then ...", but not
	"X and then ..." where X is a constant whose value is known at compile
	time.

2008-08-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb (Controlled_Type): New routine.
	(Expand_N_Extended_Return_Statement): When generating a move of the
	final list in extended return statements, check the type of the
	function and in the case of double expanded return statements, the type
	of the returned object.
	(Expand_Simple_Function_Return): Perform an interface conversion when
	the type of the returned object is an interface and the context is an
	extended return statement.

2008-08-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Set_Debug_Info_Needed): If the entity is a private type
	and the full view is visible, set flag on full view as well.

2008-08-20  Thomas Quinot  <quinot@adacore.com>

	* g-comlin.adb: Minor reformatting
	Minor code reorganization.

	* freeze.adb: Minor reformatting

2008-08-20  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_File): An excluded Ada source file may be a
	source of another project.

2008-08-20  Pascal Obry  <obry@adacore.com>

	* s-os_lib.ads: Minor reformatting.

2008-08-20  Arnaud Charlet  <charlet@adacore.com>

	* gnatvsn.ads: Minor reformatting.

2008-08-20  Arnaud Charlet  <charlet@adacore.com>

	* a-crbtgk.adb, repinfo.adb, g-traceb.ads, repinfo.ads,
	system-linux-s390x.ads, s-fatflt.ads, s-parame-ae653.ads, g-spipat.adb,
	g-spipat.ads, g-tasloc.adb, g-debpoo.adb, g-except.ads, g-debpoo.ads,
	mdll-utl.adb, g-string.adb, g-soliop-solaris.ads, par-sync.adb,
	exp_ch6.ads, a-cihama.ads, g-curexc.ads, system-linux-sh4.ads,
	g-utf_32.adb, g-hesorg.adb, s-proinf-irix-athread.ads, s-parint.adb,
	s-parint.ads, exp_ch7.ads, system-linux-alpha.ads, g-dirope.adb,
	sinfo-cn.adb, par-labl.adb, a-ciorse.adb, g-calend.adb,
	s-parame-vms-alpha.ads, nlists.h, exp_imgv.adb, exp_fixd.ads,
	g-calend.ads, gnatcmd.ads, g-table.adb, s-memory-mingw.adb,
	g-alveop.ads, g-memdum.ads, g-altive.ads, initialize.c, g-regpat.adb,
	g-busorg.ads, g-regpat.ads, g-encstr.ads, g-regexp.adb, g-regexp.ads,
	live.ads, g-dyntab.adb, prj-nmsc.ads, par-ch12.adb, 9drpc.adb,
	g-alvevi.ads, s-memory.adb, math_lib.adb, s-parame.ads, s-memory.ads,
	s-regexp.adb, a-exexda.adb, i-cstrea-vms.adb, a-exexpr.adb,
	g-soliop-mingw.ads, s-imgrea.adb, namet.adb, system-vms.ads,
	s-inmaop-dummy.adb, s-finroo.ads, a-ngcefu.adb, s-hibaen.ads,
	g-soliop.ads, s-auxdec.adb, g-locfil.ads, gnatxref.adb, memroot.adb,
	osint-b.ads, memroot.ads, s-parame-hpux.ads, errutil.adb,
	system-linux-s390.ads, par-util.adb, osint-c.ads, exp_pakd.ads,
	i-pacdec.ads, par-endh.adb, mlib-tgt.ads, prj-strt.ads,
	s-osprim-vms.adb, s-proinf.ads, output.ads, g-moreex.ads,
	a-finali.ads, s-fatlfl.ads, namet.h, mdll.ads, g-dynhta.ads,
	s-imgenu.ads, par-tchk.adb, g-excact.ads, memtrack.adb, s-fatgen.adb,
	a-exexpr-gcc.adb, g-arrspl.adb, par-ch4.adb, g-cgideb.adb, freeze.ads,
	g-altcon.adb, s-fatllf.ads, gnatfind.adb, s-osinte-lynxos-3.adb,
	a-exextr.adb, g-htable.ads, a-calfor.adb, s-imgcha.adb, argv.c,
	a-chahan.ads, g-hesora.adb, system-vms_64.ads, par-ch5.adb, g-md5.adb,
	lib-xref.ads, g-md5.ads, g-casuti.ads, s-fatsfl.ads, exp_dbug.ads,
	s-htable.ads, a-ngcoar.adb, s-arit64.ads, a-ngelfu.adb, a-filico.ads,
	par-ch6.adb, s-inmaop.ads, s-parame-vxworks.ads, s-casuti.ads,
	a-numaux-darwin.adb, a-cohama.ads, system-linux-sparc.ads, g-os_lib.adb,
	system-vms-ia64.ads, s-parame-vms-restrict.ads, a-clrefi.ads,
	s-parame-vms-ia64.ads, a-strfix.adb, a-coorse.adb, a-comlin.ads,
	a-chtgke.adb, s-imgint.adb, g-expect.ads, exp_ch4.ads, s-finimp.adb,
	mingw32.h, g-heasor.adb, g-alleve.adb, a-ngrear.adb, s-mastop-irix.adb,
	s-poosiz.adb, link.c: Fix copyright notice.

2008-08-20  Arnaud Charlet  <charlet@adacore.com>

	* g-comlin.ads: Update comments.

2008-08-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Inherit Is_Imported flag.

2008-08-20  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch11.adb:
	(Expand_Exception_Handlers): Call Make_Exception_Handler instead of
	Make_Implicit_Exception_Handler when rewriting an exception handler with
	a choice parameter, and pass the handler's Sloc instead of that of the
	handled sequence of statements. Make_Implicit_Exception_Handler sets the
	Sloc to No_Location (unless debugging generated code), which we don't
	want for the case of a user handler.

2008-08-20  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Record_Type): Improve msg for non-contiguous field

	* sem_ch13.adb:
	(Adjust_Record_For_Reverse_Bit_Order): Messages about layout are
	now labeled as info msgs, not warnings.

	* tbuild.ads: Clarify documentation of Make_Implicit_Exception_Handler

	* usage.adb: Minor change to avoid overlong line for -gnatwz/Z

	* a-textio.adb: Remove redundant test.

	* a-witeio.adb: Minor code reorganization
	Remove redundant test found working on another issue

	* a-ztexio.adb: Minor code reorganization
	Remove redundant test found working on another issue

2008-08-20  Thomas Quinot  <quinot@adacore.com>

	* s-fileio.adb (Open) Use C helper function to determine whether a
	given errno value corresponds to a "file not found" error.

	* sysdep.c (__gnat_is_file_not_found_error): New C helper function.

2008-08-20  Jose Ruiz  <ruiz@adacore.com>

	* errno.c (__get_errno for MaRTE): Use the MaRTE function pthread_errno
	to get access to the per-task errno variable.
	(__set_errno for MaRTE): Do not redefine this function here since it is
	already defined in MaRTE.

2008-08-20  Tristan Gingold  <gingold@adacore.com>

	* gnat_ugn.texi: Gcov is not supported on static library on AIX.

2008-08-20  Robert Dewar  <dewar@adacore.com>

	* freeze.adb: Minor reformatting

	* g-comlin.adb: Minor reformatting

	* g-socket.adb: Minor reformatting

	* g-socthi-mingw.adb: Minor reformatting

	* g-stheme.adb: Minor reformatting

2008-08-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb, sem_type.adb, exp_ch9.ads, einfo.ads,
	exp_ch6.adb, exp_aggr.adb (Valid_Ancestor): Resolve
	confusion between partial and full views of an ancestor of the context
	type when the parent is a private extension declared in a parent unit,
	and full views are available for the context type.

2008-08-18  Samuel Tardieu  <sam@rfc1149.net>
	    Robert Dewar  <dewar@adacore.com>

	PR ada/30827
	* bindgen.adb (Gen_Output_File_Ada): Zero-terminate the
	version string.
	Move comment in the right place.
	* g-comver.adb (Version): Look for a zero-termination in
	addition to a closing parenthesis.

2008-08-18  Samuel Tardieu  <sam@rfc1149.net>

	* exp_ch13.adb, exp_disp.adb, sem_cat.adb, sem_ch10.adb,
	* sem_ch12.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb,
	* sem_prag.adb, sem_util.adb, sem_warn.adb: Use
	Is_Package_Or_Generic_Package instead of hand-crafted tests.

2008-08-18  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/15808
	* sem_ch6.adb (Check_Private_Overriding): Check for generic packages
	as well.

2008-08-17  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

	* adaint.c (_gnat_set_close_on_exec) [_WIN32]: Implement.

2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (call_to_gnu): Use the Sloc of the call
	for back-copy statements in lieu of that of the actual.

2008-08-16  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/20548
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use DECL_SIZE_UNIT in the
	setjmp test consistently.  Adjust for new behavior of flag_stack_check.
	* gcc-interface/utils2.c (build_call_alloc_dealloc): Remove redundant
	test of flag_stack_check.  Adjust for new behavior of flag_stack_check.

2008-08-13  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/36777
	* sem_util.ads, sem_util.adb (Is_Protected_Self_Reference): New.
	* sem_attr.adb (Check_Type): The current instance of a protected
	object is not a type name.
	(Analyze_Access_Attribute): Accept instances of protected objects.
	(Analyze_Attribute, Attribute_Address clause): Ditto.
	* exp_attr.adb (Expand_N_Attribute_Reference): Rewrite
	the prefix as being the current instance if needed.

2008-08-12  Danny Smith  <danyssmith@users.sourceforge.net>

	* gcc-interface/Makefile.in (EXTRA_GNATRTL_NONTASKING_OBJS) [WINDOWS]:
	Remove duplicate s-win32.o. Add s-winext.o.

2008-08-12  Danny Smith  <danyssmith@users.sourceforge.net>

	* g-stsifd-sockets.adb (Create): Replace Constants.SOCK_STREAM
	with SOSC.SOCK__STREAM.
	* g-socthi-mingw.adb (C_Select) Replace Constants.MSG_OOB with
	SOSC.MSG_OOB.

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

	* s-oscons-tmplt.c: RTEMS defines AF_INET6 but does support it.
	* gsocket.h, socket.c: Update to support RTEMS.
	* gcc-interface/Make-lang.in: Include CFLAGS_FOR_TARGET when cross.

2008-08-10  Samuel Tardieu  <sam@rfc1149.net>
	    Robert Dewar <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Expon): Force evaluation of
	left argument even when right argument is 0.
	(Expand_N_Op_Mod): Ditto when right argument is 1.
	(Expand_N_Op_Multiply): Ditto when any argument is 0.
	(Expand_N_Op_Rem): Ditto when right argument is 1.

2008-08-09  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* gcc-interface/misc.c (gnat_handle_option): Replace set_Wunused
	by warn_unused.

2008-08-08  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Generate_Prim_Op_References): New procedure, abstracted
	from Freeze_Entity. Used to generate cross-reference information for
	types declared in generic packages.

2008-08-08  Thomas Quinot  <quinot@adacore.com>

	* gcc-interface/Makefile.in: Reintroduce g-soccon.ads as a
	compatibility shim.

2008-08-08  Thomas Quinot  <quinot@adacore.com>

	* gsocket.h:
	On Windows, include <errno.h> and redefine only selected errno values
	from their <winsock2.h> definitions.

	* s-osinte-freebsd.ads: Minor reformatting

	* s-osinte-hpux.ads, s-osinte-irix.ads: Minor reformatting

	* g-soccon.ads: New file.

	* g-stheme.adb, g-socthi-vms.adb, g-socthi-vxworks.adb,
	g-socthi-mingw.adb, g-sttsne-vxworks.adb, g-socthi.adb,
	g-stsifd-sockets.adb, g-socket.adb, g-socket.ads,
	g-sothco.adb, g-sothco.ads: Add back GNAT.Sockets.Constants as a child
	unit, to allow building software that depends on this internal unit
	with both older and newer compilers.

2008-08-08  Robert Dewar  <dewar@adacore.com>

	* s-strxdr.adb: Minor reformatting

2008-08-08  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: The "Run-Time Checks" section said "arithmetic overflow
	checking for integer operations (including division by zero)", which
	is wrong -- divide by zero is not part of overflow checking.
	Also added misc clarification about what check-suppression means.

	* gnat_rm.texi: Clarify the meaning of pragma Suppress.

2008-08-08  Jerome Lambourg  <lambourg@adacore.com>

	* g-comlin.adb (Add_Switch): Handle addition of switches at the
	begining of the command line.
	(Append, Add): Renaming of Append to Add as this now allows addition
	at the begining of the list.

	* g-comlin.ads (Add_Switch): Handle addition of switches at the
	begining of the command line.

2008-08-08  Thomas Quinot  <quinot@adacore.com>

	* g-sercom.ads:
	(Name): Document application scope (only legacy PC serial ports on
	Linux and Windows).

2008-08-08  Thomas Quinot  <quinot@adacore.com>

	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Revert
	previous change, not needed after all.

2008-08-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): add check if null
	exclusion indicator is present

2008-08-08  Robert Dewar  <dewar@adacore.com>

	* g-comlin.adb: Minor code reorganization
	Minor reformatting

	* g-comlin.ads: Minor reformatting

	* s-fileio.adb: Minor reformatting

	* sem_attr.adb: Minor code reorganization (use Nkind_In)
	Minor reformatting

2008-08-06  Samuel Tardieu  <sam@rfc1149.net>

	* gcc-interface/Make-lang.in: Use GCC_FOR_TARGET when dealing
	with s-oscons-tmplt.i.

2008-08-06  Samuel Tardieu  <sam@rfc1149.net>

	* gcc-interface/Make-lang.in (OSCONS_CPPFLAGS): Remove.

2008-08-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Component_Declaration): Protect against misuse
	of incomplete type.

	* sem_ch8.adb (Analyze_Object_Renaming): Diagnose properly a renaming
	of a formal parameter of an incomplete type. Improve error message for
	other improper uses of incomplete types.

2008-08-06  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Clarify -gnato documentation

2008-08-06  Thomas Quinot  <quinot@adacore.com>

	* gcc-interface/Makefile.in,
	g-socthi-vxworks.adb, g-socthi-mingw.adb, g-sttsne-vxworks.adb,
	g-socthi.adb, g-socket.adb, g-socket.ads, g-sothco.ads,
	g-soccon-linux-x86.ads, g-soccon-vxworks.ads, g-soccon-mingw.ads,
	g-soccon-hpux-ia64.ads, g-soccon-irix.ads, g-soccon-linux-64.ads,
	g-soccon-aix.ads, g-soccon-solaris.ads, g-soccon-lynxos.ads,
	g-soccon-vms.ads, g-soccon.ads, g-soccon-freebsd.ads,
	g-soccon-linux-ppc.ads, g-soccon-tru64.ads, g-soccon-hpux.ads,
	g-soccon-solaris-64.ads, gen-oscons.c, g-soccon-darwin.ads,
	g-soccon-mingw-64.ads, g-soccon-linux-mips.ads, g-soccon-rtems.ads:
	Remove GNAT.Sockets.Constants. This internal package is replaced by
	System.OS_Constants.

2008-08-06  Thomas Quinot  <quinot@adacore.com>

	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in:
	Remove obsolete targets referencing gen-soccon
	When generating s-oscons.ads, use a file name that includes the
	THREAD_KIND, to ensure that the (potentially different) version from a
	previous build with a different threads flavour does not get reused.

2008-08-06  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Minor reformatting

	* s-fileio.adb (Open): When file open operation fails, raise Name_Error
	only when the operating system reports a non-existing file or directory
	(ENOENT), otherwise raise Name_Error.

	* exp_ch11.adb: Minor reformatting

2008-08-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Subprogram_Declaration): If the return type is
	incomplete, add the access_to_subprogram type to the list of private
	dependents only if the incomplete type will be completed in the current
	scope.
	(Build_Discriminant_Constraints): If the type of the discriminant is
	access_to_variable, reject a constraint that is access_to_constant.

2008-08-06  Thomas Quinot  <quinot@adacore.com>

	* g-socket-dummy.adb, g-socket-dummy.ads, g-sothco-dummy.adb,
	g-sothco-dummy.ads, g-socthi-dummy.adb, g-socthi-dummy.ads,
	g-sttsne-dummy.ads: New files.

	* gcc-interface/Makefile.in, Makefile.rtl: Use placeholder sources
	with pragma Unimplemented_Unit for sockets packages on Nucleus.

2008-08-06  Pascal Obry  <obry@adacore.com>

	* adaint.c: Another fix for ACL support on Windows.

2008-08-06  Javier Miranda  <miranda@adacore.com>

	* exp_disp (Expand_Interface_Actuals): Adds missing support for
	expansion of calls to subprograms using selected components.

2008-08-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Call): Use base type to determine whether a
	dereference is needed because a subtype of an access_to_subprogram is
	simply an access-subtype

2008-08-06  Jerome Lambourg  <lambourg@adacore.com>

	* g-comlin.adb (Set_Command_Line): Now that aliases can contain
	parameters, always specify the expected separator.

2008-08-06  Thomas Quinot  <quinot@adacore.com>

	* xnmake.adb: Use new XUtil package for platform independent text
	output.

2008-08-06  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Document compiler switch -gnateG

2008-08-06  Quentin Ochem  <ochem@adacore.com>

	* s-stausa.adb (Fill_Stack): Fixed pragma assert and top pattern mark
	in the case of an empty pattern size.
	(Compute_Result): Do not do any computation in the case of an empty
	pattern size.
	(Report_Result): Fixed computation of the overflow guard.

2008-08-06  Ed Schonberg  <schonberg@adacore.com>

	* g-awk.adb (Finalize): Do not use directly objects of the type in the
	finalization routine to prevent elaboration order anomalies in new
	finalization scheme.

2008-08-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Find_Type_Name): protect against duplicate incomplete
	declaration for the same type.

2008-08-06  Thomas Quinot  <quinot@adacore.com>

	* sem.adb: Minor rewording (comment)

2008-08-06  Jerome Lambourg  <lambourg@adacore.com>

	* g-comlin.adb (Define_Switch, Get_Switches): New.
	(Can_Have_Parameter, Require_Parameter, Actual_Switch): New, used when
	ungrouping switches.
	(For_Each_Simple_Switch): Allow more control over parameters handling.
	This generic method now allows ungrouping of switches with parameters
	and switches with more than one letter after the prefix.
	(Set_Command_Line): Take care of switches that are prefixed with a
	switch handling parameters without delimiter (-gnatya and -gnaty3 for
	example).
	(Add_Switch, Remove_Switch): Handle parameters possibly present inside
	a group, as in gnaty3aM80 (3 and 80 are parameters). Report status of
	the operation.
	(Start, Alias_Switches, Group_Switches): Take care of parameters
	possibly present inside a group.

	* g-comlin.ads (Define_Switch): New method used to define a list of
	expected switches, that are necessary for correctly ungrouping switches
	with more that one character after the prefix.
	(Get_Switches): Method that builds a getopt string from the list of
	switches as set previously by Define_Switch.
	(Add_Switch, Remove_Switch): New versions of the methods, reporting the
	status of the operation. Also allow the removal of switches with
	parameters only.
	(Command_Line_Configuration_Record): Maintain a list of expected
	switches.

2008-08-06  Doug Rupp  <rupp@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_param): Force 32bit descriptor if
	TARGET_MALLOC64 clear.

	* gcc-interface/utils2.c (build_call_alloc_dealloc): Force 32bit malloc
	if TARGET_MALLOC64 clear.

	* gcc-interface/gigi.h (TARGET_ABI_OPEN_VMS): Move here from utils2.c
	(TARGET_MALLC64): New macro. Default to clear.

2008-08-06  Doug Rupp  <rupp@adacore.com>

	* gcc-interface/utils2.c (snames.h) Include
	(TARGET_ABI_OPEN_VMS): Initialize.
	(build_call_alloc_dealloc); [TARGET_ABI_OPEN_VMS] Allocate on 32bit heap
	for Convention C.

2008-08-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Process_Discriminants): diagnose redundant or improper
	null exclusion in a discriminant declaration

	* sem_ch8.adb (Analyze_Object_Renaming): diagnose null exclusion
	indicators when type is not an access type.

	* sem_ch12.adb (Formal_Object_Declaration): diagnose null exclusion
	indicators when type is not an access type.

2008-08-06  Javier Miranda  <miranda@adacore.com>

	* exp_disp (Expand_Interface_Conversion): Freeze the entity associated
	with the target interface before expanding the code of the interface
	conversion.

2008-08-05  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb:
	(Freeze_Entity): A deferred constant does not violate the restriction
	No_Default_Initialization,

	* sem_ch3.adb (Process_Subtype): An allocator is a valid construct that
	can carry a null exclusion indicator, and on which an error may be
	posted if the indicator is redundant.

	* sem_ch8.adb (Analyze_Object_Renaming): Verify that a null exclusion
	does not apply to a subtype mark that already excludes null.

	* sem_ch12.adb (Formal_Object_Declaration): Verify that a null
	exclusion does not apply to a subtype mark that already excludes null.

2008-08-05  Thomas Quinot  <quinot@adacore.com>

	* Makefile.rtl: Compile s-oscons.ads as part of the runtime library.

2008-08-05  Doug Rupp  <rupp@adacore.com>

	* vms_data.ads: Translation for /POINTER_SIZE qualifier.

2008-08-05  Thomas Quinot  <quinot@adacore.com>

	* gsocket.h: Make this file includable in a Nucleus environment, which
	does not support sockets.

	* socket.c: Remove Nucleus-specific hack.

2008-08-05  Pascal Obry  <obry@adacore.com>

	* adaint.c: Remove support for readable attribute on vxworks and nucleus

2008-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb:
	(Analyze_Attribute, case 'Result): handle properly the case where some
	operand of the expression in a post-condition generates a transient
	block.

	* sem_ch5.adb (Analyze_Assignment_Statement): Apply conversion to
	right-hand side when it is an anonymous access_to_subprogram, to force
	static accessibility check when needed.

2008-08-05  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Changing the description of the gnatcheck metrics
	rule according to the change in the rule option.
	Add documentation for -gnatw.b/-gnatw.B

2008-08-05  Robert Dewar  <dewar@adacore.com>

	* ug_words: Add entries for -gnatw.b/-gnatw.B

	* vms_data.ads: Add entries for -gnatw.b/-gnatw.B

2008-08-05  Vincent Celier  <celier@adacore.com>

	* a-wtdeio.adb (Put (Current_Output)): Use Fore in the call to Put
	(File).

	* a-ztdeio.adb: Ditto.

2008-08-05  Pascal Obry  <obry@adacore.com>

	* adaint.c, adaint.h, s-os_lib.adb, s-os_lib.ads: Add support for the
	readable attribute.

2008-08-05  Vincent Celier  <celier@adacore.com>

	* s-wchwts.adb:
	(Wide_String_To_String): Returns a String with the same 'First as its
	parameter S.
	(Wide_Wide_String_To_String): Ditto

	* s-wchwts.ads:
	(Wide_String_To_String): Document that the lowest index of the returned
	String is equal to S'First.

2008-08-05  Thomas Quinot  <quinot@adacore.com>

	* xoscons.adb, xutil.ads, xutil.adb, s-oscons-tmplt.c: New files.

	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Generate
	s-oscons.ads

2008-08-05  Robert Dewar  <dewar@adacore.com>

	* opt.ads (Warn_On_Biased_Representation): New flag

	* sem_ch13.adb:
	(Analyze_Attribute_Definition_Clause): Issue warning when biased
	representation is required.
	(Minimum_Size): Don't allow biasing if enum rep clause case

	* sem_warn.adb:
	(Set_Dot_Warning_Switch): Add handling of -gnatw.b/B switches
	(Set_Warning_Switch): Include -gnatw.b in -gnatwa, -gnatw.B in gnatws

	* usage.adb: Add lines for -gnatw.b/B switches

2008-08-05  Pascal Obry  <obry@adacore.com>

	* a-coinve.adb: Reorder the code to avoid uninitialized warning.

	* adaint.c: In UNIX cases do not call __gnat_stat but stat directly.

2008-08-05  Thomas Quinot  <quinot@adacore.com>

	* socket.c: Minor reformatting.

2008-08-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting

	* prj-nmsc.adb: Minor reformatting

2008-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Validate_Array_Type_Instance): Only apply complex
	visibility check on the component type if the simple test fails.

2008-08-05  Jose Ruiz  <ruiz@adacore.com>

	* init.c (__gnat_install_handler for linux): If we are building the
	Xenomai run time then we need to do two additional things: avoid
	memory swapping and transform the Linux environment task into a native
	Xenomai task.

	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS for xenomai run
	time): Use interface to Xenomai native skin and avoid linux-specific
	way of setting CPU affinity.
	(EH_MECHANISM for the xenomai run time): Use sjlj exception mechanism.

2008-08-05  Bob Duff  <duff@adacore.com>

	* checks.ads: Minor comment fix

2008-08-05  Thomas Quinot  <quinot@adacore.com>

	* g-sercom.adb, g-sercom.ads, g-sercom-mingw.adb,
	g-sercom-linux.adb (Data_Bits): Change literals B7 and B8 to CS7 and
	CS8.

2008-08-05  Robert Dewar  <dewar@adacore.com>

	* mlib.adb: Minor code reorganization
	Minor reformatting

	* make.adb: Minor reformatting

	* prj-attr.ads: Minor reformatting

	* s-os_lib.adb: Minor reformatting

	* s-fileio.adb: Minor code reorganization
	Minor reformatting

	* prj.ads: Minor reformatting

2008-08-05  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): Avoid type Any_Access in
	unresolved initial value of "null", because it causes implicitly
	generated "=" operators to be ambiguous, and because this type should
	not be passed to gigi.

2008-08-05  Vincent Celier  <celier@adacore.com>

	* mlib.adb: Update comments.

	* make.adb (Switches_Of): Check for Switches (others), before checking
	for Default_Switches ("Ada").
	(Gnatmake): Use Builder'Switches (others) in preference to
	Builder'Default_Switches ("Ada") if there are several mains.

	* prj-attr-pm.adb:
	(Add_Attribute): Add component Others_Allowed in Attribute_Record
	aggregate.

	* prj-attr.adb:
	Add markers to indicates that attributes Switches allow others as index
	(Others_Allowed_For): New Boolean function, returning True for
	attributes with the mark.
	(Initialize): Recognize optional letter 'O' as the marker for
	associative array attributes where others is allowed as the index.

	* prj-attr.ads:
	(Others_Allowed_For): New Boolean function
	(Attribute_Record): New Boolean component Others_Allowed

	* prj-dect.adb:
	(Parse_Attribute_Declaration): For associative array attribute where
	others is allowed as the index, allow others as an index.

	* prj-nmsc.adb:
	(Process_Binder): Skip associative array attributes with index others
	(Process_Compiler): Ditto

	* prj-util.adb:
	(Value_Of (Index, In_Array)): Make no attempt to put in lower case when
	index is All_Other_Names.

	* prj.ads:
	(All_Other_Names): New constant

	* prj-proc.adb:
	(Process_Declarative_Items): Skip associative array attribute when index
	is reserved word "others".

2008-08-05  Vasiliy Fofanov  <fofanov@adacore.com>

	* gen-oscons.c: Adapt for VMS where termios.h is not available.

2008-08-05  Thomas Quinot  <quinot@adacore.com>

	* a-rttiev.adb: Minor reformatting (comments)

	* gen-soccon.c: Rename to gen-oscons.c

	* gen-oscons.c: New file. Now generate System.OS_Constants instead of
	GNAT.Sockets.Constants.
	Add new constants for GNAT.Serial_Communications and System.File_IO.

2008-08-05  Javier Miranda  <miranda@adacore.com>

	* sem_util.adb (Collect_Interfaces_Info): Minor reformating.
	* exp_ch3.adb (Build_Offset_To_Top_Functions): Code cleanup: the
	implementation of this routine has been simplified.

2008-08-05  Pascal Obry  <obry@adacore.com>

	* adaint.c, adaint.h, s-os_lib.adb, s-os_lib.ads: Fix the
	Set_Read_Only Win32 implementation.

2008-08-05  Thomas Quinot  <quinot@adacore.com>

	* exp_strm.adb: Minor reformatting (comments)

	* sem_ch12.adb: Minor reformatting.

2008-08-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting

	* checks.adb: Minor reformatting

2008-08-05  Thomas Quinot  <quinot@adacore.com>

	* tbuild.ads (New_External_Name): Update spec to reflect relaxed
	restriction on Prefix.

2008-08-05  Jerome Lambourg  <lambourg@adacore.com>

	* g-comlin.adb (Sort_Sections, Group_Switches): New/Modified internal
	methods needed to handle switch sections when building a command line.
	(Define_Section, Add_Switch, Remove_Switch, Is_New_Section,
	Current_Section): New public methods or methods modified to handle
	building command lines with sections.
	(Set_Command_Line): Take into account sections when analysing a switch
	string.
	(Start): Sort the switches by sections before iterating the command line
	elements.

	* g-comlin.ads (Define_Section, Add_Switch, Remove_Switch,
	Is_New_Section, Current_Section): New methods or methods modified to
	handle building command lines with sections.

2008-08-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_strm.adb (Build_Record_Or_Elementary_Input_Function): For access
	discriminants, indicate that the corresponding object declaration has
	no initialization, to prevent spurious warnings when the access type is
	null-excluding.

2008-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Call): If this is a call to the predefined
	Abort_Task, warn if the call appears within a protected operation.

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_In): Suppress range warnings in instances

2008-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb:
	(Replace_Anonymous_Access_To_Protected_Subprogram): Handle properly an
	anonymous access to protected subprogram that is the return type of the
	specification of a subprogram body.

	* sem_ch6.adb:
	(Analyze_Subprogram_Body): if the return type is an anonymous access to
	subprogram, freeze it now to prevent access anomalies in the back-end.

	* exp_ch9.adb: Minor code cleanup.
	Make sure that new declarations are inserted into the tree before
	analysis (from code reading).

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb:
	(Expand_Simple_Function_Return): Check No_Secondary_Stack restriction
	at point of return.

2008-08-04  Thomas Quinot  <quinot@adacore.com>

	* sem_type.adb, sem_ch4.adb, sprint.adb, exp_ch3.adb: Minor reformatting

2008-08-04  Vasiliy Fofanov  <fofanov@adacore.com>

	* g-soccon-mingw.ads: Fix value for MSG_WAITALL

2008-08-04  Javier Miranda  <miranda@adacore.com>

	* sem_prag.adb (Process_Convention): Add missing support for
	 N_Private_Extension_Declaration nodes.

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor reformatting

2008-08-04  Pascal Obry  <obry@adacore.com>

	* adaint.h: Add missing prototype.

	* adaint.c: Refine support for Windows file attributes.

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb:
	(Valid_Conversion): Catch case of designated types having different
	sizes, even though they statically match.

2008-08-04  Javier Miranda  <miranda@adacore.com>

	* sem_eval.adb (Subtypes_Statically_Match): Remove superfluous patch
	added in previous patch to handle access to subprograms.

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* freeze.adb:
	(Freeze_Entity): Only check No_Default_Initialization restriction for
	constructs that come from source

2008-08-04  Thomas Quinot  <quinot@adacore.com>

	* exp_ch6.adb: Minor comment fix.

	* sem_ch4.adb: Minor reformatting.

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb: (Large_Storage_Type): Improve previous change.

2008-08-04  Pascal Obry  <obry@adacore.com>

	* adaint.c, s-os_lib.adb, s-os_lib.ads: Use Windows ACL to deal with
	file attributes.

2008-08-04  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Access_Subprogram_Declaration): Adding missing support
	for N_Formal_Object_Declaration nodes. Adding kludge required by
	First_Formal to provide its functionality with access to functions.
	(Replace_Anonymous_Access_To_Protected_Subprogram): Add missing support
	for anonymous access types returned by functions.

	* sem_ch5.adb (Analyze_Assignment): Code cleanup to avoid duplicate
	conversion of null-excluding access types (required only once to force
	the generation of the required runtime check).

	* sem_type.adb (Covers): minor reformating

	* checks.adb (Null_Exclusion_Static_Checks): Avoid reporting errors
	with internally generated nodes. Avoid generating the error inside init
	procs.

	* sem_res.adb (Resolve_Membership_Test): Minor reformating.
	(Resolve_Null): Generate the null-excluding check in case of assignment
	to a null-excluding object.
	(Valid_Conversion): Add missing support for anonymous access to
	subprograms.

	* sem_ch6.adb (Check_Return_Subtype_Indication): Add missing support for
	anonymous access types whose designated type is an itype. This case
	occurs with anonymous access to protected subprograms types.
	(Analyze_Return_Type):  Add missing support for anonymous access to
	protected subprogram.

	* sem_eval.adb (Subtypes_Statically_Match): In case of access to
	subprograms addition of missing check on matching convention. Required
	to properly handle access to protected subprogram types.

	* exp_ch3 (Build_Assignment): Code cleanup removing duplicated check on
	null excluding access types.

2008-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Add comments

	* sem_ch4.adb (Analyze_Allocator): If the designated type is a non-null
	access type and the allocator is not initialized, warn rather than
	reporting an error.

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor reformatting

	* exp_dist.adb: Minor reformatting

	* g-comlin.adb: Minor reformatting

2008-08-04  Gary Dismukes  <dismukes@adacore.com>

	* exp_aggr.adb (Build_Record_Aggr_Code): Perform a conversion of the
	target to the type of the aggregate in the case where the target object
	is class-wide.

	* exp_ch5.adb (Expand_Simple_Function_Return): When the function's
	result type is class-wide and inherently limited, and the expression
	has a specific type, create a return object of the specific type, for
	more efficient handling of returns of build-in-place aggregates (avoids
	conversions of the class-wide return object to the specific type on
	component assignments).

	* sem_ch6.adb (Check_Return_Subtype_Indication): Suppress the error
	about a type mismatch for a class-wide function with a return object
	having a specific type when the object declaration doesn't come from
	source. Such an object can result from the expansion of a simple return.

2008-08-04  Vasiliy Fofanov  <fofanov@adacore.com>

	* g-soccon-mingw-64.ads, system-mingw-x86_64.ads: New files.

	* gcc-interface/Makefile.in: Use 64bit-specific system files when
	compiling for 64bit windows.

2008-08-04  Jerome Lambourg  <lambourg@adacore.com>

	* g-comlin.adb (Group_Switches): Preserve the switch order when
	grouping and allow switch grouping of switches with more than one
	character extension (e.g. gnatw.x).
	(Args_From_Expanded): Remove this now obsolete method.

2008-08-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Get_Allocator_Final_List): Freeze anonymous type for
	chain at once, to ensure that type is properly decorated for back-end,
	when allocator appears within a loop.

2008-08-04  Kevin Pouget  <pouget@adacore.com>

	* snames.h, snames.adb, snames.ads:
	Add Attr_To_Any, Attr_From_Any and Attr_TypeCode defines.

	* exp_dist.ads, exp_dist.adb: Add Build_From_Any_Call,
	Build_To_Any_Call and Build_TypeCode_Call procedures.

	* exp_attr.adb, sem_attr.adb: Add corresponding cases.

	* rtsfind.ads: Add corresponding names.

	* tbuild.adb: Update prefix restrictions to allow '_' character.

2008-08-04  Doug Rupp  <rupp@adacore.com>

	* gigi.h (fill_vms_descriptor): Add third parameter gnat_actual
	* trans.c (call_to_gnu): Call fill_vms_descriptor with new parameter.
	* utils2.c (fill_vms_descriptor): Add third parameter for error sloc and
	use it.  Calculate pointer range overflow using 64bit types.

2008-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Definition): A formal object declaration is a
	legal context for an anonymous access to subprogram.

	* sem_ch4.adb (Analyze_One_Call): If the call can be interpreted as an
	indirect call, report success to the caller to include possible
	interpretation.

	* sem_ch6.adb (Check_Return_Type_Indication): Apply proper conformance
	check when the type
	of the extended return is an anonymous access_to_subprogram type.

	* sem_res.adb:
	(Resolve_Call): Insert a dereference if the type of the subprogram is an
	access_to_subprogram and the context requires its return type, and a
	dereference has not been introduced previously.

2008-08-04  Arnaud Charlet  <charlet@adacore.com>

	* usage.adb (Usage): Minor rewording of -gnatwz switch, to improve
	gnatcheck support in GPS.

2008-08-04  Vincent Celier  <celier@adacore.com>

	* mlib.adb (Create_Sym_Links): Create relative symbolic links when
	requested

2008-08-04  Vincent Celier  <celier@adacore.com>

	* gprep.adb (Process_One_File): Call Prep.Preprocess with a Boolean
	variable, but don't check the resulting value as it has no impact on
	the processing.

	* opt.ads:
	(Generate_Processed_File): New Boolean flag, set to True in the compiler
	when switch -gnateG is used.

	* prep.adb:
	(Preprocess): new Boolean out parameter Source_Modified. Set it to True
	when the source is modified by the preprocessor and there is no
	preprocessing errors.

	* prep.ads (Preprocess): new Boolean out parameter Source_Modified

	* sinput-l.adb:
	(Load_File): Output the result of preprocessing if the source text was
	modified.

	* switch-c.adb (Scan_Front_End_Switches): Recognize switch -gnateG

	* switch-m.adb (Normalize_Compiler_Switches): Normalize switch -gnateG

	* ug_words: Add VMS equivalent for -gnateG

	* vms_data.ads:
	Add VMS option /GENERATE_PROCESSED_SOURCE, equivalent to switch -gnateG

2008-08-04  Doug Rupp  <rupp@adacore.com>

	* gcc-interface/utils2.c:
	(fill_vms_descriptor): Raise CE if attempt made to pass 64bit pointer
	in 32bit descriptor.

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* par-ch10.adb: Minor reformatting

	* i-cobol.adb: Minor reformatting.

2008-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Definition): Create an itype reference for an
	anonymous access return type of a regular function that is not a
	compilation unit.

2008-08-04  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: New Builder attribute Global_Compilation_Switches

	* snames.adb: New standard name Global_Compilation_Switches

	* snames.ads: New standard name Global_Compilation_Switches

	* make.adb: Correct spelling error in comment

2008-08-04  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Check_Form_Of_Interface_Name): Fix handling for CLI
	target.

2008-08-04  Thomas Quinot  <quinot@adacore.com>

	* sem_ch10.adb: Minor comment fix.

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* restrict.adb: Improved messages for restriction warnings

	* restrict.ads: Improved messages for restriction messages

	* s-rident.ads (Profile_Name): Add No_Profile

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* system-darwin-x86.ads: Correct bad definition of Max_Nonbinary_Modulus

2008-08-04  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Entity): Check for size clause for boolean warning

2008-08-04  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb:
	(Copy_Package_Declarations): When inheriting package Naming from a
	project being extended, do not inherit source exception names.

2008-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Check_Precondition_Postcondition): When scanning the
	list of declaration to find previous subprogram, do not go to the
	original node of a generic unit.

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

	* gcc-interface/utils2.c (build_binary_op) <PLUS_EXPR, MINUS_EXPR>:
	New case.  Convert BOOLEAN_TYPE operation to the default integer type.

2008-08-01  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (DECL_PARM_ALT): Now DECL_PARM_ALT_TYPE.
	* gcc-interface/decl.c (gnat_to_gnu_param): Fix formatting, simplify
	and adjust for above renaming.
	* gcc-interface/utils.c (convert_vms_descriptor): Likewise. Add new
	gnu_expr_alt_type parameter.  Convert the expression to it instead
	of changing its type in place.
	(build_function_stub): Adjust call to above function.

2008-08-01  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Remove dead
	code.  Do not get full definition of deferred constants with address
	clause for a use.  Do not ignore deferred constant definitions with
	address clause.  Ignore constant definitions already marked with the
	error node.
	<object>: Remove obsolete comment.  For a deferred constant with
	address clause, get the initializer from the full view.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Attribute_Definition_Clause>:
	Rework and remove obsolete comment.
	<N_Object_Declaration>: For a deferred constant with address clause,
	mark the full view with the error node.
	* gcc-interface/utils.c (convert_to_fat_pointer): Rework and fix
	formatting nits.

2008-08-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* rtsfind.ads: Add block IO versions of stream routines for Strings.

	* bindgen.adb, gnat_rm.texi, gnat_ugn.texi, opt.ads,
	sem_prag.adb, snames.adb, snames.ads, snames.h,
	par-prag.adb: Undo previous stream related changes.

	* s-rident.ads: Add new restriction No_Stream_Optimizations.

	* s-ststop.ads, s-ststop.adb: Comment reformatting.
	Define enumeration type to designate different IO mechanisms.
	Enchance generic package Stream_Ops_Internal to include an
	implementation of Input and Output.

	* exp_attr.adb (Find_Stream_Subprogram): If restriction
	No_Stream_Optimization is active, choose the default byte IO
	implementations of stream attributes for Strings.
	Otherwise use the corresponding block IO version.

2008-08-01  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <case E_Function>: Do not
	turn Ada Pure into GCC const, now implicitely implying nothrow as well.

2008-08-01  Robert Dewar  <dewar@adacore.com>

	* par-ch3.adb (P_Defining_Identifier): Avoid repeated attempt to
	convert plain identifier into defining identifier.

2008-08-01  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Check_Form_Of_Interface_Name): Refine and improve
	warnings

	* lib-xref.adb: Add error defense.

2008-08-01  Bob Duff  <duff@adacore.com>

	* ioexcept.ads, sequenio.ads, directio.ads: Correct comment.

2008-08-01  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb (Expand_Call): Adjustment to previous fix for passing
	correct accessibility levels. In the "when others" case, retrieve the
	access level of the Etype of Prev rather than Prev_Orig, because the
	original exression has not always been analyzed.

2008-08-01  Robert Dewar  <dewar@adacore.com>

	* prj-nmsc.adb: Minor reformatting

	* sem_ch4.adb: Minor reformatting
	Minor code reorganization

	* prj.ads: Minor reformatting

	* s-os_lib.adb: Minor reformatting

	* par-prag.adb (Prag, case Wide_Character_Encoding): Deal with upper
	half encodings

	* scans.ads: Minor reformatting.

	* sem_prag.adb (Analyze_Pragma): Put entries in alpha order
	(Analyze_Pragma): Make sure all GNAT pragmas call GNAT_Pragma

	* sem_res.adb:
	(Resolve_Call): Check violation of No_Specific_Termination_Handlers

	* sem_ch12.adb: Minor comment reformatting

	* par-ch3.adb (P_Type_Declaration): Properly handle missing type
	keyword

2008-08-01  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Process_PPCs): Don't copy spec PPC to body if not
	generating code

2008-08-01  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Float_Conversion_Check): If the expression to be
	converted is a real literal and the target type has static bounds,
	perform the conversion exactly to prevent floating-point anomalies on
	some targets.

2008-08-01  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: New attribute Compiler'Name_Syntax (<lang>)

	* prj-nmsc.adb (Process_Compiler): Recognize attribute Name_Syntax

	* prj.adb (Object_Exist_For): Use Object_Generated, not
	Objects_Generated that is removed and was never modified anyway.

	* prj.ads:
	(Path_Syntax_Kind): New enumeration type
	(Language_Config): New component Path_Syntax, defaulted to Host.
	Components PIC_Option and Objects_Generated removed, as they are not
	used.

	* snames.adb: New standard name Path_Syntax

	* snames.ads: New standard name Path_Syntax

2008-08-01  Vincent Celier  <celier@adacore.com>

	* mlib-utl.adb:
	(Adalib_Path): New variable to store the path of the adalib directory
	when procedure Specify_Adalib_Dir is called.
	(Lib_Directory): If Adalib_Path is not null, return its value
	(Specify_Adalib_Dir): New procedure

	* mlib-utl.ads (Specify_Adalib_Dir): New procedure

2008-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb:
	(Check_Precondition_Postcondition): If not generating code, analyze the
	expression in a postcondition that appears in a subprogram body, so that
	it is properly decorated for ASIS use.

2008-08-01  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb (Expand_Call): Remove ugly special-case code that resets
	Orig_Prev to Prev in the case where the actual is N_Function_Call or
	N_Identifier. This was interfering with other cases that are rewritten
	as N_Identifier, such as allocators, resulting in passing of the wrong
	accessibility level, and based on testing this code is apparently no
	longer needed at all.

2008-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_One_Call): Handle complex overloading of a
	procedure call whose prefix
	is a parameterless function call that returns an access_to_procedure.

2008-08-01  Jose Ruiz  <ruiz@adacore.com>

	* adaint.c (__gnat_tmp_name): Refine the generation of temporary names
	for RTX. Adding a suffix that is incremented at each iteration.

2008-08-01  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body): Remove special casing of
	Raise_Exception

2008-08-01  Jerome Lambourg  <lambourg@adacore.com>

	* s-os_lib.adb (Normalize_Pathname): Take care of double-quotes in
	paths, which are authorized by Windows but can lead to errors when used
	elsewhere.

2008-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.ads (Need_Subprogram_Instance_Body): new function, to create
	a pending instantiation for the body of a subprogram that is to be
	inlined.

	* sem_ch12.adb:
	(Analyze_Subprogram_Instantiation): use Need_Subprogram_Instance_Body.

	* sem_prag.adb (Make_Inline): If the pragma applies to an instance,
	create a pending instance for its body, so that calls to the subprogram
	can be inlined by the back-end.

2008-08-01  Jose Ruiz  <ruiz@adacore.com>

	* gnat_ugn.texi: Document the RTX run times (rts-rtx-rtss and
	rts-rtx-w32).

2008-08-01  Robert Dewar  <dewar@adacore.com>

	* scng.adb (Error_Illegal_Wide_Character): Bump scan pointer

2008-08-01  Doug Rupp  <rupp@adacore.com>

	* gnat_rm.texi: Document new mechanism Short_Descriptor.

	* types.ads (Mechanism_Type): Modify range for new Short_Descriptor
	mechanism values.

	* sem_prag.adb (Set_Mechanism_Value): Enhance for Short_Descriptor
	mechanism and Short_Descriptor mechanism values.

	* snames.adb (preset_names): Add short_descriptor entry.

	* snames.ads: Add Name_Short_Descriptor.

	* types.h: Add new By_Short_Descriptor mechanism values.

	* sem_mech.adb (Set_Mechanism_Value): Enhance for Short_Descriptor
	mechanism and Short_Descriptor mechanism values.

	* sem_mech.ads (Mechanism_Type): Add new By_Short_Descriptor mechanism
	values.
	(Descriptor_Codes): Modify range for new mechanism values.

	* treepr.adb (Print_Entity_Enfo): Handle new By_Short_Descriptor
	mechanism values.

	* gcc-interface/decl.c (gnat_to_gnu_entity): Handle By_Short_Descriptor.
	(gnat_to_gnu_param): Handle By_Short_Descriptor.

	* gcc-interface/gigi.h (build_vms_descriptor64): Remove prototype.
	(build_vms_descriptor32): New prototype.
	(fill_vms_descriptor): Remove unneeded gnat_actual parameter.

	* gcc-interface/trans.c (call_to_gnu): Removed unneeded gnat_actual
	argument in call fill_vms_descriptor.

	* gcc-interface/utils.c (build_vms_descriptor32): Renamed from
	build_vms_descriptor and enhanced to hande Short_Descriptor mechanism.
	(build_vms_descriptor): Renamed from build_vms_descriptor64.
	(convert_vms_descriptor32): New function.
	(convert_vms_descriptor64): New function.
	(convert_vms_descriptor): Rewrite to handle both 32bit and 64bit
	descriptors.

	* gcc-interface/utils2.c (fill_vms_descriptor): Revert previous changes,
	no longer needed.

2008-08-01  Jose Ruiz  <ruiz@adacore.com>

	* adaint.c (__gnat_tmp_name): RTSS applications do not support tempnam
	nor tmpnam, so we always use c:\WINDOWS\Temp\gnat-XXXXXX as temporary
	name.

2008-08-01  Jose Ruiz  <ruiz@adacore.com>

	* cstreams.c (__gnat_full_name): RTSS applications cannot ask for the
	current directory so only fully qualified names are allowed.

2008-08-01  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi:
	Minor editing, remove uncomfortable use of semicolon

	* s-ststop.adb: Add some ??? comments

	* sem_ch10.adb: Minor reformatting

	* snames.ads:
	Minor comment fixes, some pragmas were not properly
	categorized in the comments, documentation change only

	* xref_lib.adb: Minor reformatting

	* sinput.adb: Minor reformatting

	* gnatchop.adb: Minor reformatting

	* sem_util.ads: Minor reformatting.

	* opt.ads: Minor documentation fix

	* scng.adb: Minor reformatting

	* prj-part.adb: Update comments

2008-08-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Expand_Interface_Conversion): If the target type is a
	tagged synchronized type, use corresponding record type.

2008-08-01  Doug Rupp  <rupp@adacore.com>

	* mlib-tgt-specific-vms-alpha.adb (Build_Dynamic_Library): Output a
	dummy transfer address for debugging.

	* mlib-tgt-specific-vms-ia64.adb (Build_Dynamic_Library): Likewise.

	* vms_data.ads: vms_data.ads: New qualfier /MACHINE_CODE_LISTING

2008-07-31  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Fix formatting.
	* gcc-interface/utils.c (create_field_decl): Avoid superfluous work.

2008-07-31  Pascal Obry  <obry@adacore.com>

	* prj-nmsc.adb: Keep Object and Exec directory casing.

2008-07-31  Jose Ruiz  <ruiz@adacore.com>

	* system-rtx-rtss.ads
	Change the default stack size. It is important to set the commit part.

	* s-taprop-rtx.adb
	(Initialize): Get the clock resolution.
	(RT_Resolution): Return the clock resolution that is indicated by the
	system.

	* s-parame-vxworks.adb
	Document that this body is used for RTX in RTSS (kernel) mode.

	* gcc-interface/Makefile.in
	(LIBGNAT_TARGET_PAIRS for the rtx_rtss run time): Use the
	s-parame-vxworks.adb body in order to have reasonable stack sizes in
	RTX RTSS kernel mode. Virtual memory is not used in that case, so we
	cannot ask for too big values.

2008-07-31  Robert Dewar  <dewar@adacore.com>

	* exp_aggr.adb: Minor reformatting

	* makeutl.adb: Minor reformatting

	* prj-env.adb: Minor reformatting

2008-07-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_disp.adb (Prim_Op_Kind): Retrieve the full view when a private
	tagged type is completed by a concurrent type.

2008-07-31  Gary Dismukes  <dismukes@adacore.com>

	* sem_aggr.adb:
	(Resolve_Record_Aggregate): Bypass error that a type without
	components must have a "null record" aggregate when compiling for Ada
	2005, since it's legal to give an aggregate of form (others => <>)
	for such a type.

2008-07-31  Javier Miranda  <miranda@adacore.com>

	* sem_ch4.adb (Valid_First_Argument_Of): Complete its functionality to
	handle synchronized types. Required to handle well the object.operation
	notation applied to synchronized types.

2008-07-31  Quentin Ochem  <ochem@adacore.com>

	* s-stausa.adb (Fill_Stack): Stack_Used_When_Filling is now stored
	anymore - just used internally.
	Added handling of very small tasks - when the theoretical size is
	already full at the point of the call.
	(Report_Result): Fixed result computation, Stack_Used_When_Filling does
	not need to be added to the result.

2008-07-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Disambiguate_Spec): Continue the disambiguation if the
	corresponding spec is a primitive wrapper. Update comment.

2008-07-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindgen.adb Comment reformatting. Update the list of run-time globals.
	(Gen_Adainit_Ada): Add the declaration, import and value set for
	configuration flag Canonical_Streams.
	(Gen_Adainit_C): Add the declaration and initial value of external
	symbol __gl_canonical_streams.

	* init.c: Update the list of global values computed by the binder.

	* opt.ads: Add flag Canonical_Streams.

	* par-prag.adb (Prag): Include Pragma_Canonical_Streams to the list of
	semantically handled pragmas.

	* sem_prag.adb: Add an entry into enumeration type Sig_Flags.
	(Analyze_Pragma): Add case for pragma Canonical_Streams.

	* snames.adb: Add character value for name Canonical_Streams.

	* snames.ads:
	Add Name_Canonical_Streams to the list of configuration pragmas.
	Add Pragma_Canonical_Streams to enumeration type Pragma_Id.

	* snames.h: Add a definition for Pragma_Canonical_Streams.

	* s-ststop.adb:
	Add a flag and import to seize the value of external symbol
	__gl_canonical_streams. Update comment and initial value of constant
	Use_Block_IO.

	* gnat_rm.texi: Add section of pragma Canonical_Streams.

	* gnat_ugn.texi:
	Add pragma Canonical_Streams to the list of configuration pragmas.

2008-07-31  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Build_Unit_Name): If the unit name in a with_clause
	has the form A.B.C and B is a unit renaming, analyze its compilation
	unit and add a with_clause on A.b to the context.

2008-07-31  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Executable_Prefix_Path): If Locate_Exec_On_Path fails,
	return the empty string, instead of raising Constraint_Error.

2008-07-31  Gary Dismukes  <dismukes@adacore.com>

	* checks.ads (Apply_Accessibility_Check): Add parameter Insert_Node.

	* checks.adb (Apply_Accessibility_Check): Insert the check on
	Insert_Node.

	* exp_attr.adb:
	(Expand_N_Attribute_Refernce, Attribute_Access): Pass attribute node
	to new parameter Insert_Node on call to Apply_Accessibility_Check.
	Necessary to distinguish the insertion node because the dereferenced
	formal may come from a rename, but the check must be inserted in
	front of the attribute.

	* exp_ch4.adb:
	(Expand_N_Allocator): Pass actual for new Insert_Node parameter on
	call to Apply_Accessibility_Check.
	(Expand_N_Type_Conversion): Pass actual for new Insert_Node parameter
	on call to Apply_Accessibility_Check.
	Minor reformatting

2008-07-31  Javier Miranda  <miranda@adacore.com>

	* sem_type.adb (Has_Compatible_Type): Complete support for synchronized
	types when the candidate type is a synchronized type.

	* sem_res.adb (Resolve_Actuals): Reorganize code handling synchronized
	types, and complete management of synchronized types adding missing
	code to handle formal that is a synchronized type.

	* sem_ch4.adb (Try_Primitive_Operation): Avoid testing attributes that
	are not available and cause the compiler to blowup. Found compiling
	test with switch -gnatc

	* sem_ch6.adb (Check_Synchronized_Overriding): Remove local subprogram
	Has_Correct_Formal_Mode plus code cleanup.

2008-07-31  Bob Duff  <duff@adacore.com>

	* sinput.adb (Skip_Line_Terminators): Fix handling of LF/CR -- it was
	recognized as two end-of-lines, but it should be just one.

2008-07-31  Thomas Quinot  <quinot@adacore.com>

	* exp_ch9.adb: Minor reformatting

	* tbuild.ads: Fix several occurrences of incorrectly referring to
	Name_Find as Find_Name.

2008-07-31  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Aggr_Size_OK): If the aggregate has a single component
	and the context is an object declaration with non-static bounds, treat
	the aggregate as non-static.

2008-07-31  Vincent Celier  <celier@adacore.com>

	* prj-part.adb, prj-part.ads, prj.adb, prj.ads, prj-env.adb:
	Move back spec of Parse_Single_Project to body, as it is not called
	outside of package Prj.Part.
	(Project_Data): Remove components Linker_Name, Linker_Path and
	Minimum_Linker_Options as they are no longer set.
	Remove function There_Are_Ada_Sources from package Prj and move code
	in the only place it was used, in Prj.Env.Set_Ada_Paths.

2008-07-31  Arnaud Charlet  <charlet@adacore.com>

	* mlib-utl.ads: Fix typo.

2008-07-31  Robert Dewar  <dewar@adacore.com>

	* sem_ch12.adb: Minor reformatting

2008-07-31  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Change the description of the
	Overly_Nested_Control_Structures: now the rule always requires a
	positive parameter for '+R' option

2008-07-31  Thomas Quinot  <quinot@adacore.com>

	* g-pehage.adb: Minor reformatting

2008-07-31  Pascal Obry  <obry@adacore.com>

	* s-finimp.ads: Minor reformatting.

2008-07-31  Vincent Celier  <celier@adacore.com>

	* s-regexp.ads: Minor comment fix

2008-07-31  Arnaud Charlet  <charlet@adacore.com>

	* s-direio.adb (Reset): Replace pragma Unmodified by Warnings (Off),
	so that we can compile this file successfully with -gnatc.

2008-07-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Find_Stream_Subprogram): Check the base type instead
	of the type when looking for stream subprograms for type String,
	Wide_String and Wide_Wide_String.

	* s-ststop.adb: Change the initialization expression of constant
	Use_Block_IO.

2008-07-31  Geert Bosch  <bosch@adacore.com>

	* arit64.c:
	New file implementing __gnat_mulv64 signed integer multiplication with
	overflow checking

	* fe.h (Backend_Overflow_Checks_On_Target): Define for use by Gigi

	* gcc-interface/gigi.h:
	(standard_types): Add ADT_mulv64_decl
	(mulv64_decl): Define subprogram declaration for __gnat_mulv64

	* gcc-interface/utils.c:
	(init_gigi_decls): Add initialization of mulv64_decl

	* gcc-interface/trans.c:
	(build_unary_op_trapv): New function
	(build_binary_op_trapv): New function
	(gnat_to_gnu): Use the above functions instead of
	build_{unary,binary}_op

	* gcc-interface/Makefile.in
	(LIBGNAT_SRCS): Add arit64.c
	(LIBGNAT_OBJS): Add arit64.o

2008-07-31  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Library_Attributes): Check if Linker'Switches or
	Linker'Default_Switches are declared. Warn if they are declared.

2008-07-31  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Use
	Insert_Actions to place the pointer declaration in the code, rather
	than Insert_Before_And_Analyze, so that insertions of temporaries are
	kept in the proper order when transient scopes are present.


2008-07-31  Robert Dewar  <dewar@adacore.com>

	* einfo.adb (Spec_PPC): Now defined for generic subprograms

	* einfo.ads (Spec_PPC): Now defined for generic subprograms

	* sem_prag.adb (Check_Precondition_Postcondition): Handle generic
	subprogram case

2008-07-31  Vincent Celier  <celier@adacore.com>

	* s-os_lib.adb: Minor comment fix

2008-07-31  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Generic_Subprogram_Body): After analysis,
	transfer pre/postconditions from generic copy to original tree, so that
	they will appear in each instance.
	(Process_PPCs): Do not transform postconditions into a procedure in a
	generic context, to prevent double expansion of check pragmas.

	* sem_attr.adb: In an instance, the prefix of the 'result attribute
	can be the renaming of the
	current instance, so check validity of the name accordingly.

2008-07-31  Robert Dewar  <dewar@adacore.com>

	* mlib-utl.ads: Minor reformatting

2008-07-31  Ed Schonberg  <schonberg@adacore.com>

	sem_attr.adb: 'Result can have an ambiguous prefix, and is resolved
	from context. This attribute must be usable in Ada95 mode.
	The attribute can appear in the body of a function marked
	Inline_Always, but in this case the postocondition is not enforced.

	sem_prag.adb (Check_Precondition_Postcondition): within the expansion
	of an inlined call pre- and postconditions are legal

2008-07-31  Vincent Celier  <celier@adacore.com>

	* prj.adb, prj.ads, clean.adb, prj-nmsc.adb: Remove declarations that
	were for gprmake only

2008-07-31  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Update -gnatN documentation.

	* gnat_rm.texi: Add note about pre/postcondition
	pragmas not checked in conjunction with front-end inlining.

2008-07-31  Robert Dewar  <dewar@adacore.com>

	* g-pehage.adb, g-pehage.ads: Minor reformatting

2008-07-31  Arnaud Charlet  <charlet@adacore.com>

	* mlib-utl.ads, prj-makr.ads: Add comments.

2008-07-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

	* gcc-interface/Makefile.in (EXTRA_GNATRTL_NONTASKING_OBJS)
	[WINDOWS]: Add s-winext.o.

2008-07-30  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/36554
	* back_end.adb (Call_Back_End): Pass Standard_Boolean to gigi.
	* gcc-interface/gigi.h (gigi): Take new standard_boolean parameter.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Subtype>:
	Set precision to 1 for subtype of BOOLEAN_TYPE.
	(set_rm_size): Set TYPE_RM_SIZE_NUM for BOOLEAN_TYPE.
	(make_type_from_size): Deal with BOOLEAN_TYPE.
	* gcc-interface/misc.c (gnat_print_type): Likewise.
	* gcc-interface/trans.c (gigi): Take new standard_boolean parameter.
	Set boolean_type_node as its translation in the table, as well
	as boolean_false_node for False and boolean_true_node for True.
	* gcc-interface/utils.c (gnat_init_decl_processing): Create custom
	8-bit boolean_type_node and set its TYPE_RM_SIZE_NUM.
	(create_param_decl): Deal with BOOLEAN_TYPE.
	(build_vms_descriptor): Likewise.
	(build_vms_descriptor64): Likewise.
	(convert): Deal with BOOLEAN_TYPE like with ENUMERAL_TYPE.

2008-07-30  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb: Minor reformatting

	* exp_util.ads (Find_Prim_Op): Document that Program_Error is raised
	if no primitive operation is found.

	* exp_util.adb: (Find_Prim_Op): Add comments for previous change

	* sem_ch8.adb: Minor reformatting

2008-07-30  Laurent Pautet  <pautet@adacore.com>

	* g-pehage.adb:
	Remove a limitation on the length of the words handled by the minimal
	perfect hash function generator.

	* g-pehage.ads:
	Detail the use of subprograms Insert, Initialize, Compute and Finalize.
	Fix some typos.

2008-07-30  Robert Dewar  <dewar@adacore.com>

	* gnatlink.adb: Minor reformatting

2008-07-30  Thomas Quinot  <quinot@adacore.com>

	* rtsfind.adb (Check_RPC): Check version consistency even when not
	generating RCI stubs. Provide more detailed error message in case of
	mismatch.

2008-07-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): When renaming an attribute
	as a actual in an instance, check for a missing attribute to prevent
	program_error on an illegal program.

	* exp_util.adb (Find_Prim_Op): Rather than Assert (False), raise program
	error if primitive is not found, so that exception can be handled
	elsewhere on illegal programs.

2008-07-30  Robert Dewar  <dewar@adacore.com>

	* uintp.adb (UI_GCD): Fix potential overflow

2008-07-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Flag245 is now used.
	(Is_Primitive_Wrapper, Set_Is_Primitive_Wrapper): Relax the assertion
	check to include functions.
	(Is_Private_Primitive, Set_Is_Private_Primitive): New subprograms.
	(Wrapped_Entity, Set_Wrapped_Entity): Relax the assertion check to
	include functions.
	(Write_Entity_Flags): Move flag Is_Primitive, add Is_Private_Primitive
	to the list of displayed flags.

	* einfo.ads: Update comment on the usage of Is_Primitive_Wrapper and
	Wrapped_Entity. These two flags are now present in functions.
	New flag Is_Private_Primitive.
	(Is_Private_Primitive, Set_Is_Private_Primitive): New subprograms.

	* exp_ch9.adb:
	(Build_Wrapper_Bodies): New subprogram.
	(Build_Wrapper_Body): The spec and body have been moved to in
	Build_Wrapper_ Bodies. Code cleanup.
	(Build_Wrapper_Spec): Moved to the spec of Exp_Ch9. Code cleanup.
	Wrappers are now generated for primitives declared between the private
	and full view of a concurrent type that implements an interface.
	(Build_Wrapper_Specs): New subprogram.
	(Expand_N_Protected_Body): Code reformatting. Replace the wrapper body
	creation mechanism with a call to Build_Wrapper_Bodies.
	(Expand_N_Protected_Type_Declaration): Code reformatting. Replace the
	wrapper spec creation mechanism with a call to Build_Wrapper_Specs.
	(Expand_N_Task_Body): Replace the wrapper body creation
	mechanism with a call to Build_Wrapper_Bodies.
	(Expand_N_Task_Type_Declaration): Replace the wrapper spec
	creation mechanism with a call to Build_Wrapper_Specs.
	(Is_Private_Primitive_Subprogram): New subprogram.
	(Overriding_Possible): Code cleanup.
	(Replicate_Entry_Formals): Renamed to Replicate_Formals, code cleanup.

	* exp_ch9.ads (Build_Wrapper_Spec): Moved from the body of Exp_Ch9.

	* sem_ch3.adb: Add with and use clause for Exp_Ch9.
	(Process_Full_View): Build wrapper specs for all primitives
	that belong to a private view completed by a concurrent type
	implementing an interface.

	* sem_ch6.adb (Analyze_Subprogram_Body): When the current subprogram
	is a primitive of a
	concurrent type with a private view that implements an interface, try to
	find the proper spec.
	(Analyze_Subprogram_Declaration): Mark a subprogram as a private
	primitive if the type of its first parameter is a non-generic tagged
	private type.
	(Analyze_Subprogram_Specification): Code reformatting.
	(Disambiguate_Spec): New routine.
	(Find_Corresponding_Spec): Add a flag to controll the output of errors.
	(Is_Private_Concurrent_Primitive): New routine.

	* sem_ch6.ads:
	(Find_Corresponding_Spec): Add a formal to control the output of errors.

2008-07-30  Doug Rupp  <rupp@adacore.com>

	* gigi.h (build_vms_descriptor64): New function prototype.
	(fill_vms_descriptor): Modified function prototype.

	* utils.c (build_vms_descriptor64): New function.

	* utils2.c (fill_vms_descriptor): Fix handling on 32bit systems.

	* trans.c (call_to_gnu): Call fill_vms_descriptor with new third
	argument.

	* decl.c (gnat_to_gnu_tree): For By_Descriptor mech, build both a
	64bit and 32bit descriptor and save the 64bit version as an alternate
	TREE_TYPE in the parameter.
	(make_type_from_size) <RECORD_TYPE>: Use the appropriate mode for the
	thin pointer.

	* ada-tree.h (DECL_PARM_ALT, SET_DECL_PARM_ALT): New macros.

2008-07-30  Robert Dewar  <dewar@adacore.com>

	* make.adb: Minor reformatting

	* mlib-utl.adb: Minor reformatting

	* osint.ads: Minor reformatting

2008-07-30  Jose Ruiz  <ruiz@adacore.com>

	* adaint.c
	(__gnat_file_exists): Do not use __gnat_stat for RTX.
	(__main for RTX in RTSS mode): Create this dummy procedure symbol to
	avoid the use of this symbol from libgcc.a in RTX kernel mode.

	* cio.c
	(put_int, put_int_stderr, put_char, put_char_stderr): For RTX we call
	the function RtPrintf for console output.

	* argv.c Do not use the environ variable for RTX.

	* gnatlink.adb (gnatlink): The part that handles the --RTS option has
	been moved before the call to Osint.Add_Default_Search_Dirs in order
	to take into account the flags in system.ads (RTX_RTSS_Kernel_Module)
	from the appropriate run time.

	* targparm.ads
	(RTX_RTSS_Kernel_Module_On_Target): Add this flag that is set to True if
	target is a RTSS module for RTX.

	* targparm.adb (Targparm_Tags, RTX_Str, Targparm_Str): Add tag RTX for
	RTX_RTSS_Kernel_Module
	(Get_Target_Parameters): Add processing of RTX_RTSS_Kernel_Module flag.

	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS for RTX): Use gcc
	exception handling mechanism for Windows and RTX in Win32 mode, but
	not for RTX in kernel mode (RTSS).
	(LIBGNAT_SRCS): Remove ada.h

2008-07-30  Paolo Bonzini  <bonzini@gnu.org>

	* gcc-interface/Make-lang.in (ALL_ADAFLAGS): Remove X_ADAFLAGS and
	T_ADAFLAGS, replace ALL_ADA_CFLAGS with ADA_CFLAGS.
	(ALL_ADA_CFLAGS): Remove, replace throughout with ADA_CFLAGS.
	* gcc-interface/Makefile.in (XCFLAGS, X_CFLAGS, X_CPPFLAGS, T_CPPFLAGS,
	X_ADA_CFLAGS, T_ADA_CFLAGS, X_ADAFLAGS, T_ADAFLAGS, ADA_CFLAGS,
	ALL_ADA_CFLAGS): Remove.
	(ALL_ADAFLAGS, MOST_ADAFLAGS): Remove X_ADAFLAGS and T_ADAFLAGS,
	replace ALL_ADA_CFLAGS with ADA_CFLAGS.
	(GCC_CFLAGS): Remove X_CFLAGS.
	(LOOSE_CFLAGS): Remove X_CFLAGS and XCFLAGS.
	(ALL_CPPFLAGS): Remove X_CPPFLAGS and T_CPPFLAGS.
	(ADA_CFLAGS): Substitute.

2008-07-30  Laurent Guerby  <laurent@guerby.net>

	PR ada/5911
	* gcc-interface/Makefile.in (MULTISUBDIR, RTSDIR): New variables.
	Pass MULTISUBDIR to recursive make. Use $(RTSDIR) instead of rts.
	Replace stamp-gnatlib* by stamp-gnatlib*-rts.
	* gcc-interface/Make-lang.in: Replace stamp-gnatlib2
	by stamp-gnatlib2-rts.

2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	PR documentation/15479
	* gnat-style.texi: Remove AdaCore copyright statement and GPL
	statement for GNAT.  Add @copying stanza, use it.  Update to
	GFDL 1.2.  Do not list GFDL as Invariant Section, do not list
	title as Front-Cover Text.
	* gnat_rm.texi: Likewise.
	* gnat_ugn.texi: Likewise.

2008-07-29  Jan Hubicka  <jh@suse.cz>

	* trans.c (process_inlined_subprograms): Remove tree_really_inline
	check.

2008-07-29  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface: New directory.

	* ada-tree.def, cuintp.c, gigi.h, Makefile.in, targtyps.c, ada.h,
	utils.c, ada-tree.h, decl.c, lang.opt, Make-lang.in, trans.c,
	config-lang.in, deftarg.c, lang-specs.h, misc.c, utils2.c: Moved
	to gcc-interface subdirectory.

2008-07-29  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

	* Makefile.in (EXTRA_GNATRTL_NONTASKING_OBJS): Remove extra s-win32.o.

2008-07-28  Jan Hubicka  <jh@suse.cz>

	* misc.c (gnat_post_options): Do not set flag_no_inline.

2008-07-28  Richard Guenther  <rguenther@suse.de>

	Merge from gimple-tuples-branch.

	2008-07-22  Olivier Hainque  <hainque@adacore.com>

	* gigi.h (end_subprog_body): New ELAB_P argument, saying if
	this is called for an elab proc to be discarded if empty.
	* utils.c (end_subprog_body): Honor ELAB_P.
	(build_function_stub): Adjust call to end_subprog_body.
	* trans.c (Subprogram_Body_to_gnu): Likewise.
	(gigi): Reorganize processing of elab procs to prevent
	gimplifying twice, using the new end_subprog_body argument.

	2008-07-19  Richard Guenther  <rguenther@suse.de>

	* Make-lang.in (trans.o): Add tree-iterator.h dependency.
	(utils.o): Likewise.
	* trans.c: Include tree-iterator.h.
	(gnat_gimplify_expr): Adjust prototype.  Fix typo.
	(gnat_gimplify_stmt): Use SET_EXPR_LOCATION.
	(set_expr_location_from_node): Likewise.
	(gigi): Tuplify.
	* ada-tree.h (union lang_tree_node): Use TREE_CHAIN instead
	of GENERIC_NEXT.
	* utils.c: Include tree-iterator.h.
	* gigi.h (gnat_gimplify_expr): Adjust prototype.

	2008-07-18  Aldy Hernandez  <aldyh@redhat.com>

	* trans.c: Include gimple.h instead of tree-gimple.h.
	* utils.c: Same.

	2008-07-14  Aldy Hernandez  <aldyh@redhat.com>

	* trans.c (gnat_gimplify_expr): Use gimplify_assign.

2008-07-25  Jan Hubicka  <jh@suse.cz>

	* utils.c (end_subprog_body): Remove inline trees check.
	* misc.c (gnat_post_options): Do not set flag_inline_trees.

2008-07-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* raise-gcc.c: Move tsystem.h before tm.h.

2008-07-20  Arnaud Charlet  <charlet@adacore.com>

	* gnathtml.pl: New file.

2008-07-19  Olivier Hainque  <hainque@adacore.com>

	* targtyps.c (get_target_default_allocator_alignment): Use
	MALLOC_ABI_ALIGNMENT.

2008-07-17  Olivier Hainque  <hainque@adacore.com>

	* adaint.c (__MINGW32__ section): Include ctype.h and define
	a fallback ISALPHA if IN_RTS.
	(__gnat_is_absolute_path): Use ISALPHA instead of isalpha.

2008-07-17  Olivier Hainque  <hainque@adacore.com>

	* utils.c (create_var_decl_1): Relax expectations on the PUBLIC_FLAG
	argument, to apply to references in addition to definitions.  Prevent
	setting TREE_STATIC on externals.
	(gnat_pushdecl): Always clear DECL_CONTEXT on public externals.

2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	PR documentation/15479
	* gnat_ugn.texi (@ovar): New macro, from autoconf.texi.
	Replace backets around optional parameters with @ovar
	where possible, use @r{[}, @r{]} otherwise.
	Replace some @r, @i, and @emph with @var where appropriate.

2008-07-02  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (make_type_from_size) <INTEGER_TYPE>: Fix typo and tidy up.

2008-06-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* ada-tree.h (SET_TYPE_LANG_SPECIFIC, SET_DECL_LANG_SPECIFIC): Fix
	-Wc++-compat warnings.
	* adaint.c (__gnat_locate_regular_file, __gnat_locate_exec,
	__gnat_locate_exec_on_path): Likewise.
	* decl.c (annotate_value): Likewise.
	* misc.c (gnat_handle_option): Likewise.
	* trans.c (gnat_to_gnu, extract_encoding, decode_name,
	post_error_ne_tree): Likewise.

2008-06-27  Eric Botcazou  <ebotcazou@adacore.com>

	* utils.c (convert) <CONSTRUCTOR>: When converting it to a packable
	version of its type, attempt to first convert its elements.

2008-06-26  Chris Proctor  <chrisp_42@bigpond.com>

	* Makefile.in: Fix *86 kfreebsd target specific pairs.

2008-06-25  Samuel Tardieu  <sam@rfc1149.net>

	* Makefile.in: Use mlib-tgt-specific-linux.adb for sh4 as well.

2008-06-24  Eric Botcazou  <ebotcazou@adacore.com>

	* utils2.c (known_alignment): Derive the alignment from pointed-to
	types only if it is otherwise unknown.
	<INTEGER_CST>: Tidy.
	<MULT_EXPR>: Likewise.
	<POINTER_PLUS_EXPR>: If the alignment of the offset is unknown, use
	that of the base.

2008-06-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR ada/36573
	* s-osinte-hpux-dce.ads (SA_ONSTACK): Define.

2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* gnat_rm.texi (Implementation Defined Characteristics)
	(Standard Library Routines): Use @smallexample for indented
	text.  Drop Indentation outside examples.
	* gnat_ugn.texi: Likewise.

2008-06-13  Olivier Hainque  <hainque@adacore.com>

	* decl.c (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Define to 0
	if undefined.
	(gnat_to_gnu_entity) <case E_Function/Procedure>: Request stack
	realignment with force_align_arg_pointer attribute on foreign
	convention subprograms if FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN.

2008-06-13  Olivier Hainque  <hainque@adacore.com>

	* utils.c (rest_of_record_type_compilation): When computing
	encodings for the components of a variable size type, early
	strip conversions on the current position expression to make
	sure it's shape is visible.  Use remove_conversions for this
	purpose.

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

	* decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: In the case of a
	constrained subtype of a discriminated type, discard the fields that
	are beyond its limits according to its size.

2008-06-10  Olivier Hainque  <hainque@adacore.com>

	* utils.c (create_subprog_decl): If this is for the 'main' entry
	point according to the asm name, redirect main_identifier_node.

2008-06-09  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (components_to_record): Adjust the packedness for the
	qualified union as well.

2008-06-09  Arnaud Charlet  <charlet@adacore.com>

	* Make-lang.in: Use -gnatwns instead of -gnatws to make sytyle
	checks non fatal.

2008-06-07  Samuel Tardieu  <sam@rfc1149.net>

	* sem_res.adb (Large_Storage_Type): A type is large if it
	requires as many bits as Positive to store its values and its
	bounds are known at compile time.
	* sem_ch13.adb (Minimum_Size): Note that this function returns
	0 if the size is not known at compile time.

2008-06-06  Nicolas Setton  <setton@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>

	* ada-tree.h (DECL_PARALLEL_TYPE): New language specific
	attribute, parallel descriptive type attached to another
	type for debug info generation purposes.
	* utils.c (add_parallel_type): New function, register
	parallel type to be attached to a type.
	(get_parallel_type): New function, fetch a registered
	parallel type, if any.
	(rest_of_record_type_compilation): Register the parallel
	type we	make for variable size records.
	* gigi.h (add_parallel_type, get_parallel_type): Declare.
	* decl.c (gnat_to_gnu_entity, maybe_pad_type): Register	the
	parallel debug types we make.
	* trans.c (extract_encoding, decode_name): New functions.
	(gigi): If the DWARF attribute extensions are available, setup
	to use them.
	* lang.opt: Register language specific processing request
	for -gdwarf+.
	* misc.c (gnat_dwarf_extensions): New global variable. How much
	do we want of our DWARF extensions. 0 by default.
	(gnat_handle_option) <OPT_gdwarf_>: Increment gnat_dwarf_extensions.
	(gnat_post_options): Map gnat_dwarf_extensions to the
	commonuse_gnu_debug_info_extensions for later processing.

2008-06-04  Samuel Tardieu  <sam@rfc1149.net>

	* einfo.ads, einfo.adb: Remove unused flag Function_Returns_With_DSP.

2008-06-03  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (common_tools): Fix typos in $(exeext) extension.
	* gnat_ugn.texi (Style Checking)
	(Adding the Results of Compiler Checks to gnatcheck Output)
	(Example of Binder Output File): Fix typos.
	* ali.ads, einfo.ads, exp_ch4.adb, exp_ch6.adb,
	exp_dbug.ads, exp_dist.adb, exp_smem.adb, g-socket.ads,
	s-osinte-rtems.ads, s-shasto.ads, s-stausa.adb,
	s-stausa.ads, sem_cat.adb, sem_ch12.adb, sem_ch3.adb,
	sem_ch4.adb, sem_ch6.adb, sem_ch8.adb, sem_util.ads,
	sinfo.ads, utils.c: Fix typos in comments.
	* sem_ch6.adb, vms_data.ads: Fix typos in strings.

2008-05-29  Thomas Quinot  <quinot@adacore.com>

	* sem_eval.adb: Minor reformatting

2008-05-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Specification): if the return type
	is abstract, do not apply abstractness check on subprogram if this is
	a renaming declaration.

2008-05-29  Arnaud Charlet  <charlet@adacore.com>

	PR ada/864
	* osint.ads, osint.adb (Program_Name): New parameter "Prog" to
	allow recognition of program suffix in addition to prefix.

	* gnatchop.adb (Locate_Executable): Add support for prefix.

	* make.adb, gnatcmd.adb, gnatlink.adb, prj-makr.adb,
	mlib-utl.adb: Adjust calls to Program_Name.

2008-05-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting
	* sem_prag.adb: Minor reformatting
	* sem_res.adb: Minor reformatting
	* sinput-p.ads: Minor reformatting

2008-05-29  Javier Miranda  <miranda@adacore.com>

	* sem_util.adb:
	(Abstract_Interface_List): Add missing support for full type-declaration
	associated with synchronized types.

2008-05-29  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb (Is_Same_Value): Take care of several more cases

2008-05-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assignment): If the name is of a local anonymous
	access type, wrap the expression in a conversion to force an
	accessibility check.

	* sem_aggr.adb (Aggegate_Constraint_Checks): Apply conversion to force
	accessibility checks even when expansion is disabled in order to
	generate messages in the presence of previous errors or in
	semantics-only mode.

2008-05-28  Eric Botcazou  <ebotcazou@adacore.com>

	* system-lynxos-ppc.ads (Always_Compatible_Rep): Set to False.
	* system-lynxos-x86.ads (Always_Compatible_Rep): Set to False.

2008-05-28  Vincent Celier  <celier@adacore.com>

	PR ada/34446
	* gnat_ugn.texi: Document restriction introduced on 2007-04-20 in
	preprocessing expressions

2008-05-28  Vincent Celier  <celier@adacore.com>

	* sinput-p.adb (Source_File_Is_Subunit): Allow special character used
	for preprocessing

	* sinput-p.ads: Minor comment update and reformatting

2008-05-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Valid_Conversion): An anonymous access_to_subprogram
	type has a deeper level than any master only when it is the type of an
	access parameter.

2008-05-28  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Derive_Progenitor_Subprograms): Add documentation.

2008-05-28  Javier Miranda  <miranda@adacore.com>

	* sem_util.ads (Find_Overridden_Synchronized_Primitive): Removed.
	* sem_util.adb (Find_Overridden_Synchronized_Primitive): Removed.
	* sem_ch6.adb (Check_Synchronized_Overriding): Remove one formal.
	Add code that was previously located in
	Find_Overridden_Synchronized_Primitive because it is only used here.

2008-05-28  Sergey Rybin  <rybin@adacore.com>

	* sem_prag.adb (Process_Extended_Import_Export_Subprogram_Pragma): Set
	Entity field for formal_parameter_NAME in MECHANISM_ASSOCIATION.

2008-05-28  Robert Dewar  <dewar@adacore.com>

	* restrict.ads:
	Add missing restrictions, and properly label all GNAT defined ones

	* rtsfind.ads:
	Add entry for Ada_Real_Time.Timing_Events.Timing_Event
	Add entry for Ada.Task_Termination.Set_Specific_Handler
	Add entry for Ada.Task_Termination.Specific_Handler

	* s-rident.ads:
	Add missing restrictions and properly mark all gnat defined ones

	* sem_ch3.adb:
	(Analyze_Object_Declaration): Check No_Local_Timing_Events restriction

	* sem_res.adb:
	(Resolve_Call): Check violation of No_Specific_Termination_Handlers

	* gnat_rm.texi: Add missing restrictions, and properly label all
	GNAT defined ones

2008-05-28  Robert Dewar  <dewar@adacore.com>

	* restrict.adb:
	(Check_Restriction): violation of restriction No_Finalization is
	treated as a serious error to stop expansion

2008-05-28  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb: Minor reformatting
	* exp_util.ads: Minor reformatting.

2008-05-28  Arnaud Charlet  <charlet@adacore.com>

	* Make-lang.in: Remove gprmake.

	* gprmake.adb, makegpr.ads, makegpr.adb: Removed.

2008-05-28  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Diagnose_Interface): Cleanup error messages involving
	improper progenitor names, and avoid cascaded errors.

2008-05-28  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Add note on Old giving warning when applied to constant

	* sem_attr.adb (Analyze_Attribute, case Old): Give warning if prefix is
	a constant

2008-05-28  Robert Dewar  <dewar@adacore.com>

	* exp_fixd.adb (Build_Multiply): Correct one-off error in computing
	size

2008-05-28  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb:
	(Expand_Simple_Function_Return): Copy unaligned result into temporary

2008-05-28  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Derive_Progenitor_Primitives): Add missing support
	for user-defined predefined primitives.

	* sem_util.adb (Matches_Prefixed_View_Profile): Ditto.
	(Find_Overridden_Synchronized_Primitive): Ditto.

	* sem_ch6.adb (Check_Synchronized_Overriding): Ditto.

2008-05-27  Arnaud Charlet  <charlet@adacore.com>

	* a-ststio.adb, s-direio.adb:
	Further code clean up of previous change.
	Update comments.

2008-05-27  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb: Minor reformatting

2008-05-27  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (Build_Incomplete_Type_Declaration): In the case of an
	untagged private type with a tagged full type, where the full type has
	a self reference, create the corresponding class-wide type early, in
	case the self reference is "access T'Class".

2008-05-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Build_Array_Aggr_Code): If component type includes
	tasks and context is an object declaration. create master entity before
	expansion.

2008-05-27  Robert Dewar  <dewar@adacore.com>

	* mlib-prj.adb: Minor reformatting

	* prj-part.adb: Minor reformatting

	* prj.ads: Minor reformatting

	* exp_ch3.adb: Minor reformatting.

	* sem_ch3.ads: Minor reformatting

	* sem_eval.adb: Minor reformatting

2008-05-27  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb:
	<prefix>-gnat stack spawns gnatstack, not <prefix>-gnatstack

2008-05-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Expand_Array_Aggregate): If the aggregate contains
	tasks, create an activation chain now, before the expansion into
	assignments and build-in-place calls that require the presence of an
	activation chain.
	(Backend_Processing_Possible): If the component type is inherently
	limited, the aggregate must be expanded into individual built-in-place
	assignments.

	* sem_ch6.adb (Build_Extra_Formals): Use underlying type of result to
	determine whether an allocation extra parameter must be built, to
	handle case of a private type whose full type is a discriminated type
	with defaults.

2008-05-27  Bob Duff  <duff@adacore.com>

	* gnat_rm.texi:
	Document the new behavior regarding trampolines.

2008-05-27  Arnaud Charlet  <charlet@adacore.com>

	* a-direio.adb, a-sequio.adb: Replace address clause by
	unrestricted_access, simpler and compatible with .NET.

2008-05-27  Vincent Celier  <celier@adacore.com>

	* prj-part.adb:
	(Project_Path_Name_Of.Try_Path): Do not use Locate_Regular_File to find
	a project file, so that symbolic links are not resolved.

2008-05-27  Arnaud Charlet  <charlet@adacore.com>

	* a-ztexio.adb, a-textio.adb, a-witeio.adb, s-direio.adb:
	Replace heavy address clause by 'Unrestricted_Access, cleaner and more
	portable across GNAT targets, since this kind of address clause is not
	supported by VM back-ends (.NET/JGNAT).

2008-05-27  Arnaud Charlet  <charlet@adacore.com>

	* bindgen.adb: Update comments.

	* s-tasinf-mingw.adb: Add "with" of System.OS_Interface

2008-05-27  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb, prj-proc.adb, make.adb, mlib-prj.adb, prj.adb,
	prj.ads, makegpr.adb, makeutl.adb, clean.adb, prj-nmsc.adb,
	mlib-tgt.adb, prj-env.adb, prj-env.ads:
	(Path_Information): New record type
	Use component of type Path_Information when there are two paths, one in
	canonical format and one in display format.
	Update the project manager to these new components.

2008-05-27  Robert Dewar  <dewar@adacore.com>

	* makeutl.adb: Minor reformatting
	* prj-nmsc.adb: Minor reformatting
	* s-stausa.adb: Minor reformatting
	* s-stausa.ads: Minor reformatting
	* sem_ch6.adb: Minor reformatting

2008-05-27  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Minor comment fixes

2008-05-27  Thomas Quinot  <quinot@adacore.com>

	* makeutl.adb: Minor code reorganization

	* exp_aggr.adb: Add ??? comment
	Fix typo

	* exp_ch6.adb: Minor reformatting

2008-05-27  Quentin Ochem  <ochem@adacore.com>

	* s-stausa.adb (Initialize): Updated result initialization, and
	initialization of environment stack.
	(Fill_Stack): Improved computation of the pattern zone, taking into
	account already filled at the calling point.
	(Get_Usage_Range): Now uses Min_Measure and Max_Measure instead of
	Measure and Overflow_Guard.
	(Report_Result): Fixed computation of the result using new fields of
	Stack_Analyzer.

	* s-stausa.ads (Initialize_Analyzer): Replaced Size / Overflow_Guard
	params by more explicit Stack_Size / Max_Pattern_Size params.
	(Stack_Analyzer): Added distinct Stack_Size & Pattern_Size fields.
	Added Stack_Used_When_Filling field.
	(Task_Result): Replaced Measure / Overflow_Guard by more explicit
	Min_Measure and Max_Measure fields.

	* s-tassta.adb (Task_Wrapper): Updated call to Initialize_Analyzer.

2008-05-27  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb:
	(Check_File): Make sure that a unit that replaces the same unit in a
	 project being extended is properly processed.

2008-05-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb:
	(Get_Discr_Value): Remove obsolete code that failed to find the value
	of a discriminant for an inherited task component appearing in a type
	extension.

2008-05-27  Thomas Quinot  <quinot@adacore.com>

	(System.File_IO.{Close, Delete, Reset}):
	Change File parameter from "in out AFCB_Ptr" to "access AFCB_Ptr".

	(Ada.*_IO.{Close, Delete, Reset, Set_Mode}):
	Pass File parameter by reference.

2008-05-27  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb:
	(Process_Sources_In_Multi_Language_Mode): Check that there are not two
	sources of the same project that have the same object file name.
	(Find_Explicit_Sources): Always remove a source exception that was not
	found.

2008-05-27  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb: Minor reformatting

2008-05-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb:
	(Is_Interface_Conformant): Handle properly a primitive operation that
	overrides an interface function with a controlling access result.
	(Type_Conformance): If Skip_Controlling_Formals is true, when matching
	inherited and overriding operations, omit as well the conformance check
	on result types, to prevent spurious errors.

2008-05-27  Vincent Celier  <celier@adacore.com>

	* makeutl.ads, makeutl.adb:
	(Set_Location): New procedure
	(Get_Location): New function
	(Update_Main): New procedure

2008-05-27  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb:
	(Check_Library): Allow standard project to be extended as a static
	library project.
	(Get_Mains): Do not inherit attribute Main in an extending library
	project.

2008-05-27  Eric Botcazou  <ebotcazou@adacore.com>

	* system-darwin-ppc.ads (Always_Compatible_Rep): Set to False.
	* system-darwin-x86.ads (Always_Compatible_Rep): Likewise.
	* system-freebsd-x86.ads (Always_Compatible_Rep): Likewise.
	* system-linux-ppc.ads (Always_Compatible_Rep): Likewise.
	* system-linux-x86_64.ads (Always_Compatible_Rep): Likewise.
	* system-linux-x86.ads (Always_Compatible_Rep): Likewise.
	* system-mingw.ads (Always_Compatible_Rep): Likewise.
	* system-solaris-sparc.ads (Always_Compatible_Rep): Likewise.
	* system-solaris-sparcv9.ads (Always_Compatible_Rep): Likewise.
	* system-solaris-x86.ads (Always_Compatible_Rep): Likewise.

2008-05-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: add guard to previous patch.

2008-05-27  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Build_Dispatch_Tables): For a private type completed by
	a synchronized tagged type, do not attempt to build dispatch table for
	full view. The table is built for the corresponding record type, which
	has its own declaration.

2008-05-27  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb (Fixup_Bad_Constraint): Set the Etype on the bad subtype
	to the known type entity E, rather than setting it to Any_Type. Fixes
	possible blowup in function Base_Init_Proc, as called from Freeze_Entity
	for objects whose type had an illegal constraint.

2008-05-27  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi:
	Add succinct documentation for attribute Excluded_Source_List_File

2008-05-27  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: Add new project level attribute Map_File_Option

	* prj-nmsc.adb (Process_Linker): Process new attribute Map_File_Option

	* prj.ads: Minor reformatting and comment update
	(Project_Configuration): New component Map_File_Option

	* snames.adb: New standard name Map_File_Option

	* snames.ads: New standard name Map_File_Option

2008-05-27  Vincent Celier  <celier@adacore.com>

	* xsnames.adb: Remove unused variable Oname

2008-05-27  Doug Rupp  <rupp@adacore.com>

	* exp_ch6.adb:
	(Expand_N_Function_Call): Fix comments. Minor reformatting.

	* exp_vfpt.ads:
	(Expand_Vax_Foreign_Return): Fix comments.

2008-05-27  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb: Minor reformating

2008-05-26  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Remove checks for
	No_Default_Initialization, which is now delayed until the freeze point
	of the object. Add a comment about deferral of the check.

	* freeze.adb (Freeze_Entity): The check for No_Default_Initialization
	on objects is moved here.

2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* s-casi16.adb (Uhalf): Rewrite it as integer with small alignment.
	(Compare_Array_S16): Adjust for above change.
	* s-casi32.adb (Uword): Likewise.
	(Compare_Array_S32): Likewise.
	* s-casi64.adb (Uword): Likewise.
	(Compare_Array_S64): Likewise.
	* s-caun16.adb (Uhalf): Likewise.
	(Compare_Array_U16): Likewise.
	* s-caun32.adb (Uword): Likewise.
	(Compare_Array_U32): Likewise.
	* s-caun64.adb (Uword): Likewise.
	(Compare_Array_U64): Likewise.

2008-05-26  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb: Add ??? comment for previous change

	* exp_vfpt.adb: Minor reformatting

	* exp_vfpt.ads: Add ??? comment for last change

	* sem_attr.adb: Add some ??? comments for previous change

	* s-vaflop.ads: Add comments for previous change

2008-05-26  Doug Rupp  <rupp@adacore.com>

	* s-vaflop-vms-alpha.adb:
	Remove System.IO use clause, to prevent spurious ambiguities when
	package is access through rtsfind.

2008-05-26  Sergey Rybin  <rybin@adacore.com>

	* tree_io.ads (ASIS_Version_Number): Update because of the changes
	made in front-end

2008-05-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb:
	(Resolve_Attribute, case 'address):  S (A .. B)' address can be safely
	converted to S (A)'address only if A .. B is known to be a non-null
	range.

2008-05-26  Doug Rupp  <rupp@adacore.com>

	* s-vaflop.adb:
	(Return_D, Return_F, Return_G): New functions.

	* s-vaflop.ads:
	(Return_D, Return_F, Return_G): New functions.

	* exp_vfpt.adb:
	(Expand_Vax_Foreign_Return): New procedure

	* exp_vfpt.ads:
	(Expand_Vax_Foreign_Return): New procedure

	* rtsfind.ads:
	(RE_Return_D, RE_Return_F, RE_Return_G): New RE_Ids
	(RE_Return_D, RE_Return_F, RE_Return_G): New RE_Unit_Table elements

	* exp_ch6.adb:
	Import Exp_Vfpt
	(Expand_N_Function_Call): Call Expand_Vax_Foreign_Return.

	* s-vaflop-vms-alpha.adb:
	(Return_D, Return_F, Return_G): New functions.

2008-05-26  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch3.adb (Build_Array_Init_Proc): Only set Init_Proc to a dummy
	init proc entity when there is actual default initialization associated
	with the component type, to avoid spurious errors on objects of scalar
	array types that are marked Is_Public when No_Default_Initialization
	applies.

2008-05-26  Thomas Quinot  <quinot@adacore.com>

	* rtsfind.ads, rtsfind.adb:
	(RE_Get_RACW): New runtime library entity provided by PolyORB s-parint.
	(Check_RPC): Support per-PCS-kind API versioning.

	exp_dist.ads, exp_dist.adb:
	(Build_Stub_Tag, Get_Stub_Elements): New utility subprograms.
	(PolyORB_Support.Add_RACW_From_Any): Offload common code to new runtime
	 library function Get_RACW.
	(PolyORB_Support.Add_RACW_To_Any): Offload common code to new runtime
	library function Get_Reference.
	(PolyORB_Support.Add_RACW_Read_Attribute): Use Get_RACW instead of going
	through an intermediate Any.
	(PolyORB_Support.Add_RACW_Write_Attribute): Use Get_Reference instead of
	going through an intermediate Any.

	* sem_dist.adb: Minor reformatting.

2008-05-26  Javier Miranda  <miranda@adacore.com>

	* einfo.ads (Abstract_Interface_Alias): Renamed as Interface_Alias.
	(Set_Abstract_Interface_Alias): Renamed as Set_Interface_Alias.
	(Is_Internal): Adding documentation on internal entities that have
 	attribute Interface_Alias (old attribute Abstract_Interface_Alias)

	* einfo.adb (Abstract_Interface_Alias): Renamed as Interface_Alias.
	(Set_Abstract_Interface_Alias): Renamed as Set_Interface_Alias.
 	Added assertion to force entities with this attribute to have
 	attribute Is_Internal set to True.
	(Next_Tag_Component): Simplify assertion using attribute Is_Tag.

	* sem_ch3.adb (Derive_Interface_Subprograms): This subprogram has been
 	renamed as Derive_Progenitor_Subprograms. In addition, its code is
 	a new implementation.
	(Add_Interface_Tag_Components): Remove special management of
	synchronized interfaces.
	(Analyze_Interface_Declaration): Minor reformating
	(Build_Derived_Record_Type): Minor reformating
	(Check_Abstract_Overriding): Avoid reporting error in case of abstract
 	predefined primitive inherited from interface type because the body of
 	internally generated predefined primitives of tagged types are generated
 	later by Freeze_Type
	(Derive_Subprogram): Avoid generating an internal name if the parent
 	subprogram overrides an interface primitive.
	(Derive_Subprograms): New implementation that keeps separate the
 	management of tagged types not implementing interfaces, from tagged
 	types that implement interfaces.
	(Is_Progenitor): New implementation.
	(Process_Full_View): Add documentation
	(Record_Type_Declaration): Replace call to Derive_Interface_Subprograms
 	by call to Derive_Progenitor_Subprograms.

	* sem_ch6.ads (Is_Interface_Conformant): New subprogram.
	(Check_Subtype_Conformant, Subtype_Conformant): Adding new argument
 	Skip_Controlling_Formals.

	* sem_ch6.adb (Is_Interface_Conformant): New subprogram.
	(Check_Conventions): New implementation. Remove local subprogram
 	Skip_Check. Remove formal Search_From of routine Check_Convention.
	(Check_Subtype_Conformant, Subtype_Conformant): Adding new argument
 	Skip_Controlling_Formals.
	(New_Overloaded_Entity): Enable addition of predefined dispatching
 	operations.

	* sem_disp.ads
	(Find_Primitive_Covering_Interface): New subprogram.

	* sem_disp.adb (Check_Dispatching_Operation): Disable registering
 	the task body procedure as a primitive of the corresponding tagged
 	type.
	(Check_Operation_From_Private_Type): Avoid adding twice an entity
 	to the list of primitives.
	(Find_Primitive_Covering_Interface): New subprogram.
	(Override_Dispatching_Operation): Add documentation.

	* sem_type.adb (Covers): Minor reformatings

	* sem_util.ads (Collect_Abstract_Interfaces): Renamed as
	Collect_Interfaces.
 	Rename formal.
	(Has_Abstract_Interfaces): Renamed as Has_Interfaces.
	(Implements_Interface): New subprogram.
	(Is_Parent): Removed.
	(Primitive_Names_Match): New subprogram.
	(Remove_Homonym): Moved here from Derive_Interface_Subprograms.
	(Ultimate_Alias): New subprogram.

	* sem_util.adb (Collect_Abstract_Interfaces): Renamed as
	Collect_Interfaces.
 	Remove special management for synchronized types. Rename formal. Remove
 	internal subprograms Interface_Present_In_Parent and Add_Interface.
	(Has_Abstract_Interfaces): Renamed as Has_Interfaces. Replace assertion
 	on non-record types by code to return false in such case.
	(Implements_Interface): New subprogram.
	(Is_Parent): Removed. No special management is now required for
 	synchronized types covering interfaces.
	(Primitive_Names_Match): New subprogram.
	(Remove_Homonym): Moved here from Derive_Interface_Subprograms.
	(Ultimate_Alias): New subprogram.

	* exp_ch3.adb (Add_Internal_Interface_Entities): New subprogram.
 	Add internal entities associated with secondary dispatch tables to
 	the list of tagged type primitives that are not interfaces.
	(Freeze_Record_Type): Add new call to Add_Internal_Interface_Entities
	(Make_Predefined_Primitive_Specs): Code reorganization to improve
 	the management of predefined equality operator. In addition, if
 	the type has an equality function corresponding with a primitive
 	defined in an interface type, the inherited equality is abstract
 	as well, and no body can be created for it.

	* exp_disp.ads (Is_Predefined_Dispatching_Operation): Moved from
 	exp_util to exp_disp.
	(Is_Predefined_Interface_Primitive): New subprogram. Returns True if
 	an entity corresponds with one of the predefined primitives required
 	to implement interfaces.
	Update copyright notice.

	* exp_disp.adb (Set_All_DT_Position): Add assertion. Exclude from the
 	final check on abstract subprograms all the primitives associated with
 	interface primitives because they must be visible in the public and
 	private part.
	(Write_DT): Use Find_Dispatching_Type to locate the name of the
	interface type. This allows the use of this routine, for debugging
	purposes, when the tagged type is not fully decorated.
	(Is_Predefined_Dispatching_Operation): Moved from exp_util to exp_disp.
 	Factorize code calling new subprogram Is_Predefined_Interface_Primitive.
	(Is_Predefined_Interface_Primitive): New subprogram. Returns True if an
 	entity corresponds with one of the predefined primitives required to
 	implement interfaces.

	* exp_util.adb (Find_Interface_ADT): New implementation
	(Find_Interface): Removed.

	* sprint.adb (Sprint_Node_Actual): Generate missing output for the
 	list of interfaces associated with nodes
	N_Formal_Derived_Type_Definition and N_Private_Extension_Declaration.

2008-05-26  Thomas Quinot  <quinot@adacore.com>

	* exp_ch5.adb (Make_Tag_Ctrl_Assignment): Add missing guard on
	condition for assignment to temporary.

2008-05-26  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_Concatenate_Other): Add explicit constraint
	checks on the upper bound if the index type is a modular type, to
	prevent wrap-around computations when size is close to upper bound of
	type.

2008-05-26  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting

2008-05-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Remove_Parent): Use specification of instance
	to retrieve generic parent,
	to handle properly the case where the instance is a child unit.
	Add guard to handle properly wrapper packages.
	Minor reformatting

2008-05-26  Thomas Quinot  <quinot@adacore.com>

	* sinfo.ads: Minor reformatting

2008-05-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): Minor code reformatting.
	Generate a tag check when the result subtype of a function, defined by
	an access definition, designates a specific tagged type.
	(Make_Tag_Check): New routine.

2008-05-26  Arnaud Charlet  <charlet@adacore.com>

	* ceinfo.adb, csinfo.adb: Remove warnings. Update headers.

2008-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gigi.h (gigi): Remove bogus ATTRIBUTE_UNUSED marker.
	(builtin_decl_for): Likewise.
	* trans.c (gigi): Likewise.
	* utils.c (def_builtin_1): Fix formatting.

2008-05-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Build_Init_Statements): Alphabetize local variables.
	Create the statements which map a string name to protected or task
	entry indix.

	* exp_ch9.adb: Add with and use clause for Stringt.
	Minor code reformatting.
	(Build_Entry_Names): New routine.
	(Make_Initialize_Protection, Make_Task_Create_Call): Generate a value
	for flag Build_Entry_Names which controls the allocation of the data
	structure for the string names of entries.

	* exp_ch9.ads (Build_Entry_Names): New subprogram.

	* exp_util.adb (Entry_Names_OK): New function.

	* exp_util.ads (Entry_Names_OK): New function.

	* rtsfind.ads: Add RO_PE_Set_Entry_Name and RO_TS_Set_Entry_Name to
	enumerations RE_Id and RE_Unit_Table.

	* s-taskin.adb Add with and use clause for Ada.Unchecked_Deallocation.
	(Free_Entry_Names_Array): New routine.

	* s-taskin.ads: Comment reformatting.
	Add types String_Access, Entry_Names_Array, Entry_Names_Array_Access.
	Add component Entry_Names to record Ada_Task_Control_Block.
	(Free_Entry_Names_Array): New routine.

	* s-tassta.adb (Create_Task): If flag Build_Entry_Names is set,
	dynamically allocate an array
	of string pointers. This structure holds string entry names.
	(Free_Entry_Names): New routine.
	(Free_Task, Vulnerable_Free_Task): Deallocate the entry names array.
	(Set_Entry_Names): New routine.

	* s-tassta.ads:
	(Create_Task): Add formal Build_Entry_Names. The flag is used to
	control the allocation of the data structure which stores entry names.
	(Set_Entry_Name): New routine.

	* s-tpoben.adb:
	Add with and use clause for Ada.Unchecked_Conversion.
	(Finalize): Deallocate the entry names array.
	(Free_Entry_Names): New routine.
	(Initialize_Protection_Entries): When flag Build_Entry_Names is set,
	create an array of string pointers to hold the entry names.
	(Set_Entry_Name): New routine.

	* s-tpoben.ads:
	Add field Entry_Names to record Protection_Entries.
	(Initialize_Protection_Entries): Add formal Build_Entry_Names.
	(Set_Entry_Name): New routine.

2008-05-26  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb:
	(Process_Project_Level_Simple_Attributes): process attribute Library_GCC

	* prj.ads:
	(Project_Configuration): New component Shared_Lib_Driver

2008-05-26  Ed Schonberg  <schonberg@adacore.com>

	* inline.adb:
	(Cleanup_Scopes): For a protected operation, transfer finalization list
	to protected body subprogram, to force cleanup actions when needed.

2008-05-26  Robert Dewar  <dewar@adacore.com>

	* sem_cat.adb: Minor reformatting

	* gnatname.adb: Minor reformatting

	* osint.ads: Minor reformatting

	* s-carun8.ads: Minor reformatting

	* g-heasor.ads: Minor comment fix (unit is now pure)

2008-05-26  Robert Dewar  <dewar@adacore.com>

	* exp_ch2.adb:
	(Expand_Current_Value): Properly type generated integer literal

2008-05-26  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Add description for the new gnatcheck rule -
	Separate_Numeric_Error_Handlers.

2008-05-26  Pascal Obry  <obry@adacore.com>

	* sem_aggr.adb: Minor reformatting.

2008-05-26  Jose Ruiz  <ruiz@adacore.com>

	* s-osinte-aix.adb:
	(To_Target_Priority): Setting the time slice value to 0 or greater sets
	the scheduling policy to FIFO within priorities or round-robin
	respectively.
	Hence, the priority must be set in this case to the one selected by the
	user.

2008-05-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb:
	(Remove_Parent): If the enclosing scope is an instance whose generic
	parent is declared within some parent scope of the just completed
	instance, make full views of the entities in that parent visible, when
	applicable.

2008-05-26  Kai Tietz  <kai.tietz@onevision.com>

	* mingw32.h (STD_MINGW): Set to true for target w64.

2008-05-25  Eric Botcazou  <ebotcazou@adacore.com>

	* trans.c (Attribute_to_gnu) <Code_Address>: Set TREE_NO_TRAMPOLINE
	instead of TREE_STATIC on the ADDR_EXPR.

2008-05-24  Eric Botcazou  <ebotcazou@adacore.com>

	* trans.c (gnat_to_gnu): Do not set source location info on NOP_EXPRs.
	(Sloc_to_locus): Do not overwrite known GCC locations when translating
	GNAT standard locations.

2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gigi.h (mark_visited): Declare.
	* decl.c (gnat_to_gnu_entity): Use mark_visited instead of marking
	only the topmost node of expressions.
	(elaborate_expression_1): Look deeper for read-only variables.
	* trans.c (add_decl_expr): Use mark_visited instead of marking by hand.
	(mark_visited): Move logic to mark_visited_r.  Invoke walk_tree.
	(mark_visited_r): New function.

2008-05-23  Vincent Celier  <celier@adacore.com>

	* snames.adb: New standard name Excluded_Source_List_File.

	* snames.ads: New standard name Excluded_Source_List_File.

	* prj-attr.adb: New project level attribute Excluded_Source_List_File.

	* prj-nmsc.adb: (Find_Excluded_Sources): New parameter Project.
	Get excluded sources from
	file indicated by attribute Excluded_Source_List_File, when present and
	neither Excluded_Source_Files nor Locally_Removed_Files are declared.

2008-05-23  Robert Dewar  <dewar@adacore.com>

	* exp_dist.adb: Minor reformatting

2008-05-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Resolve_Attribute, case 'address): If the prefix is a
	slice, convert it to an indexed component, which is equivalent, more
	efficient, and usable even if the slice itself is not addressable.

2008-05-23  Olivier Hainque  <hainque@adacore.com>

	* gnat_ugn.texi (Calling Conventions): Document that the Intrinsic
	convention also allows access to named compiler built-in subprograms
	such as the GCC __builtin family.

2008-05-23  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Naming_Schemes): Check a file for spec, body and
	sep. If there are several possibilities, choose the one with the
	longer prefix.

2008-05-23  Vincent Celier  <celier@adacore.com>

	* gnatlink.adb (Process_Args): Do not disable scanning of ALI file for
	back end switches when executable specified with --GCC= is same as
	default, even if there are additional options.

	* gnat_ugn.texi:
	Document when the back end switches from the ALI file are taken into
	account when gnatlink is invoked with --GCC=

2008-05-23  Thomas Quinot  <quinot@adacore.com>

	* s-os_lib.adb:
	(copy_File): Do not open destination file if source file is unreadable.

2008-05-23  Eric Botcazou  <ebotcazou@adacore.com>

	* utils.c (handle_type_generic_attribute): Adjust to accept
	fixed arguments before an elipsis.

2008-05-21  Thomas Quinot  <quinot@adacore.com>

	* g-sothco.ads, g-sothco.adb: New files.

2008-05-20  Thomas Quinot  <quinot@adacore.com>

	* Makefile.rtl (GNAT.Sockets.Thin_Common): New unit.

	* g-sttsne-vxworks.adb: Add missing dependency on Sockets.Constants.
	Add missing "with" of Ada.Unchecked_Conversion

	* g-soccon-linux-ppc.ads, g-soccon-linux-64.ads, g-soccon-lynxos.ads,
	g-soccon-linux-x86.ads, g-soccon-hpux-ia64.ads,
	g-soccon-solaris-64.ads, g-soccon-tru64.ads, g-soccon-aix.ads,
	g-soccon-irix.ads, g-soccon-hpux.ads, g-soccon-solaris.ads,
	g-soccon-vms.ads, g-soccon-mingw.ads, g-soccon-vxworks.ads,
	g-socthi-vxworks.adb, g-soccon-freebsd.ads, g-soccon.ads:
	Move common code out of GNAT.Sockets.Thin implementations and into
	Thin_Common.
	New constant SIZEOF_fd_set
	New flag Has_Sockaddr_Len
	New constants SIZEOF_sockaddr_in, SIZEOF_sockaddr_in6

	* g-stsifd-sockets.adb
	(Create): Remove call to Set_Length; use Set_Family to set the family
	and (on appropriate platforms) length fields in struct sockaddr.

	* g-socthi.adb, g-socthi.ads, g-socthi-vms.ads, g-socthi-vms.adb,
	g-socthi-mingw.adb, g-socthi-mingw.ads, g-socthi-vxworks.adb,
	g-soccon-darwin.ads, g-soccon-darwin.ads: New constant SIZEOF_fd_set
	Move common code out of GNAT.Sockets.Thin implementations and into
	Thin_Common.

	* g-socket.ads, g-socket.adb:
	Move common code out of GNAT.Sockets.Thin implementations and into
	Thin_Common.
	(Connect_Socket, Accept_Socket): Provide new versions of these two
	routines that operate with a user specified timeout.
	(Bind_Socket, Connect_Socket, Send_Socket): Remove calls to Set_Length,
	this is now handled automatically by Set_Family on platforms that
	require it.

	* gen-soccon.c:
	Move common code out of GNAT.Sockets.Thin implementations and into
	Thin_Common.
	(SIZEOF_sockaddr_in6): On platforms where IPv6 is not supported, define
	this constant to 0 (not -1) because we use it to initialize an
	unsigned_char value.
	Align values for numeric constants only.
	Handle the case of systems that do not support AF_INET6.
	New constant SIZEOF_fd_set
	New flag Has_Sockaddr_Len
	New constants SIZEOF_sockaddr_in, SIZEOF_sockaddr_in6

	* gsocket.h: New flag Has_Sockaddr_Len
	New constants SIZEOF_sockaddr_in, SIZEOF_sockaddr_in6

2008-05-20  Santiago Uruena  <uruena@adacore.com>

	* i-cobol.ads: Interfaces.COBOL should be preelaborate.

2008-05-20  Arnaud Charlet  <charlet@adacore.com>

	* s-linux-hppa.ads (atomic_lock_t): Put back proper alignment now that
	the underlying issue with malloc/free has been fixed. Remove associated
	comments.
	Minor reformatting.
	Related to PR ada/24533

2008-05-20  Robert Dewar  <dewar@adacore.com>

	* ali.adb: Correct casing of ASCII.NUL

	* styleg-c.adb (Check_Identifier): Handle case of names in ASCII
	properly.

2008-05-20  Robert Dewar  <dewar@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* checks.adb (Apply_Arithmetic_Overflow_Check): Avoid intermediate
	overflow if result converted to wider integer type.
	(Apply_Type_Conversion_Checks): Don't emit checks on conversions to
	discriminated types when discriminant checks are suppressed.

2008-05-20  Vincent Celier  <celier@adacore.com>

	* cstand.adb (Print_Standard): Issue the correct Size clause for type
	Wide_Wide_Character.

2008-05-20  Tristan Gingold  <gingold@adacore.com>

	* decl.c: Do not emit a variable for a object that has an address
	representation clause whose value is known at compile time.
	When a variable has an address clause whose value is known at compile
	time, refer to this variable by using directly the address instead of
	dereferencing a pointer.

2008-05-20  Robert Dewar  <dewar@adacore.com>

	PR ada/30740
	* einfo.ads, einfo.adb (Non_Binary_Modulus): Applies to all types and
	subtypes, always False for non-modular types.
	Shared_Var_Assign_Proc (node22) and Shared_Var_Read_Proc (node 15)
	entry nodes have been replaced by Shared_Var_Procs_Instance (node22)
	for Shared_Storage package.
	(Is_RACW_Stub_Type): New entity flag.

	* exp_ch4.adb
	(Expand_N_Op_Expon): Avoid incorrect optimization of a*(2**b) in the
	case where we have a modular type with a non-binary modules.
	Comments reformattings.

	* sem_intr.adb: Simplify code not that Non_Binary_Modulus applies to
	all types.

2008-05-20  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb
	(Build_Record_Aggr_Code): Fix wrong tests checking progenitors. Previous
	tests did not covered the case in which the type of the aggregate has
	no progenitors but some its parents has progenitors.

2008-05-20  Gary Dismukes  <dismukes@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb
	(Expand_N_Object_Declaration): Correct the condition which triggers the
	generation of a call to Displace when initializing a class-wide object.
	(Build_Dcheck_Functions): Build discriminant-checking for null variants
	when Frontend_Layout_On_Target is true to ensure that they're available
	for calling when a record variant size function is built in Layout.

2008-05-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Assign_Record): Within an initialization
	procedure for a derived type retrieve the discriminant values from the
	parent using the corresponding discriminant.
	(Expand_N_Assignment_Statement): Skip generation of implicit
	if-statement associated with controlled types if we are
	compiling with restriction No_Finalization.

2008-05-20  Vincent Celier  <celier@adacore.com>

	* prj.adb (Hash (Project_Id)): New function
	(Project_Empty): Add new component Interfaces_Defined

	* prj.ads (Source_Data): New component Object_Linked
	(Language_Config): New components Object_Generated and Objects_Linked
	(Hash (Project_Id)): New function
	(Source_Data): New Boolean components In_Interfaces and
	Declared_In_Interfaces.
	(Project_Data): New Boolean component Interfaces_Defined

	* prj-attr.adb:
	New project level attribute Object_Generated and Objects_Linked
	Add new project level attribute Interfaces

	* prj-dect.adb: Use functions Present and No throughout
	(Parse_Variable_Declaration): If a string type is specified as a simple
	name and is not found in the current project, look for it also in the
	ancestors of the project.

	* prj-makr.adb:
	Replace procedure Make with procedures Initialize, Process and Finalize
	to implement H414-023: process different directories with different
	patterns.
	Use functions Present and No throughout

	* prj-makr.ads:
	Replace procedure Make with procedures Initialize, Process and Finalize

	* prj-nmsc.adb
	(Add_Source): Set component Object_Exists and Object_Linked accordnig to
	the language configuration.
	(Process_Project_Level_Array_Attributes): Process new attributes
	Object_Generated and Object_Linked.
	(Report_No_Sources): New Boolean parameter Continuation, defaulted to
	False, to indicate that the erreor/warning is a continuation.
	(Check): Call Report_No_Sources with Contnuation = True after the first
	call.
	(Error_Msg): Process successively contnuation character and warning
	character.
	(Find_Explicit_Sources): Check that all declared sources have been found
	(Check_File): Indicate in hash table Source_Names when a declared source
	is found.
	(Check_File): Set Other_Part when found
	(Find_Explicit_Sources): In multi language mode, check if all exceptions
	to the naming scheme have been found. For Ada, report an error if an
	exception has not been found. Otherwise, disregard the exception.
	(Check_Interfaces): New procedure
	(Add_Source): When Other_Part is defined, set mutual pointers in spec
	and body.
	(Check): In multi-language mode, call Check_Interfaces
	(Process_Sources_In_Multi_Language_Mode): Set In_Interfaces to False
	for an excluded source.
	(Remove_Source): A source replacing a source in the interfaces is also
	in the interfaces.

	* prj-pars.adb: Use function Present

	* prj-part.adb: Use functions Present and No throughout
	(Parse_Single_Project): Set the parent project for child projects
	(Create_Virtual_Extending_Project): Register project with no qualifier
	(Parse_Single_Project): Allow an abstract project to be extend several
	times. Do not allow an abstract project to extend a non abstract
	project.

	* prj-pp.adb: Use functions Present and No throughout
	(Print): Take into account the full associative array attribute
	declarations.

	* prj-proc.adb: Use functions Present and No throughout
	(Expression): Call itself with the same From_Project_Node for the
	default value of an external reference.

	* prj-strt.adb: Use functions Present and No throughout
	(Parse_Variable_Reference): If a variable is specified as a simple name
	and is not found in the current project, look for it also in the
	ancestors of the project.

	* prj-tree.ads, prj-tree.adb (Present): New function
	(No): New function
	Use functions Present and No throughout
	(Parent_Project_Of): New function
	(Set_Parent_Project_Of): New procedure

	* snames.ads, snames.adb:
	Add new standard names Object_Generated and Objects_Linked

2008-05-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Expand_Call): Add guard to ensure that both the parent
	and the derived type are of the same kind.
	(Expand_Call): Generate type conversions for actuals of
	record or array types when the parent and the derived types differ in
	size and/or packed status.

2008-05-20  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Make_DT, Make_Secondary_DT, Make_Tags): Avoid
	generating dispatch tables of locally defined tagged types statically.
	Remove implicit if-statement that is no longer required.
	(Expand_Dispatching_Call): If this is a call to an instance of the
	generic dispatching constructor, the type of the first argument may be
	a subtype of Tag, so always use the base type to recognize this case.

2008-05-20  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb
	(GARLIC_Support.Add_RACW_Read_Attribute): When a zero value is received,
	and the RACW is null-excluding, raise CONSTRAINT_ERROR instead of
	assigning NULL into the result, to avoid a spurious warning.
	(Add_RACW_Features, case Same_Scope): Add assertion that designated type
	is not frozen.
	(Add_Stub_Type): Set entity flag Is_RACW_Stub_Type on generated stub
	type.
	(Build_From_Any_Function, Build_To_Any_Function,
	Build_TypeCode_Function): For a type that has user-specified stream
	attributes, use an opaque sequence of octets as the representation.

2008-05-20  Kevin Pouget  <pouget@adacore.com>

	* exp_smem.ads, exp_smem.adb: Construction of access and assign
	routines has been replaced by an instantiation of
	System.Shared_Storage.Shared_Var_Procs generic package, while expanding
	shared variable declaration.
	Calls to access and assign routines have been replaced by calls to
	Read/Write routines of System.Shared_Storage.Shared_Var_Procs
	instantiated package.

	* rtsfind.ads: RE_Shared_Var_Procs entry has been added in RE_Unit_Table
	It identifies the new generic package added in s-shasto.

	* s-shasto.adb, s-shasto.ads: A new generic package has been added, it
	is instantiated for each shared passive variable. It provides
	supporting procedures called upon each read or write access by the
	expanded code.

	* sem_attr.adb:
	For this runtime unit (always compiled in GNAT mode), we allow
	stream attributes references for limited types for the case where
	shared passive objects are implemented using stream attributes,
	which is the default in GNAT's persistent storage implementation.

2008-05-20  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb
	(Freeze_Enumeration_Type): For a subtype that inherits a foreign
	convention from its base type, do not set the type to that of integer,
	because it may inherit a size clause.
	Warn on a size clause with a size different
	from that of Integer, if the type has convention C.

2008-05-20  Vincent Celier  <celier@adacore.com>

	* gnatname.adb
	(Scan_Args): Rewrite to take into account new switch --and to separate
	arguments into sections.
	(Gnatname): Call Prj.Makr.Initialize, then Prj.Makr.Process for each
	section, then Finalize.

2008-05-20  Tristan Gingold  <gingold@adacore.com>

	* init.c: Enable stack probing on ppc-linux.

	* tracebak.c: Add symbolic traceback for ppc-linux.

	* system-linux-ppc.ads: Enable stack probing on ppc-linux.

2008-05-20  Arnaud Charlet  <charlet@adacore.com>

	* Makefile.in
	(common-tools): New rule, to avoid parallel build failure on gnat tools.
	Reenable parallel builds on this Makefile.

	* Make-lang.in: Update dependencies.

2008-05-20  Robert Dewar  <dewar@adacore.com>

	* opt.ads (Treat_Restrictions_As_Warnings): New switch

	* sem_prag.adb, par-prag.adb, restrict.ads: Implement flag
	Treat_Restrictions_As_Warnings.

	* switch-c.adb: Recognize new switch -gnatr

	* usage.adb: Add line for -gnatr

2008-05-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* par-ch3.adb
	(P_Access_Definition): Change the error message when parsing "access
	all" in Ada 95 mode. The message no longer forces the user to recompile
	in 05 mode only to discover that anonymous access types are not allowed
	to have "all".

2008-05-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* par-ch9.adb
	(P_Protected): Update the error message on missing "-gnat05" switch when
	using interfaces in conjunction with protected types. Remove the
	incorrect error message associated with the presence of "private" after
	a "with".

2008-05-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb: Update comments.
	Improve previous change for PR ada/17985

2008-05-20  Thomas Quinot  <quinot@adacore.com>

	* sem_cat.adb
	(Set_Categorization_From_Scope): Do not set In_Remote_Types unless in
	the visible part of the spec of a remote types unit.
	(Validate_Remote_Access_Object_Type_Declaration):
	New local subprogram Is_Valid_Remote_Object_Type, replaces
	Is_Recursively_Limited_Private.
	(Validate_RACW_Primitives): Enforce E.2.2(14) rules: the types of all
	non-controlling formals (and the return type, even though this is not
	explicit in the standard) must support external streaming.
	(Validate_RCI_Subprogram_Declaration): Enforce E.2.3(14) rules: same
	as above for of RAS types and RCI subprograms. (The return type is not
	checked yet).
	Update comments related to RACWs designating limited interfaces per
	ARG ruling on AI05-060.

	* sem_util.ads, sem_util.adb
	(Is_Remote_Access_To_Class_Wide_Type): Only rely on Is_Remote_Types and
	Is_Remote_Call_Interface to identify RACW types in a stable and
	consistent way. We used to rely in this predicate on the privateness of
	the designated type and its ancestors, but depending on the currently
	visible private parts, this caused false negatives. We now uniformly
	rely on checks made at the point where the RACW type is declared.
	(Inspect_Deferred_Constant_Completion): Moved from Sem_Ch7.

2008-05-20  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb
	(Analyze_Object_Declaration): Fix over-conservative condition
	restricting use of predefined assignment with tagged types that have
	convention CPP.
	(Analyze_Object_Declaration): Relax the check regarding deferred
	constants declared in scopes other than packages since they can be
	completed with pragma Import.
	Add missing escaping of all-caps word 'CPP' in error messages.
	(Build_Discriminated_Subtype): Do not inherit representation clauses
	from parent type if subtype already carries them, because they are
	inherited earlier during derivation and already include those that may
	come from a partial view.

	* sem_ch9.adb, sem_ch5.adb, sem_ch6.adb (Analyze_Subprogram_Body):
	Check the declarations of a subprogram body for proper deferred
	constant completion.

	* sem_ch7.ads, sem_ch7.adb
	(Inspect_Deferred_Constant_Completion): Moved to sem_util.

2008-05-20  Ed Schonberg  <schonberg@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb
	(Try_Indexed_Call): Handle properly a construct of the form F(S) where
	F is a parameterless function that returns an array, and S is a subtype
	mark.
	(Analyze_Call): Insert dereference when the prefix is a parameterless
	function that returns an access to subprogram and the call has
	parameters.
	Reject a non-overloaded call whose name resolves to denote
	a primitive operation of the stub type generated to support a remote
	access-to-class-wide type.

2008-05-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb
	(Note_Redundant_Use): Diagnose a redundant use within a subprogram body
	when there is a use clause for the same entity in the context.
	(Analyze_Subprogram_Renaming): A renaming_as_body is legal if it is
	created for a stream attribute of an abstract type or interface type.

2008-05-20  Thomas Quinot  <quinot@adacore.com>

	* sem_dist.ads, sem_dist.adb (Is_RACW_Stub_Type_Operation): New
	subprogram.

	* sem_type.adb
	(Add_One_Interp): Ignore any interpretation that is a primitive
	operation of an RACW stub type (these primitives are only executed
	through dispatching, never through static calls).
	(Collect_Interps): When only one interpretation has been found, set N's
	Entity and Etype to that interpretation, otherwise Entity and Etype may
	still refer to an interpretation that was ignored by Add_One_Interp,
	in which case would end up with being marked as not overloaded but with
	an Entity attribute not pointing to its (unique) correct interpretation.

2008-05-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_eval.adb
	(Eval_Slice): Warn when a slice whose discrete range is a subtype name
	denotes the whole array of its prefix.

2008-05-20  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Op_Not): Warn on double negation

2008-05-20  Ed Schonberg  <schonberg@adacore.com>

	* sprint.adb
	(Print_Itype): Do not modify the sloc of the component type of a
	(packed) array itype, because it is an unrelated type whose source
	location is independent of the point of creation of the itype itself.

2008-05-20  Thomas Quinot  <quinot@adacore.com>

	* uintp.adb, urealp.adb: Replace calls to Increment_Last + Set with
	Append.

2008-05-20  Robert Dewar  <dewar@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* vms_data.ads: Add entry for -gnatr
	Put GNAT SYNC section in proper alpha order
	Add VMS qualifier /DISPLAY_PROGRESS equivalent to gnatmake switch -d

	* gnat_ugn.texi: Add documentation for new gnatname switch --and
	Update the style checks section
	Add documentation of -gnatr
	Add to the "Adding the Results of Compiler Checks to gnatcheck Output"
	subsection the explanation how compiler checks should be disabled for
	gnatcheck.
	Update the list of Ada 95 reserved words used by in the project language
	Add documentation for project qualifiers.
	Document that abstract projects may be extended by different projects in
	the same project tree.
	Add documentation for gnatmake switch -d

	* ug_words: Add -gnatyy VMS equivalence string.
	Add entry for -gnatr

2008-05-20  Bob Duff  <duff@adacore.com>

	* a-rttiev.adb
	(Set_Handler): Remove code from both of these that implements
	RM-D.15(15/2), because it causes a race condition and potential
	deadlock.
	(Process_Queued_Events): Add comment explaining "exception when others
	=> null". Add clarifying ".all", even though implicit .all is legal
	here.

2008-05-20  Arnaud Charlet  <charlet@adacore.com>

	* s-winext.ads: Replace representation clause by pragma Pack. Gives
	equivalent representation, but has the advantage of allowing
	compilation of this file under 64 bits platforms.

	* s-os_lib.adb (Normalize_Pathname): Mark Cur_Dir constant.

	* s-osinte-irix.ads: (Alternate_Stack_Size): Add dummy declaration.

	* adaint.c:
	Don't define dummy implementation of convert_addresses on ppc-linux.

2008-05-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch7.adb
	(Expand_Ctrl_Function_Call): Do not attach result to finalization list
	if expression is aggregate component.

2008-05-20  Robert Dewar  <dewar@adacore.com>

	* g-byorma.adb, gnatlink.adb, prepcomp.adb, sinfo.ads,
	sem_ch12.adb: Update comments. Minor reformatting.

	* exp_ch2.adb: Typo

	* s-unstyp.ads: Fixed some typos in comments.

2008-05-20  Arnaud Charlet  <charlet@adacore.com>

	* s-taspri-vxworks.ads (Task_Address, Task_Address_Size): New
	type/constant.

	* g-socthi-vxworks.ads: Update to latest socket changes.

	* a-caldel-vms.adb: Resync with a-caldel spec.

	* exp_ch9.ads, sem_ch8.ads, inline.adb: Minor reformatting.
	Update comments.

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

	* trans.c (gnat_to_gnu) <N_Validate_Unchecked_Conversion>: Account
	for dummy types pointed to by the converted pointer types.

2008-05-15  Eric Botcazou  <ebotcazou@adacore.com>

	* trans.c (add_decl_expr): At toplevel, mark the TYPE_ADA_SIZE field
	of records and unions.
	(gnat_to_gnu) <N_Validate_Unchecked_Conversion>: Fix formatting.

2008-05-14  Samuel Tardieu  <sam@rfc1149.net>
	    Robert Dewar <dewar@adacore.com>

	* sem_attr.adb (Analyze_Attribute, Attribute_Old case): Add
	restrictions to the prefix of 'Old.
	* sem_util.ads, sem_util.adb (In_Parameter_Specification): New.
	* gnat_rm.texi ('Old): Note that 'Old cannot be applied to local
	variables.

2008-05-13  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/24880
	PR ada/26635
	* utils.c (convert) <INTEGER_TYPE>: When converting an additive
	expression to an integral type with lower precision, use NOP_EXPR
	directly in a couple of special cases.

2008-05-12  Samuel Tardieu  <sam@rfc1149.net>
	    Ed Schonberg <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): Accept statically matching
	constraint expressions.

2008-05-12  Tomas Bily  <tbily@suse.cz>

	* utils2.c (known_alignment, contains_save_expr_p)
	(gnat_mark_addressable): Use CASE_CONVERT.
	* decl.c (annotate_value): Likewise.
	* trans.c (maybe_stabilize_reference): Likewise.
	* utils2.c (build_binary_op): Use CONVERT_EXPR_P.
	* utils.c (rest_of_record_type_compilation): Likewise.
	* trans.c (protect_multiple_eval, Attribute_to_gnu)
	(protect_multiple_eval): Likewise.

2008-05-08  Andreas Schwab  <schwab@suse.de>

	* utils.c (handle_pure_attribute, init_gigi_decls): Rename
	DECL_IS_PURE to DECL_PURE_P.

2008-05-05  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (maybe_pad_type): Add ??? comment.

2008-05-03  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (components_to_record): Zero the alignment of the qualified
	union built for the variant part upon creating it.

2008-05-03  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (maybe_pad_type): Try to get a form of the type with integral
	mode even if the alignment is not a factor of the original size.  But
	make sure to create the inner field with the original size.  Reorder.
	* trans.c (addressable_p) <COMPONENT_REF>: Treat the field of a padding
	record as always addressable.
	* utils.c (convert): Deal specially with conversions between original
	and packable versions of a record type.
	* utils2.c (build_binary_op) <MODIFY_EXPR>: Be more restrictive when
	recognizing an assignment between padded objects.

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

	* decl.c (make_packable_type): Resize the last component to its RM size
	only if it is of an aggregate type.
	* trans.c (call_to_gnu): Fix nit in comment.
	(gnat_to_gnu): Likewise.

2008-04-30  Samuel Tardieu  <sam@rfc1149.net>

	* Makefile.in: Adapt sh4-linux target.

2008-04-29  Ed Schonberg  <schonberg@adacore.com>

	PR ada/35792
	* sem_ch3.adb (Find_Type_Name): Refuse completion of an incomplete
	tagged type by an untagged protected or task type.

2008-04-28  Eric Botcazou  <ebotcazou@adacore.com>
	    Tristan Gingold  <gingold@adacore.com>

	PR ada/36007
	* decl.c (gnat_to_gnu_entity) <object>: Do not promote alignment
	of aliased objects with an unconstrained nominal subtype.
	Cap the promotion to the effective alignment of the word mode.

2008-04-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Make-lang.in (ada.tags, check-acats, ada/treeprs.ads)
	(ada/einfo.h, ada/sinfo.h, ada/nmake.adb, ada/nmake.ads):
	Use '&&' instead of ';'.

2008-04-24  Olivier Hainque  <hainque@adacore.com>

	* trans.c (Attribute_to_gnu) <case Attr_Length>: Length computation
	doesn't require signed arithmetic anymore.

2008-04-23  Paolo Bonzini  <bonzini@gnu.org>

	* trans.c (Attribute_to_gnu): Don't set TREE_INVARIANT.
	(call_to_gnu): Don't set TREE_INVARIANT.
	* utils2.c (gnat_build_constructor): Don't set TREE_INVARIANT.

2008-04-22  Joel Sherrill <joel.sherrill@oarcorp.com>

	* s-osinte-rtems.adb: Add sigalstack function.
	* s-osinte-rtems.ads: Add SO_ONSTACK and sigalstack
	function. Add Alternate_Stack and Alternate_Stack_Size.
	Add missing process_shared field to pthread_condattr_t
	and change ss_low_priority to int from timespec.

2008-04-22  Samuel Tardieu  <sam@rfc1149.net>

	* i-forbla.adb: Link against -llapack and -lblas by default
	instead of the private -lgnalasup.

2008-04-21  Olivier Hainque  <hainque@adacore.com>

	Access to most C builtins from Ada
	* utils.c: #include "langhooks.h" and define GCC_DIAG_STYLE.
	(handle_pure_attribute, handle_novops_attribute,
	handle_nonnull_attribute, handle_sentinel_attribute,
	handle_noreturn_attribute, handle_malloc_attribute,
	handle_type_generic_attribute): New attribute handlers, from C fe.
	(gnat_internal_attribute_table): Map the new handlers.
	(gnat_init_decl_processing): Move call to gnat_install_builtins to ...
	(init_gigi_decls): ... here.
	(handle_const_attribute, handle_nothrow_attribute, builtin_decl_for):
	Move to a section dedicated to builtins processing.
	(build_void_list_node, builtin_type_for_size): New functions.
	(def_fn_type, get_nonnull_operand): Likewise.
	(install_builtin_elementary_type, install_builtin_function_types,
	install_builtin_attributes): Likewise.
	(fake_attribute_handler): Fake handler for attributes we don't
	support in Ada.
	(def_builtin_1): New function, worker for DEF_BUILTIN.
	(install_builtin_functions): New function.
	(gnat_install_builtins): Move to the builtins processing section.
	Now calling the newly introduced installers.

2008-04-20  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <object>: Also promote the alignment of
	constant objects, but not exceptions.
	* trans.c (add_decl_expr): Use gnat_types_compatible_p for type
	compatibility test.
	* utils.c (create_var_decl_1): Likewise.
	* utils2.c (build_binary_op) <MODIFY_EXPR>: Also use the padded view of
	the type when copying to padded object and the source is a constructor.

2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <object>: When trying to promote the
	alignment, reset it to zero if it would end up not being greater
	than that of the type.

2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (maybe_pad_type): Only generate the XVS parallel type if
	the padded type has a variable size.

2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Use the return by
	target pointer mechanism as soon as the size is not constant.

2008-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gigi.h (create_var_decl_1): Declare.
	(create_var_decl): Turn into a macro invoking create_var_decl_1.
	(create_true_var_decl): Likewise.
	* utils.c (create_var_decl_1): Make global and reorder parameters.
	(create_var_decl): Delete.
	(create_true_var_decl): Likewise.

2008-04-17  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <object>: Promote the alignment of
	objects by default.
	* fe.h (Debug_Flag_Dot_A): Delete.
	* debug.adb (-gnatd.a): Update documentation.

2008-04-17  Samuel Tardieu  <sam@rfc1149.net>

	* g-socket.ads, g-socket.adb (Get_Address): Make Stream a
	"not null" parameter.

2008-04-17  Samuel Tardieu  <sam@rfc1149.net>

	* g-socket.adb: Add a message "IPv6 not supported" to the
	Socket_Error exception.

2008-04-16  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/29015
	* sem_ch12.adb (Instantiate_Type): Check whether the full view of
	the type is known instead of the underlying type.

2008-04-15  Ed Schonberg  <schonberg@adacore.com>

	PR ada/22387
	* exp_ch5.adb (Expand_Assign_Record): Within an initialization
	procedure for a derived type retrieve the discriminant values from
	the parent using the corresponding discriminant.

2008-04-15  Samuel Tardieu  <sam@rfc1149.net>
	    Gary Dismukes  <dismukes@adacore.com>

	PR ada/28733
	* sem_ch8.adb (Analyze_Use_Package): Do not allow "use" of something
	which is not an entity (and hence not a package).
	(End_Use_Package): Ditto.

2008-04-15  Ed Schonberg  <schonberg@adacore.com>

	PR ada/16086
	* sem_ch12.adb (Analyze_Formal_Subprogram): The default can be any
	protected operation that matches the signature, not only an entry, a
	regular subprogram or a literal.

2008-04-15  Eric Botcazou  <ebotcazou@adacore.com>

	* ada-tree.h (DECL_BY_COMPONENT_PTR_P): Use DECL_LANG_FLAG_3.
	* decl.c (gnat_to_gnu_entity) <object>: Call maybe_pad_type only
	if a size or alignment is specified.  Do not take into account
	alignment promotions for the computation of the object's size.
	<type>: Call maybe_pad_type only if a size or alignment is specified.
	(maybe_pad_type): Really reuse the RM_Size of the original type if
	requested.
	* trans.c (Attribute_to_gnu): Fix a couple of nits.
	* utils2.c (build_binary_op) <MODIFY_EXPR>: Merge related conditional
	statements.  Use the padded view of the type when copying between
	padded objects of the same underlying type.

2008-04-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* vms_data.ads: Fix typo in constant.
	* gen-soccon.c: Fix typo in error string.
	* gnat_rm.texi (Pragma Optimize_Alignment, Pragma Postcondition):
	Fix typos.
	* a-calcon.ads, a-calend-vms.adb, a-calend.adb, a-crdlli.ads,
	bcheck.adb, checks.adb, einfo.ads, errout.adb, erroutc.adb,
	erroutc.ads, exp_attr.adb, exp_ch11.adb, exp_ch2.adb,
	exp_ch5.adb, exp_ch9.adb, exp_ch9.ads, exp_pakd.adb,
	exp_util.adb, fmap.adb, g-soccon-linux-mips.ads,
	g-soccon-rtems.ads, g-timsta.adb, g-timsta.ads, lib-writ.ads,
	mlib-tgt-specific-linux.adb, mlib-tgt-specific-tru64.adb,
	s-interr-vxworks.adb, s-interr.adb, s-osinte-lynxos.ads,
	s-rident.ads, s-taprop-solaris.adb, s-tassta.adb, s-win32.ads,
	sem_aggr.adb, sem_attr.ads, sem_ch10.adb, sem_ch13.ads,
	sem_ch3.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_ch9.adb,
	sem_prag.ads, sem_res.adb, sem_util.adb, sem_util.ads,
	sinfo.ads: Fix typos in comments.

2008-04-14  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma, Linker_Section case): Extend error
	to every non-object and change error message.

2008-04-14  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads, sem_util.adb (In_Subprogram): Remove.
	* sem_attr.adb (Anayze_Attribute): Check for Current_Subprogram
	directly.

2008-04-14  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/18680
	* sem_prag.adb (Analyze_Pragma, Linker_Section case): Refuse to
	apply pragma Linker_Section on type.

2008-04-14  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/16098
	* sem_prag.adb (Error_Pragma_Ref): New.
	(Process_Convention): Specialized message for non-local
	subprogram renaming. Detect the problem in homonyms as well.

2008-04-14  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/15915
	* sem_util.ads, sem_util.adb (Denotes_Variable): New function.
	* sem_ch12.adb (Instantiate_Object): Use it.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Ensure that
	storage pool denotes a variable as per RM 13.11(15).

2008-04-14  Samuel Tardieu  <sam@rfc1149.net>

	* sem_util.ads, sem_util.adb (In_Subprogram): New function.
	* sem_attr.adb (Analyze_Attribute, Attribute_Old case): Use it.

2008-04-14  Rolf Ebert  <rolf.ebert.gcc@gmx.de>

	PR ada/20822
	* xgnatugn.adb (Put_Line): New procedure, ensuring Unix
	line endings even on non-Unix platforms.

2008-04-14  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/35050
	* xref_lib.adb (Parse_Identifier_Info): Correctly parse and ignore the
	renaming information.

2008-04-13  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/17985
	* sem_aggr.adb (Valid_Ancestor_Type): A type is not an ancestor of
	itself.

2008-04-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* sfn_scan.adb, sfn_scan.ads, sinfo.ads,
	sinput-d.ads, sinput-l.adb, sinput-l.ads, sinput.ads,
	snames.ads, sprint.adb, stand.ads, stringt.ads,
	styleg.adb, styleg.ads, stylesw.adb, stylesw.ads,
	switch.ads, sysdep.c, table.adb, table.ads,
	targparm.ads, tb-gcc.c, tbuild.ads, tracebak.c,
	trans.c, tree_io.adb, treepr.adb, types.adb, types.ads,
	uintp.adb, uintp.ads, utils.c, utils2.c, validsw.ads,
	vms_conv.adb, vms_conv.ads, vms_data.ads, widechar.adb,
	widechar.ads, xeinfo.adb, xgnatugn.adb, xr_tabls.adb,
	xr_tabls.ads, xref_lib.adb, xref_lib.ads, xsinfo.adb:
	Fix comment typos.

	* sem_ch10.adb, sem_ch10.ads,
	sem_ch12.adb, sem_ch12.ads, sem_ch13.adb, sem_ch13.ads,
	sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb,
	sem_ch6.ads, sem_ch8.adb, sem_ch8.ads, sem_ch9.adb,
	sem_elab.adb, sem_elab.ads, sem_elim.ads, sem_eval.adb,
	sem_eval.ads, sem_intr.adb, sem_mech.adb, sem_mech.ads,
	sem_prag.adb, sem_prag.ads, sem_res.adb, sem_res.ads,
	sem_type.adb, sem_util.adb, sem_util.ads, sem_warn.adb,
	sem_warn.ads: Fix comment typos.

	* s-secsta.adb, s-sequio.ads, s-shasto.ads,
	s-soflin.ads, s-stalib.ads, s-stausa.adb,
	s-stausa.ads, s-strxdr.adb, s-taenca.adb, s-taenca.ads,
	s-taprob.adb, s-taprop-hpux-dce.adb, s-taprop-irix.adb,
	s-taprop-linux.adb, s-taprop-mingw.adb, s-taprop-posix.adb,
	s-taprop-solaris.adb, s-taprop-tru64.adb, s-taprop-vms.adb,
	s-taprop-vxworks.adb, s-taprop.ads, s-tarest.adb,
	s-tarest.ads, s-tasini.adb, s-tasini.ads, s-taskin.ads,
	s-tasque.ads, s-tassta.adb, s-tassta.ads, s-tasuti.ads,
	s-tpoben.adb, s-tpoben.ads, s-tpobop.adb,
	s-tpopsp-posix.adb, s-tpopsp-rtems.adb, s-tposen.adb,
	s-tposen.ads, s-traceb-hpux.adb, s-traces.ads,
	s-trafor-default.ads, s-unstyp.ads, s-utf_32.ads,
	s-vaflop.adb, s-vaflop.ads, s-valrea.adb, s-valuti.adb,
	s-wchstw.ads, s-wchwts.adb, s-wchwts.ads, scans.ads,
	scn.adb, scng.adb, seh_init.c, sem.ads, sem_aggr.adb,
	sem_attr.adb, sem_attr.ads, sem_case.adb, sem_case.ads,
	sem_cat.adb, sem_cat.ads: Fix comment typos.

2008-04-12  Joel Sherrill  <joel@oarcorp.com>

	PR ada/35825
	* g-soccon-rtems.ads: Add IP_PKTINFO as unsupported.

2008-04-12  Arnaud Charlet  <charlet@adacore.com>

	* s-linux-hppa.ads: Fix syntax errors.

2008-04-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* gnat_ugn.texi: Fix typos.
	* raise-gcc.c, repinfo.adb, repinfo.ads, restrict.adb,
	restrict.ads, rtsfind.adb, rtsfind.ads, s-arit64.ads,
	s-asthan-vms-alpha.adb, s-auxdec.ads, s-casuti.ads,
	s-fatflt.ads, s-fatgen.adb, s-fatlfl.ads,
	s-fatllf.ads, s-fatsfl.ads, s-filofl.ads,
	s-finimp.adb, s-finroo.ads, s-fishfl.ads,
	s-fvadfl.ads, s-fvaffl.ads, s-fvagfl.ads,
	s-hibaen.ads, s-htable.ads, s-imgcha.adb,
	s-imgenu.ads, s-imgint.adb, s-imgrea.adb,
	s-inmaop-dummy.adb, s-inmaop.ads, s-interr-vms.adb,
	s-interr-vxworks.adb, s-interr.adb, s-interr.ads,
	s-intman-vxworks.ads, s-intman.ads, s-mastop-irix.adb,
	s-os_lib.adb, s-os_lib.ads, s-osinte-aix.ads,
	s-osinte-darwin.ads, s-osinte-freebsd.ads,
	s-osinte-hpux.ads, s-osinte-lynxos-3.adb,
	s-osinte-lynxos-3.ads, s-osinte-lynxos.ads,
	s-osinte-rtems.ads, s-osinte-solaris-posix.ads,
	s-osprim-mingw.adb, s-osprim-vms.adb, s-parame-ae653.ads,
	s-parame-hpux.ads, s-parame-vms-alpha.ads,
	s-parame-vms-ia64.ads, s-parame-vms-restrict.ads,
	s-parame-vxworks.ads, s-parame.ads, s-parint.adb,
	s-parint.ads, s-poosiz.adb, s-proinf-irix-athread.ads,
	s-proinf.ads, s-regexp.adb, s-regpat.adb, s-regpat.ads,
	s-rident.ads: Fix comment typos.

2008-04-09  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/28305
	* sem_ch6.adb (Build_Body_To_Inline): Do not save and restore
	environment if generic instance is a top-level one.

2008-04-09  Doug Rupp  <rupp@adacore.com>

	* decl.c (validate_size): Set minimum size for fat pointers same as
	access types. Code clean ups.

	* gmem.c (xstrdup32): New macro for 32bit dup on VMS, noop otherwise
	(__gnat_gmem_a2l_initialize): Dup exename into 32 bit memory on VMS

	* s-auxdec-vms_64.ads, s-auxdec.ads (Short_Address_Size): New constant

	* s-crtl.ads (malloc32) New function, alias for malloc
	(realloc32) New function, alias for realloc

	* socket.c (__gnat_new_socket_set): Malloc fd_set in 32 bits on VMS

	* utils2.c (build_call_alloc_dealloc): Return call to short malloc if
	allocator size is 32 and default pointer size is 64.
	(find_common_type): Document assumption on t1/t2 vs lhs/rhs. Force use of
	lhs type if smaller, whatever the modes.

	* gigi.h (malloc32_decl): New macro definition

	* utils.c (init_gigi_decls): New malloc32_decl
	Various code clean ups.

	* s-asthan-vms-alpha.adb (Process_AST.To_Address): Unchecked convert to
	Task_Address vice System.Address.

	* s-taspri-vms.ads: Import System.Aux_DEC
	(Task_Address): New subtype of System.Aux_DEC.Short_Address
	(Task_Address_Size): New constant size of System.Aux_DEC.Short_Address

	* s-asthan-vms-alpha.adb (Process_AST.To_Address): Unchecked convert to
	Task_Address vice System.Address.

	* s-inmaop-vms.adb: Import System.Task_Primitives
	(To_Address): Unchecked convert to Task_Address vice System.Address

	* s-taprop-vms.adb (Timed_Delay): Always set the timer even if delay
	expires now.
	(To_Task_ID) Unchecked convert from Task_Adddress vice System.Address
	(To_Address) Unchecked convert to Task_Address vice System.Address

	* s-tpopde-vms.adb: Remove unnecessary warning pragmas

	* g-socthi-vms.ads: Add 32bit size clauses on socket access types.

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

	* gigi.h (standard_datatypes): Add ADT_fdesc_type and ADT_null_fdesc.
	(fdesc_type_node): Define.
	(null_fdesc_node): Likewise.
	* decl.c (gnat_to_gnu_entity) <E_Access_Subprogram_Type>: If the target
	uses descriptors for vtables and the type comes from a dispatch table,
	return the descriptor type.
	* trans.c (Attribute_to_gnu) <Attr_Unrestricted_Access>: If the target
	uses descriptors for vtables and the type comes from a dispatch table,
	build a descriptor in the static case and copy the existing one in the
	non-static case.
	(gnat_to_gnu) <N_Null>: If the target uses descriptors for vtables and
	the type is a pointer-to-subprogram coming from a dispatch table,
	return the null descriptor.
	<N_Unchecked_Type_Conversion>: If the target uses descriptors for
	vtables, the source type is the descriptor type and the target type
	is a pointer type, first build the pointer.
	* utils.c (init_gigi_decls): If the target uses descriptors for vtables
	build the descriptor type and the null descriptor.

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

	* decl.c (prepend_attributes): Fix typo.
	* trans.c (Pragma_to_gnu): Likewise.
	* utils.c (gnat_genericize): Likewise.

2008-04-08  Eric Botcazou  <ebotcazou@adacore.com>
	    Richard Kenner  <kenner@adacore.com>

	* ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Only set it when bit-packed.
	* decl.c (gnat_to_gnu_entity): Adjust for above change.
	<E_Record_Type>: Try to get a better form of the component for
	packing, even if it has an integral mode.
	<E_Record_Subtype>: Likewise.
	* trans.c (gnat_to_gnu): Do not require BLKmode for the special
	exception suppressing the final conversion between record types.

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

	* decl.c (gnat_to_gnu_entity) <object>: If -gnatd.a and not optimizing
	alignment for space, promote the alignment of non-scalar variables with
	no size and alignment.
	* gigi.h (gnat_types_compatible_p): Declare.
	* misc.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Set to above predicate.
	* trans.c (gnat_to_gnu): Revert revision 129339 change.  Minor cleanup.
	* utils.c (gnat_types_compatible_p) : New predicate.
	(convert): Use it throughout to test for cases where a mere view
	conversion is sufficient.
	* utils2.c (build_binary_op): Minor tweaks.
	(build_unary_op): Likewise.

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

	* decl.c (adjust_packed): Expand comment.

2008-04-08  Arnaud Charlet  <charlet@adacore.com>

	* s-tasuti.ads: Use Task_Address instead of System.Address.

	* makeutl.adb (Path_Or_File_Name): New function

	* nlists.ads, itypes.ads: Update comments.

	* s-crtl.ads (malloc32, realloc32): New functions.

	* s-auxdec.ads (Short_Address_Size): New constant.

	* a-taside.adb, s-tasdeb.adb: Use Task_Address.

	* s-ststop.ads, s-ststop.adb: New file.

	* exp_tss.ads, s-taprop-lynxos.adb: Update comments.
	Minor reformatting.

2008-04-08  Pascal Obry  <obry@adacore.com>

	* g-sercom.ads, g-sercom.adb (Data_Rate): Add B115200.
	(Stop_Bits_Number): New type.
	(Parity_Check): Likewise.
	(Set): Add parameter to set the number of stop bits and
	the parity. Parameter timeout is now a duration instead
	of a plain integer.

	* g-sercom-linux.adb:
	Implement the stop bits and parity support for GNU/Linux.
	Fix handling of timeout, it must be given in tenth of seconds.

	* g-sercom-mingw.adb:
	Implement the stop bits and parity support for Windows.
	Use new s-win32.ads unit instead of declaring Win32 services
	directly into this body.
	Update handling of timeout as now a duration.

	* s-win32.ads, s-winext.ads: New files.

2008-04-08  Eric Botcazou  <ebotcazou@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-linux-alpha.ads, s-osinte-linux-hppa.ads: Removed.

	s-taspri-posix-noaltstack.ads, s-linux.ads, s-linux-alpha.ads,
	s-linux-hppa.ads: New files. Disable alternate stack on ia64-hpux.

	* s-osinte-lynxos-3.ads,
	(Alternate_Stack): Remove when not needed. Simplify declaration
	otherwise.
	(Alternate_Stack_Size): New constant.

	s-osinte-mingw.ads, s-taprop-mingw.adb: Code clean up: avoid use of
	'Unrestricted_Access.

	* s-osinte-hpux.ads, s-osinte-solaris-posix.ads, s-osinte-aix.ads,
	s-osinte-lynxos.ads, s-osinte-freebsd.ads s-osinte-darwin.ads,
	s-osinte-tru64.ads, s-osinte-irix.ads, s-osinte-linux.ads,
	s-osinte-solaris.ads, s-osinte-vms.ads
	(SA_ONSTACK): New constant.
	(stack_t): New record type.
	(sigaltstack): New imported function.
	(Alternate_Stack): New imported variable.
	(Alternate_Stack_Size): New constant.

	* system-linux-x86_64.ads: (Stack_Check_Probes): Set to True.

	* s-taspri-lynxos.ads, s-taspri-solaris.ads, s-taspri-tru64.ads,
	s-taspri-hpux-dce.ads, s-taspri-dummy.ads, s-taspri-posix.ads,
	s-taspri-vms.ads (Task_Address): New subtype of System.Address
	(Task_Address_Size): New constant size of System.Address
	(Alternate_Stack_Size): New constant.

	* s-taprop-posix.adb, s-taprop-linux.adb (Get_Stack_Attributes): Delete.
	(Enter_Task): Do not notify stack to System.Stack_Checking.Operations.
	Establish the alternate stack if the platform makes use of n alternate
	signal stack for stack overflows.
	(Create_Task): Take into account the alternate stack in the stack size.
	(Initialize): Save the address of the alternate stack into the ATCB for
	the environment task.
	(Create_Task): Fix assertions for NPTL library (vs old LinuxThreads).

	* s-parame.adb (Minimum_Stack_Size): Increase value to 16K

	* system-linux-x86.ads: (Stack_Check_Probes): Set to True.

	* s-intman-posix.adb:
	(Initialize): Set SA_ONSTACK for SIGSEGV if the platform makes use of an
	alternate signal stack for stack overflows.

	* init.c (__gnat_adjust_context_for_raise, Linux version): On i386 and
	x86-64, adjust the saved value of the stack pointer if the signal was
	raised by a stack checking probe.
	(HP-UX section): Use global __gnat_alternate_stack as signal handler
	stack and only for SIGSEGV.
	(Linux section): Likewise on x86 and x86-64.
	[VxWorks section]
	(__gnat_map_signal): Now static.
	(__gnat_error_handler): Not static any more.
	(__gnat_adjust_context_for_raise): New function. Signal context
	adjustment for PPC && !VTHREADS && !RTP, as required by the zcx
	propagation circuitry.
	(__gnat_error_handler): Second argument of a sigaction handler is a
	pointer, not an int, and is unused.
	Adjust signal context before mapping to exception.
	Install signal handlers for LynxOS case.

	* s-taskin.ads (Common_ATCB): New field Task_Alternate_Stack.
	(Task_Id): Set size to Task_Address_Size
	(To_Task_id): Unchecked convert from Task_Address vice System.Address
	(To_Address): Unchecked convert to Task_Address vice System.Address

	* s-tassta.adb (Task_Wrapper): Define the alternate stack and save its
	address into the ATCB if the platform makes use of an alternate signal
	stack for stack overflows.
	(Free_Task): Add call to Finalize_Attributes_Link.
	Add argument Relative_Deadline to pass the value specified for
	the task. This is not yet used for any target.

	* s-tassta.ads (Create_Task): Add argument Relative_Deadline to pass
	the value specified for the task.

2008-04-08  Arnaud Charlet  <charlet@adacore.com>

	(s-osinte-vxworks6.ads): Removed, merged with s-osinte-vxworks.ads/.adb
	(s-vxwext.ads, s-vxwext-kernel.ads, s-vxwext-rtp.ads,
	s-vxwext-rtp.adb): New files.

	* s-taprop-vxworks.adb, s-osinte-vxworks.ads, s-osinte-vxworks.adb:
	Minor updates to accomodate changes above.

2008-04-08  Pascal Obry  <obry@adacore.com>

	* a-exetim-mingw.adb, s-gloloc-mingw.adb, s-taprop-mingw.adb,
	s-tasinf-mingw.ad{s,b}, s-taspri-mingw.ads:
	Use new s-win32.ads unit instead of declaration
	from s-osinte-mingw.ads.

	* s-osinte-mingw.ads:
	Move all non tasking based interface to s-win32.ads.

	* s-osprim-mingw.adb:
	Remove duplicated declarations and use s-win32.ads
	unit instead.

2008-04-08  Vincent Celier  <celier@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* mlib-tgt-aix.adb, mlib-tgt-darwin.adb, mlib-tgt-hpux.adb,
	mlib-tgt-irix.adb, mlib-tgt-linux.adb, mlib-tgt-lynxos.adb,
	mlib-tgt-solaris.adb, mlib-tgt-tru64.adb, mlib-tgt-vms.adb,
	mlib-tgt-vms.ads, mlib-tgt-vms-alpha.adb, mlib-tgt-vms-ia64.adb,
	mlib-tgt-vxworks.adb, mlib-tgt-mingw.adb: Renamed into...

	* mlib-tgt-specific-aix.adb, mlib-tgt-specific-darwin.adb,
	mlib-tgt-specific-hpux.adb, mlib-tgt-specific-irix.adb,
	mlib-tgt-specific-linux.adb, mlib-tgt-specific-lynxos.adb,
	mlib-tgt-specific-solaris.adb, mlib-tgt-specific-tru64.adb,
	mlib-tgt-vms_common.adb, mlib-tgt-vms_common.ads,
	mlib-tgt-specific-vms-alpha.adb, mlib-tgt-specific-vms-ia64.adb,
	mlib-tgt-specific-vxworks.adb, mlib-tgt-specific-xi.adb,
	mlib-tgt-specific-mingw.adb: New names.

	* Makefile.in:
	On VxWorks platforms use s-stchop-limit.ads for s-stchop.ads
	Get rid of gnatbl.
	(EXTRA_GNATRTL_NONTASKING_OBJS): Add s-win32.o
	Files mlib-tgt-*.adb have been renamed mlib-tgt-specific-*.adb
	Minor updates for VMS

	* gnatbl.c: Removed.

2008-04-08  Thomas Quinot  <quinot@adacore.com>

	* g-expect-vms.adb, a-textio.adb, a-witeio.adb, exp_dbug.adb,
	g-expect.adb, g-locfil.adb, gnatchop.adb, gnatdll.adb, gnatlbr.adb,
	gnatmem.adb, g-regist.adb, i-vxwork.ads, mlib-utl.adb, i-vxwork-x86.ads,
	a-ztexio.adb, g-enblsp-vms-alpha.adb, g-enblsp-vms-ia64.adb,
	s-os_lib.adb, s-regpat.adb, s-regpat.ads: Fix incorrect casing of
	ASCII.NUL throughout.

2008-04-08  Arnaud Charlet  <charlet@adacore.com>
	    Matthew Heaney  <heaney@adacore.com>

	* a-cgcaso.adb, a-convec.adb: (Swap, Sift): Avoid use of complex
	renaming.

	* a-cgaaso.ads, a-secain.ads, a-slcain.ads, a-shcain.ads,
	a-crdlli.ads, a-coormu.ads, a-ciormu.ads: modified header to conform
	to convention for non-RM specs.
	Add descriptive header, and documented each operation
	document each operation

2008-04-08  Robert Dewar  <dewar@adacore.com>
	    Bob Duff  <duff@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* alloc.ads: Add entries for Obsolescent_Warnings table

	* einfo.ads, einfo.adb: Minor reformatting.
	(Is_Discriminal): New subprogram.
	(Is_Prival): New subprogram.
	(Is_Protected_Component): New subprogram.
	(Is_Protected_Private): Removed.
	(Object_Ref, Set_Object_Ref): Removed.
	(Prival, Set_Prival): Change assertion.
	(Privals_Chain, Set_Privals_Chain): Removed.
	(Prival_Link, Set_Prival_Link): New subprogram.
	(Protected_Operation, Set_Protected_Operation): Removed.
	(Protection_Object, Set_Protection_Object): New subprogram.
	(Write_Field17_Name): Remove case for Object_Ref.
	(Write_Field20_Name): Add case for Prival_Link.
	(Write_Field22_Name): Remove case for Protected_Operation,
	Privals_Chain.
	Add case for Protection_Object.
	(Can_Use_Internal_Rep): Make this into a [base type only] attribute,
	so clients
	(Overlays_Constant): New flag
	(Is_Constant_Object): New predicate
	(Is_Standard_Character_Type): New predicate
	(Optimize_Alignment_Space): New flag
	(Optimize_Alignment_Time): New flag
	(Has_Postconditions): New flag
	(Obsolescent_Warrning): Field removed
	(Spec_PPC_List): New field
	(Relative_Deadline_Variable, Set_Relative_Deadline_Variable): Add
	subprograms to get and set the relative deadline associated to a task.

	* exp_attr.adb (May_Be_External_Call): Account for the case where the
	Access attribute is part of a named parameter association.
	(Expand_Access_To_Protected_Op): Test for the attribute occurring
	within an init proc and use that directly as the scope rather than
	traversing up to the protected operation's enclosing scope. Only apply
	assertion on Is_Open_Scopes in the case the scope traversal is done.
	For the init proc case use the address of the first formal (_init) as
	the protected object reference.
	Implement Invalid_Value attribute
	(Expand_N_Attribute_Reference): Case Attribute_Unrestricted_Access.
	contents of the dispatch table there is no need to duplicate the
	itypes associated with record types (i.e. the implicit full view
	of private types).
	Implement Enum_Val attribute
	(Expand_N_Attribute_Reference, case Old): Properly handle appearence
	within _Postconditions procedure
	(Expand_N_Attribute_Reference, case Result): Implement new attribute

	* exp_ch5.adb (Expand_N_Simple_Return_Statement): Handle case in which
	a return statement calls a function that is not available in
	configurable runtime.
	(Analyze_If_Statement): don't optimize simple True/False cases in -O0
	(Expand_Non_Function_Return): Generate call to _Postconditions proc
	(Expand_Simple_Function_Return): Ditto

	* frontend.adb: Add call to Sem_Aux.Initialize

	* sem_aux.ads, sem_aux.adb: New file.

	* par-prag.adb: Add entries for pragmas Precondition/Postcondition
	Add new Pragma_Relative_Deadline.
	Add support for pragmas Check and Check_Policy

	* sem_attr.ads, sem_attr.adb (Check_Not_CPP_Type): New subprogram.
	(Check_Stream_Attribute): Add missing check (not allowed in CPP types)
	(Analyze_Attribute): In case of attributes 'Alignment and 'size add
	missing check because they are not allowed in CPP tagged types.
	Add Sure parameter to Note_Possible_Modification calls
	Add implementation of Invalid_Value attribute
	Implement new attribute Has_Tagged_Values
	Implement Enum_Val attribute
	(Analyze_Attribute, case Range): Set Name_Req True for prefix of
	generated attributes.
	(Analyze_Attribute, case Result): If prefix of the attribute is
	overloaded, it always resolves to the enclosing function.
	(Analyze_Attribute, case Result): Properly deal with analysis when
	Postconditions are not active.
	(Resolve_Attribute, case Result): Properly deal with appearence during
	preanalysis in spec.
	Add processing for attribute Result

	* sem_ch6.ads, sem_ch6.adb (Check_Overriding_Indicator): Code cleanup
	for operators.
	(Analyze_Subprogram_Body): Install private_with_clauses when the body
	acts as a spec.
	(Check_Inline_Pragma): recognize an inline pragma that appears within
	the subprogram body to which it applies.
	(Analyze_Function_Return): Check that type of the expression of a return
	statement in a function with a class-wide result is not declared at a
	deeper level than the function.
	(Process_PPCs): Deal with enabling/disabling, using PPC_Enabled flag
	(Verify_Overriding_Indicator): Handle properly subprogram bodies for
	user- defined operators.
	(Install_Formals): Moved to spec to allow use from Sem_Prag for
	analysis of precondition/postcondition pragmas.
	(Analyze_Subprogram_Body.Last_Real_Spec_Entity): New name for
	Last_Formal, along with lots of comments on what this is about
	(Analyze_Subprogram_Body): Fix case where we move entities from the
	spec to the body when there are no body entities (now possible with
	precondition and postcondition pragmas).
	(Process_PPCs): New procedure
	(Analyze_Subprogram_Body): Add call to Process_PPCs

	* sem_ch8.adb (Use_One_Type): refine warning on a redundant use_type
	clause.
	(Pop_Scope): Restore Check_Policy_List on scope exit
	(Push_Scope): Save Check_Policy_List on scope entry
	Change name In_Default_Expression      => In_Spec_Expression
	Change name Analyze_Per_Use_Expression => Preanalyze_Spec_Expression
	Change name Pre_Analyze_And_Resolve    => Preanalyze_And_Resolve
	(Analyze_Object_Renaming): Allow 'Reference as object
	(Analyze_Pragma, case Restriction_Warnings): Call GNAT_Pragma
	(Process_Restrictions_Or_Restriction_Warnings): Check for bad spelling
	of restriction identifier.
	Add Sure parameter to Note_Possible_Modication calls

	* sem_prag.ads, sem_prag.adb (Analyze_Pragma, case Stream_Convert):
	Don't check for primitive operations when calling Rep_Item_Too_Late.
	(Process_Import_Or_Interface): Do not place flag on formal
	subprograms.
	(Analyze_Pragma, case Export): If the entity is a deferred constant,
	propagate information to full view, which is the one elaborated by the
	back-end.
	(Make_Inline): the pragma is effective if it applies to an internally
	generated subprogram declaration for a body that carries the pragma.
	(Analyze_Pragma, case Optimize_Alignment): Set new flag
	Optimize_Alignment_Local.
	(Analyze_PPC_In_Decl_Part): New procedure
	(Get_Pragma_Arg): Moved to outer level
	(Check_Precondition_Postcondition): Change to allow new visibility
	rules for package spec
	(Analyze_Pragma, case Check_Policy): Change placement rules to be
	same as pragma Suppress/Unsuppress.
	Change name In_Default_Expression      => In_Spec_Expression
	Change name Analyze_Per_Use_Expression => Preanalyze_Spec_Expression
	Change name Pre_Analyze_And_Resolve    => Preanalyze_And_Resolve
	(Check_Precondition_Postcondition): Do proper visibility preanalysis
	for the case of these pragmas appearing in the spec.
	(Check_Enabled): New function
	(Initialize): New procedure
	(Tree_Read): New procedure
	(Tree_Write): New procedure
	(Check_Precondition_Postcondition): New procedure
	Implement pragmas Check and Check_Policy
	Merge Assert processing with Check

	* sem_warn.adb (Warn_On_Known_Condition): Handle pragma Check
	New warning flag -gnatw.e

	* sinfo.ads, sinfo.adb (Has_Relative_Deadline_Pragma): New function
	returning whether a task (or main procedure) has a pragma
	Relative_Deadline.
	(Set_Has_Relative_Deadline_Pragma): Procedure to indicate that a task
	(or main procedure) has a pragma Relative_Deadline.
	Add Next_Pragma field to N_Pragma node
	(PPC_Enabled): New flag
	(Next_Pragma): Now used for Pre/Postcondition processing

	* snames.h, snames.ads, snames.adb: New standard name
	Inherit_Source_Path
	Add entry for 'Invalid_Value attribute
	Add entry for new attribute Has_Tagged_Values
	Add entry for Enum_Val attribute
	Add new standard names Aggregate, Configuration and Library.
	Add _Postconditions
	Add _Result
	Add Pragma_Precondition
	Add Pragma_Postcondition
	Add Attribute_Result
	New standard name Archive_Builder_Append_Option
	(Preset_Names): Add _relative_deadline and relative_deadline definitions
	There was also a missing non_preemptive_within_priorities.
	(Get_Pragma_Id, Is_Pragma_Name): Add support for pragma
	Relative_Deadline.
	Add support for pragmas Check and Check_Policy

	* tree_gen.adb: Call Sem_Aux.Tree_Write

	* tree_in.adb: Call Sem_Aux.Tree_Read

	* exp_ch11.adb (Expand_N_Raise_Statement): New Build_Location calling
	sequence

	* exp_intr.adb (Expand_Source_Info): New Build_Location calling
	sequence

	* exp_prag.adb (Expand_Pragma_Relative_Deadline): New procedure.
	(Expand_N_Pragma): Call the appropriate procedure for expanding pragma
	Relative_Deadline.
	(Expand_Pragma_Check): New procedure

	* sinput.ads, sinput.adb (Build_Location_String): Now appends to name
	buffer.

	* sinfo.adb (PPC_Enabled): New flag

2008-04-08  Robert Dewar  <dewar@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* fe.h: Remove global Optimize_Alignment flag, no longer used

	* layout.adb: Test Optimize_Alignment flags rather than global switch

	* lib.ads, lib.adb: New OA_Setting field in library record

	* lib-load.adb: New OA_Setting field in library record

	* lib-writ.ads, lib-writ.adb (Collect_Withs, Write_With_Lines): Place
	units mentioned in limited_with_ clauses in the ali file, with an
	'Y' marker.
	New Ox fields in U line

	* opt.adb: New flag Optimize_Alignment_Local
	(Check_Policy_List[_Config]): New flags

	* opt.ads (Invalid_Value_Used): New flag
	New switch Optimize_Alignment_Local
	(Warn_On_Parameter_Order): New flag
	(Check_Policy_List[_Config]): New flags

	* ali.ads, ali.adb: Add indicator 'Y' to mark mark the presence of
	limited_with clauses.
	New data structures for Optimize_Alignment

	* bcheck.adb (Check_Consistent_Restriction_No_Default_Initialization):
	New procedure
	(Check_Consistent_Optimize_Alignment): Rework for new structure
	(Check_Consistent_Restrictions): Fix incorrect error message

	sem_ch10.adb (Decorate_Tagged_Type): Set the Parent field of a newly
	created class-wide type (to the Parent field of the specific type).
	(Install_Siblings): Handle properly private_with_clauses on subprogram
	bodies and on generic units.
	(Analyze_With_Clause, Install_Limited_Withed_Unit): Guard against an
	illegal limited_with_clause that names a non-existent package.
	(Check_Body_Required): Determine whether a unit named a limited_with
	clause needs a body.
	(Analyze_Context): A limited_with_clause is illegal on a unit_renaming.
	Capture Optimize_Alignment settings to set new OA_Setting field in
	library record.
	(Build_Limited_Views): Include task and protected type declarations.

	* sem_ch3.ads, sem_ch3.adb (Analyze_Object_Declaration): Handle the
	case of a possible constant redeclaration where the current object is
	an entry index constant.
	(Analyze_Object_Declaration): Generate an error in case of CPP
	class-wide object initialization.
	(Analyze_Object_Declaration): Add extra information on warnings for
	declaration of unconstrained objects.
	(Access_Type_Declaration): Set Associated_Final_Chain to Empty, to avoid
	conflicts with the setting of Stored_Constraint in the case where the
	access type entity has already been created as an E_Incomplete_Type due
	to a limited with clause.
	Use new Is_Standard_Character_Type predicate
	(Analyze_Object_Declaration): Apply access_constant check only after
	expression has been resolved, given that it may be overloaded with
	several access types.
	(Constant_Redeclaration): Additional legality checks for deferred
	constant declarations tha involve anonymous access types and/or null
	exclusion indicators.
	(Analyze_Type_Declaration): Set Optimize_Alignment flags
	(Analyze_Subtype_Declaration): Ditto
	(Analyze_Object_Declaration): Ditto
	(Analyze_Object_Declaration): Don't count tasks in generics
	Change name In_Default_Expression      => In_Spec_Expression
	Change name Analyze_Per_Use_Expression => Preanalyze_Spec_Expression
	Change name Pre_Analyze_And_Resolve    => Preanalyze_And_Resolve
	(Process_Discriminants): Additional check for illegal use of default
	expressions in access discriminant specifications in a type that is not
	explicitly limited.
	(Check_Abstract_Overriding): If an inherited function dispaches on an
	access result, it must be overridden, even if the type is a null
	extension.
	(Derive_Subprogram): The formals of the derived subprogram have the
	names and defaults of the parent subprogram, even if the type is
	obtained from the actual subprogram.
	(Derive_Subprogram): In the presence of interfaces, a formal of an
	inherited operation has the derived type not only if it descends from
	the type of the formal of the parent operation, but also if it
	implements it. This is relevant for the renamings created for the
	primitive operations of the actual for a formal derived type.
	(Is_Progenitor): New predicate, to determine whether the type of a
	formal in the parent operation must be replaced by the derived type.

	* sem_util.ads, sem_util.adb (Has_Overriding_Initialize): Make
	predicate recursive to handle components that have a user-defined
	Initialize procedure. Handle controlled derived types whose ancestor
	has a user-defined Initialize procedured.
	(Note_Possible_Modification): Add Sure parameter, generate warning if
	sure modification of constant
	Use new Is_Standard_Character_Type predicate
	(Find_Parameter_Type): when determining whether a protected operation
	implements an interface operation, retrieve the type of the formal from
	the entity when the formal is an access parameter or an
	anonymous-access-to-subprogram.
	Move Copy_Parameter_List to sem_util, for use when building stubbed
	subprogram bodies.
	(Has_Access_Values): Tagged types now return False
	(Within_HSS_Or_If): New procedure
	(Set_Optimize_Alignment_Flags): New procedure
	Change name In_Default_Expression      => In_Spec_Expression
	Change name Analyze_Per_Use_Expression => Preanalyze_Spec_Expression
	Change name Pre_Analyze_And_Resolve    => Preanalyze_And_Resolve

2008-04-08  Tristan Gingold  <gingold@adacore.com>

	* s-fileio.adb: Name_Error shouldn't be raised for a tempory file.

2008-04-08  Tristan Gingold  <gingold@adacore.com>

PR ada/10768

	* cuintp.c: Fix 16 bits issue for AVR.
	On AVR, integer is 16 bits, so it can't be used to do math with
	Base (=32768).
	So use long_integer instead.

2008-04-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-calend-vms.ads, a-calend-vms.adb: Add with and use clause for
	System.OS_Primitives.
	Change type of various constants, parameters and local variables from
	Time to representation type OS_Time.
	(To_Ada_Time, To_Unix_Time): Correct sign of origin shift.
	Remove the declaration of constant Mili_F from several routines. New
	body for internal package Conversions_Operations.
	(Time_Of): Add default parameters for several formals.

	* a-caldel.adb: Minor reformatting

	* a-calend.ads, a-calend.adb: New body for internal package
	Conversions_Operations.
	(Time_Of): Add default parameters for several formals.

	* Makefile.rtl: Add a-ststop
	Add Ada.Calendar.Conversions to the list of runtime files.
	Add g-timsta

	* a-calcon.adb, a-calcon.ads: New files.

2008-04-08  Jose Ruiz  <ruiz@adacore.com>
	    Tristan Gingold  <gingold@adacore.com>

	* s-interr-dummy.adb, s-interr-vms.adb, s-interr-sigaction.adb
	(Install_Restricted_Handlers): New procedure
	which is a simplified version of Install_Handlers that does not store
	previously installed.

	* s-interr-vxworks.adb: Fix ACATS cxc3001
	On VxWorks interrupts can't be detached.
	(Install_Restricted_Handlers): New procedure.

	* s-interr.ads, s-interr.adb (Install_Restricted_Handlers): New
	procedure.

2008-04-08  Olivier Hainque  <hainque@adacore.com>

	* s-intman-vxworks.ads, s-intman-vxworks.adb
	(Map_And_Raise_Exception): Remove. Was an import of only part of the
	required services already implemented elsewhere.
	(Notify_Exception): Delete body, import __gnat_error_handler instead.
	(Initialize): Add SA_SIGINFO to the sa_flags, to get the sigcontext
	argument passed to the handler, which we need for ZCX propagation
	purposes.

2008-04-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* adaint.h, adaint.c (__gnat_current_time_string): New routine.

	* g-timsta.adb, g-timsta.ads: New files.

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* a-except-2005.ads, a-except-2005.adb, a-except.ads, a-except.adb
	(Raise_Exception): In accordance with AI-446, raise CE for Null_Id
	(Raise_Exception_Always): Fix documentation accordingly

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* a-strbou.ads, a-strbou.adb (From_String): New procedure (for use by
	Stream_Convert)

	* sem_ch13.ads (Rep_Item_Too_Late): Document that Stream_Convert sets
	FOnly

2008-04-08  Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* a-tags.adb (Register_Interface_Offset): New subprogram.
	(Set_Dynamic_Offset_To_Top): New subprogram (see previous comment).
	(To_Predef_Prims_Table_Ptr): Removed.
	(Acc_Size): Removed.
	(To_Acc_Size): Removed.
	(Parent_Size): Modified to the call the subprogram returning the size of
	the parent by means of the new TSD component Size_Func.

	* a-tags.ads (Offset_To_Top_Ptr): New access type declaration.
	(DT_Offset_To_Top_Offset): New constant value that is used to generate
	code referencing the Offset_To_Top component of the dispatch table's
	prologue.
	(Prim_Ptr): New declaration of access to procedure. Used to avoid the
	use of 'address to initialize dispatch table slots.
	(Size_Func): New component of the TSD. Used by the run-time to call the
	size primitive of the tagged type.

	* checks.adb (Apply_Access_Check): Avoid check when accessing the
	Offset_To_Top component of a dispatch table.
	(Null_Exclusion_Static_Checks): If the non-null access type appears in a
	deferred constant declaration. do not add a null expression, to prevent
	spurious errors when full declaration is analyzed.
	(Apply_Discriminant_Check): If both discriminant constraints share a
	node which is not static but has no side effects, do not generate a
	check for that discriminant.
	(Generate_Index_Checks): Set Name_Req to true in call to duplicate
	subexpr, since the prefix of an attribute is a name.

	* checks.ads: Fix nit in comment.

	* exp_ch3.ads, exp_ch3.adb (Freeze_Record_Type): Do not add the spec
	and body of predefined primitives in case of CPP tagged type
	derivations.
	(Freeze_Type): Deal properly with no storage pool case
	(Make_Predefined_Primitive_Specs): Generate specification of abstract
	primitive Deep_Adjust if a nonlimited interface is derived from a
	limited interface.
	(Build_Dcheck_Functions): Create discriminant-checking functions only
	for variants that have some component(s).
	(Build_Slice_Assignment): In expanded code for slice assignment, handle
	properly the case where the slice bounds extend to the last value of the
	underlying representation.
	(Get_Simple_Init_Val): New calling sequence, accomodate Invalid_Value
	(Is_Variable_Size_Record): An array component has a static size if
	index bounds are enumeration literals.

	* exp_disp.adb (Make_DT): Use the first subtype to determine whether
	an external tag has been specified for the type.
	(Building_Static_DT): Add missing support for private types.
	(Make_DT): Add declaration of Parent_Typ to ensure consistent access
	to the entity associated with the parent of Typ. This is done to
	avoid wrong access when the parent is a private type.
	(Expand_Interface_Conversion): Improve error message when the
	configurable runtime has no support for dynamic interface conversion.
	(Expand_Interface_Thunk): Add missing support to interface types in
	configurable runtime.
	(Expand_Dispatching_Call): remove obsolete code.
	(Make_DT): Replace occurrences of RE_Address by RE_Prim_Ptr, and
	ensure that all subtypes and aggregates associated with dispatch
	tables have the attribute Is_Dispatch_Table_Entity set to true.
	(Register_Primitive): Rename one variable to improve code reading.
	Replace occurrences of RE_Addres by RE_Prim_Ptr. Register copy o
	of the pointer to the 'size primitive in the TSD.

	* rtsfind.ads (RE_DT_Offset_To_Top_Offset): New entity.
	(RE_Offset_To_Top_Ptr): New entity.
	(RE_Register_Interface_Offset): New entity.
	(RE_Set_Dynamic_Offset_To_Top): New entity.
	(RE_Set_Offset_To_Top): Removed entity.
	(RE_Prim_Ptr): New entity
	(RE_Size_Func): New entity
	(RE_Size_Ptr): New entity
	(RTU_Id): Add Ada_Dispatching and Ada_Dispatching_EDF.
	(Ada_Dispatching_Child): Define this new subrange.
	(RE_Id): Add new required run-time calls (RE_Set_Deadline, RE_Clock,
	 RE_Time_Span, and RE_Time_Span_Zero).
	(RE_Unit_Table): Add new required run-time calls

	* rtsfind.adb (Get_Unit_Name): Add processing for Ada.Dispatching
	children.

	* exp_atag.ads, exp_atag.adb (Build_Offset_To_Top): New subprogram.
	(Build_Set_Static_Offset_To_Top): New subprogram. Generates code that
	 initializes the Offset_To_Top component of a dispatch table.
	(Build_Predef_Prims): Removed.
	(Build_Get_Predefined_Prim_Op_Address): Replace call to Predef_Prims by
	 its actual code.
	(Build_Set_Size_Function): New subprogram.

	* exp_ch13.adb: Do not generate storage variable for storage_size zero
	(Expand): Handle setting/restoring flag Inside_Freezing_Actions

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* a-ztdeau.adb, a-tideau.adb, a-wtdeau.adb (Puts_Dec): Fix error in
	computing Fore when Exp > 0

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* back_end.adb: Remove Big_String_Ptr declarations (now in Types)

	* errout.adb: Remove Big_String_Ptr declarations (now in Types)
	Change name Is_Style_Msg to Is_Style_Or_Info_Msg

	* fmap.adb: Remove Big_String declarations (now in Types)
	(No_Mapping_File): New Boolean global variable
	(Initialize): When mapping file cannot be read, set No_Mapping_File to
	False.
	(Update_Mapping_File): Do nothing if No_Mapping_File is True. If the
	tables were empty before adding entries, open the mapping file
	with Truncate = True, instead of delete/re-create.

	* fname-sf.adb: Remove Big_String declarations (now in Types)

	* s-strcom.adb, g-dyntab.ads, g-table.ads, s-carsi8.adb,
	s-stalib.ads, s-carun8.adb: Add zero size Storage_Size clauses for
	big pointer types

	* table.ads: Add for Table_Ptr'Storage_Size use 0

	* types.ads: Add Big_String declarations
	Add Size_Clause of zero for big pointer types

2008-04-08  Vincent Celier  <celier@adacore.com>

	* clean.adb (Parse_Cmd_Line): Recognize switch --subdirs=
	(Usage): Add line for switch --subdirs=
	Add new switch -eL, to follow symbolic links when processing project
	files.

	* gnatcmd.adb: Process switches -eL and --subdirs=
	(Non_VMS_Usage): Output "gnaampcmd" instead of "gnat", and call
	Program_Name to get proper tool names when AAMP_On_Target is set.
	(Gnatcmd): Call Add_Default_Search_Dirs and Get_Target_Parameters to get
	AAMP_On_Target set properly for use of GNAAMP tools (this is needed by
	Osint.Program_Name).

	* gnatname.adb: (Scan_Args): Recognize switches -eL and --subdirs=
	(Usage): Add lines for switches -eL and --subdirs=

	* makeusg.adb: Add line for switch --subdirs=

	* prj.ads:
	(Source_Data): New Boolean component Compiled, defaulted to True
	(Empty_File_Name: New global variable in private part, initialized in
	procedure Initialize.
	(Subdirs_Option): New constant string
	(Subdirs): New String_Ptr global variable
	(Language_Config): New component Include_Compatible_Languages
	(Project_Qualifier): New type for project qualifiers
	(Project_Data): New component Qualifier
	(Project_Configuration): New component Archive_Builder_Append_Option

	* prj-nmsc.adb (Get_Unit_Exceptions): When a unit is already in
	another imported project indicate the name of this imported project.
	(Check_File): When a unit is in two project files, indicate the project
	names and the paths of the source files for each project.
	(Add_Source): Set Compiled to False if compiler driver is empty. Only
	set object, dependency and switches file names if Compiled is True.
	(Process_Compiler): Allow the empty string for value of attribute Driver
	(Get_Directories): When Subdirs is not null and Object_Dir is not
	 specified, locate and create if necessary the actual object dir.
	(Locate_Directory): When Subdirs is not empty and Create is not the
	empty string, locate and create if necessary the actual directory
	as a subdirectory of directory Name.
	(Check_Library_Attributes.Check_Library): Allow a project where the only
	"sources" are header files of file based languages to be imported by
	library projects, in multi-language mode (gprbuild).
	(Check_Library_Attributes.Check_Library): In multi-language mode
	(gprbuild), allow a library project to import a project with no
	sources, even when this is not declared explicitly.
	(Check_If_Externally_Built): A virtual project extending an externally
	built project is also externally built.
	(Check_Library_Attributes): For a virtual project extending a library
	project, inherit the library directory.
	(Process_Project_Level_Array_Attributes): Process new attribute
	Inherit_Source_Path.
	For projects with specified qualifiers "standard", "library" or
	"abstract", check that the project conforms to the qualifier.
	(Process_Project_Level_Simple_Attributes): Process new attribute
	 Archive_Builder_Append_Option.

	* switch-m.adb: (Scan_Make_Switches): Process switch --subdirs=
	(Normalize_Compiler_Switches): Only keep compiler switches that are
	passed to gnat1 by the gcc driver and that are stored in the ALI file
	by gnat1.
	Do not take into account switc -save-temps

	* makegpr.adb (Compile_Link_With_Gnatmake): Transmit switch -eL if
	gprmake is called with -eL.
	(Scan_Arg): Recognize switch -eL
	(Usage): Add line for switch -eL

	* prj.adb (Initialize): Initialize Empty_File_Name
	(Project_Empty): New component Qualifier

	* prj-attr.ads, prj-attr.adb: New project level attribute
	Inherit_Source_Path.
	New project level attribute Archive_Builder_Append_Option

	* prj-dect.adb: Replace System.Strings by GNAT.Strings.

	* prj-ext.adb (Initialize_Project_Path): In Multi_Language mode, add
	<prefix>/lib/gnat in the project path, after <prefix>/share/gpr, for
	upward compatibility.

	* prj-part.adb (Project_Path_Name_Of.Try_Path): In high verbosity, put
	each Trying ..." on different lines.
	(Parse_Single_Project): Recognize project qualifiers. Fail in qualifier
	is "configuration" when not in configuration. Fail when in configuration
	when a specified qualifier is other than "configuration".

	* prj-proc.adb (Process_Declarative_Items): Link new elements of copied
	full associative array together.
	(Recursive_Process): Put the project qualifier in the project data

	* prj-tree.ads, prj-tree.adb: (Project_Qualifier_Of): New function
	(Set_Project_Qualifier_Of): New procedure

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* errout.ads: Update comments for new handling of info: messages

	* erroutc.adb (Matches): New procedure
	(Warning_Specifically_Suppressed): Modified to handle multiple * chars
	(Is_Style_Or_Info_Msg): New name for Is_Style_Msg, now set for
	 info messages as well as style messages.

	* erroutc.ads: Remove unneeded fields from Specific_Warning_Entry

	* sem_elab.adb (Supply_Bodies): Create actual bodies for stubbed
	subprograms.
	(Check_A_Call): Special "info: " warnings now have ? in the text
	(Elab_Warning): Use info message in static case

2008-04-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Static_Array_Aggregate): Use Max_Aggr_Size to determine
	whether an array aggregate with static bounds and scalar components
	should be expanded into a static constant.

2008-04-08  Gary Dismukes  <dismukes@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* sem_cat.adb (Validate_RCI_Subprogram_Declaration): Add tests of
	Has_Stream_Attribute_ Definition when checking for available stream
	attributes on parameters of a limited type in Ada 2005. Necessary for
	proper recognition of visible stream attribute clauses.
	(Has_Stream_Attribute_Definition): If the type is derived from a
	private type, then use the derived type's underlying type for checking
	whether it has stream attributes.
	(Validate_Object_Declaration): The check for a user-defined Initialize
	procedure applies also to types with controlled components or a
	controlled ancestor.
	Reject an object declaration in a preelaborated unit if the type is a
	controlled type with an overriding Initialize procedure.
	(Validate_Remote_Access_To_Class_Wide_Type): Return without further
	checking when the parent of a dereference is a selected component and
	the name has not been analyzed.

	* sem_ch4.adb (Analyze_Selected_Component): Add checking for selected
	prefixes that are invalid explicit dereferences of remote
	access-to-class-wide values, first checking whether the selected
	component is a prefixed form of call to a tagged operation.
	(Analyze_Call): Remove code that issues an error for limited function
	calls in illegal contexts, as we now support all of the contexts that
	were forbidden here.
	Allow a function call that returns a task.and appears as the
	prefix of a selected component.
	(Analyze_Reference): Give error message if we try to make a 'Reference
	for an object that is atomic/aliased without its type having the
	corresponding attribute.
	(Analyze_Call): Remove condition checking for attributes to allow
	calls to functions with inherently limited results as prefixes of
	attributes. Remove related comment about Class attributes.
	(Analyze_Selected_Component): If the prefix is a remote type, check
	whether this is a prefixed call before reporting an error.
	(Complete_Object_Operation): If the controlling formal is an access to
	variable reject an actual that is a constant or an access to one.
	(Try_Object_Operation): If prefix is a tagged protected object,retrieve
	primitive operations from base type.

	* exp_ch4.adb (Expand_N_Indexed_Component): Test for prefix that is a
	build-in-place
	function call and call Make_Build_In_Place_Call_In_Anonymous_Context.
	(Expand_N_Selected_Component): Test for prefix that is a build-in-place
	function call and call Make_Build_In_Place_Call_In_Anonymous_Context.
	(Expand_N_Slice): Test for prefix that is a build-in-place function call
	and call Make_Build_In_Place_Call_In_Anonymous_Context.
	(Analyze_Call): Remove code that issues an error for limited function
	calls in illegal contexts, as we now support all of the contexts that
	were forbidden here.
	New calling sequence for Get_Simple_Init_Val
	(Expand_Boolean_Operator): Add call to Silly_Boolean_Array_Xor_Test
	(Expand_N_Op_Not): Add call to Silly_Boolan_Array_Not_Test

2008-04-08  Hristian Kirtchev  <kirtchev@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* exp_ch2.adb: Minor reformatting.
	(Expand_Entry_Index_Parameter): Set the type of the identifier.
	(Expand_Entry_Reference): Add call to Expand_Protected_Component.
	(Expand_Protected_Component): New routine.
	(Expand_Protected_Private): Removed.
	Add Sure parameter to Note_Possible_Modification calls

	* sem_ch12.ads, sem_ch12.adb (Analyze_Subprogram_Instantiation): The
	generated subprogram declaration must inherit the overriding indicator
	from the instantiation node.
	(Validate_Access_Type_Instance): If the designated type of the actual is
	a limited view, use the available view in all cases, not only if the
	type is an incomplete type.
	(Instantiate_Object):  Actual is illegal if the formal is null-excluding
	and the actual subtype does not exclude null.
	(Process_Default): Handle properly abstract formal subprograms.
	(Check_Formal_Package_Instance): Handle properly defaulted formal
	subprograms in a partially parameterized formal package.
	Add Sure parameter to Note_Possible_Modification calls
	(Validate_Derived_Type_Instance): if the formal is non-limited, the
	actual cannot be limited.
	(Collect_Previous_Instances): Generate instance bodies for subprograms
	as well.

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case Small): Don't
	try to set RM_Size.
	Add Sure parameter to Note_Possible_Modification calls
	(Analyze_At_Clause): Preserve Comes_From_Source on Rewrite call
	(Analyze_Attribute_Definition_Clause, case Attribute_Address): Check for
	constant overlaid by variable and issue warning.
	Use new Is_Standard_Character_Type predicate
	(Analyze_Record_Representation_Clause): Check that the specified
	Last_Bit is not less than First_Bit - 1.
	(Analyze_Attribute_Definition_Clause, case Address): Check for
	self-referential address clause

	* sem_ch5.ads, sem_ch5.adb (Diagnose_Non_Variable_Lhs): Rewrite the
	detection mechanism when the lhs is a prival.
	(Analyze_Assignment): Call Check_Unprotected_Access to detect
	assignment of a pointer to protected data, to an object declared
	outside of the protected object.
	(Analyze_Loop_Statement): Check for unreachable code after loop
	Add Sure parameter to Note_Possible_Modication calls
	Protect analysis from previous syntax error such as a scope mismatch
	or a missing begin.
	(Analyze_Assignment_Statement): The assignment is illegal if the
	left-hand is an interface.

	* sem_res.ads, sem_res.adb (Resolve_Arithmetic_Op): For mod/rem check
	violation of restriction No_Implicit_Conditionals
	Add Sure parameter to Note_Possible_Modication calls
	Use new Is_Standard_Character_Type predicate
	(Make_Call_Into_Operator): Preserve Comes_From_Source when rewriting
	call as operator. Fixes problems (e.g. validity checking) which
	come from the result looking as though it does not come from source).
	(Resolve_Call): Check case of name in named parameter if style checks
	are enabled.
	(Resolve_Call): Exclude calls to Current_Task as entry formal defaults
	from the checking that such calls should not occur from an entry body.
	(Resolve_Call): If the return type of an Inline_Always function
	requires the secondary stack, create a transient scope for the call
	if the body of the function is not available for inlining.
	(Resolve_Actuals): Apply Ada2005 checks to view conversions of arrays
	that are actuals for in-out formals.
	(Try_Object_Operation): If prefix is a tagged protected object,retrieve
	primitive operations from base type.
	(Analyze_Selected_Component): If the context is a call to a protected
	operation the parent may be an indexed component prior to expansion.
	(Resolve_Actuals): If an actual is of a protected subtype, use its
	base type to determine whether a conversion to the corresponding record
	is needed.
	(Resolve_Short_Circuit): Handle pragma Check

	* sem_eval.adb: Minor code reorganization (usea Is_Constant_Object)
	Use new Is_Standard_Character_Type predicate
	(Eval_Relational_Op): Catch more cases of string comparison

2008-04-08  Robert Dewar  <dewar@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* s-rident.ads: Add No_Default_Initialization restriction

	* exp_tss.adb:
	(Has_Non_Null_Base_Init_Proc): Handle No_Default_Initialization case
	(Set_TSS): Handle No_Default_Initialization case

	* exp_ch6.adb (Expand_N_Subprogram_Body): Handle restriction
	No_Default_Initialization
	(Expand_N_Subprogram_Body): Remove redundant initialization of out
	parameters when Normalize_Scalars is active.
	(Add_Final_List_Actual_To_Build_In_Place_Call): Add formal Sel_Comp
	Fix casing error in formal parameter name in call
	(Register_Predefined_DT_Entry): Replace occurrences of RE_Address by
	(Expand_Call, Propagate_Tag): Call Kill_Current_Values when processing a
	dispatching call on VM targets.

2008-04-08  Gary Dismukes  <dismukes@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb (Find_Final_List): Change the test for generating a
	selected component from an access type's Associated_Final_Chain to
	check for the presence of that field, rather than assuming it exists
	for all named access types.
	(Make_Clean): New formal Chained_Cleanup_Action allowing to specify a
	procedure to call at the end of the generated cleanup procedure.
	(Expand_Cleanup_Actions): When a new cleanup procedure is generated, and
	and an At_End_Proc already exists in the handled sequence of statements
	for which cleanup actions are being expanded, the original cleanup
	action must be preserved.

2008-04-08  Hristian Kirtchev  <kirtchev@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* exp_ch9.ads, exp_ch9.adb (Build_Protected_Entry,
	Build_Unprotected_Subprogram_Body): Generate debug info for
	declarations related to the handling of private data in task and
	protected types.
	(Debug_Private_Data_Declarations): New subprogram.
	(Install_Private_Data_Declarations): Remove all debug info flagging.
	This is now done by Debug_Private_Data_Declarations at the correct
	stage of expansion.
	(Build_Simple_Entry_Call): If the task name is a function call, expand
	the prefix into an object declaration, and make the surrounding block a
	task master.
	(Build_Master_Entity): An internal block is a master if it wraps a call.
	Code reformatting, update comments. Code clean up.
	(Make_Task_Create_Call): Use 'Unrestricted_Access instead of 'Address.
	(Replicate_Entry_Formals): If the formal is an access parameter or
	anonymous access to subprogram, copy the original tree to create new
	entities for the formals of the subprogram.
	(Expand_N_Task_Type_Declaration): Create a Relative_Deadline variable
	for tasks to store the value passed using pragma Relative_Deadline.
	(Make_Task_Create_Call): Add the Relative_Deadline argument to the
	run-time call to create a task.
	(Build_Wrapper_Spec): If the controlling argument of the interface
	operation is an access parameter with a non-null indicator, use the
	non-null indicator on the wrapper.

	* sem_ch9.adb (Analyze_Protected_Type): Only retrieve the full view when
	present, which it may not be in the case where the type entity is an
	incomplete view brought in by a limited with.
	(Analyze_Task_Type): Only retrieve the full view when present, which it
	may not be in the case where the type entity is an incomplete view brought
	in by a limited with.
	(Analyze_Protected_Definition): Set Is_Frozen on all itypes generated for
	private components of a protected type, to prevent the generation of freeze
	nodes for which there is no proper scope of elaboration.

	* exp_util.ads, exp_util.adb
	(Remove_Side_Effects): If the expression is a function call that returns a
	task, expand into a declaration to invoke the build_in_place machinery.
	(Find_Protection_Object): New routine.
	(Remove_Side_Effects): Also make a copy of the value
	for attributes whose result is of an elementary type.
	(Silly_Boolean_Array_Not_Test): New procedure
	(Silly_Boolean_Array_Xor_Test): New procedure
	(Is_Volatile_Reference): New function
	(Remove_Side_Effects): Use Is_Volatile_Reference
	(Possible_Bit_Aligned_Component): Handle slice case properly

	* exp_pakd.adb (Expand_Packed_Not): Move silly true/true or false/false
	case test to Exp_Util
	(Expand_Packed_Xor): Move silly true/true case test to Exp_Util

2008-04-08  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.ads, exp_dist.adb: Fix casing error in formal parameter name
	in call
	(Add_RACW_Features): When processing an RACW in another unit than the
	main unit, set Body_Decls to No_List to indicate that the bodies of
	the type's TSS must not be generated.
	(GARLIC_Support.Add_RACW_Read_Attribute,
	GARLIC_Support.Add_RACW_Write_Attribute): Do not generate bodies if
	Body_Decls is No_List.
	(PolyORB_Support.Add_RACW_Read_Attribute,
	PolyORB_Support.Add_RACW_Write_Attribute,
	PolyORB_Support.Add_RACW_From_Any,
	PolyORB_Support.Add_RACW_To_Any,
	PolyORB_Support.Add_RACW_TypeCode): Same.
	(Transmit_As_Unconstrained): New function.
	(Build_Ordered_Parameters_List): Use the above to order parameters.
	(GARLIC_Support.Build_General_Calling_Stubs):
	Use the above to determine which parameters to unmarshall using 'Input
	at the point where their temporary is declared (as opposed to later on
	with a 'Read call).
	(PolyORB_Support.Build_General_Calling_Stubs):
	Use the above to determine which parameters to unmarshall using From_Any
	at the point where their temporary is declared (as opposed to later on
	with an assignment).

2008-04-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_strm.adb (Build_Record_Or_Elementary_Input_Function): If this is
	an Input function for an access type, do not perform default
	initialization on the local variable that receives the value, to
	prevent spurious warnings when the type is null-excluding.

2008-04-08  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): Improve warnings on access types in pure
	units.
	(Size_Known): Generic formal scalar types have known at compile
	time size, so remove check.
	Fix casing error in formal parameter name in call
	(Freeze_Subprogram): If the subprogram is a user-defined operator,
	recheck its overriding indication.

2008-04-08  Vincent Celier  <celier@adacore.com>

	* gnat1drv.adb: Send all messages indicating an error to standard error

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* gnatbind.adb (Restriction_Could_Be_Set): New procedure
	(List_Applicable_Restrictions): Do not list existing restrictions

2008-04-08  Thomas Quinot  <quinot@adacore.com>

	* g-socket.ads, g-socket.adb: Improve documentation of GNAT.Sockets:
	add a pointer to generic sockets literature
	do not mention that the given example is "typical" usage.
	Remove obsolete comment about multicast not being supported on Windows.
	(Connect_Socket): Make Server mode IN rather than IN OUT
	since this formal is never modified.

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* sprint.adb (Write_Itype): Handle Itypes whose Parent field points to
	the declaration for some different entity.
	(Sprint_Node_Actual, case N_Derived_Type_Definition): When an interface
	list is precent (following the parent subtype indication), display
	appropriate "and" keyword.

	* itypes.adb: Remove unnecessary calls to Init_Size_Align and Init_Esize
	Remove unnecessary calls to Init_Size_Align and Init_Esize.
	Add notes on use of Parent field of an Itype

2008-04-08  Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* lib-xref.adb (Is_On_LHS): Remove dead code
	(Output_Overriden_Op): If the overridden operation is itself inherited,
	list the ancestor operation, which is the one whose body or absstract
	specification is actually being overridden. For source navigation
	purposes.

	* sem_ch7.adb (Is_Primitive_Of): use base type to determine whether
	operation is primitive for the type.
	(Declare_Inherited_Private_Subprograms): If the new operation overrides
	an inherited private subprogram, set properly the Overridden_Operation
	attribute, for better cross-reference information.
	(Analyze_Package_Specification): Do late analysis of spec PPCs
	(Install_Private_Declaration, Uninstall_Declarations): Save/restore
	properly the full view and underlying full views of a private type in a
	child unit, whose full view is derived from a private type in a parent
	unit, and whose own full view becomes visible in the child body.

	* sem_disp.adb (Check_Dispatching_Operation): When a body declares a
	primitive operation after the type has been frozen, add an explicit
	reference to the type and the operation, because other primitive
	references have been emitted already.
	(Expand_Call, Propagate_Tag): Call Kill_Current_Values when processing a
	dispatching call on VM targets.

2008-04-08  Vincent Celier  <celier@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* make.adb: (Gnatmake_Called): Remove, no longer necessary
	(Compile_Surces): Call Delete_Temp_Config_Files only if Gnatmake_Called
	is True and Debug_Flag_N is False. Debug_Flag_N means "keep temp files".
	(Insert_Project_Sources): Take into account index in multi-unit source
	files.
	After building a library project, delete all temporary files.
	(Initialize): Reset current output after parsing project file.
	(Collect_Arguments_And_Compile): Never insert in the queue the sources
	of library projects that are externally built.
	Put file name in error and inform messages if -df is used
	(Display): If invoked with -d7, do not display path names, but only
	file names.

	* makeutl.ads (Path_Or_File_Name): New function
	(Path_Or_File_Name): New function

2008-04-08  Arnaud Charlet  <charlet@adacore.com>

	* Make-lang.in: Disable warnings during first stage of bootstrap
	Get rid of gnatbl.
	Update dependencies.

2008-04-08  Vincent Celier  <celier@adacore.com>

	* mlib-prj.adb (Build_Library): Compare with ALI file name in canonical
	case to decide if ALI object file is included in library.
	(Build_Library): Never attempt to build a library if the project is
	externally built.

2008-04-08  Thomas Quinot  <quinot@adacore.com>

	* nlists.adb (Is_Non_Empty_List): Remove redundant test. First
	(No_List) is defined to return Empty.

2008-04-08  Jose Ruiz  <ruiz@adacore.com>

	* osint.ads, osint.adb (Get_Libraries_From_Registry): Improve
	documentation.
	Update comments.
	(Read_Default_Search_Dirs): Do not consider spaces as path separators
	because spaces may be part of legal paths.

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* par-ch11.adb (P_Exception_Handler): Check indentation level for
	handler

2008-04-08  Ed Schonberg  <schonberg@adacore.com>

	* par-ch3.adb (P_Type_Declaration) Reject the keyword "synchronized"
	in a type declaration, if this is not an interface declaration or
	private type extension.

2008-04-08  Vincent Celier  <celier@adacore.com>

	* prj-util.adb (Executable_Of): New String parameter Language. When
	Ada_Main is False and Language is not empty, attempt to remove the body
	suffix or the spec suffix of the language to get the base of the
	executable file name.
	(Put): New Boolean parameter Lower_Case, defauilted to False. When
	Lower_Case is True, put the value in lower case in the name list.
	(Executable_Of): If there is no executable suffix in the configuration,
	then do not modify Executable_Extension_On_Target.

	* prj-util.ads (Executable_Of): New String parameter Language,
	defaulted to the empty string.
	(Put): New Boolean parameter Lower_Case, defauilted to False

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* scng.adb (Scan_Identifier): Handle case of identifier starting with
	wide character using UTF-8 encoding.

2008-04-08  Javier Miranda  <miranda@adacore.com>

	* sem.adb (Analyze): Consider case in which we analyze an empty node
	that was generated by a call to a runtime function that is not
	available under the configurable runtime.

	* sem.ads (Inside_Freezing_Actions): New flag.
	(Save_Check_Policy_List): New field in scope stack entry

2008-04-08  Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb (Analyze_N_Extension_Aggregate): Add legality checks for
	the ancestor part of an extension aggregate for a limited type.
	(Resolve_Array_Aggregate): Issue warning for sliding of aggregate with
	enumeration index bounds.
	(Resolve_Array_Aggregate): Add circuit for diagnosing missing choices
	when array is too short.
	(Check_Expr_OK_In_Limited_Aggregate): Move function
	Check_Non_Limited_Type from Resolve_Record_Aggregate to top level (and
	change name).
	(Resolve_Array_Aggregate.Resolve_Aggr_Expr):
	Check_Expr_OK_In_Limited_Aggregates called to check for illegal limited
	component associations.
	(Check_Non_Limited_Type): Moved to outer level and renamed.
	(Resolve_Record_Aggregate): In an extension aggregate, an association
	with a box initialization can only designate a component of the
	extension, not a component inherited from the given ancestor

	* sem_case.adb: Use new Is_Standard_Character_Type predicate

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* s-imgdec.adb (Set_Decimal_Digits): Fix error when input is zero with
	negative scale
	(Set_Decimal_Digits): Properly handle Aft=0 (equivalent to Aft=1)
	Properly handle case where Aft > Scale and input number is less than
	one.

2008-04-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-stoele.ads, s-soflin.ads: Move the location of
	Dummy_Communication_Block from System.Storage_Elements to
	System.Soft_Links.

	* s-tpobop.ads: Add comment on usage of Dummy_Communication_Block to
	emulate Communication_Block in certain scenarios.

2008-04-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-strxdr.adb, s-stratt.ads, s-stratt.adb (Block_IO_OK): New
	subprogram.
	Add new subtype S_WWC, unchecked conversion routines From_WWC and
	To_WWC.
	(I_WWC, O_WWC): New routines for input and output of
	Wide_Wide_Character.

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* stringt.adb (Write_String_Table_Entry): Handle wide characters
	properly

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* styleg.adb (Check_Comment): Allow special char after -- in
	non-end-of-line case

2008-04-08  Robert Dewar  <dewar@adacore.com>

	* stylesw.adb: Implement -gnaty + - y options
	(Set_GNAT_Style_Check_Options): Includ I in style check string

	* stylesw.ads: Add comments for new style switch options

2008-04-08  Sergey Rybin  <rybin@adacore.com>

	* tree_io.ads: Increase ASIS_Version_Number because of adding Sem_Aux
	to the set of the GNAT components needed by ASIS.

2008-04-08  Bob Duff  <duff@adacore.com>

	* types.h: Change CE_Null_Exception_Id to the correct value (8, was 9).

2008-04-08  Tristan Gingold  <gingold@adacore.com>

	* vxaddr2line.adb: Use Unsigned_32 instead of Integer for address type.
	Improve error message generation.

2008-04-08  Vincent Celier  <celier@adacore.com>

	* a-direct.adb (Start_Search): Check for Name_Error before checking for
	Use_Error, as specified in the RM. Check if directory is open and raise
	Use_Error if it is not.

2008-04-08  Vincent Celier  <celier@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* vms_conv.adb (Output_Version): Print "GNAAMP" instead of "GNAT when
	AAMP_On_Target is set.

	* vms_data.ads: Add NOxxx to style check switch list
	Add entry COMPONENTS for -gnatVe
	Add VMS qualifiers for -eL (/FOLLOW_LINKS_FOR_FILES) and --subdirs=
	(/SUBDIRS=).
	(GCC_Switches): Add /ALL_BACK_END_WARNINGS.
	Add qualifiers for gnatmetric coupling options
	Add note that -gnata enables all checks
	Add entries [NO]PARAMETER_ORDER for -gnatw.p[P]
	Fix inconsistency for VMS qualifier for the gnatpp '-rnb' option
	New warning flag -gnatw.e

	* usage.adb: Add entries for -gnaty+ -gnaty- -gnatyy
	Add entry for -gnatyN (forgotten before)
	Line for new warning switch -gnatw.p
	New warning flag -gnatw.e

	* gnat_ugn.texi: Add documentation fpr project file switch -aP
	Document -gnaty - + y
	Replace occurences of "package specification" with "package spec"
	Define preprocessing symbols in documentation of gnatprep
	Clarify reason for distinguishing overflow checking
	Add documentation for project-aware tool switches -eL and --subdirs=
	Complete list of configuration pragmas
	Specify that, even when gnatmake switch -x is used, mains on the command
	line need to be sources of project files.
	Editing of gnatcheck/gnatmetric doc.
	Add documentation for -gnatw.p/-gnatw.P
	Add missing documentation for -fno-inline-functions.
	Add documentation for -gnatw.e

	* gnat_rm.texi: Add documentation for No_Default_Initialization
	Replace occurences of "package specification" with "package spec"
	Document use of * in Warnings Off string
	Update documentation of alignment/component clauses.
	Add documentation for Invalid_Value
	Document new consistency rule for Optimize_Alignment
	Add documentation for Precondition and Postcondition pragmas
	Add documentation for Check and Check_Policy pragmas
	Document new Enum_Val attribute
	Remove requirement for static string in pragma Assert
	Add documentation on GNAT.Time_Stamp

	* ug_words: add entry for -gnatVe
	Add entries for -gnat.p[P] /WARNINGS=[NO]PARAMETER_ORDER
	Add entry for -gnatw.e

	* debug.adb: Add missing documentation for d.a flag
	Document new -gnatd.a switch.
	Add documentation for new gnatmake debug switch -df

2008-04-08  Thomas Quinot  <quinot@adacore.com>

	* gen-soccon.c: Bump year in copyright notices.

	* g-soccon-vxworks.ads: Add new constant IP_PKTINFO

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

	* ctrl_c.c: Improve handling of ctrl-c on LynxOS and Windows.
	Minor reformatting.

2008-04-08  Robert Dewar  <dewar@adacore.com>
	    Bob Duff  <duff@adacore.com>

	* impunit.adb: Add Interfaces.Java.JNI, System.Strings.Stream_Ops,
	Ada.Calendar.Conversions, Ada.Dispatching.EDF, GNAT.Time_Stamp

	* s-intman-mingw.adb: Minor comment fix -- spell 'explicitly' correctly

	* g-trasym.adb: Minor comment fix -- spell 'explicitly' correctly

	* g-trasym.ads: Minor comment improvements

	* s-stalib.adb: Minor comment fix -- spell 'explicitly' correctly

	* a-sequio.ads, a-direio.ads: improve message for tagged type

	* a-strunb.ads: Minor reformatting

	* a-tifiio.adb: Minor reformatting

	* atree.adb (Fix_Parents): Use clearer names for formals
	Cleanup and simplify code
	Use named notation in calls

	* exp_fixd.adb (Do_Multiply_Fixed_Universal): Use named notation in
	confusing calls

	* uintp.adb: Used named notation for some confusing calls

	* bindusg.adb: Minor change in one line of output

	* cstand.adb: Minor reformatting of src representation of Standard

	* a-assert.ads: Add comment.

	* g-decstr.adb: Fix bad indentation

	* expander.ads, expander.adb: Code clean up.

	* sem_dist.ads: Minor comment improvement

	* sem_type.adb, g-dirope.ads, g-exctra.ads, s-valwch.adb,
	s-wchstw.adb, targparm.ads, widechar.adb: Minor reformatting

	* i-cstrin.adb: Fix casing error in formal parameter name in call

2008-04-08  Ed Schonberg  <schonberg@adacore.com>

	* binde.adb (Gather_All_Links, Gather_Dependencies): units that are
	mentioned in limited_with_clauses to do create semantic dependencies
	even though they appear in the ali file.

2008-04-08  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.ads, g-comlin.adb (Expansion): Remove unreachable return
	statement.
	(Get_Configuration): New subprogram.

	* prj-pp.ads, prj-pp.adb (Pretty_Print): new parameters Id and Id_Tree
	These optional parameters help preserve the casing of the project's name
	when pretty-printing.

2008-04-08  Jerome Lambourg  <lambourg@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* bindgen.adb (Gen_Adainit_Ada): If the main program is a CIL function,
	then use __gnat_set_exit_status to report the returned status code.

	* comperr.adb (Compiler_Abort): Convert most bug boxes into clean error
	messages on .NET, since some constructs of the language are not
	properly supported.

	* gnatlink.adb (Gnatlink): In case the command line is too long for the
	.NET linker, gnatlink now concatenate all .il files and pass this to
	ilasm.

2008-04-07  Aurelien Jarno  <aurelien@aurel32.net>
	    Xavier Grave  <grave@ipno.in2p3.fr>

	* Makefile.in: Add make ifeq define for mips/mipsel support.
	* g-soccon-linux-mips.ads, system-linux-mipsel.ads,
	system-linux-mips.ads: New files.

2008-04-07  Aurelien Jarno  <aurelien@aurel32.net>

	* sysdep.c: add __GLIBC__ to the #ifdef preprocessor macros to
	detect systems using GNU libc.
	* gsocket.h: ditto.
	* socket.c: ditto.
	* adaint.c: ditto.
	* link.c: ditto.

2008-04-07  Aurelien Jarno  <aurelien@aurel32.net>

	* s-osinte-linux-kfreebsd.ads (SC_NPROCESSORS_ONLN): New
	constant constant for sysconf call.
	(bit_field): New packed boolean type used by cpu_set_t.
	(cpu_set_t): New type corresponding to the C type with
	the same name. Note that on the Ada side we use a bit
	field array for the affinity mask. There is not need
	for the C macro for setting individual bit.
	(pthread_setaffinity_np): New imported routine.
	* Makefile.in: Use s-tasinf-linux.ads and s-tasinf-linux.adb
	on GNU/kFreeBSD.

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

	* utils2.c (build_binary_op): Fold ARRAY_REF and ARRAY_RANGE_REF too.

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

	* gigi.h (create_subprog_type): Remove returns_with_dsp parameter.
	* decl.c (gnat_to_gnu_entity): Adjust for above new prototype.
	* utils.c (create_subprog_type): Remove returns_with_dsp parameter.
	* trans.c (gnat_to_gnu) <N_Return_Statement>: Remove code dealing with
	Return by Depressed Stack Pointer.

2008-04-06  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (is_variable_size): Do not unconditionally return false
	on non-strict alignment platforms.

2008-04-06  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (rest_of_type_decl_compilation_no_defer): New local function
	used to process all the variants of the specified type.
	(gnat_to_gnu_entity): Invoke rest_of_type_decl_compilation for enumeral
	types too.  Call rest_of_type_decl_compilation_no_defer if undeferring.
	(rest_of_type_decl_compilation): Likewise.
	* utils.c (gnat_pushdecl): Propagate the name to all variants of type.

2008-04-03  Paolo Bonzini  <bonzini@gnu.org>

	* gigi.h (insert_block): Kill.
	* utils.c (insert_block): Kill.

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

	* decl.c (gnat_to_gnu_entity) <object>: For a constant object whose
	type has self-referential size, get the size from the initializing
	expression directly if it is also a constant whose nominal type
	has self-referential size.

2008-04-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR ada/33688
	* g-soccon-darwin.ads: Define new constant IP_PKTINFO.

	PR ada/33857
	* env.c: Always include crt_externs.h if __APPLE__ is defined.
	(__gnat_setenv): Use setenv instead of putenv if __APPLE__ is defined.

2008-04-01  Andreas Jaeger  <aj@suse.de>

	* g-soccon-linux-ppc.ads: Add new constants SO_REUSEPORT and
	IP_PKTINFO.

2008-03-31  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* g-table.adb, g-tasloc.adb, g-traceb.ads,
	g-trasym.adb, g-utf_32.adb, gen-soccon.c, gigi.h, gmem.c,
	gnatbind.adb, gnatchop.adb, gnatcmd.adb,
	gnatcmd.ads, gnatdll.adb, gnatfind.adb,
	gnatlink.adb, gnatmem.adb, gprep.adb,
	i-cstrea-vms.adb, i-cstrin.adb, i-pacdec.ads,
	i-vxwork.ads, impunit.adb, init.c, initialize.c, inline.adb,
	layout.adb, lib-writ.adb, lib-writ.ads, lib-xref.adb,
	lib-xref.ads, lib.adb, link.c, live.ads,
	make.adb, makegpr.adb, makeutl.adb, math_lib.adb,
	mdll-utl.adb, mdll.ads, memroot.adb, memroot.ads,
	misc.c, mlib-prj.adb, mlib-tgt-hpux.adb,
	mlib-tgt-linux.adb, mlib-tgt-tru64.adb, mlib-tgt.ads,
	namet.adb, namet.h, nlists.adb, nlists.ads,
	nlists.h, opt.ads, osint-b.ads, osint-c.adb,
	osint-c.ads, osint.adb, osint.ads, output.ads,
	par-ch10.adb, par-ch12.adb, par-ch2.adb, par-ch3.adb,
	par-ch4.adb, par-ch5.adb, par-ch6.adb, par-ch9.adb,
	par-endh.adb, par-labl.adb, par-prag.adb,
	par-sync.adb, par-tchk.adb, par-util.adb,
	par.adb, prep.adb, prep.ads, prepcomp.adb, prj-attr.ads,
	prj-dect.adb, prj-env.adb, prj-ext.adb, prj-nmsc.adb,
	prj-nmsc.ads, prj-pp.adb, prj-proc.adb,
	prj-strt.ads, prj-tree.ads, prj.adb, prj.ads: Fix comment typos.

2008-03-31  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <object>: Do not force a non-null
	size if it has overflowed.

2008-03-31  Olivier Hainque  <hainque@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* utils2.c (find_common_type): Document assumption on t1/t2 vs
	lhs/rhs. Force use of lhs type if smaller, whatever the modes.

2008-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* a-textio.ads, a-witeio.ads, a-ztexio.ads, ali.ads,
	einfo.ads, erroutc.adb, erroutc.ads, exp_attr.adb,
	exp_imgv.adb, exp_intr.adb, exp_pakd.adb,
	exp_pakd.ads, exp_prag.adb, exp_smem.adb,
	exp_tss.ads, exp_util.adb, exp_util.ads,
	exp_vfpt.adb, freeze.adb, freeze.ads,
	frontend.adb, g-alleve.adb, g-altcon.adb,
	g-altive.ads, g-alveop.ads, g-alvevi.ads,
	g-arrspl.adb, g-busorg.ads, g-calend.adb,
	g-calend.ads, g-casuti.ads, g-cgideb.adb,
	g-comlin.adb, g-comlin.ads, g-curexc.ads,
	g-debpoo.adb, g-debpoo.ads, g-decstr.adb,
	g-dirope.adb, g-dirope.ads, g-dynhta.ads,
	g-dyntab.adb, g-encstr.ads, g-excact.ads,
	g-except.ads, g-expect.ads, g-heasor.adb,
	g-hesora.adb, g-hesorg.adb, g-htable.ads,
	g-locfil.ads, g-md5.adb, g-md5.ads,
	g-memdum.ads, g-moreex.ads, g-os_lib.adb,
	g-pehage.adb, g-pehage.ads, g-regexp.adb,
	g-regexp.ads, g-regpat.adb, g-regpat.ads,
	g-soccon-aix.ads, g-soccon-darwin.ads,
	g-soccon-freebsd.ads, g-soccon-hpux-ia64.ads,
	g-soccon-hpux.ads, g-soccon-irix.ads,
	g-soccon-linux-64.ads, g-soccon-linux-ppc.ads,
	g-soccon-linux-x86.ads, g-soccon-lynxos.ads,
	g-soccon-mingw.ads, g-soccon-solaris-64.ads,
	g-soccon-solaris.ads, g-soccon-tru64.ads,
	g-soccon-vms.ads, g-soccon-vxworks.ads,
	g-soccon.ads, g-socket.adb, g-socket.ads,
	g-socthi-mingw.adb, g-socthi-vms.adb,
	g-socthi-vxworks.adb, g-soliop-mingw.ads,
	g-soliop-solaris.ads, g-soliop.ads, g-spipat.adb,
	g-spipat.ads, g-string.adb, g-stsifd-sockets.adb: Fix comment
	typos.

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

	* decl.c (gnat_to_gnu_entity) <E_Procedure>: Also set the public flag
	if the procedure is imported.

2008-03-26  Arnaud Charlet  <charlet@adacore.com>

	* adaint.c: Fix warnings.

2008-03-26  Arnaud Charlet  <charlet@adacore.com>

	* g-dirope.ads, g-dirope.adb: (Dir_Type_Value): Moved to spec.

2008-03-26  Arnaud Charlet  <charlet@adacore.com>

	* a-witeio.adb: Fix problem with Current_Output (introduce Self).
	Fix problem of status check for null file

2008-03-26  Arnaud Charlet  <charlet@adacore.com>

	* s-proinf-irix-athread.ads, s-vxwork-mips.ads,
	s-traces.ads, s-vxwork-arm.ads, s-vxwork-ppc.ads, s-vxwork-sparcv9.ads,
	s-tasinf-mingw.ads, s-tasinf-linux.ads, s-tasdeb.ads, mlib-tgt.ads,
	i-cstrin.ads, uintp.adb, g-catiio.adb, s-vmexta.ads,
	s-trafor-default.ads, s-vxwork-m68k.ads: Minor reformatting. Update
	comments.

2008-03-26  Thomas Quinot  <quinot@adacore.com>

	PR ada/33688
	* g-socket.ads, g-socket.adb (Options, Set_Socket_Option,
	Get_Socket_Option): Add support for Receive_Packet_Info.

	* g-soccon.ads, g-soccon-tru64.ads, g-soccon-aix.ads,
	g-soccon-irix.ads, g-soccon-hpux.ads, g-soccon-solaris.ads,
	g-soccon-vms.ads, g-soccon-mingw.ads, g-soccon-freebsd.ads,
	g-soccon-hpux-ia64.ads, g-soccon-solaris-64.ads, g-soccon-darwin.ads,
	g-soccon-lynxos.ads, g-soccon-linux-64.ads, g-soccon-linux-x86.ads: Add
	new constants SO_REUSEPORT and IP_PKTINFO

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* a-taster.adb, s-shasto.adb, s-soflin.adb, s-taasde.adb, s-taenca.adb,
	a-sytaco.adb, a-sytaco.ads, a-tasatt.adb, a-taside.adb,
	a-intnam-lynxos.ads, a-retide.adb, a-intnam-tru64.ads, a-intnam-aix.ads,
	a-intnam-irix.ads, a-intnam-hpux.ads, a-intnam-linux.ads,
	a-intnam-solaris.ads, a-caldel-vms.adb, a-intnam-vms.ads,
	a-excpol-abort.adb, a-intnam-mingw.ads, s-interr.adb, s-interr.ads,
	s-intman.ads, s-gloloc.adb, s-osinte-lynxos-3.ads,
	s-interr-sigaction.adb, s-osinte-hpux.ads, s-osinte-solaris-posix.ads,
	a-intnam-freebsd.ads, s-osinte-freebsd.ads, s-osinte-lynxos.ads,
	s-taspri-lynxos.ads, s-osinte-tru64.ads, s-osinte-tru64.ads,
	s-taspri-tru64.ads, s-osinte-aix.ads, s-osinte-irix.ads,
	s-osinte-hpux-dce.ads, s-taprop-hpux-dce.adb, s-taspri-hpux-dce.ads,
	s-osinte-linux.ads, s-osinte-dummy.ads, s-taprop-dummy.adb,
	s-taspri-dummy.ads, s-interr-dummy.adb, s-osinte-solaris.ads,
	s-osinte-mingw.ads, s-taprop-solaris.adb, s-taspri-solaris.ads,
	s-inmaop-vms.adb, s-interr-vms.adb, s-intman-vms.ads, s-osinte-vms.ads,
	s-osinte-vms.ads, s-taprop-vms.adb, s-taspri-vms.ads,
	s-taspri-mingw.ads, s-interr-vxworks.adb, s-inmaop-posix.adb,
	s-intman-vxworks.ads, s-osinte-vxworks.ads, s-osprim-vxworks.adb,
	s-taspri-vxworks.ads, s-taspri-posix.ads, a-caldel.adb, a-calend.adb,
	a-elchha.adb, a-dynpri.adb, a-except.adb, a-except.ads, a-interr.ads,
	a-textio.adb, a-tigeau.ads, atree.adb, s-taprob.adb, s-taprop.ads,
	s-tarest.adb, s-tarest.ads, s-tasini.adb, s-taskin.adb, s-taskin.ads,
	s-tasque.adb, s-tasren.adb, s-tasren.ads, s-tassta.adb, s-tassta.ads,
	s-tasuti.adb, s-tataat.adb, s-tataat.ads, s-tpoben.adb, s-tpoben.ads,
	s-tpobop.adb, s-tpobop.ads, s-tposen.adb, s-tposen.ads, s-valrea.adb,
	s-valuti.adb, a-intnam-darwin.ads, s-osinte-darwin.ads, s-solita.adb,
	a-ztinau.ads, s-osinte-linux-hppa.ads, a-except-2005.adb,
	a-except-2005.ads, a-rttiev.adb, s-osinte-vxworks6.ads, s-regexp.adb,
	s-tasloc.adb: Minor reformatting.
	Update comments.
	Remove "used for" sections from comments.

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* s-tpopsp-posix.adb, s-tpopsp-solaris.adb, s-tpopsp-posix-foreign.adb,
	s-tpopsp-lynxos.adb, s-tpopde-vms.ads, s-tpopde-vms.adb,
	s-tpopsp-vxworks.adb, s-casi16.adb, s-caun16.adb, s-inmaop.ads,
	s-tadeca.adb, s-tadeca.ads, s-tadert.adb, s-tadert.ads, s-tpinop.adb,
	s-tpinop.ads, s-tporft.adb, a-rbtgso.adb, a-crbtgo.ads, a-crbtgo.adb,
	a-crbtgk.ads, a-crbtgk.adb, a-ciorse.adb, a-cihama.ads, a-cihama.adb,
	a-cidlli.ads, a-cidlli.adb, a-chtgop.ads, a-chtgop.adb, a-cgcaso.ads,
	a-cgcaso.adb, a-cgaaso.adb, a-ciormu.adb, a-cihase.adb, a-swuwha.ads,
	a-rbtgso.ads, a-cgaaso.ads, a-cgaaso.ads, a-ciorma.adb, a-chtgke.ads,
	a-chtgke.adb, a-llfzti.ads, a-ztenau.adb, a-ztenau.ads, a-stzhas.ads,
	a-szbzha.ads, a-szbzha.adb, a-crdlli.ads, a-crdlli.ads, a-crdlli.adb,
	i-forbla-darwin.adb, i-forbla.ads, s-regexp.adb, a-nllrar.ads,
	a-nlrear.ads, a-nucoar.ads, a-nurear.ads, i-forlap.ads, s-gearop.adb,
	s-gearop.ads, s-gecobl.adb, s-gecobl.ads, s-gecola.adb, s-gecola.ads,
	s-gerebl.adb, s-gerela.ads, a-swuwha.adb, i-forbla-unimplemented.ads,
	double spaced if it fits on one line and otherwise single spaced.

2008-03-26  Arnaud Charlet  <charlet@adacore.com>

	* s-taprop-irix.adb, s-taprop-tru64.adb, s-taprop-lynxos.adb,
	s-taprop-linux.adb, s-taprop-mingw.adb, s-taprop-vxworks.adb,
	s-taprop-posix.adb (Create_Task): Do not attempt to set task priority
	or task info if the thread could not be created.

2008-03-26  Arnaud Charlet  <charlet@adacore.com>

	* gnatvsn.ads (Library_Version): Bump to 4.4.
	(Current_Year): Bump to 2008.

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* ali.ads, ali.adb (Optimize_Alignment_Setting): New field in ALI record

	* bcheck.adb (Check_Consistent_Optimize_Alignment): New procedure

	* debug.adb: Add debug flags d.r and d.v
	Add debug flag .T (Optimize_Alignment (Time))
	Add debug flag .S (Optimize_Alignment (Space))

	* freeze.adb (Freeze_Record_Type): Set OK_To_Reorder_Components
	depending on setting of relevant debug flags.
	Replace use of Warnings_Off by Has_Warnings_Off
	(Freeze_Entity): In circuit for warning on suspicious convention
	actuals, do not give warning if subprogram has same entity as formal
	type, or if subprogram does not come from source.
	(Freeze_Entity): Don't reset Is_Packed for fully rep speced record
	if Optimize_Alignment set to Space.

	* frontend.adb: Add call to Sem_Warn.Initialize
	Add call to Sem_Warn.Output_Unused_Warnings_Off_Warnings
	Reset Optimize_Alignment mode from debug switches .S and .T

	* layout.adb (Layout_Composite_Object): Rewritten for
	Optimize_Aligment pragma.

	* lib-writ.ads, lib-writ.adb: New Ox parameter for Optimize_Alignment
	mode.

	* opt.ads, opt.adb: (Optimize_Alignment): New global switch

	* par-prag.adb (N_Pragma): Chars field removed, use Chars
	(Pragma_Identifier (..  instead, adjustments throughout to accomodate
	this change. Add entry for pragma Optimize_Alignment

	* sem_prag.adb (N_Pragma): Chars field removed, use Chars
	(Pragma_Identifier (..
	instead, adjustments throughout to accomodate this change.
	(Process_Compile_Time_Warning_Or_Error): Use !! for generated msg
	(Favor_Top_Level): Use new function Is_Access_Subprogram_Type
	Add implementation of pragma Optimize_Alignment

2008-03-26  Vincent Celier  <celier@adacore.com>

	* a-szuzti.adb, a-swuwti.adb, a-suteio.adb (functions Get_Line):
	Improve memory usage to avoid use of stack.

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* a-teioed.ads: Correct value of Default_Fill

	* a-teioed.adb (Image): Use Fill_Character instead of '*' to fill

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* a-ztexio.adb, a-ztexio.ads, a-witeio.ads, a-witeio.adb: Fix problem
	with Current_Output (introduce Self).

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Ensure_Valid): Capture valid status if possible
	(eliminate checks)

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* stand.ads: Deal with reordering of package standard declarations

	* cstand.adb: Put package Standard declarations in proper order

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (N_Pragma): Chars field removed, use Chars
	(Pragma_Identifier (.. instead.
	(OK_To_Reorder_Components): New flag
	(Has_Entries): Code cleanup.
	(Warnings_Off_Used): New flag
	(Warnings_Off_Used_Unmodified): New flag
	(Warnings_Off_Used_Unreferenced): New flag
	(Has_Warnings_Off): New function
	(Has_Unmodified): New function
	(Has_Unreferenced): New function
	(Is_Trivial_Subprogram): New flag
	(Is_Static_Dispatch_Table_Entity): New attribute.
	Change name Access_Subprogram_Type_Kind to Access_Subprogram_Kind
	(more consistent with other similar names)
	(Access_Subprogram_Type): New classification function

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* errout.ads: Document new !! insertion sequence

	* errout.adb (N_Pragma): Chars field removed, use Chars
	(Pragma_Identifier (..  instead.
	Replace use of Warnings_Off by Has_Warnings_Off
	(Error_Msg_Internal): Don't delete warning ending in !!

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* par.adb (Check_No_Right_Paren): Removed no longer used

	* par-ch10.adb (N_Pragma): Chars field removed, use Chars
	(Pragma_Identifier (..  instead.

	* par-ch10.adb (P_Subunit): Improvement in error recovery and message

	* par-tchk.adb, par-ch5.adb, par-ch6.adb, par-ch3.adb,
	par-ch4.adb: Minor improvements in error recovery and messages.

	* erroutc.adb (Test_Style_Warning_Serious_Msg): Treat style msgs as
	non-serious

	* par-ch9.adb: Minor improvements in error recovery and messages
	(P_Protected): Better error recovery for "protected type x;"

	* par-util.adb: Minor improvements in error recovery and messages
	(Check_No_Right_Paren): Removed no longer used

2008-03-26  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Replace_Type): When checking for self-reference, verify
	that the prefix of an attribute is the type of the aggregate being
	expanded.

2008-03-26  Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (N_Pragma): Chars field removed.
	(Expand_N_Attribute_Reference): If the designated type associated with
	attribute 'Unrestricted_Access is a subprogram entity then replace it
	by an E_Subprogram_Type itype.
	Implement attribute Old

	* sem_attr.ads (Attribute_Class_Array): Move to snames.ads

	* sem_attr.adb (Build_Access_Subprogram_Itype): Add documentation.
	Replace call to
	New_Internal_Entity by call to Create_Itype to centralize calls
	building itypes, ad propagate the convention of the designated
	subprogram. In addition, disable the machinery cleaning constant
	indications from all entities in current scope when 'Unrestricted_Access
	corresponds with a node initializing a dispatch table slot.
	(Analyze_Attribute): Parameterless attributes returning a string or a
	type will not be called with improper arguments, so we can remove junk
	code that was dealing with this case.
	Implement attribute Old

	* snames.ads, snames.h, snames.adb: Add entries for attribute Old
	Add entry for pragma Optimize_Alignment
	New standard names Sync and Synchronize

2008-03-26  Robert Dewar  <dewar@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* exp_ch11.adb (Expand_At_End_Handler): Set From_At_End flag on raise
	stmt.
	(No_Exception_Propagation_Active): New function.
	(Expand_Exception_Handlers): Use No_Exception_Propagation_Active.
	Update comments, and review all uses of No_Exception_Propagation, which
	are now correct and in sync with what gigi expects.

	* restrict.ads, restrict.adb (No_Exception_Propagation_Active): New
	function.
	(Expand_Exception_Handlers): Use No_Exception_Propagation_Active.
	Update comments, and review all uses of No_Exception_Propagation, which
	are now correct and in sync with what gigi expects.

2008-03-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Definition): If the access type is the return
	result of a protected function, create an itype reference for it
	because usage will be in an inner scope from the point of declaration.
	(Build_Derived_Record_Type): Inherit Reverse_Bit_Order and
	OK_To_Reorder_Components.
	(Make_Index): If an overloaded range includes a universal integer
	interpretation, resolve to Standard.Integer.
	(Analyze_Subtype_Indication): Copy Convention to subtype
	(Check_Abstract_Interfaces): Complete semantic checks on the legality of
	limited an synchronized progenitors in type declaration and private
	extension declarations.

	* exp_ch13.adb (Expand_N_Freeze_Entity): If the scope of the entity is a
	protected subprogram body, determine proper scope from subprogram
	declaration.

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Concat): Remove special tests for
	No_Run_Time_Mode

2008-03-26  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch5.adb (Expand_N_Extended_Return_Statement): Suppress generation
	of a heap allocator for a limited unconstrained function return when
	resstriction No_Allocators is active.
	(Analyze_Allocator): The restriction No_Allocators is now only checked
	on allocators that have Comes_From_Source set, as per RM-H.4(7).

	* sem_ch4.adb (Expand_N_Extended_Return_Statement): Suppress generation
	of a heap allocator for a limited unconstrained function return when
	resstriction No_Allocators is active.
	(Analyze_Allocator): The restriction No_Allocators is now only checked
	on allocators that have Comes_From_Source set, as per RM-H.4(7).
	(Has_Fixed_Op):  If the name in a function call is Standard."*" and the
	operands are fixed-point types, the universal_fixed predefined operation
	is used, regardless of whether the operand type (s) have a primitive
	operation of the same name.

2008-03-26  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_DT, Make_Secondary_DT): Set attribute
	Is_Static_Dispatch_Table
	(Build_Dispatch_Tables): Replace calls to Exchange_Entities() by calls
	to Exchange_Declarations to exchange the private and full-view. Bug
	found working in this issue.
	(Expand_Dispatching_Call): Propagate the convention of the subprogram
	to the subprogram pointer type.
	(Make_Secondary_DT): Replace generation of Prim'Address by
	Address (Prim'Unrestricted_Access)
	(Make_DT): Replace generation of Prim'Address by
	Address (Prim'Unrestricted_Access)
	(Make_Disp_*_Bodies): When compiling for a restricted profile, use
	simple call form for single entry.
	(Make_DT): Handle new contents of Access_Disp_Table (access to dispatch
	tables of predefined primitives).
	(Make_Secondary_DT): Add support to handle access to dispatch tables of
	predefined primitives.
	(Make_Tags): Add entities to Access_Dispatch_Table associated with
	access to dispatch tables containing predefined primitives.

	* exp_ch6.adb (N_Pragma): Chars field removed, use Chars
	(Pragma_Identifier (..  instead, adjustments throughout to accomodate
	this change.
	(Register_Predefined_DT_Entry): Updated to handle the new contents
	of attribute Access_Disp_Table (pointers to dispatch tables containing
	predefined primitives).

	* exp_util.ads, exp_util.adb (Corresponding_Runtime_Package): New
	subprogram.
	(Find_Interface_ADT): Updated to skip the new contents of attribute
	Access_Dispatch_Table (pointers to dispatch tables containing predefined
	primitives).

	* sem_util.adb (Has_Abstract_Interfaces): Add missing support for
	concurrent types.
	(Set_Convention): Use new function Is_Access_Subprogram_Type
	(Collect_Interfaces_Info): Updated to skip the new contents of attribute
	Access_Dispatch_Table (pointers to dispatch tables containing predefined
	primitives).

	* exp_atag.ads, exp_atag.adb (Build_Inherit_Predefined_Prims): Improve
	expanded code avoiding calls to Build_Predef_Prims.
	(Build_Set_Predefined_Prim_Op_Address): Improve expanded code avoiding
	call to Build_Get_Predefined_Prim_Op_Address.

2008-03-26  Javier Miranda  <miranda@adacore.com>

	* exp_ch7.adb (Make_Clean): Code cleanup using the new centralized
	subprogram Corresponding_Runtime_Package to know the runtime package
	that will provide support to a given protected type.

	* exp_ch9.adb (Add_Private_Declarations,
	Build_Protected_Subprogram_Call,
	Build_Protected_Entry, Build_Simple_Entry_Call,
	Expand_N_Protected_Body, Expand_N_Protected_Type_Declaration,
	Expand_N_Timed_Entry_Call, Make_Initialize_Protection): Code
	cleanup using the new centralized subprogram Corresponding_Runtime
	Package to know the runtime package that provides support to
	a given protected type.

2008-03-26  Ed Schonberg  <schonberg@adacore.com>

	* exp_pakd.adb (Expand_Bit_Packed_Element_Set): If the component
	assignment is within the initialization procedure for a packed array,
	and Initialize_Scalars is enabled, compile right-hand side with checks
	off, because the value is purposely out of range.

2008-03-26  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Add processing for GNAT SYNC

	* vms_conv.ads: (Command_Type): Add command Sync

	* vms_conv.adb (Initialize): Add Command_List data for new command Sync

	* vms_data.ads: Add entries for -gnatw.w
	Add qualifier for gnatstub --header-file option
	Add switches for GNAT SYNC

	* prj-attr.ads, prj-attr.adb: Add new package Synchronize for GNAT SYNC
	(Add_Package_Name): New procedure
	(Package_Name_List): New function
	(Initialize): Add known package names to the list
	(Register_New_Package): Add the new package name to the list

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* g-pehage.adb, g-regist.adb, g-spipat.ads, g-spipat.adb,
	s-asthan.adb, s-parint.adb, s-rpc.adb, s-stchop.adb: Replace
	Raise_Exception by "raise with" construct.

2008-03-26  Pascal Obry  <obry@adacore.com>

	* Makefile.in: Add proper GNAT.Serial_Communications implementation on
	supported platforms.

	* Makefile.rtl: Add g-sercom.o.

	* impunit.adb: Add g-sercom.adb.

	* s-crtl.ads (open): New routine.
	(close): Likewise.
	(write): Likewise.

	* s-osinte-mingw.ads (BYTE): New type.
	(CHAR): Likewise.
	(OVERLAPPED): Likewise.
	(GENERIC_READ): New constant.
	(GENERIC_WRITE): Likewise.
	(OPEN_EXISTING): Likewise.
	(PSECURITY_ATTRIBUTES): Removed this type, use anonymous access
	type instead.
	(CreateFile): New routine.
	(WriteFile): Likewise.
	(ReadFile): Likewise.
	(CloseHandle): Move next to the other file oriented routines.

	* g-sercom.ads: New unit.

	* g-sercom.adb: Default implementation, calls to this unit will raise
	a program error exception.

	* g-sercom-mingw.adb, g-sercom-linux.adb: Windows and
	GNU/Linux implementations.

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* itypes.adb (Create_Itype): Use new name Access_Subprogram_Kind

	* sem_ch13.adb (Validate_Unchecked_Conversion): Give warning for
	unchecked conversion for different conventions only for subprogram
	pointers or on VMS.

2008-03-26  Vincent Celier  <celier@adacore.com>

	* osint-c.adb (Set_Library_Info_Name): Use canonical case file names
	to check if the specified object file is correct.

2008-03-26  Thomas Quinot  <quinot@adacore.com>

	* sem_cat.adb (Validate_RACW_Primitives): Do not rely on
	Comes_From_Source to exclude primitives from being checked. We want to
	exclude predefined primitives only, so use the appropriate specific
	predicate. Also, flag a formal parameter of an anonymous
	access-to-subprogram type as illegal for a primitive operation of a
	remote access to class-wide type.

2008-03-26  Vincent Celier  <celier@adacore.com>

	* prj-dect.adb (Parse_Package_Declaration): When a package name is not
	known, check if it may be a missspelling of a known package name. In
	not verbose, not mode, issue warnings only if the package name is a
	possible misspelling.
	In verbose mode, always issue a warning for a not known package name,
	plus a warning if the name is a misspelling of a known package name.

	* prj-part.adb (Post_Parse_Context_Clause): Modify so that only non
	limited withs or limited withs are parse during one call.
	(Parse_Single_Project): Post parse context clause in two passes: non
	limited withs before current project and limited withs after current
	project.

	* prj-proc.adb (Imported_Or_Extended_Project_From): Returns an extended
	project with the name With_Name, even if it is only extended indirectly.
	(Recursive_Process): Process projects in order: first single withs, then
	current project, then limited withs.

	* prj-tree.adb (Imported_Or_Extended_Project_Of): Returns an extended
	project with the name With_Name, even if it is only extended indirectly.

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* scn.adb (Initialize_Scanner): Format messages belong on standard error

2008-03-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_Compilation_Unit): if a unit in the context is
	a generic subprogram that is imported, do not attempt to compile
	non-existent body.

	* sem_ch12.adb (Instantiate_Subprogram_Body): if the generic is
	imported, do not generate a raise_program_error for the non-existent
	body.
	(Pre_Analyze_Actuals): If an error is detected during pre-analysis,
	perform minimal name resolution on the generic to avoid spurious
	warnings.
	(Find_Actual_Type): the designated type of the actual in a child unit
	may be declared in a parent unit without being an actual.

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* sem_ch11.adb: Fix No_Exception_Restriction violation for SJLJ
	* sinfo.ads, sinfo.adb (From_At_End): New flag

2008-03-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body): Remove spurious check on
	operations that have an interface parameter.
	(Analyze_Subprogram_Body): Set Is_Trivial_Subprogram flag
	Don't treat No_Return call as raise.

	* sem_disp.adb (Check_Dispatching_Operations): apply check for
	non-primitive interface primitives to access parameters, not to all
	parameters of an access type.

2008-03-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Install_Parent_Private_Declarations): If the private
	declarations of a parent unit are made visible when compiling a child
	instance, the parent is not a hidden open scope, even though it may
	contain other pending instance.

	* sem_ch8.adb (Restore_Scope_Stack): If an entry on the stack is a
	hidden open scope for some child instance, it does affect the
	visibility status of other stach entries.
	(Analyze_Object_Renaming): Check that a class-wide object cannot be
	renamed as an object of a specific type.

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Check_Infinite_Recursion): Diagnose definite infinite
	recursion and raise SE directly.
	(Resolve_Actuals): Reset Never_Set_In_Source if warnings off is
	set for formal type for IN mode parameter.

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* sem_warn.ads, sem_warn.adb (Warnings_Off_Pragmas): New table
	(Initialize): New procedure
	(Output_Warnings_Off_Warnings): New procedure
	(Check_References): Suppress certain msgs if Is_Trivial_Subprogram
	(Output_Non_Modifed_In_Out_Warnings): Ditto
	(Warn_On_Unreferenced_Entity): Ditto

2008-03-26  Vincent Celier  <celier@adacore.com>

	* a-direct.adb (Start_Search): Raise Use_Error if the directory is not
	readable.

2008-03-26  Matthew Heaney  <heaney@adacore.com>

	* a-ciorse.ads, a-cidlli.ads, a-cdlili.ads, a-cihase.ads, a-cohase.ads,
	a-ciorma.ads, a-coorma.ads, a-ciormu.ads, a-coormu.ads, a-coorse.ads:
	Marked with clauses as private, and controlled operations as overriding

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* g-byorma.adb (Read_BOM): Reorder tests so that UTF_32 is recognized

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* back_end.adb, back_end.ads: Minor reformatting

	* bindgen.adb: Minor clarification of comments

	* fname.ads: Minor comment fixes

	* g-altive.ads, g-catiio.ads, g-trasym.ads, prj.ads,
	prj-nmsc.adb, sem_aggr.adb: Minor reformatting

	* xeinfo.adb, xnmake.adb, xsinfo.adb, xtreeprs.adb,
	xsnames.adb: Remove warnings off pragma no longer needed

	* a-catizo.ads, a-calari.ads, a-calfor.adb,
	a-calfor.ads: Fix header.

2008-03-26  Tristan Gingold  <gingold@adacore.com>

	* init.c: Do not adjust pc for HPARITH on alpha/vms.

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* lib-xref.adb: (OK_To_Set_Reference): New function
	(Generate_Reference): Don't set referenced from occurrence in Warnings,
	Unmodified, or Unreferenced pragma

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* alloc.ads: Add entries for Warnings_Off_Pragmas table

2008-03-26  GNAT Script  <nobody@adacore.com>

	* Make-lang.in: Makefile automatically updated

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* tbuild.ads, tbuild.adb, trans.c, sprint.adb, exp_prag.adb, decl.c,
	par-ch2.adb, sem_elab.adb, sem_util.ads (N_Pragma): Chars field
	removed, use Chars (Pragma_Identifier (..  instead, adjustments
	throughout to accomodate this change.

	* s-pooglo.ads, s-pooloc.ads: Minor comment updates

	* exp_dbug.adb: Use Sem_Util.Set_Debug_Info_Needed (not
	Einfo.Set_Needs_Debug_Info)

2008-03-26  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add documentation for -gnatw.w/-gnatw.W
	Add description for the new gnatstub option '--header-file'
	clarification of -gnatwz/-gnatwZ
	Add a "Irix-Specific Considerations" section to document the need to
	set LD_LIBRARY_PATH when using the default shared runtime library.
	Added documentation for both gcov and gprof.

	* gnat_rm.texi: Document that pragma Compile_Time_Warning generates
	messages that are not suppressed when clients are compiled.
	Add documentation of s-pooglo s-pooloc
	Document the new GNAT.Serial_Communications API.
	Add documentation for 'Old attribute
	Add description of pragma Optimize_Alignment

	* ug_words: Add entries for -gnatw.w -gnatw.W

	* usage.adb: Add line for -gnatw.w (warn on warnings off)

2008-03-25  Eric Botcazou  <ebotcazou@adacore.com>

	Revert
	2008-03-05  Eric Botcazou  <ebotcazou@adacore.com>
	PR ada/35186
	* decl.c (maybe_pad_type): Avoid padding an integral type when
	bumping its alignment is sufficient.

2008-03-25  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch6.adb, exp_disp.adb: Update copyright notice.
	Fix wrong formatting (lines too long)

2008-03-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* 9drpc.adb, a-caldel-vms.adb, a-caldel.adb,
	a-calend-vms.adb, a-calend.adb, a-calend.ads,
	a-calfor.adb, a-chahan.ads, a-chtgke.adb,
	a-cihama.ads, a-ciorse.adb, a-clrefi.ads,
	a-cohama.ads, a-comlin.ads, a-coorse.adb,
	a-crbtgk.adb, a-direct.adb, a-except-2005.adb,
	a-except-2005.ads, a-except.adb, a-except.ads,
	a-exexda.adb, a-exexpr-gcc.adb, a-exexpr.adb,
	a-exextr.adb, a-filico.ads, a-finali.ads,
	a-intnam-aix.ads, a-intnam-solaris.ads, a-ngcefu.adb,
	a-ngelfu.adb, a-numaux-darwin.adb, a-numeri.ads,
	a-sequio.ads, a-strbou.ads, a-strfix.adb,
	checks.adb, exp_ch3.adb, exp_ch4.adb,
	exp_ch4.ads, exp_ch5.adb, exp_ch6.adb,
	exp_ch6.ads, exp_ch7.adb, exp_ch7.ads,
	exp_ch9.adb, exp_ch9.ads, exp_dbug.adb,
	exp_dbug.ads, exp_disp.adb, exp_dist.adb,
	exp_dist.ads, exp_fixd.adb, exp_fixd.ads: Fix comment typos.

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

	* s-tpopsp-posix.adb, s-tpopsp-solaris.adb, s-tpopsp-posix-foreign.adb,
	s-tpopsp-lynxos.adb, s-tpopde-vms.ads, s-tpopde-vms.adb,
	s-tpopsp-vxworks.adb, s-casi16.adb, s-caun16.adb, s-inmaop.ads,
	s-tadeca.adb, s-tadeca.ads, s-tadert.adb, s-tadert.ads, s-tpinop.adb,
	s-tpinop.ads, s-tporft.adb, a-rbtgso.adb, a-crbtgo.ads, a-crbtgo.adb,
	a-crbtgk.ads, a-crbtgk.adb, a-ciorse.adb, a-cihama.ads, a-cihama.adb,
	a-cidlli.ads, a-cidlli.adb, a-chtgop.ads, a-chtgop.adb, a-cgcaso.ads,
	a-cgcaso.adb, a-cgaaso.adb, a-ciormu.adb, a-cihase.adb, a-swuwha.ads,
	a-rbtgso.ads, a-cgaaso.ads, a-cgaaso.ads, a-ciorma.adb, a-chtgke.ads,
	a-chtgke.adb, a-llfzti.ads, a-ztenau.adb, a-ztenau.ads, a-stzhas.ads,
	a-szbzha.ads, a-szbzha.adb, a-crdlli.ads, a-crdlli.ads, a-crdlli.adb,
	i-forbla-darwin.adb, i-forbla.ads, s-regexp.adb, a-nllrar.ads,
	a-nlrear.ads, a-nucoar.ads, a-nurear.ads, i-forlap.ads, s-gearop.adb,
	s-gearop.ads, s-gecobl.adb, s-gecobl.ads, s-gecola.adb, s-gecola.ads,
	s-gerebl.adb, s-gerela.ads, a-swuwha.adb, i-forbla-unimplemented.ads,
	double spaced if it fits on one line and otherwise single spaced.

2008-03-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	PR documentation/15479
	* Make-lang.in (doc/gnat_ugn.texi) Renamed from ...
	(doc/gnat_ugn_unw.texi): ... this, and adjusted.
	(doc/gnat_ugn.info): Renamed from ...
	(doc/gnat_ugn_unw.info): ... this.
	(doc/gnat_ugn.dvi): Renamed from ...
	(doc/gnat_ugn_unw.dvi): ... this.
	(doc/gnat_ugn.pdf): Renamed from ...
	(doc/gnat_ugn_unw.pdf): ... this.
	(ADA_INFOFILES, ADA_PDFFILES, ada.install-info, ada.dvi):
	Adjusted.
	* gnat_ugn.texi (FILE): Hard-code gnat_ugn; set filename
	unconditionally to gnat_ugn.info.  Fix cross references to the
	GNAT Reference Manual.  Convert links to the GCC, GDB, Emacs,
	and GNU make manuals to be proper texinfo links.
	* gnat_rm.texi: Fix cross references to the GNAT User's Guide.

2008-03-21  Olivier Hainque  <hainque@adacore.com>

	* trans.c (Attribute_to_gnu) <'length>: Compute as (hb < lb)
	? 0 : hb - lb + 1 instead of max (hb - lb + 1, 0).

2008-03-21  Eric Botcazou  <ebotcazou@adacore.com>

	* trans.c (addressable_p): Add notes on addressability issues.

2008-03-21  Olivier Hainque  <hainque@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* trans.c (addressable_p): Accept COND_EXPR when both arms
	are addressable.
	(gnat_gimplify_expr): Let the gimplifier handle &COND_EXPR.
	(call_to_gnu): Do not use name reference in the error message
	for a misaligned by_reference_parameter. The actual may be a
	general expression.

2008-03-18  Paolo Bonzini  <bonzini@gnu.org>

	* misc.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Delete.

2008-03-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* gnat_rm.texi (Implementation Defined Characteristics)
	(Wide_Text_IO, Wide_Wide_Text_IO): Add @var annotations where
	appropriate.
	* gnat_ugn.texi (Wide Character Encodings, Switches for gnatbind)
	(Switches for gnatchop, Installing a library): Likewise.

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

	* trans.c (emit_range_check): Do not emit the check if the base type
	of the expression is the type against which its range must be checked.

2008-03-08  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (maybe_pad_type): Use value_factor_p.

2008-03-08  Eric Botcazou  <ebotcazou@adacore.com>

	* lang.opt (nostdlib): Move around.
	* misc.c (gnat_handle_option): Fix formatting.
	(gnat_dwarf_name): Move around.
	* trans.c (Case_Statement_to_gnu): Fix formatting.
	(gnat_to_gnu): Likewise.
	* utils.c (aggregate_type_contains_array_p): Likewise.
	(create_subprog_decl): Likewise.

2008-03-08  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>: Do not
	bother propagating the TYPE_USER_ALIGN flag when creating a JM type.

2008-03-08  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <E_Record_Type>: Do not force
	BIGGEST_ALIGNMENT when capping the alignment of records with
	strict alignment and size clause.

2008-03-08  Eric Botcazou  <ebotcazou@adacore.com>

	* lang-specs.h: Pass -gnatwa if -Wall is passed.
	* misc.c (gnat_handle_option) <OPT_Wall>: Expand into -Wunused
	and -Wuninitialized.
	(gnat_post_options): Clear warn_unused_parameter.

2008-03-08  Eric Botcazou  <ebotcazou@adacore.com>

	* utils.c (finish_record_type): Clear DECL_BIT_FIELD on sufficiently
	aligned bit-fields, bumping the alignment of the record type if deemed
	profitable.
	(value_factor_p): Return false instead of 0.

2008-03-08  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>: Add support
	for scalar types with small alignment.

2008-03-08  Eric Botcazou  <ebotcazou@adacore.com>

	* trans.c (Loop_Statement_to_gnu): Set the SLOC of the loop label
	from that of the front-end's end label.
	(gnat_gimplify_stmt) <LOOP_STMT>: Set the SLOC of the backward goto
	from that of the loop label.

2008-03-07  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Subtype>: Add
	comment for the packed array type case.
	* utils.c (build_template): Use a loop to strip padding or
	containing records for justified modular types.

2008-03-07  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity): Issue a warning on suspiciously
	large alignments specified for types.
	(validate_alignment): Minor cleanup.

2008-03-07  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (MAX_FIXED_MODE_SIZE): Define if not already defined.
	(gnat_to_gnu_entity) <E_Record_Type>: Try to get a smaller form of
	the component for packing, if possible, as well as if a component
	size clause is specified.
	<E_Record_Subtype>: For an array type used to implement a packed
	array, get the component type from the original array type.
	Try to get a smaller form of the component for packing, if possible,
	as well as if a component size clause is specified.
	(round_up_to_align): New function.
	(make_packable_type): Add in_record parameter.
	For a padding record, preserve the size.  If not in_record and the
	size is too large for an integral mode, attempt to shrink the size
	by lowering the alignment.
	Ditch the padding bits of the last component.
	Compute sizes and mode manually, and propagate the RM size.
	Return a BLKmode record type if its size has shrunk.
	(maybe_pad_type): Use MAX_FIXED_MODE_SIZE instead of BIGGEST_ALIGNMENT.
	Use Original_Array_Type to retrieve the type in case of an error.
	Adjust call to make_packable_type.
	(gnat_to_gnu_field): Likewise.
	(concat_id_with_name): Minor tweak.
	* trans.c (larger_record_type_p): New predicate.
	(call_to_gnu): Compute the nominal type of the object only if the
	parameter is by-reference.  Do the conversion actual type -> nominal
	type if the nominal type is a larger record.
	(gnat_to_gnu): Do not require integral modes on the source type to
	avoid the conversion for types with identical names.
	(addressable_p): Add gnu_type parameter.  If it is specified, do not
	return true if the expression is not addressable in gnu_type.
	Adjust recursive calls.
	* utils.c (finish_record_type): Remove dead code.

2008-03-05  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/35186
	* decl.c (maybe_pad_type): Avoid padding an integral type when
	bumping its alignment is sufficient.

2008-03-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* gnatfind.adb, gnatxref.adb: Fix argument parsing typos.
	* s-auxdec-empty.adb, s-auxdec.adb: Fix typos in copyright
	statement.
	* a-ngcoar.adb, a-ngrear.adb, g-awk.adb, g-debpoo.adb,
	gprep.adb, make.adb, makegpr.adb, par-ch6.adb, prj-nmsc.adb,
	sem_attr.adb, sem_ch4.adb, sem_ch8.adb: Fix typos in ada source
	code output strings.
	* sem_type.adb, system-vms-ia64.ads, system-vms.ads,
	system-vms_64.ads: Fix typos in ada source code comments.
	* sinfo-cn.adb: Remove incomplete sentence.

	PR documentation/15479
	* gnat_rm.texi, gnat_ugn.texi: Avoid standalone `non' word.

2008-02-27  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/22255
	* s-fileio.adb (Reset): Do not raise Use_Error if mode isn't changed.

2008-02-27  Samuel Tardieu  <sam@rfc1149.net>

	PR ada/34799
	* sem_ch13.adb (Analyze_Record_Representation_Clause): Check
	that underlying type is present.

2008-02-26  Tom Tromey  <tromey@redhat.com>

	* misc.c (internal_error_function): Remove test of
	USE_MAPPED_LOCATION.
	* trans.c (gigi): Remove test of USE_MAPPED_LOCATION.
	(Sloc_to_locus): Remove old location code.

2008-02-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* gnat_rm.texi, gnat_ugn.texi: Fix spacing after `e.g.' and
	`i.e.' by adding comma or `@:' as appropriate.
	* gnat_rm.texi (Pragma Wide_Character_Encoding): Instead of
	plain characters `C', use `@samp{C}'.
	* gnat_ugn.texi (File Naming Rules, About gnatkr)
	(Krunching Method): Likewise.

	* gnat_ugn.texi (Conventions): List environment variables and
	metasyntactic variables.
	(Compiling Programs): Fix notation of metasyntactic variables.
	Add @file where appropriate.  Use @file for file extensions,
	@samp for strings.
	* gnat_rm.texi, gnat_ugn.texi: Where appropriate, use @samp
	instead of @file, @env instead of @code.

2008-02-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	PR documentation/15479
	* gnat_rm.texi, gnat_ugn.texi: Where appropriate, replace `..'
	and `...' with `@dots{}' or `@enddots{}'.

	PR documentation/15479
	* gnat_rm.texi, gnat_ugn.texi: Where appropriate, add @command,
	use @command instead of @code, @option instead of @samp or @code,
	@code instead of @var, @samp instead of @file.

	PR documentation/15479
	* gnat_ugn.texi (Using gnatmake in a Makefile): Do not ignore errors
	in Makefile rules, by using `&&' rather than `;'.

2008-02-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	PR documentation/15479
	* gnat_ugn.texi: In non-code, avoid space before colon.
	(Regular Expressions in gnatfind and gnatxref): Fix indentation.
	(Examples of gnatxref Usage): Use @command{vi} instead of
	@file{vi}.
	(Character Set Control): Do not use @code for UTF-8.
	(Validity Checking): Fix typo "NaNs" instead of "NaN's".  Do not
	use @code for IEEE.
	* gnat_rm.texi (Aggregates with static bounds): Fix typo in code
	sample.
	* gnat_rm.texi, gnat_ugn.texi: Fix typos.  Bump copyright years.

2008-02-11  Joel Sherrill  <joel.sherrill@oarcorp.com>

	PR ada/35143
	* env.c: Add __rtems__ to if defined.
	* s-osinte-rtems.adb: Add To_Target_Priority.  Fix formatting.
	* s-osinte-rtems.ads: Add To_Target_Priority prototype and
	PTHREAD_SCOPE_PROCESS/PTHREAD_SCOPE_SYSTEM constants.  Add
	pragma Convention as required.
	* gsocket.h: Make compile in and out of RTS.
	* Makefile.in: Add system-rtems.ads.  Build DEC extensions.
	Use g-soccon-rtems.ads.
	* g-soccon-rtems.ads, system-rtems.ads: New files.

2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR other/35107
	* Make-lang.in (gnat1): Add $(GMPLIBS).

2008-01-26  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (components_to_record): Improve comment.

2008-01-22  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (components_to_record): Do not reuse the empty union type
	if there is a representation clause on the record.
	* trans.c (addressable_p): Return true for INTEGER_CST.

2008-01-21  Eric Botcazou  <ebotcazou@adacore.com>

	* trans.c (gnat_to_gnu) <N_Free_Statement>: Use POINTER_PLUS_EXPR
	in pointer arithmetics.
	* utils2.c (build_allocator): Likewise.

2008-01-17  Eric Botcazou  <ebotcazou@adacore.com>

	* utils.c (build_function_stub): Properly build the call expression.

2008-01-14  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <object>: Process renamings
	before converting the expression to the type of the object.
	* trans.c (maybe_stabilize_reference) <CONSTRUCTOR>: New case.
	Stabilize constructors for special wrapping types.

2008-01-13  Eric Botcazou  <ebotcazou@adacore.com>

	* trans.c (call_to_gnu): Invoke the addressable_p predicate only
	when necessary.  Merge some conditional statements.  Update comments.
	Rename unchecked_convert_p local variable to suppress_type_conversion.
	Do not suppress conversions in the In case.
	(addressable_p) <VIEW_CONVERT_EXPR>: Do not take alignment issues
	into account on non strict-alignment platforms.

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

	* utils.c (aggregate_type_contains_array_p): New predicate.
	(create_field_decl): In a packed record, force byte alignment
	for fields without specified position that contain an array.

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

	* utils.c (unchecked_convert): Fold the VIEW_CONVERT_EXPR expression.

2008-01-10  John David Anglin  <dave.anglin.@nrc-cnrc.gc.ca>

	PR ada/34466
	* s-osinte-linux-hppa.ads (SC_NPROCESSORS_ONLN): New constant for
	sysconf call.
	(bit_field): New packed boolean type used by cpu_set_t.
	(cpu_set_t): New type corresponding to the C type with
	the same name. Note that on the Ada side we use a bit
	field array for the affinity mask. There is not need
	for the C macro for setting individual bit.
	(pthread_setaffinity_np): New imported routine.

2008-01-03  Tero Koskinen  <tero.koskinen@iki.fi>

	PR ada/34647
	* adaint.c (__gnat_open_new_temp, __gnat_tmp_name): Use mkstemp()
	on OpenBSD as is done on other BSD systems.

	PR ada/34645
	* sysdep.c (__gnat_ttyname, getc_immediate_nowait,
	getc_immediate_common): Treat OpenBSD as FreeBSD regarding immediate
	I/O.

	PR ada/34644
	* env.c (__gnat_clearenv): Treat OpenBSD as other BSD systems missing
	clearenv().

	PR ada/34646
	* init.c (__gnat_error_handler, __gnat_install_handler,
	__gnat_init_float): Define for OpenBSD.

	* initialize.c (__gnat_initialize): Define for OpenBSD.



Copyright (C) 2008 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.
