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.
From-SVN: r133577
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
From-SVN: r133576
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.
From-SVN: r133575
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.
From-SVN: r133573
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.
From-SVN: r133572
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.
From-SVN: r133571
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.
From-SVN: r133570
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.
From-SVN: r133569
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
From-SVN: r133567
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.
From-SVN: r133566
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.
From-SVN: r133565
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.
From-SVN: r133564
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.
From-SVN: r133563
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.
From-SVN: r133561
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.
From-SVN: r133560
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
From-SVN: r133559
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.
From-SVN: r133558
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
From-SVN: r133557
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 !!
From-SVN: r133556
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
From-SVN: r133555
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
From-SVN: r133554
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
From-SVN: r133551
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.
From-SVN: r133550
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
From-SVN: r133549
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.
From-SVN: r133547
2008-03-26 Douglas Gregor <doug.gregor@gmail.com>
* pt.c (coerce_template_template_parm): Moved the body of the loop
of coerce_template_template_parms here, to make iteration over a
template argument pack simpler.
Also, allow matching of a template parameter pack in the template
template parameter to a template parameter in the template
template argument.
(coerce_template_template_parms): Deal with variadic template
template parameters. Use coerce_template_template_parm.
(unify): Make sure we coerce the template template argument's
template arguments to the template template parameter's template
parameters, not the other way around.
2008-03-26 Douglas Gregor <doug.gregor@gmail.com>
* g++.dg/cpp0x/variadic84.C: Update to reflect the change in
variadic template template parameter binding semantics.
* g++.dg/cpp0x/variadic85.C: Ditto.
* g++.dg/cpp0x/variadic88.C: New.
* g++.dg/cpp0x/variadic89.C: New.
* g++.dg/cpp0x/variadic90.C: New.
* g++.dg/cpp0x/variadic-ex14.C: Update to reflect the change in
variadic template template parameter binding semantics.
* g++.dg/cpp0x/variadic-lambda.C: New.
From-SVN: r133543
2008-03-25 Andrew Pinski <pinskia@gmail.com>
PR objc/29197
* objc-act.c (encode_type): Handle when type is error_mark_node.
(objc_push_parm): Handle when the type of parm is error_mark_node.
2008-03-25 Andrew Pinski <pinskia@gmail.com>
PR objc/29197
* objc.dg/method-20.m: New testcase.
From-SVN: r133540
gcc/
PR rtl-optimization/35232
* reload1.c (reg_reloaded_call_part_clobbered): Clarify comment.
(forget_old_reloads_1, forget_marked_reloads): Don't clear
reg_reloaded_call_part_clobbered here.
(reload_regs_reach_end_p): New function.
(reload_reg_rtx_for_input): New variable.
(reload_reg_rtx_for_output): Likewise.
(emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx
when reassigning a pseudo register. Load reloadreg from
reload_reg_rtx_for_input, moving the mode and register
calculation to...
(do_input_reload): ...here. Use the mode-adjusted reg_rtx
instead of the original when deciding whether an input reload
would be a no-op or whether an output reload can be deleted.
(emit_output_reload_insns): Use the mode-adjusted reg_rtx
when setting up new_spill_reg_store. Load it from
reload_reg_rtx_for_output, moving the mode and register
calculation to...
(do_output_reload): ...here. Use the mode-adjusted reg_rtx
instead of the original when deciding whether an output reload
would be a no-op. Do the same when modifying insn notes.
Use rtx_equal_p instead of == to compare the registers.
(inherit_piecemeal_p): Take a mode and two register numbers
as argument.
(emit_reload_insns): Clear new_spill_reg_store for every hard
register in the reload register. Remove spill registers
from reg_reloaded_valid before considering whether to record
inheritance information for them. Use reload_reg_rtx_for_output
instead of reg_rtx when recording output reloads. Use
reload_reg_rtx_for_input instead of reg_rtx when recording
input reloads. Set or clear reg_reloaded_call_part_clobbered
at the same time as setting reg_reloaded_valid.
(delete_output_reload): Add a new_reload_reg parameter and use it
instead of rld[j].reg_rtx.
(emit_input_reload_insns, do_input_reload, do_output_reload): Adjust
calls accordingly.
gcc/testsuite/
PR rtl-optimization/35232
* gcc.target/mips/pr35232.c: New test.
From-SVN: r133531
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.
From-SVN: r133526
* config/xtensa/xtensa.c (xtensa_va_start): Use build_int_cst
instead of size_int for integer types.
(xtensa_gimplify_va_arg_expr): Likewise. Convert index to sizetype
to match type of MINUS_EXPR.
From-SVN: r133525