* exp_ch4.adb (Expand_N_Attribute_Reference, Displace_Allocator_Pointer,
Expand_Allocator_Expression): Take into account VM_Target
* exp_ch5.adb (Expand_N_Extended_Return_Statement): Do not use
secondary stack when VM_Target /= No_VM
From-SVN: r130831
2007-12-06 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch3.adb (Predefined_Primitive_Bodies): Generate the body of
predefined primitive _Disp_Requeue.
(Make_Predefined_Primitive_Specs): Create the spec for predefined
primitive _Disp_Requeue.
(Make_Predefined_Primitive_Specs/Predefined_Primitive_Bodies): Set the
type of formal Renamed_Eq to Entity_Id (instead of Node_Id).
(Make_Predefined_Primitive_Specs): Spec of "=" needed if the parent is
an interface type. In case of limited interfaces we now declare all the
predefined primitives associated with synchronized interfaces as
abstract.
(Predef_Spec_Or_Body): For interface types generate abstract subprogram
declarations.
(Predefined_Primitive_Bodies): Add body of "=" if the parent of the
tagged type is an interface type and there is no user-defined equality
function.
Add also bodies of predefined primitives associated with synchronized
interfaces.
(Freeze_Record_Type): Do not build bodies of predefined primitives of
interface types because they are now defined abstract.
Add missing documentation.
(Expand_Record_Controller): Update occurrence of Related_Interface
to Related_Type.
(Build_Offset_To_Top_Functions): Do nothing in case of VM.
(Expand_N_Object_Declaration): Take into account VM_Target when handling
class wide interface object declaration.
(Expand_Previous_Access_Type): Do not create a duplicate master entity
if the access type already has one.
(Expand_N_Object_Declaration): Defend against attempt to validity check
generic types. Noticed for -gnatVcf specified with previous errors.
From-SVN: r130830
2007-12-06 Ed Schonberg <schonberg@adacore.com>
* exp_aggr.adb (Build_Record_Aggr_Code): If there is an aggregate for a
limited ancestor part, initialize controllers of enclosing record
before expanding ancestor aggregate.
(Gen_Assign): If a component of the aggregate is box-initialized, add
code to call Initialize if the component is controlled, and explicit
assignment of null if the component is an access type.
Handle properly aggregates for limited types that appear in object
declarations when the aggregate contains controlled values such as
protected types.
When expanding limited aggregates into individual components, do not
call Adjust on controlled components that are limited.
From-SVN: r130828
2007-12-06 Vincent Celier <celier@adacore.com>
* errout.adb (Output_Source_Line): Do not keep a trailing space after
the source line number if the source line is empty.
From-SVN: r130826
2007-12-06 Hristian Kirtchev <kirtchev@adacore.com>
* einfo.ads, einfo.adb: Flag 232 is now Implemented_By_Entry.
(Implemented_By_Entry, Set_Implemented_By_Entry): New routines.
(Write_Entry_Flags): Add an entry for Implemented_By_Entry.
(Renamed_In_Spec): New flag
(Has_Pragma_Inline_Always): New flag
Add missing doc for pragma Obsolescent_Warning
Add missing doc for 17 additional unused flags (230-247)
(Is_Derived_Type): Remove condition "not Is_Generic_Type".
Alphabetize with clauses.
Separate Is_Thunk and Has_Thunks flags
(Write_Entity_Flags): Add forgotten entry for Has_Thunks
(Related_Interface): Renamed to Related_Type.
(Has_Thunks/Set_Has_Thunks): Subprograms of new attribute.
(Set_Is_Flag): Restrict the assertion.
From-SVN: r130825
2007-12-06 Bob Duff <duff@adacore.com>
* clean.adb (Usage): Add line for -aP
(Check_Version_And_Help): Change Check_Version_And_Help to be generic,
with a parameter "procedure Usage", instead of passing a pointer to a
procedure. This is to eliminate trampolines (since the Usage procedure
is often nested in a main procedure, and it would be inconvenient to
unnest it).
* g-comlin.adb (For_Each_Simple_Switch): Change For_Each_Simple_Switch
to be generic, with a parameter "procedure Callback (...)", instead of
passing a pointer to a procedure. This is to eliminate trampolines
(since the Callback procedure is usually nested).
* gnatfind.adb, switch.adb, switch.ads, gnatlink.adb, gnatls.adb,
gnatname.adb, gnatxref.adb, gnatchop.adb, gprep.adb, gnatbind.adb
(Check_Version_And_Help): Change Check_Version_And_Help to be generic.
* g-pehage.adb (Compute_Edges_And_Vertices, Build_Identical_Key_Sets):
Use the generic Heap_Sort_G instead of Heap_Sort_A.
From-SVN: r130824
2007-12-06 Vincent Celier <celier@adacore.com>
* opt.ads: Indicate what flags are used by the Project Manager,
gprbuild and gprclean.
(Opt.Follow_Links_For_Dirs): New flag
(Warn_On_Assertion_Failure): New flag
(Wide_Character_Encoding_Method_Specified): New flag
(Suppress_All_Inlining): New switch set by -fno-inline
(Real_VMS_Target): New flag
New pragma Fast_Math
From-SVN: r130821
2007-12-06 Robert Dewar <dewar@adacore.com>
* atree.adb (Flag231..Flag247): New functions
(Set_Flag231..Set_Flag247): New procedures
(Basic_Set_Convention): Rename Set_Convention to be
Basic_Set_Convention
(Nkind_In): New functions
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
* exp_ch6.adb (Expand_Call): Use new flag Has_Pragma_Inline_Always
instead
of obsolete function Is_Always_Inlined
(Register_Predefined_DT_Entry): Initialize slots of the second
secondary dispatch table.
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
(Expand_N_Function_Call): Remove special provision for stack checking.
* exp_util.ads, exp_util.adb (Is_Predefined_Dispatching_Operation):
Include _Disp_Requeue in the list of predefined operations.
(Find_Interface_ADT): Modified to fulfill the new specification.
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
* par-ch4.adb, nlists.ads, nlists.adb:
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
* sinfo.ads, sinfo.adb: (Nkind_In): New functions
Fix location of flag for unrecognized pragma message
* sem_ch7.adb: Use Nkind_In
From-SVN: r130820
* a-tifiio.adb
(Put_Int64): Use Put_Digit to advance Pos. This fixes a case where
the second or later Scaled_Divide would omit leading zeroes,
resulting in too few digits produced and a Layout_Error as result.
(Put): Initialize Pos.
From-SVN: r130819
2007-12-06 Robert Dewar <dewar@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* a-ngcoty.adb: New pragma Fast_Math
* opt.adb: New pragma Fast_Math
* par-prag.adb:
Add Implemented_By_Entry to the list of pragmas which do not require any
special processing.
(Favor_Top_Level): New pragma.
New pragma Fast_Math
* exp_attr.adb: Move Wide_[Wide_]Image routines to Exp_Imgv
(Expand_N_Attribute_Reference, Displace_Allocator_Pointer,
Expand_Allocator_Expression): Take into account VM_Target
(Expand_Attribute, case 'Identity): Handle properly the case where
the prefix is a task interface.
New pragma Fast_Math
* par.adb (Next_Token_Is): New function
(P_Pragma): Add Skipping parameter
(U_Left_Paren): New procedure
(U_Right_Paren): New procedure
New pragma Fast_Math
* par-ch10.adb (P_Subunit): Unconditional msg for missing ) after
subunit
New pragma Fast_Math
* sem_prag.adb: Add significance value to table Sig_Flag for pragma
Implemented_By_Entry.
(Analyze_Pragma): Add case for Ada 2005 pragma Implemented_By_Entry.
(Set_Inline_Flags): Do not try to link pragma Inline onto chain of rep
items, since it can apply to more than one overloadable entity. Set
new flag Has_Pragma_Inline_Always for Inline_Always case.
(Analyze_Pragma, case Complex_Representation): Improve error message.
(Analyze_Pragma, case Assert): When assertions are disabled build the
rewritten code with Sloc of expression rather than pragma, so new
warning about failing is not deleted.
(Analyze_Pragma): Allow pragma Preelaborable_Initialization to apply to
protected types and update error message to reflect that. Test whether
the protected type is allowed for the pragma (an error is issued if the
type has any entries, or components that do not have preelaborable
initialization).
New pragma Fast_Math
(Analyze_Pragma, case No_Return): Handle generic instance
* snames.h, snames.ads, snames.adb:
Add new predefined name for interface primitive _Disp_Requeue.
New pragma Fast_Math
* a-tags.ads, a-tags.adb: New calling sequence for
String_To_Wide_[Wide_]String
(Secondary_Tag): New subprogram.
* exp_imgv.ads, exp_imgv.adb: Move Wide_[Wide_]Image routines here
from Exp_Attr
New calling sequence for String_To_Wide_[Wide_]String
(Expand_Image_Attribute): Major rewrite. New calling sequence avoids
the use of the secondary stack for image routines.
* a-except-2005.adb, s-wchstw.ads, s-wchstw.adb, s-wwdenu.adb: New
calling sequence for String_To_Wide_[Wide_]String
* par-ch3.adb (P_Declarative_Items): Recognize use of Overriding in
Ada 95 mode
(P_Unknown_Discriminant_Part_Opt): Handle missing parens gracefully
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
* par-ch6.adb (P_Subprogram): Recognize use of Overriding in Ada 95 mode
(P_Formal_Part): Use Skipping parameter in P_Pragma call
to improve error recovery
* par-util.adb (Next_Token_Is): New function
(Signal_Bad_Attribute): Use new Namet.Is_Bad_Spelling_Of function
* par-ch2.adb (Skip_Pragma_Semicolon): Do not resynchronize to
semicolon if missing
(P_Pragma): Implement new Skipping parameter
Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List
Fix location of flag for unrecognized pragma message
* par-tchk.adb (U_Left_Paren): New procedure
(U_Right_Paren): New procedure
From-SVN: r130818
2007-12-06 Robert Dewar <dewar@adacore.com>
* a-textio.adb, a-textio.ads:
Extensive changes to private part for wide character encoding
* a-witeio.ads, a-witeio.adb, a-ztexio.ads, a-ztexio.adb
(Look_Ahead): Fix mishandling of encoded sequences
Move declaration of Wch_Con to private part (should not be visible)
* ali.adb (Scan_ALI): Set default encoding method to brackets instead of
UTF-8. Probably this is never used, but if it is, brackets is
clearly correct.
* bindgen.adb (Get_WC_Encoding): New procedure to properly handle
setting wide character encoding for no main program case and when
encoding is specified using -W?
Initialize stack limit of environment task if stack limit method of
stack checking is enabled.
(Gen_Adainit_Ada): Use Get_WC_Encoding to output encoding method
(Gen_Adainit_C): Use Get_WC_Encoding to output encoding method
(Get_Main_Unit_Name): New function.
(Gen_Adainit_Ada): Add call to main program for .NET when needed.
(Gen_Output_File): Set Bind_Main_Program to True for .NET
* bindusg.adb: Add line for -Wx switch
* s-wchcon.adb, s-wchcon.ads: (Is_Start_Of_Encoding): New function
Add comments
Add new useful constant WC_Longest_Sequences
* switch-b.adb: Clean up handling of -Wx switch
For -gnatWx, set Wide_Character_Encoding_Method_Specified
* switch-c.adb: -gnatg activates warning on assertion errors
For -gnatWx, set Wide_Character_Encoding_Method_Specified
* s-wchcon.adb: (Is_Start_Of_Encoding): New function
From-SVN: r130817
2007-12-06 Jose Ruiz <ruiz@adacore.com>
* adaint.h: (__gnat_plist_init): Not defined for RTX.
* initialize.c (__gnat_initialize): Do not call __gnat_plist_init for
RTX systems.
* Makefile.in: Add new files s-tasinf-linux.ads and s-tasinf-linux.adb.
(LIBGNAT_TARGET_PAIRS, MISCLIB, THREADSLIB,
EXTRA_GNATRTL_NONTASKING_OBJS, EXTRA_GNATRTL_TASKING_OBJS,
GNATLIB_SHARED for RTX run time): Use the versions required by RTX.
* mingw32.h:
Do not define GNAT_UNICODE_SUPPORT for RTX since it is not supported.
* sysdep.c (winflush_function for RTX): Procedure that does nothing
since we only have problems with Windows 95/98, which are not
supported by RTX.
(__gnat_ttyname): Return the empty string on Nucleus, just as
done on vxworks.
From-SVN: r130816
2007-12-06 Robert Dewar <dewar@adacore.com>
* sem_ch5.adb, s-taskin.adb, a-ciorma.adb, a-coorma.adb, a-cohama.adb,
a-cihama.adb, g-awk.adb,
s-inmaop-posix.adb: Update handling of assigned value/unreferenced
warnings
* exp_smem.adb: Update handling of assigned value/unreferenced warnings
* sem.adb: Update handling of assigned value/unreferenced warnings
* a-exexpr-gcc.adb: Add a pragma warnings off for boolean return
* lib-xref.ads: Improve documentation for k xref type
* lib-xref.adb:
Update handling of assigned value/unreferenced warnings
(Generate_Reference): Warning for reference to entity for which a
pragma Unreferenced has been given should be unconditional.
If the entity is a discriminal, mark the original
discriminant as referenced.
* sem_warn.ads, sem_warn.adb
(Check_One_Unit): Test Renamed_In_Spec to control giving warning for
no entities referenced in package
(Check_One_Unit): Don't give message about no entities referenced in
a package if a pragma Unreferenced has appeared.
Handle new warning flag -gnatw.a/-gnatw.A
Update handling of assigned value/unreferenced warnings
* atree.h: Add flags up to Flag247
(Flag231): New macro.
From-SVN: r130815
2007-12-06 Eric Botcazou <ebotcazou@adacore.com>
Bob Duff <duff@adacore.com>
Tristan Gingold <gingold@adacore.com>
* system-linux-ia64.ads, system-freebsd-x86.ads, system-lynxos-ppc.ads,
system-lynxos-x86.ads, system-linux-x86_64.ads, system-tru64.ads,
system-aix.ads, system-vxworks-sparcv9.ads, system-solaris-x86.ads,
system-irix-o32.ads, system-irix-n32.ads, system-hpux.ads,
system-vxworks-m68k.ads, system-linux-x86.ads, system-vxworks-mips.ads,
system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads,
system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads,
system-vxworks-arm.ads, system-darwin-x86.ads, system.ads,
system-vms_64.ads, system-darwin-ppc.ads, system-vxworks-x86.ads,
system-linux-ppc.ads, system-linux-hppa.ads, system-hpux-ia64.ads,
system-vms-ia64.ads (Stack_Check_Limits): New target parameter.
(Always_Compatible_Rep): New flag to control trampolines globally.
(Dynamic_Trampolines_Used): New flag for implementing the
No_Implicit_Dynamic_Code restriction more correctly (not yet used,
and not yet set correctly for some targets).
* s-taprop-vxworks.adb: Use stack limit method of stack checking.
Simply indirectly call s-stchop when a task is created.
* ali.ads:
New flag added: Stack_Check_Switch_Set which is set when '-fstack-check'
appears as an argument (entries A) in an ALI file.
* fe.h (Stack_Check_Limits): Declare new target parameter.
(Check_Implicit_Dynamic_Code_Allowed): New procedure.
* init.c: Declare __gnat_set_stack_limit_hook for VxWorks kernel RTS.
This variable is declared in C to be sure not subject to elaboration
code.
(__gnat_map_signal, VxWorks): In kernel mode, map SIGILL to
Storage_Error.
* targparm.ads, targparm.adb (Stack_Check_Limits): New parameter.
(Always_Compatible_Rep, Dynamic_Trampolines_Used): New parameters.
* s-stchop.ads: Add comments.
* s-stchop-vxworks.adb: Package almost fully rewritten to use stack
limit method of stack checking.
* s-stchop-limit.ads: New file.
From-SVN: r130814
2007-12-06 Robert Dewar <dewar@adacore.com>
* s-osinte-lynxos-3.ads, s-osinte-hpux.ads, s-osinte-solaris-posix.ads,
s-osinte-freebsd.ads, s-osinte-lynxos.ads, s-osinte-tru64.ads,
s-osinte-mingw.ads, s-osinte-aix.ads, s-osinte-hpux-dce.ads,
s-osinte-irix.ads, s-osinte-solaris.ads, s-intman-vms.adb,
s-osinte-vms.ads, s-osinte-vxworks6.ads, s-osinte-vxworks.ads,
s-auxdec.ads, s-auxdec-vms_64.ads, s-osinte-darwin.ads,
s-taprop-vms.adb, s-interr-sigaction.adb, s-osinte-linux-hppa.ads,
i-vxwork-x86.ads, s-tpopde-vms.ads: Add missing pragma Convention C
for subprogram pointers.
* g-ctrl_c.adb: New file.
* g-ctrl_c.ads (Install_Handler): New body.
* freeze.adb (Freeze_Subprogram): Use new flag Has_Pragma_Inline_Always
instead of obsolete function Is_Always_Inlined.
(Freeze_Entity): check for tagged type in imported C subprogram
(Freeze_Entity): check for 8-bit boolean in imported C subprogram
(Freeze_Entity): check for convention Ada subprogram pointer in
imported C subprogram.
(Freeze_Fixed_Point_Type): In the case of a base type where the low
bound would be chopped off and go from negative to zero, force
Loval_Excl_EP to be the same as Loval_Incl_EP (the included lower
bound) so that the size computation for the base type will take
negative values into account.
From-SVN: r130813
2007-12-06 Pascal Obry <obry@adacore.com>
* adaint.c (__gnat_pthread_setaffinity_np): New routine. A dummy
version is provided for older GNU/Linux distribution not
supporting thread affinity sets.
* s-osinte-linux.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.
* s-taprop-linux.adb (Enter_Task): Check that the CPU affinity mask is
no null.
(Create_Task): Set the processor affinity mask if information
is present.
* s-tasinf-linux.ads, s-tasinf-linux.adb: New files.
From-SVN: r130812
2007-12-13 Richard Earnshaw <rearnsha@arm.com>
PR target/30192
* config/arm/ieee754-df.S (floatundidf): Fix for wrong sp value on
exit when using hard FPA.
* config/arm/ieee754-df.S (floatdidf): Likewise.
From-SVN: r130800
* gimplify.c (gimplify_modify_expr_rhs): Handle the case when we
are assigning from a constant constructor.
Fix wrapping in function comment.
From-SVN: r130788
2007-12-12 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.c (s390_O_constraint_str): Limit the range
for 'On' to -4G+1..-1.
* config/s390/constraints.md: Adjust comment accordingly.
2007-12-12 Andreas Krebbel <krebbel1@de.ibm.com>
* gcc.target/s390/20071212-1.c: New testcase.
From-SVN: r130787
PR c++/34364
* rtti.c (build_dynamic_cast): Call convert_from_reference even for
dynamic_cast in a template.
* g++.dg/rtti/dyncast2.C: New test.
From-SVN: r130770
2007-12-10 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/34411
* gfortran.dg/error_recovery_5.f90: New.
* gfortran.dg/optional_dim_2.f90: Fix test, not related to this PR.
From-SVN: r130768
gcc/cp/
2007-12-10 Simon Martin <simartin@users.sourceforge.net>
PR c++/34059
* typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from
MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO.
gcc/testsuite/
2007-12-10 Simon Martin <simartin@users.sourceforge.net>
PR c++/34059
* g++.dg/parse/crash40.C: New test.
From-SVN: r130754