2007-12-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34438
* trans-decl.c (gfc_finish_var_decl): Do not mark derived types
with default initializers as TREE_STATIC unless they are in the
main program scope.
(gfc_get_symbol_decl): Pass derived types with a default
initializer to gfc_defer_symbol_init.
(init_default_dt): Apply default initializer to a derived type.
(init_intent_out_dt): Call init_default_dt.
(gfc_trans_deferred_vars): Ditto.
* module.c (read_module): Check sym->module is there before
using it in a string comparison.
2007-12-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34438
* gfortran.dg/default_initialization_3.f90: New test.
From-SVN: r131124
gcc/
* config/mips/mips.c (mips_emit_loadgp): Replace gen_* calls with
separate gen_*_si and gen_*_di calls. Pass pic_offset_table_rtx
as the first argument.
* config/mips/mips.md (loadgp_newabi, loadgp_absolute)
(loadgp_rtp): Rename to...
(loadgp_newabi_<mode>, loadgp_absolute<mode>, loadgp_rtp<mode>):
...these. Add modes to all operands. Add the target register
as an operand. Combine loadgp_rtp<mode> with its splitter.
From-SVN: r131118
* gcc.dg/torture/builtin-modf-1.c: Pass "-funsafe-math-optimizations
-fsigned-zeros -fno-associative-math" on powerpc-*-darwin*.
--This line, and teose below, will be ignored--
M testsuite/gcc.dg/torture/builtin-modf-1.c
M testsuite/ChangeLog
From-SVN: r131117
* config/xtensa/xtensa.md (fix_return_addr): Remove.
* config/xtensa/xtensa-protos.h (xtensa_initialize_trampoline): New.
(xtensa_trampoline_template): New.
* config/xtensa/xtensa.c (MIN_FRAME_SIZE): Moved here from xtensa.h.
(xtensa_return_addr): Expand to standard Xtensa insns instead of
fix_return_addr. Get high bits from a local label.
(xtensa_trampoline_template): New function with code moved from
TRAMPOLINE_TEMPLATE in xtensa.h. Use L32R instead of CALL0 except
when using CONST16 or absolute-mode literals.
(xtensa_initialize_trampoline): New function with code moved from
INITIALIZE_TRAMPOLINE in xtensa.h. Use different offsets depending
on which trampoline version is used.
* config/xtensa/lib2funcs.S (TRAMPOLINE_SIZE): Add comment.
* config/xtensa/xtensa.h (TARGET_ABSOLUTE_LITERALS): Define.
(MIN_FRAME_SIZE): Moved to xtensa.c.
(TRAMPOLINE_TEMPLATE): Use xtensa_trampoline_template.
(TRAMPOLINE_SIZE): Two versions of the trampoline have different sizes.
(INITIALIZE_TRAMPOLINE): Use xtensa_initialize_trampoline.
* config/xtensa/ieee754-df.S (XCHAL_NO_MUL): Define.
(__muldf3): Use CALL12 instead of CALL0 to invoke .Lmul_mulsi3
helper when not using the CALL0 ABI. Change .Lmul_mulsi3 to match.
* config/xtensa/lib1funcs.asm (__umulsidi3): Likewise.
* config/xtensa/ieee754-sf.S (__mulsf3): Likewise.
From-SVN: r131108
PR c++/34459
* tree-ssa-dse.c (dse_optimize_stmt): Don't eliminate store if
USE_STMT not only stores into the same object as STMT, but might
read it too.
* gcc.c-torture/execute/20071219-1.c: New test.
From-SVN: r131101
2007-12-19 Sebastian Pop <sebastian.pop@amd.com>
PR tree-optimization/34413
* tree-data-ref.c (affine_fn_op, analyze_ziv_subscript,
analyze_siv_subscript_cst_affine, analyze_miv_subscript,
omega_setup_subscript): Use long_integer_type_node instead of
integer_type_node.
From-SVN: r131097
2007-12-19 Robert Dewar <dewar@adacore.com>
* gnat_rm.texi, gnat_ugn.texi: Update documentation of -gnatw.o
Fix name of Wide_Wide_Latin_1/9 file names
Add documentation for Ada.Exceptions.Last_Chance_Handler (a-elchha.ads)
Add missing documentation for Ada.Wide_[Wide_]Characters.Unicode
Add missing documentation for Ada.Command_Line.Response_File
Update list of warning letters for Warnings pragma
Add documentation for pragma Unmodified
From-SVN: r131086
2007-12-19 Vincent Celier <celier@adacore.com>
* makegpr.adb (Check_Compilation_Needed): Normalize C_Source_Path so
that the source path name is always found in the dependencies.
From-SVN: r131085
2007-12-19 Thomas Quinot <quinot@adacore.com>
Part of PR ada/33688
* gen-soccon.c: Add constant IP_PKTINFO to allow getting ancillary
datagram info on Linux.
From-SVN: r131084
2007-12-19 Tristan Gingold <gingold@adacore.com>
* utils.c (create_var_decl_1): call rest_of_decl_compilation only for
global variable.
From-SVN: r131083
2007-12-19 Gary Dismukes <dismukes@adacore.com>
PR ada/34149
* sem_disp.adb (Check_Dispatching_Call): Augment existing test for
presence of a statically tagged operand (Present (Static_Tag)) with
test for Indeterm_Ancestor_Call when determining whether to propagate
the static tag to tag-indeterminate operands (which forces dispatching
on such calls).
(Check_Controlling_Formals): Ada2005, access parameters can have
defaults.
(Add_Dispatching_Operation, Check_Operation_From_Private_View): do
not insert subprogram in list of primitive operations if already there.
From-SVN: r131082
2007-12-19 Ed Schonberg <schonberg@adacore.com>
Gary Dismukes <dismukes@adacore.com>
* sem_ch8.adb (Analyze_Subprogram_Renaming): Diagnose illegal renamings
whose renamed entity is a subprogram that requires overriding.
(Premature_Usage): Test for the case of N_Full_Type_Declaration when
issuing an error for premature usage and issue a message that says
'type' rather than 'object'.
From-SVN: r131081
2007-12-19 Bob Duff <duff@adacore.com>
* sem_ch4.adb (Analyze_Concatenation_Rest): New procedure.
(Analyze_Concatenation): Use iteration instead of recursion in order
to avoid running out of stack space for deeply nested concatenations.
From-SVN: r131080
2007-12-19 Ed Schonberg <schonberg@adacore.com>
Gary Dismukes <dismukes@adacore.com>
PR ada/15803, ada/15805
* sem_ch6.adb, sem_ch3.adb (Constrain_Access): In Ada2005, diagnose
illegal access subtypes when there is a constrained partial view.
(Check_For_Premature_Usage): New procedure inside
Access_Subprogram_Declaration for checking that an access-to-subprogram
type doesn't reference its own name within any formal parameters or
result type (including within nested anonymous access types).
(Access_Subprogram_Declaration): Add call to Check_For_Premature_Usage.
(Sem_Ch3.Analyze_Object_Declaration, Sem_ch6.Process_Formals): if the
context is an access_to_variable, the expression cannot be an
access_to_constant.
From-SVN: r131079
2007-12-19 Vincent Celier <celier@adacore.com>
* prj-attr.adb (Package_Node_Id_Of): Returns Unknown_Package when
package is not known
* prj-attr.ads (Unknown_Package): New constant
Do not crash when an unknown package is in several projects
* prj-dect.adb (Parse_Package_Declaration): Mark an unknown package as
ignored
* prj-nmsc.adb (Check): Remove obsolete code related to no longer
existing package Language_Processing.
From-SVN: r131078
2007-12-19 Ed Schonberg <schonberg@adacore.com>
* par-ch3.adb (P_Record_Declaration): Guard against cascaded errors in
mangled declaration
(P_Type_Declaration): Diagnose misuse of "abstract" in untagged record
declarations.
(P_Variant_Part): Cleaner patch for parenthesized discriminant
From-SVN: r131077
2007-12-19 Ed Schonberg <schonberg@adacore.com>
* freeze.adb (Freeze_Record_Type, Check_Current_Instance): Implement
properly the Ada2005 rules concerning when the current instance of a
record type is aliased.
From-SVN: r131076
2007-12-19 Robert Dewar <dewar@adacore.com>
* exp_pakd.adb (Expand_Bit_Packed_Element_Set): Fix packed array type
in complex case where array is Volatile.
From-SVN: r131075
2007-12-19 Robert Dewar <dewar@adacore.com>
* exp_ch9.adb (Null_Statements): Moved to library level
(Trivial_Accept_OK): New function
(Expand_Accept_Declaration): Use Trivial_Accept_OK
(Expand_N_Accept_Statement): Use Trivial_Accept_OK
From-SVN: r131074
2007-12-19 Javier Miranda <miranda@adacore.com>
* exp_ch3.adb (Expand_N_Object_Declaration): Complete the circuitry
that forces the construction of static dispatch tables in case of
record subtypes.
From-SVN: r131073
2007-12-19 Robert Dewar <dewar@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference, case Size): Fix error in
handling compile time known size of record or array (case of front end
layout active, e.g. in GNAAMP).
From-SVN: r131072
2007-12-19 Ed Schonberg <schonberg@adacore.com>
* exp_aggr.adb (Not_OK_For_Backend): A component of a private type with
discriminants forces expansion of the aggregate into assignments.
(Init_Record_Controller): If the type of the aggregate is untagged and
is not inherently limited, the record controller is not limited either.
From-SVN: r131071
2007-12-19 Bob Duff <duff@adacore.com>
* atree.ads, atree.adb (Traverse_Func): Walk Field2 last, and eliminate
the resulting tail recursion by hand. This prevents running out of
memory on deeply nested concatenations, since Field2 is where the left
operand of concatenations is stored.
Fix bug (was returning OK_Orig in some cases). Fix return subtype to
clarify that it can only return OK or Abandon.
* sem_res.adb (Resolve_Op_Concat): Replace the recursion on the left
operand by iteration, in order to avoid running out of memory on
deeply-nested concatenations. Use the Parent pointer to get back up the
tree.
(Resolve_Op_Concat_Arg, Resolve_Op_Concat_First,
Resolve_Op_Concat_Rest): New procedures split out of
Resolve_Op_Concat, so the iterative algorithm in Resolve_Op_Concat is
clearer.
* checks.adb (Remove_Checks): Use Traverse_Proc instead of
Traverse_Func, because the former already takes care of discarding the
result.
* errout.adb (First_Node): Use Traverse_Proc instead of Traverse_Func,
because the former already takes care of discarding the result.
(Remove_Warning_Messages): Use appropriate subtype for Status and
Discard
From-SVN: r131070
2007-12-19 Robert Dewar <dewar@adacore.com>
* g-expect-vms.adb, g-expect.adb, s-poosiz.adb:
Add pragma Warnings (Off) for unassigned IN OUT arguments
* sem_warn.adb (Output_Reference): Suppress messages for internal names
(Check_References): Extensive changes to tune up warnings
(Output_Non_Modifed_In_Out_Warnings): Changes to tune up warnings
(Has_Pragma_Unmodifed_Check_Spec): New function
(Check_References): Implement pragma Unmodified
(Warn_On_Unassigned_Out_Parameter): Implement pragma Unmodified
* par-prag.adb: Dummy entry for pragma Unmodified
* sem_prag.adb: Implement pragma Unmodified
* einfo.ads, einfo.adb: (Has_Pragma_Unmodified): New flag
(Proc_Next_Component_Or_Discriminant): Fix typo.
Update comments.
* sem_util.adb (Note_Possible_Modification): Add processinng for pragma
Unmodified.
(Reset_Analyzed_Flags): Use Traverse_Proc instead of Traverse_Func,
because the former already takes care of discarding the result.
(Mark_Coextensions): Remove ununused initial value from Is_Dynamic.
Add comment.
* snames.h, snames.ads, snames.adb: Add entry for pragma Unmodified
From-SVN: r131068
PR tree-optimization/34355
* tree-parloops.c (take_address_of): Handle expresions
instead of just variables.
(eliminate_local_variables_1): Force whole invariant
address to ssa name.
* g++.dg/tree-ssa/pr34355.C: New test.
From-SVN: r131063
2007-12-19 Etsushi Kato <ek.kato@gmail.com>
Paolo Bonzini <bonzini@gnu.org>
PR target/30572
* Makefile.in: Use @shlib_slibdir@ substitution to get correct install name
on darwin.
* config/t-slibgcc-darwin: Use @shlib_slibdir@ for -install_name.
Co-Authored-By: Paolo Bonzini <bonzini@gnu.org>
From-SVN: r131062
PR c++/34513
* parser.c (cp_parser_omp_parallel): For non-combined parallel
call cp_parser_statement rather than
cp_parser_already_scoped_statement.
* testsuite/libgomp.c/pr34513.c: New test.
* testsuite/libgomp.c++/pr34513.C: New test.
From-SVN: r131059
gcc/
* tree.h (set_decl_incoming_rtl): Add a by_reference_p parameter.
* emit-rtl.c (set_decl_incoming_rtl): Likewise. Don't set the
rtl's register attributes when the parameter is true.
* function.c (assign_parms_unsplit_complex, assign_parms)
(expand_function_start): Update calls to set_decl_incoming_rtl.
From-SVN: r131056
gcc/
* rtl.def (SUBREG): Update comments.
* rtl.h (reg_attrs): Be explicit about the type of offset used.
(set_reg_attrs_from_mem): Rename to...
(set_reg_attrs_from_value): ...this.
(adjust_reg_mode, byte_lowpart_offset): Declare.
* emit-rtl.c (byte_lowpart_offset): New function.
(update_reg_offset): Remove special offset handling for big-endian
targets.
(gen_rtx_REG_offset, gen_reg_rtx_offset): Explicitly say that the
offset parameter is added to REG_OFFSET.
(adjust_reg_mode): New function.
(set_reg_attrs_for_mem): Rename to...
(set_reg_attrs_for_value): ...this and generalize to all values.
If the register is a lowpart of the value, adjust the offset
accordingly.
(set_reg_attrs_for_parm): Update after the above renaming.
(set_reg_attrs_for_decl_rtl): New function, split out from
set_decl_incoming_rtl. Set the offset of plain REGs to the
offset of the REG's mode from the decl's. Assert that all
subregs are lowparts and handle their inner registers in the
same way as plain REGs.
(set_decl_rtl, set_incoming_decl_rtl): Use reg_attrs_for_decl_rtl.
(subreg_lowpart_offset): Explicitly say that the returned offset
is a SUBREG_BYTE.
* combine.c (do_SUBST_MODE, try_combine, undo_all): Use adjust_reg_mode
instead of PUT_MODE.
* final.c (alter_subreg): Fix/update argument to gen_rtx_REG_offset.
* config/ia64/ia64.c (ia64_expand_load_address): Likewise.
* regclass.c (reg_scan_mark_refs): Use set_reg_attrs_from_value.
* reload.c (find_reloads_subreg_address): Call set_mem_offset
when offseting a MEM.
* var-tracking.c (offset_valid_for_tracked_p): Delete.
(mode_for_reg_attrs): Replace with...
(track_loc_p): ...this new function. Return the mode and offset
to the caller, checking that the latter is valid. If the rtx is
a paradoxical lowpart of the decl, use the decl's mode instead.
Do the same when storing to a register that contains the entire decl.
(var_lowpart): Use byte_lowpart_offset rather than
subreg_lowpart_offset when adjusting the offset attribute.
(count_uses, add_uses, add_stores): Use track_reg_p instead of
REG_EXPR, MEM_EXPR, REG_OFFSET, INT_MEM_OFFSET, track_expr_p,
offset_valid_for_tracked_p and mode_for_reg_attrs. Generate
lowparts for MEMs as well as REGs.
(vt_add_function_parameters): When obtaining the information from
the decl_rtl, adjust the offset to match incoming. Use track_loc_p
and var_lowpart.
From-SVN: r131055