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
* config/sh/constraints.md (I28): New constraint.
* config/sh/sh.c (broken_move): Add support for movi20s.
* config/sh/sh.md (movsi_ie): Add the alternative for
movi20s.
* gcc.target/sh/sh2a-movi20s.c: New test.
Co-Authored-By: Naveen.H.S <naveen.hs@kpitcummins.com>
From-SVN: r133514
* gcc.target/i386/sse-17.c: Include sse2-check.h.
(main): Change to void and rename to sse2_test.
* gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp: Set
dg-do-what-default to "compile" if SSE2 hardware is not available.
* gcc.dg/vect/costmodel/i386/x86_64-costmodel-vect.exp: Ditto.
* gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c: Remove
xfail vect_no_int_max from "vectorization not profitable" check.
From-SVN: r133504
2008-03-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34813
* resolve.c (resolve_structure_cons): It is an error to assign
NULL to anything other than a pointer or allocatable component.
PR fortran/33295
* resolve.c (resolve_symbol): If the symbol is a derived type,
resolve the derived type. If the symbol is a derived type
function, ensure that the derived type is visible in the same
namespace as the function.
2008-03-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34813
* gfortran.dg/null_3.f90 : New test
PR fortran/33295
* gfortran.dg/module_function_type_1.f90 : New test
From-SVN: r133488
2008-03-24 Richard Guenther <rguenther@suse.de>
PR c/22371
* gimplify.c (gimplify_modify_expr): For frontend type-correct
pointer assignments change conversions according to middle-end rules.
(gimplify_modify_expr_rhs): Deal with NULL TARGET_EXPR_INITIAL.
* configure.ac: Include type checking in yes.
* configure: Regenerate.
From-SVN: r133479