OSDN Git Service

pf3gnuchains/gcc-fork.git
13 years ago2008-07-30 Rafael Avila de Espindola <espindola@google.com>
espindola [Wed, 30 Jul 2008 23:23:33 +0000 (23:23 +0000)]
2008-07-30  Rafael Avila de Espindola  <espindola@google.com>

PR 36974
* final.c (call_from_call_insn): Handle COND_EXEC

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138347 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 H.J. Lu <hongjiu.lu@intel.com>
hjl [Wed, 30 Jul 2008 20:19:53 +0000 (20:19 +0000)]
2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>

* builtins.c (std_gimplify_va_arg_expr): Replace
PREFERRED_STACK_BOUNDARY with MAX_SUPPORTED_STACK_ALIGNMENT.
* config/i386/i386.c (ix86_gimplify_va_arg): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138340 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 H.J. Lu <hongjiu.lu@intel.com>
hjl [Wed, 30 Jul 2008 19:24:02 +0000 (19:24 +0000)]
2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
    Joey Ye  <joey.ye@intel.com>

* gcc.dg/dfp/func-vararg-alternate-d128-2.c: New.
* gcc.dg/dfp/func-vararg-mixed-2.c: Likewise.
* gcc.dg/torture/stackalign/alloca-1.c: Likewise.
* gcc.dg/torture/stackalign/builtin-apply-1.c: Likewise.
* gcc.dg/torture/stackalign/builtin-apply-2.c: Likewise.
* gcc.dg/torture/stackalign/builtin-apply-3.c: Likewise.
* gcc.dg/torture/stackalign/builtin-apply-4.c: Likewise.
* gcc.dg/torture/stackalign/builtin-return-1.c: Likewise.
* gcc.dg/torture/stackalign/check.h: Likewise.
* gcc.dg/torture/stackalign/comp-goto-1.c: Likewise.
* gcc.dg/torture/stackalign/fastcall-1.c: Likewise.
* gcc.dg/torture/stackalign/global-1.c: Likewise.
* gcc.dg/torture/stackalign/inline-1.c: Likewise.
* gcc.dg/torture/stackalign/inline-2.c: Likewise.
* gcc.dg/torture/stackalign/nested-1.c: Likewise.
* gcc.dg/torture/stackalign/nested-2.c: Likewise.
* gcc.dg/torture/stackalign/nested-3.c: Likewise.
* gcc.dg/torture/stackalign/nested-4.c: Likewise.
* gcc.dg/torture/stackalign/nested-5.c: Likewise.
* gcc.dg/torture/stackalign/nested-6.c: Likewise.
* gcc.dg/torture/stackalign/non-local-goto-1.c: Likewise.
* gcc.dg/torture/stackalign/non-local-goto-2.c: Likewise.
* gcc.dg/torture/stackalign/non-local-goto-3.c: Likewise.
* gcc.dg/torture/stackalign/non-local-goto-4.c: Likewise.
* gcc.dg/torture/stackalign/non-local-goto-5.c: Likewise.
* gcc.dg/torture/stackalign/pr16660-1.c: Likewise.
* gcc.dg/torture/stackalign/pr16660-2.c: Likewise.
* gcc.dg/torture/stackalign/pr16660-3.c: Likewise.
* gcc.dg/torture/stackalign/regparm-1.c: Likewise.
* gcc.dg/torture/stackalign/ret-struct-1.c: Likewise.
* gcc.dg/torture/stackalign/setjmp-1.c: Likewise.
* gcc.dg/torture/stackalign/setjmp-2.c: Likewise.
* gcc.dg/torture/stackalign/setjmp-3.c: Likewise.
* gcc.dg/torture/stackalign/setjmp-4.c: Likewise.
* gcc.dg/torture/stackalign/sibcall-1.c: Likewise.
* gcc.dg/torture/stackalign/stackalign.exp: Likewise.
* gcc.dg/torture/stackalign/struct-1.c: Likewise.
* gcc.dg/torture/stackalign/vararg-1.c: Likewise.
* gcc.dg/torture/stackalign/vararg-2.c: Likewise.
* gcc.target/i386/align-main-1.c: Likewise.
* gcc.target/i386/align-main-2.c: Likewise.
* gcc.target/i386/pr32000-2.c: Likewise.
* gcc.target/i386/stackalign/asm-1.c: Likewise.
* gcc.target/i386/stackalign/return-1.c: Likewise.
* gcc.target/i386/stackalign/return-2.c: Likewise.
* gcc.target/i386/stackalign/return-3.c: Likewise.
* gcc.target/i386/stackalign/return-4.c: Likewise.
* gcc.target/i386/stackalign/return-5.c: Likewise.
* gcc.target/i386/stackalign/return-6.c: Likewise.
* gcc.target/i386/stackalign/stackalign.exp: Likewise.
* g++.dg/torture/stackalign/check.h: Likewise.
* g++.dg/torture/stackalign/eh-alloca-1.C: Likewise.
* g++.dg/torture/stackalign/eh-fastcall-1.C: Likewise.
* g++.dg/torture/stackalign/eh-global-1.C: Likewise.
* g++.dg/torture/stackalign/eh-inline-1.C: Likewise.
* g++.dg/torture/stackalign/eh-inline-2.C: Likewise.
* g++.dg/torture/stackalign/eh-vararg-1.C: Likewise.
* g++.dg/torture/stackalign/eh-vararg-2.C: Likewise.
* g++.dg/torture/stackalign/stackalign.exp: Likewise.
* g++.dg/torture/stackalign/stdcall-1.C: Likewise.
* g++.dg/torture/stackalign/test-unwind.h: Likewise.
* g++.dg/torture/stackalign/throw-1.C: Likewise.
* g++.dg/torture/stackalign/throw-2.C: Likewise.
* g++.dg/torture/stackalign/throw-3.C: Likewise.
* g++.dg/torture/stackalign/throw-4.C: Likewise.
* g++.dg/torture/stackalign/unwind-0.C: Likewise.
* g++.dg/torture/stackalign/unwind-1.C: Likewise.
* g++.dg/torture/stackalign/unwind-2.C: Likewise.
* g++.dg/torture/stackalign/unwind-3.C: Likewise.
* g++.dg/torture/stackalign/unwind-4.C: Likewise.
* g++.dg/torture/stackalign/unwind-5.C: Likewise.
* g++.dg/torture/stackalign/unwind-6.C: Likewise.

* gcc.target/i386/20060512-1.c: Add -mpreferred-stack-boundary=4.
(main): Move "popl" after check.
* gcc.target/i386/20060512-3.c: Likewise.

* gcc.target/i386/20060512-2.c: Add -mpreferred-stack-boundary=4.
Remove dg-error.

* gcc.target/i386/20060512-4.c: Add -mpreferred-stack-boundary=4.
Remove dg-warning.

* lib/target-supports.exp (check_effective_target_unaligned_stack):
Always return 0.
(check_effective_target_automatic_stack_alignment): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138336 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Joey Ye <joey.ye@intel.com>
hjl [Wed, 30 Jul 2008 19:20:43 +0000 (19:20 +0000)]
2008-07-30  Joey Ye  <joey.ye@intel.com>
    H.J. Lu  <hongjiu.lu@intel.com>

* builtins.c (expand_builtin_setjmp_receiver): Replace
virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
(expand_builtin_apply_args_1): Likewise.
(expand_builtin_longjmp): Need DRAP for stack alignment.
(expand_builtin_apply): Likewise.

* caller-save.c (setup_save_areas): Call assign_stack_local_1
instead of assign_stack_local to allow alignment reduction.

* calls.c (emit_call_1): Need DRAP for stack alignment if
return pops.
(expand_call): Replace virtual_incoming_args_rtx with
crtl->args.internal_arg_pointer.
* stmt.c (expand_nl_goto_receiver): Likewise.

* cfgexpand.c (get_decl_align_unit): Estimate stack variable
alignment and store to stack_alignment_estimated and
max_used_stack_slot_alignment.
(expand_one_var): Likewise.
(expand_stack_alignment): New function.
(tree_expand_cfg): Initialize max_used_stack_slot_alignment
and stack_alignment_estimated fields in rtl_data.  Call
expand_stack_alignment at end.

* defaults.h (INCOMING_STACK_BOUNDARY): New.
(MAX_STACK_ALIGNMENT): Likewise.
(MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
(SUPPORTS_STACK_ALIGNMENT): Likewise.

* emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
stack alignment when generating virtual registers.

* function.c (assign_stack_local): Renamed to ...
(assign_stack_local_1): This.  Add a parameter to indicate
if it is OK to reduce alignment.
(assign_stack_local): Use it.
(instantiate_new_reg): Instantiate virtual incoming args rtx
to vDRAP if stack realignment and DRAP is needed.
(assign_parms): Collect parameter/return type alignment and
contribute to stack_alignment_estimated.
(locate_and_pad_parm): Likewise.
(get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
with crtl->args.internal_arg_pointer.

* function.h (rtl_data): Add new field drap_reg,
max_used_stack_slot_alignment, stack_alignment_estimated,
stack_realign_needed, need_drap, stack_realign_processed and
stack_realign_finalized.
(stack_realign_fp): New macro.
(stack_realign_drap): Likewise.

* global.c (compute_regsets): Frame pointer is needed when
stack is realigned.  Can eliminate frame pointer when stack is
realigned and dynamic realigned argument pointer isn't used.

* reload1.c (update_eliminables):  Frame pointer is needed
when stack is realigned.
(init_elim_table): Can eliminate frame pointer when stack is
realigned and dynamic realigned argument pointer isn't used.

* rtl.h (assign_stack_local_1): Declare new funtion.

* target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
(TARGET_GET_DRAP_RTX): Likewise.
(TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
TARGET_GET_DRAP_RTX.

* target.h (gcc_target): Add update_stack_boundary and
get_drap_rtx.

* tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
STACK_BOUNDARY with MAX_STACK_ALIGNMENT.

2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
    H.J. Lu  <hongjiu.lu@intel.com>

* dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
vdrap_reg, stack_realign and drap_reg_saved.
(add_cfi): Don't allow redefining CFA when DRAP is used.
(reg_save): Handle stack alignment.
(dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
alignment.  Don't generate DWARF information for (set fp sp)
when DRAP is used.
(dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
to INVALID_REGNUM.
(int_loc_descriptor): Move prototype forward.  Also define if
DWARF2_UNWIND_INFO is true.
(output_cfa_loc): Handle DW_CFA_expression.
(build_cfa_aligned_loc): New.
(based_loc_descr): Update assert for stack realign.  For local
variables, use sp+offset when stack is aligned without drap and
fp+offset when stack is aligned with drap.  For arguments, use
cfa+offset when drap is used to align stack.

2008-07-30  Joey Ye  <joey.ye@intel.com>
    H.J. Lu  <hongjiu.lu@intel.com>

* config/i386/i386.c (ix86_force_align_arg_pointer_string):
Break long line.
(ix86_gen_andsp): New.
(ix86_user_incoming_stack_boundary): Likewise.
(ix86_default_incoming_stack_boundary): Likewise.
(ix86_incoming_stack_boundary): Likewise.
(ix86_can_eliminate): Likewise.
(find_drap_reg): Likewise.
(ix86_update_stack_boundary): Likewise.
(ix86_get_drap_rtx): Likewise.
(ix86_finalize_stack_realign_flags): Likewise.
(TARGET_UPDATE_STACK_BOUNDARY): Likewise.
(TARGET_GET_DRAP_RTX): Likewise.
(override_options): Overide option value for new options.
(ix86_function_ok_for_sibcall): Remove check for
force_align_arg_pointer.
(ix86_handle_cconv_attribute): Likewise.
(ix86_function_regparm): Likewise.
(setup_incoming_varargs_64): Don't set stack_alignment_needed
here.
(ix86_va_start): Replace virtual_incoming_args_rtx with
crtl->args.internal_arg_pointer.
(ix86_select_alt_pic_regnum): Check DRAP register.
(ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
(ix86_compute_frame_layout): Compute frame layout wrt stack
realignment.
(ix86_internal_arg_pointer): Just return
virtual_incoming_args_rtx.
(ix86_expand_prologue): Decide if stack realignment is needed
and generate prologue code accordingly.
(ix86_expand_epilogue): Generate epilogue code wrt stack
realignment is really needed or not.

* config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
(ABI_STACK_BOUNDARY): Likewise.
(PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
(STACK_REALIGN_DEFAULT): Likewise.
(INCOMING_STACK_BOUNDARY): Likewise.
(MAX_STACK_ALIGNMENT): Likewise.
(ix86_incoming_stack_boundary): Likewise.
(FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
(REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
(CAN_ELIMINATE): Defined with ix86_can_eliminate.
(machine_function): Remove force_align_arg_pointer.

* config/i386/i386.md (BX_REG): New.
(R13_REG): Likewise.

* config/i386/i386.opt (mforce_drap): New.
(mincoming-stack-boundary): Likewise.
(mstackrealign): Add Init(-1).

* config/i386/i386-protos.h (ix86_can_eliminate): New

2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>

* doc/extend.texi: Update force_align_arg_pointer.

* doc/invoke.texi: Document -mincoming-stack-boundary.  Update
-mstackrealign.

* doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
(INCOMING_STACK_BOUNDARY): Likewise.
(TARGET_UPDATE_STACK_BOUNDARY): New target hook.
(TARGET_GET_DRAP_RTX): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138335 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoPR rtl-optimization/36929
schwab [Wed, 30 Jul 2008 18:22:50 +0000 (18:22 +0000)]
PR rtl-optimization/36929
* dse.c (replace_inc_dec): Use emit_insn_before instead of
add_insn_before and fix argument order.
(replace_inc_dec_mem): Handle NULL rtx.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138333 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoResync.
charlet [Wed, 30 Jul 2008 17:39:56 +0000 (17:39 +0000)]
Resync.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138332 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Laurent Pautet <pautet@adacore.com>
charlet [Wed, 30 Jul 2008 17:38:55 +0000 (17:38 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138331 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Robert Dewar <dewar@adacore.com>
charlet [Wed, 30 Jul 2008 17:38:25 +0000 (17:38 +0000)]
2008-07-30  Robert Dewar  <dewar@adacore.com>

* sem_ch8.adb: Minor reformatting

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138330 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Robert Dewar <dewar@adacore.com>
charlet [Wed, 30 Jul 2008 17:38:16 +0000 (17:38 +0000)]
2008-07-30  Robert Dewar  <dewar@adacore.com>

* 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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138329 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Robert Dewar <dewar@adacore.com>
charlet [Wed, 30 Jul 2008 17:38:04 +0000 (17:38 +0000)]
2008-07-30  Robert Dewar  <dewar@adacore.com>

* exp_ch9.adb: Minor reformatting

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138328 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
andrewjenner [Wed, 30 Jul 2008 16:28:01 +0000 (16:28 +0000)]
* config/arm/arm.c (arm_compute_static_chain_stack_bytes): New
function.
(arm_compute_initial_elimination_offset): Use it.
(arm_compute_save_reg_mask): Include static chain save slot when
calculating alignment.
(arm_get_frame_offsets): Ditto.
(thumb1_compute_save_reg_mask): Ensure we have a low register saved
that we can use to decrement the stack when the stack decrement
could be too big for an immediate value in a single insn.
(thumb1_expand_prologue): Avoid using r12 for stack decrement.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138327 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoResync.
charlet [Wed, 30 Jul 2008 15:56:34 +0000 (15:56 +0000)]
Resync.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138325 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Wed, 30 Jul 2008 15:53:21 +0000 (15:53 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138324 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Robert Dewar <dewar@adacore.com>
charlet [Wed, 30 Jul 2008 15:53:08 +0000 (15:53 +0000)]
2008-07-30  Robert Dewar  <dewar@adacore.com>

* uintp.adb (UI_GCD): Fix potential overflow

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138323 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Ed Schonberg <schonberg@adacore.com>
charlet [Wed, 30 Jul 2008 15:52:58 +0000 (15:52 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138322 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Thomas Quinot <quinot@adacore.com>
charlet [Wed, 30 Jul 2008 15:52:47 +0000 (15:52 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138321 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Robert Dewar <dewar@adacore.com>
charlet [Wed, 30 Jul 2008 15:52:36 +0000 (15:52 +0000)]
2008-07-30  Robert Dewar  <dewar@adacore.com>

* gnatlink.adb: Minor reformatting

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138320 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Richard Guenther <rguenther@suse.de>
rguenth [Wed, 30 Jul 2008 15:43:42 +0000 (15:43 +0000)]
2008-07-30  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/36967
* tree-predcom.c (remove_stmt): Use gimple_assign_ssa_name_copy_p.
Release defs of statements we remove.

* gfortran.dg/pr36967.f: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138318 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
froydnj [Wed, 30 Jul 2008 15:32:34 +0000 (15:32 +0000)]
    * config/arm/arm.c (arm_expand_prologue): Use 0-length rtvec
        instead of NULL_RTVEC.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138317 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago PR target/35866
froydnj [Wed, 30 Jul 2008 15:30:59 +0000 (15:30 +0000)]
PR target/35866

* config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Add clause for
vector modes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138316 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agosync with src
bonzini [Wed, 30 Jul 2008 15:04:24 +0000 (15:04 +0000)]
sync with src

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138314 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoconfig: sync with src
bonzini [Wed, 30 Jul 2008 14:57:07 +0000 (14:57 +0000)]
config: sync with src
2008-07-25  Keith Seitz  <keiths@redhat.com>

* acinclude.m4: Remove libide, libgui, and all the other Tcl
functions.
* tcl.m4: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138313 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Rafael Avila de Espindola <espindola@google.com>
espindola [Wed, 30 Jul 2008 13:59:58 +0000 (13:59 +0000)]
2008-07-30  Rafael Avila de Espindola  <espindola@google.com>

       * final.c (call_from_call_insn): New.
       (final_scan_insn): Call assemble_external on FUNCTION_DECLs.

2008-07-30  Rafael Avila de Espindola  <espindola@google.com>

* gcc.dg/visibility-14.c: New test.
* gcc.dg/visibility-15.c: New test.
* gcc.dg/visibility-16.c: New test.
* gcc.dg/visibility-17.c: New test.
* gcc.dg/visibility-18.c: New test.
* gcc.dg/visibility-19.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138310 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Dodji Seketeli <dseketel@redhat.com>
dodji [Wed, 30 Jul 2008 13:07:50 +0000 (13:07 +0000)]
2008-07-30  Dodji Seketeli  <dseketel@redhat.com>

PR c++/36767
* decl2.c (fix_temporary_vars_context_r): New function.
 (one_static_initialization_or_destruction): Make sure temporary
 variables part of the initialiser have their DECL_CONTEXT()
 properly set.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138308 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Doug Rupp <rupp@adacore.com>
charlet [Wed, 30 Jul 2008 13:06:45 +0000 (13:06 +0000)]
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138307 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoResync
charlet [Wed, 30 Jul 2008 13:04:41 +0000 (13:04 +0000)]
Resync

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138306 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Jose Ruiz <ruiz@adacore.com>
charlet [Wed, 30 Jul 2008 13:03:32 +0000 (13:03 +0000)]
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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138305 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Robert Dewar <dewar@adacore.com>
charlet [Wed, 30 Jul 2008 13:02:39 +0000 (13:02 +0000)]
2008-07-30  Robert Dewar  <dewar@adacore.com>

* osint.ads: Minor reformatting

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138304 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Robert Dewar <dewar@adacore.com>
charlet [Wed, 30 Jul 2008 13:02:30 +0000 (13:02 +0000)]
2008-07-30  Robert Dewar  <dewar@adacore.com>

* mlib-utl.adb: Minor reformatting

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138303 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Robert Dewar <dewar@adacore.com>
charlet [Wed, 30 Jul 2008 13:02:21 +0000 (13:02 +0000)]
2008-07-30  Robert Dewar  <dewar@adacore.com>

* make.adb: Minor reformatting

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138302 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Paolo Bonzini <bonzini@gnu.org>
bonzini [Wed, 30 Jul 2008 12:17:17 +0000 (12:17 +0000)]
2008-07-30  Paolo Bonzini  <bonzini@gnu.org>

* configure.ac: Add makefile fragments for hpux.
* Makefile.def (flags_to_pass): Add ADA_CFLAGS.
* Makefile.tpl (HOST_EXPORTS): Pass ADA_CFLAGS.
* configure: Regenerate.
* Makefile.in: Regenerate.

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

* mh-pa: New, from gcc/config/pa/x-ada.
* mh-pa-hpux10: New, from gcc/config/pa/x-ada-hpux10.

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

* configure.ac: Substitute ADA_CFLAGS.
* configure: Regenerate.
* config.host: Remove mention of pa/x-ada and pa/x-ada-hpux10 files.
* Makefile.in: Remove mention of X_* variables.
* config/pa/x-ada-hpux10: Remove.
* config/pa/x-ada: Remove.

* doc/fragments.texi: Update.

gcc/ada:
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.

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

* configure.ac (x_ada_cflags): Remove.
(ADA_CFLAGS): Substitute.
* configure: Regenerate.
* Makefile.in (ADA_CFLAGS): Substitute.
(T_ADA_CFLAGS, X_ADA_CFLAGS, ALL_ADA_CFLAGS): Remove.
(TOOLS_FLAGS_TO_PASS_1, TOOLS_FLAGS_TO_PASS_1re,
TOOLS_FLAGS_TO_PASS_NATIVE, TOOLS_FLAGS_TO_PASS_CROSS):
Pass ADA_CFLAGS.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138301 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agomove wrong gcc/ChangeLog entry to gnattools/ChangeLog
bonzini [Wed, 30 Jul 2008 12:09:47 +0000 (12:09 +0000)]
move wrong gcc/ChangeLog entry to gnattools/ChangeLog

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138300 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoFix date on entry headline.
hainque [Wed, 30 Jul 2008 10:15:19 +0000 (10:15 +0000)]
Fix date on entry headline.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138298 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
hainque [Wed, 30 Jul 2008 10:13:46 +0000 (10:13 +0000)]
    * config/mips/irix-crti.asm: .hide __gcc_init and __gcc_fini.
        * config/mips/iris6.h (IRIX_SUBTARGET_LINK_SPEC, irix ld): Hide
        __dso_handle explicitly here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138297 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-30 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
manu [Wed, 30 Jul 2008 08:30:32 +0000 (08:30 +0000)]
2008-07-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

PR 34389
* c-typeck.c (build_binary_op): Encapsulate code into...
* c-common.c (shorten_binary_op): ...this new function.
(conversion_warning): Use the new function. Handle non-negative
constant in bitwise-and.
* c-common.h (shorten_binary_op): Declare.
cp/
* typeck.c (build_binary_op): Encapsulate code into
shorten_binary_op.
testsuite/
* gcc.dg/Wconversion-pr34389.c: New.
* g++.dg/warn/Wconversion-pr34389.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138296 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * scan.c (make_sstring_space): Add explicit conversions of
hainque [Wed, 30 Jul 2008 07:44:09 +0000 (07:44 +0000)]
* scan.c (make_sstring_space): Add explicit conversions of
allocator's return value.
* fix-header.c (recognized_function): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138295 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agogcc/ChangeLog
guerby [Wed, 30 Jul 2008 06:45:39 +0000 (06:45 +0000)]
gcc/ChangeLog
2008-07-29  Laurent Guerby <laurent@guerby.net>

        PR ada/5911
        * gnattools/Makefile.in: Replace stamp-gnatlib by
        stamp-gnatlib-rts.

gcc/ada/ChangeLog
2008-07-29  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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138294 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agogcc/ada/
rwild [Wed, 30 Jul 2008 05:28:53 +0000 (05:28 +0000)]
gcc/ada/
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.

gcc/
* doc/cpp.texi: Update to GFDL 1.2.
* doc/gcc.texi: Do not list GPL as Invariant Section.
* doc/gccint.texi: Likewise.  Update copyright years.
* doc/install.texi: Update copyright years.

gcc/fortran/
* gfc-internals.texi: Update to GFDL 1.2.  Do not list GPL as
Invariant Section.
* gfortran.texi: Likewise.
* intrinsic.texi: Do not list GPL as Invariant Section.
* invoke.texi: Likewise.  Update copyright years.

gcc/java/
* gcj.texi: Update copyright years.  Do not list GPL as
Invariant Section.

libgomp/
* libgomp.texi: Update to GFDL 1.2.  Update copyright years.
Do not list GPL as Invariant Section.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138293 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago PR target/36955
amodra [Wed, 30 Jul 2008 02:43:05 +0000 (02:43 +0000)]
PR target/36955
* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138291 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoDaily bump.
gccadmin [Wed, 30 Jul 2008 00:16:57 +0000 (00:16 +0000)]
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138289 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * gcc.dg/pr32370.c: Force 64 bits on IA64.
sje [Tue, 29 Jul 2008 22:32:32 +0000 (22:32 +0000)]
* gcc.dg/pr32370.c: Force 64 bits on IA64.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138277 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoIndex: gcc/fortran/trans-expr.c
pault [Tue, 29 Jul 2008 20:44:09 +0000 (20:44 +0000)]
Index: gcc/fortran/trans-expr.c
===================================================================
*** gcc/fortran/trans-expr.c (revision 138273)
--- gcc/fortran/trans-expr.c (working copy)
***************
*** 1,6 ****
  /* Expression translation
!    Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
!    Foundation, Inc.
     Contributed by Paul Brook <paul@nowt.org>
     and Steven Bosscher <s.bosscher@student.tudelft.nl>

--- 1,6 ----
  /* Expression translation
!    Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
!    Free Software Foundation, Inc.
     Contributed by Paul Brook <paul@nowt.org>
     and Steven Bosscher <s.bosscher@student.tudelft.nl>

*************** gfc_conv_component_ref (gfc_se * se, gfc
*** 395,400 ****
--- 395,434 ----
  }

+ /* This function deals with component references to components of the
+    parent type for derived type extensons.  */
+ static void
+ conv_parent_component_references (gfc_se * se, gfc_ref * ref)
+ {
+   gfc_component *c;
+   gfc_component *cmp;
+   gfc_symbol *dt;
+   gfc_ref parent;
+
+   dt = ref->u.c.sym;
+   c = ref->u.c.component;
+
+   /* Build a gfc_ref to recursively call gfc_conv_component_ref.  */
+   parent.type = REF_COMPONENT;
+   parent.next = NULL;
+   parent.u.c.sym = dt;
+   parent.u.c.component = dt->components;
+
+   if (dt->attr.extension && dt->components)
+     {
+       /* Return if the component is not in the parent type.  */
+       for (cmp = dt->components->next; cmp; cmp = cmp->next)
+  if (strcmp (c->name, cmp->name) == 0)
+    return;
+
+       /* Otherwise build the reference and call self.  */
+       gfc_conv_component_ref (se, &parent);
+       parent.u.c.sym = dt->components->ts.derived;
+       parent.u.c.component = c;
+       conv_parent_component_references (se, &parent);
+     }
+ }
+
  /* Return the contents of a variable. Also handles reference/pointer
     variables (all Fortran pointer references are implicit).  */

*************** gfc_conv_variable (gfc_se * se, gfc_expr
*** 561,566 ****
--- 595,603 ----
     break;

   case REF_COMPONENT:
+    if (ref->u.c.sym->attr.extension)
+      conv_parent_component_references (se, ref);
+
     gfc_conv_component_ref (se, ref);
     break;

Index: gcc/fortran/trans-array.c
===================================================================
*** gcc/fortran/trans-array.c (revision 138273)
--- gcc/fortran/trans-array.c (working copy)
*************** gfc_conv_resolve_dependencies (gfc_loopi
*** 3257,3270 ****
        if (ss->type != GFC_SS_SECTION)
   continue;

!       if (gfc_could_be_alias (dest, ss)
!      || gfc_are_equivalenced_arrays (dest->expr, ss->expr))
   {
!    nDepend = 1;
!    break;
   }
!
!       if (dest->expr->symtree->n.sym == ss->expr->symtree->n.sym)
   {
     lref = dest->expr->ref;
     rref = ss->expr->ref;
--- 3257,3272 ----
        if (ss->type != GFC_SS_SECTION)
   continue;

!       if (dest->expr->symtree->n.sym != ss->expr->symtree->n.sym)
   {
!    if (gfc_could_be_alias (dest, ss)
!  || gfc_are_equivalenced_arrays (dest->expr, ss->expr))
!      {
!        nDepend = 1;
!        break;
!      }
   }
!       else
   {
     lref = dest->expr->ref;
     rref = ss->expr->ref;
Index: gcc/fortran/symbol.c
===================================================================
*** gcc/fortran/symbol.c (revision 138273)
--- gcc/fortran/symbol.c (working copy)
*************** gfc_add_component (gfc_symbol *sym, cons
*** 1701,1706 ****
--- 1701,1714 ----
        tail = p;
      }

+   if (sym->attr.extension
+  && gfc_find_component (sym->components->ts.derived, name))
+     {
+       gfc_error ("Component '%s' at %C already in the parent type "
+   "at %L", name, &sym->components->ts.derived->declared_at);
+       return FAILURE;
+     }
+
    /* Allocate a new component.  */
    p = gfc_get_component ();

*************** gfc_find_component (gfc_symbol *sym, con
*** 1830,1846 ****
      if (strcmp (p->name, name) == 0)
        break;

    if (p == NULL)
      gfc_error ("'%s' at %C is not a member of the '%s' structure",
          name, sym->name);
!   else
      {
!       if (sym->attr.use_assoc && (sym->component_access == ACCESS_PRIVATE
!    || p->access == ACCESS_PRIVATE))
   {
     gfc_error ("Component '%s' at %C is a PRIVATE component of '%s'",
        name, sym->name);
!    p = NULL;
   }
      }

--- 1838,1873 ----
      if (strcmp (p->name, name) == 0)
        break;

+   if (p == NULL
+  && sym->attr.extension
+  && sym->components->ts.type == BT_DERIVED)
+     {
+       p = gfc_find_component (sym->components->ts.derived, name);
+       /* Do not overwrite the error.  */
+       if (p == NULL)
+  return p;
+     }
+
    if (p == NULL)
      gfc_error ("'%s' at %C is not a member of the '%s' structure",
          name, sym->name);
!
!   else if (sym->attr.use_assoc)
      {
!       if (p->access == ACCESS_PRIVATE)
   {
     gfc_error ("Component '%s' at %C is a PRIVATE component of '%s'",
        name, sym->name);
!    return NULL;
!  }
!
!       /* If there were components given and all components are private, error
!   out at this place.  */
!       if (p->access != ACCESS_PUBLIC && sym->component_access == ACCESS_PRIVATE)
!  {
!    gfc_error ("All components of '%s' are PRIVATE in structure"
!       " constructor at %C", sym->name);
!    return NULL;
   }
      }

Index: gcc/fortran/decl.c
===================================================================
*** gcc/fortran/decl.c (revision 138273)
--- gcc/fortran/decl.c (working copy)
*************** match_data_constant (gfc_expr **result)
*** 367,373 ****
        return MATCH_ERROR;
      }
    else if (sym->attr.flavor == FL_DERIVED)
!     return gfc_match_structure_constructor (sym, result);

    /* Check to see if the value is an initialization array expression.  */
    if (sym->value->expr_type == EXPR_ARRAY)
--- 367,373 ----
        return MATCH_ERROR;
      }
    else if (sym->attr.flavor == FL_DERIVED)
!     return gfc_match_structure_constructor (sym, result, false);

    /* Check to see if the value is an initialization array expression.  */
    if (sym->value->expr_type == EXPR_ARRAY)
*************** syntax:
*** 6250,6255 ****
--- 6250,6298 ----
  }

+ /* Check a derived type that is being extended.  */
+ static gfc_symbol*
+ check_extended_derived_type (char *name)
+ {
+   gfc_symbol *extended;
+
+   if (gfc_find_symbol (name, gfc_current_ns, 1, &extended))
+     {
+       gfc_error ("Ambiguous symbol in TYPE definition at %C");
+       return NULL;
+     }
+
+   if (!extended)
+     {
+       gfc_error ("No such symbol in TYPE definition at %C");
+       return NULL;
+     }
+
+   if (extended->attr.flavor != FL_DERIVED)
+     {
+       gfc_error ("'%s' in EXTENDS expression at %C is not a "
+   "derived type", name);
+       return NULL;
+     }
+
+   if (extended->attr.is_bind_c)
+     {
+       gfc_error ("'%s' cannot be extended at %C because it "
+   "is BIND(C)", extended->name);
+       return NULL;
+     }
+
+   if (extended->attr.sequence)
+     {
+       gfc_error ("'%s' cannot be extended at %C because it "
+   "is a SEQUENCE type", extended->name);
+       return NULL;
+     }
+
+   return extended;
+ }
+
+
  /* Match the optional attribute specifiers for a type declaration.
     Return MATCH_ERROR if an error is encountered in one of the handled
     attributes (public, private, bind(c)), MATCH_NO if what's found is
*************** syntax:
*** 6257,6263 ****
     checking on attribute conflicts needs to be done.  */

  match
! gfc_get_type_attr_spec (symbol_attribute *attr)
  {
    /* See if the derived type is marked as private.  */
    if (gfc_match (" , private") == MATCH_YES)
--- 6300,6306 ----
     checking on attribute conflicts needs to be done.  */

  match
! gfc_get_type_attr_spec (symbol_attribute *attr, char *name)
  {
    /* See if the derived type is marked as private.  */
    if (gfc_match (" , private") == MATCH_YES)
*************** gfc_get_type_attr_spec (symbol_attribute
*** 6295,6300 ****
--- 6338,6349 ----

        /* TODO: attr conflicts need to be checked, probably in symbol.c.  */
      }
+   else if (name && gfc_match(" , extends ( %n )", name) == MATCH_YES)
+     {
+       if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: derived type "
+      "extended at %C") == FAILURE)
+  return MATCH_ERROR;
+     }
    else
      return MATCH_NO;

*************** match
*** 6311,6318 ****
--- 6360,6369 ----
  gfc_match_derived_decl (void)
  {
    char name[GFC_MAX_SYMBOL_LEN + 1];
+   char parent[GFC_MAX_SYMBOL_LEN + 1];
    symbol_attribute attr;
    gfc_symbol *sym;
+   gfc_symbol *extended;
    match m;
    match is_type_attr_spec = MATCH_NO;
    bool seen_attr = false;
*************** gfc_match_derived_decl (void)
*** 6320,6336 ****
    if (gfc_current_state () == COMP_DERIVED)
      return MATCH_NO;

    gfc_clear_attr (&attr);

    do
      {
!       is_type_attr_spec = gfc_get_type_attr_spec (&attr);
        if (is_type_attr_spec == MATCH_ERROR)
   return MATCH_ERROR;
        if (is_type_attr_spec == MATCH_YES)
   seen_attr = true;
      } while (is_type_attr_spec == MATCH_YES);

    if (gfc_match (" ::") != MATCH_YES && seen_attr)
      {
        gfc_error ("Expected :: in TYPE definition at %C");
--- 6371,6397 ----
    if (gfc_current_state () == COMP_DERIVED)
      return MATCH_NO;

+   name[0] = '\0';
+   parent[0] = '\0';
    gfc_clear_attr (&attr);
+   extended = NULL;

    do
      {
!       is_type_attr_spec = gfc_get_type_attr_spec (&attr, parent);
        if (is_type_attr_spec == MATCH_ERROR)
   return MATCH_ERROR;
        if (is_type_attr_spec == MATCH_YES)
   seen_attr = true;
      } while (is_type_attr_spec == MATCH_YES);

+   /* Deal with derived type extensions.  */
+   if (parent[0])
+     extended = check_extended_derived_type (parent);
+
+   if (parent[0] && !extended)
+     return MATCH_ERROR;
+
    if (gfc_match (" ::") != MATCH_YES && seen_attr)
      {
        gfc_error ("Expected :: in TYPE definition at %C");
*************** gfc_match_derived_decl (void)
*** 6383,6392 ****
--- 6444,6477 ----
    if (attr.is_bind_c != 0)
      sym->attr.is_bind_c = attr.is_bind_c;

+
    /* Construct the f2k_derived namespace if it is not yet there.  */
    if (!sym->f2k_derived)
      sym->f2k_derived = gfc_get_namespace (NULL, 0);

+
+   if (extended && !sym->components)
+     {
+       gfc_component *p;
+       gfc_symtree *st;
+
+       /* Add the extended derived type as the first component.  */
+       gfc_add_component (sym, parent, &p);
+       sym->attr.extension = 1;
+       extended->refs++;
+       gfc_set_sym_referenced (extended);
+
+       p->ts.type = BT_DERIVED;
+       p->ts.derived = extended;
+       p->initializer = gfc_default_initializer (&p->ts);
+
+       /* Provide the links between the extended type and its extension.  */
+       if (!extended->f2k_derived)
+  extended->f2k_derived = gfc_get_namespace (NULL, 0);
+       st = gfc_new_symtree (&extended->f2k_derived->sym_root, sym->name);
+       st->n.sym = sym;
+     }
+
    gfc_new_block = sym;

    return MATCH_YES;
Index: gcc/fortran/gfortran.h
===================================================================
*** gcc/fortran/gfortran.h (revision 138273)
--- gcc/fortran/gfortran.h (working copy)
*************** typedef struct
*** 638,643 ****
--- 638,644 ----
    unsigned untyped:1;           /* No implicit type could be found.  */

    unsigned is_bind_c:1; /* say if is bound to C */
+   unsigned extension:1; /* extends a derived type */

    /* These flags are both in the typespec and attribute.  The attribute
       list is what gets read from/written to a module file.  The typespec
*************** typedef struct gfc_symbol
*** 1016,1024 ****

    gfc_formal_arglist *formal;
    struct gfc_namespace *formal_ns;
-
-   /* The namespace containing type-associated procedure symbols.  */
-   /* TODO: Make this union with formal?  */
    struct gfc_namespace *f2k_derived;

    struct gfc_expr *value; /* Parameter/Initializer value */
--- 1017,1022 ----
Index: gcc/fortran/ChangeLog
===================================================================
*** gcc/fortran/ChangeLog (revision 138273)
--- gcc/fortran/ChangeLog (working copy)
***************
*** 1,3 ****
--- 1,42 ----
+ 2008-07-29  Paul Thomas  <pault@gcc.gnu.org>
+
+  * trans-expr.c (conv_parent_component_references): New function
+  to build missing parent references.
+  (gfc_conv_variable): Call it
+  * symbol.c (gfc_add_component): Check that component name in a
+  derived type extension does not appear in parent.
+  (gfc_find_component): For a derived type extension, check if
+  the component appears in the parent derived type by calling
+  self. Separate errors for private components and private types.
+  * decl.c (match_data_constant): Add extra arg to call to
+  gfc_match_structure_constructor.
+  (check_extended_derived_type): New function to check that a
+  parent derived type exists and that it is OK for exension.
+  (gfc_get_type_attr_spec): Add extra argument 'name' and return
+  it if extends is specified.
+  (gfc_match_derived_decl): Match derived type extension and
+  build a first component of the parent derived type if OK. Add
+  the f2k namespace if not present.
+  * gfortran.h : Add the extension attribute.
+  * module.c : Handle attribute 'extension'.
+  * match.h : Modify prototypes for gfc_get_type_attr_spec and
+  gfc_match_structure_constructor.
+  * primary.c (build_actual_constructor): New function extracted
+  from gfc_match_structure_constructor and modified to call self
+  iteratively to build derived type extensions, when f2k named
+  components are used.
+  (gfc_match_structure_constructor): Do not throw error for too
+  many components if a parent type is being handled. Use
+  gfc_find_component to generate errors for non-existent or
+  private components.  Iteratively call self for derived type
+  extensions so that parent constructor is built.  If extension
+  and components left over, throw error.
+  (gfc_match_rvalue): Add extra arg to call to
+  gfc_match_structure_constructor.
+
+  * trans-array.c (gfc_conv_resolve_dependencies): If lhs and rhs
+  are the same symbol, aliassing does not matter.
+
  2008-07-29  Jan Hubicka  <jh@suse.cz>

   * options.c (gfc_post_options): Do not set flag_no_inline.
Index: gcc/fortran/module.c
===================================================================
*** gcc/fortran/module.c (revision 138273)
--- gcc/fortran/module.c (working copy)
*************** typedef enum
*** 1648,1654 ****
    AB_ELEMENTAL, AB_PURE, AB_RECURSIVE, AB_GENERIC, AB_ALWAYS_EXPLICIT,
    AB_CRAY_POINTER, AB_CRAY_POINTEE, AB_THREADPRIVATE, AB_ALLOC_COMP,
    AB_POINTER_COMP, AB_PRIVATE_COMP, AB_VALUE, AB_VOLATILE, AB_PROTECTED,
!   AB_IS_BIND_C, AB_IS_C_INTEROP, AB_IS_ISO_C, AB_ABSTRACT, AB_ZERO_COMP
  }
  ab_attribute;

--- 1648,1655 ----
    AB_ELEMENTAL, AB_PURE, AB_RECURSIVE, AB_GENERIC, AB_ALWAYS_EXPLICIT,
    AB_CRAY_POINTER, AB_CRAY_POINTEE, AB_THREADPRIVATE, AB_ALLOC_COMP,
    AB_POINTER_COMP, AB_PRIVATE_COMP, AB_VALUE, AB_VOLATILE, AB_PROTECTED,
!   AB_IS_BIND_C, AB_IS_C_INTEROP, AB_IS_ISO_C, AB_ABSTRACT, AB_ZERO_COMP,
!   AB_EXTENSION
  }
  ab_attribute;

*************** static const mstring attr_bits[] =
*** 1688,1693 ****
--- 1689,1695 ----
      minit ("ZERO_COMP", AB_ZERO_COMP),
      minit ("PROTECTED", AB_PROTECTED),
      minit ("ABSTRACT", AB_ABSTRACT),
+     minit ("EXTENSION", AB_EXTENSION),
      minit (NULL, -1)
  };

*************** mio_symbol_attribute (symbol_attribute *
*** 1801,1806 ****
--- 1803,1810 ----
   MIO_NAME (ab_attribute) (AB_PRIVATE_COMP, attr_bits);
        if (attr->zero_comp)
   MIO_NAME (ab_attribute) (AB_ZERO_COMP, attr_bits);
+       if (attr->extension)
+  MIO_NAME (ab_attribute) (AB_EXTENSION, attr_bits);

        mio_rparen ();

*************** mio_symbol_attribute (symbol_attribute *
*** 1919,1924 ****
--- 1923,1931 ----
       case AB_ZERO_COMP:
         attr->zero_comp = 1;
         break;
+      case AB_EXTENSION:
+        attr->extension = 1;
+        break;
       }
   }
      }
Index: gcc/fortran/trans-io.c
===================================================================
*** gcc/fortran/trans-io.c (revision 138273)
--- gcc/fortran/trans-io.c (working copy)
***************
*** 1,6 ****
  /* IO Code translation/library interface
!    Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
!    Foundation, Inc.
     Contributed by Paul Brook

  This file is part of GCC.
--- 1,6 ----
  /* IO Code translation/library interface
!    Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
!    Free Software Foundation, Inc.
     Contributed by Paul Brook

  This file is part of GCC.
Index: gcc/fortran/match.h
===================================================================
*** gcc/fortran/match.h (revision 138273)
--- gcc/fortran/match.h (working copy)
*************** gfc_try get_bind_c_idents (void);
*** 182,191 ****
  match gfc_match_bind_c_stmt (void);
  match gfc_match_suffix (gfc_symbol *, gfc_symbol **);
  match gfc_match_bind_c (gfc_symbol *, bool);
! match gfc_get_type_attr_spec (symbol_attribute *);

  /* primary.c.  */
! match gfc_match_structure_constructor (gfc_symbol *, gfc_expr **);
  match gfc_match_variable (gfc_expr **, int);
  match gfc_match_equiv_variable (gfc_expr **);
  match gfc_match_actual_arglist (int, gfc_actual_arglist **);
--- 182,191 ----
  match gfc_match_bind_c_stmt (void);
  match gfc_match_suffix (gfc_symbol *, gfc_symbol **);
  match gfc_match_bind_c (gfc_symbol *, bool);
! match gfc_get_type_attr_spec (symbol_attribute *, char*);

  /* primary.c.  */
! match gfc_match_structure_constructor (gfc_symbol *, gfc_expr **, bool);
  match gfc_match_variable (gfc_expr **, int);
  match gfc_match_equiv_variable (gfc_expr **);
  match gfc_match_actual_arglist (int, gfc_actual_arglist **);
Index: gcc/fortran/primary.c
===================================================================
*** gcc/fortran/primary.c (revision 138273)
--- gcc/fortran/primary.c (working copy)
*************** gfc_free_structure_ctor_component (gfc_s
*** 1984,1994 ****
    gfc_free_expr (comp->val);
  }

! match
! gfc_match_structure_constructor (gfc_symbol *sym, gfc_expr **result)
  {
-   gfc_structure_ctor_component *comp_head, *comp_tail;
    gfc_structure_ctor_component *comp_iter;
    gfc_constructor *ctor_head, *ctor_tail;
    gfc_component *comp; /* Is set NULL when named component is first seen */
    gfc_expr *e;
--- 1984,2086 ----
    gfc_free_expr (comp->val);
  }

!
! /* Translate the component list into the actual constructor by sorting it in
!    the order required; this also checks along the way that each and every
!    component actually has an initializer and handles default initializers
!    for components without explicit value given.  */
! static gfc_try
! build_actual_constructor (gfc_structure_ctor_component **comp_head,
!    gfc_constructor **ctor_head, gfc_symbol *sym)
  {
    gfc_structure_ctor_component *comp_iter;
+   gfc_constructor *ctor_tail = NULL;
+   gfc_component *comp;
+
+   for (comp = sym->components; comp; comp = comp->next)
+     {
+       gfc_structure_ctor_component **next_ptr;
+       gfc_expr *value = NULL;
+
+       /* Try to find the initializer for the current component by name.  */
+       next_ptr = comp_head;
+       for (comp_iter = *comp_head; comp_iter; comp_iter = comp_iter->next)
+  {
+    if (!strcmp (comp_iter->name, comp->name))
+      break;
+    next_ptr = &comp_iter->next;
+  }
+
+       /* If an extension, try building the parent derived type by building
+   a value expression for the parent derived type and calling self.  */
+       if (!comp_iter && comp == sym->components && sym->attr.extension)
+  {
+    value = gfc_get_expr ();
+    value->expr_type = EXPR_STRUCTURE;
+    value->value.constructor = NULL;
+    value->ts = comp->ts;
+    value->where = gfc_current_locus;
+
+    if (build_actual_constructor (comp_head, &value->value.constructor,
+  comp->ts.derived) == FAILURE)
+      {
+        gfc_free_expr (value);
+        return FAILURE;
+      }
+    *ctor_head = ctor_tail = gfc_get_constructor ();
+    ctor_tail->expr = value;
+    continue;
+  }
+
+       /* If it was not found, try the default initializer if there's any;
+   otherwise, it's an error.  */
+       if (!comp_iter)
+  {
+    if (comp->initializer)
+      {
+        if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Structure"
+    " constructor with missing optional arguments"
+    " at %C") == FAILURE)
+  return FAILURE;
+        value = gfc_copy_expr (comp->initializer);
+      }
+    else
+      {
+        gfc_error ("No initializer for component '%s' given in the"
+   " structure constructor at %C!", comp->name);
+        return FAILURE;
+      }
+  }
+       else
+  value = comp_iter->val;
+
+       /* Add the value to the constructor chain built.  */
+       if (ctor_tail)
+  {
+    ctor_tail->next = gfc_get_constructor ();
+    ctor_tail = ctor_tail->next;
+  }
+       else
+  *ctor_head = ctor_tail = gfc_get_constructor ();
+       gcc_assert (value);
+       ctor_tail->expr = value;
+
+       /* Remove the entry from the component list.  We don't want the expression
+   value to be free'd, so set it to NULL.  */
+       if (comp_iter)
+  {
+    *next_ptr = comp_iter->next;
+    comp_iter->val = NULL;
+    gfc_free_structure_ctor_component (comp_iter);
+  }
+     }
+   return SUCCESS;
+ }
+
+ match
+ gfc_match_structure_constructor (gfc_symbol *sym, gfc_expr **result, bool parent)
+ {
+   gfc_structure_ctor_component *comp_tail, *comp_head, *comp_iter;
    gfc_constructor *ctor_head, *ctor_tail;
    gfc_component *comp; /* Is set NULL when named component is first seen */
    gfc_expr *e;
*************** gfc_match_structure_constructor (gfc_sym
*** 1996,2005 ****
    match m;
    const char* last_name = NULL;

!   comp_head = comp_tail = NULL;
    ctor_head = ctor_tail = NULL;

!   if (gfc_match_char ('(') != MATCH_YES)
      goto syntax;

    where = gfc_current_locus;
--- 2088,2097 ----
    match m;
    const char* last_name = NULL;

!   comp_tail = comp_head = NULL;
    ctor_head = ctor_tail = NULL;

!   if (!parent && gfc_match_char ('(') != MATCH_YES)
      goto syntax;

    where = gfc_current_locus;
*************** gfc_match_structure_constructor (gfc_sym
*** 2047,2053 ****
     if (last_name)
       gfc_error ("Component initializer without name after"
          " component named %s at %C!", last_name);
!    else
       gfc_error ("Too many components in structure constructor at"
          " %C!");
     goto cleanup;
--- 2139,2145 ----
     if (last_name)
       gfc_error ("Component initializer without name after"
          " component named %s at %C!", last_name);
!    else if (!parent)
       gfc_error ("Too many components in structure constructor at"
          " %C!");
     goto cleanup;
*************** gfc_match_structure_constructor (gfc_sym
*** 2057,2095 ****
         strncpy (comp_tail->name, comp->name, GFC_MAX_SYMBOL_LEN + 1);
       }

!    /* Find the current component in the structure definition; this is
!       needed to get its access attribute in the private check below.  */
     if (comp)
!      this_comp = comp;
     else
       {
!        for (comp = sym->components; comp; comp = comp->next)
!  if (!strcmp (comp->name, comp_tail->name))
!    {
!      this_comp = comp;
!      break;
!    }
         comp = NULL; /* Reset needed!  */
-
-        /* Here we can check if a component name is given which does not
-   correspond to any component of the defined structure.  */
-        if (!this_comp)
-  {
-    gfc_error ("Component '%s' in structure constructor at %C"
-       " does not correspond to any component in the"
-       " constructed structure!", comp_tail->name);
-    goto cleanup;
-  }
       }
-    gcc_assert (this_comp);

!    /* Check the current component's access status.  */
!    if (sym->attr.use_assoc && this_comp->access == ACCESS_PRIVATE)
!      {
!        gfc_error ("Component '%s' is PRIVATE in structure constructor"
!   " at %C!", comp_tail->name);
!        goto cleanup;
!      }

     /* Check if this component is already given a value.  */
     for (comp_iter = comp_head; comp_iter != comp_tail;
--- 2149,2168 ----
         strncpy (comp_tail->name, comp->name, GFC_MAX_SYMBOL_LEN + 1);
       }

!    /* Find the current component in the structure definition and check its
!       access is not private.  */
     if (comp)
!      this_comp = gfc_find_component (sym, comp->name);
     else
       {
!        this_comp = gfc_find_component (sym, (const char *)comp_tail->name);
         comp = NULL; /* Reset needed!  */
       }

!    /* Here we can check if a component name is given which does not
!       correspond to any component of the defined structure.  */
!    if (!this_comp)
!      goto cleanup;

     /* Check if this component is already given a value.  */
     for (comp_iter = comp_head; comp_iter != comp_tail;
*************** gfc_match_structure_constructor (gfc_sym
*** 2111,2199 ****
     if (m == MATCH_ERROR)
       goto cleanup;

!    if (comp)
       comp = comp->next;
   }
        while (gfc_match_char (',') == MATCH_YES);

!       if (gfc_match_char (')') != MATCH_YES)
   goto syntax;
-
-       /* If there were components given and all components are private, error
-   out at this place.  */
-       if (sym->attr.use_assoc && sym->component_access == ACCESS_PRIVATE)
-  {
-    gfc_error ("All components of '%s' are PRIVATE in structure"
-       " constructor at %C", sym->name);
-    goto cleanup;
-  }
      }

!   /* Translate the component list into the actual constructor by sorting it in
!      the order required; this also checks along the way that each and every
!      component actually has an initializer and handles default initializers
!      for components without explicit value given.  */
!   for (comp = sym->components; comp; comp = comp->next)
!     {
!       gfc_structure_ctor_component **next_ptr;
!       gfc_expr *value = NULL;

!       /* Try to find the initializer for the current component by name.  */
!       next_ptr = &comp_head;
        for (comp_iter = comp_head; comp_iter; comp_iter = comp_iter->next)
   {
!    if (!strcmp (comp_iter->name, comp->name))
!      break;
!    next_ptr = &comp_iter->next;
!  }
!
!       /* If it was not found, try the default initializer if there's any;
!   otherwise, it's an error.  */
!       if (!comp_iter)
!  {
!    if (comp->initializer)
!      {
!        if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Structure"
!    " constructor with missing optional arguments"
!    " at %C") == FAILURE)
!  goto cleanup;
!        value = gfc_copy_expr (comp->initializer);
!      }
!    else
!      {
!        gfc_error ("No initializer for component '%s' given in the"
!   " structure constructor at %C!", comp->name);
!        goto cleanup;
!      }
!  }
!       else
!  value = comp_iter->val;
!
!       /* Add the value to the constructor chain built.  */
!       if (ctor_tail)
!  {
!    ctor_tail->next = gfc_get_constructor ();
!    ctor_tail = ctor_tail->next;
!  }
!       else
!  ctor_head = ctor_tail = gfc_get_constructor ();
!       gcc_assert (value);
!       ctor_tail->expr = value;
!
!       /* Remove the entry from the component list.  We don't want the expression
!   value to be free'd, so set it to NULL.  */
!       if (comp_iter)
!  {
!    *next_ptr = comp_iter->next;
!    comp_iter->val = NULL;
!    gfc_free_structure_ctor_component (comp_iter);
   }
      }
!
!   /* No component should be left, as this should have caused an error in the
!      loop constructing the component-list (name that does not correspond to any
!      component in the structure definition).  */
!   gcc_assert (!comp_head);

    e = gfc_get_expr ();

--- 2184,2239 ----
     if (m == MATCH_ERROR)
       goto cleanup;

!    /* If not explicitly a parent constructor, gather up the components
!       and build one.  */
!    if (comp && comp == sym->components
!  && sym->attr.extension
!  && (comp_tail->val->ts.type != BT_DERIVED
!        ||
!      comp_tail->val->ts.derived != this_comp->ts.derived))
!      {
!        gfc_current_locus = where;
!        gfc_free_expr (comp_tail->val);
!
!        m = gfc_match_structure_constructor (comp->ts.derived,
!     &comp_tail->val, true);
!        if (m == MATCH_NO)
!  goto syntax;
!        if (m == MATCH_ERROR)
!  goto cleanup;
!      }
!
!     if (comp)
       comp = comp->next;
+
+    if (parent && !comp)
+      break;
   }
+
        while (gfc_match_char (',') == MATCH_YES);

!       if (!parent && gfc_match_char (')') != MATCH_YES)
   goto syntax;
      }

!   if (build_actual_constructor (&comp_head, &ctor_head, sym) == FAILURE)
!     goto cleanup;

!   /* No component should be left, as this should have caused an error in the
!      loop constructing the component-list (name that does not correspond to any
!      component in the structure definition).  */
!   if (comp_head && sym->attr.extension)
!     {
        for (comp_iter = comp_head; comp_iter; comp_iter = comp_iter->next)
   {
!    gfc_error ("component '%s' at %L has already been set by a "
!       "parent derived type constructor", comp_iter->name,
!       &comp_iter->where);
   }
+       goto cleanup;
      }
!   else
!     gcc_assert (!comp_head);

    e = gfc_get_expr ();

*************** gfc_match_rvalue (gfc_expr **result)
*** 2396,2402 ****
        if (sym == NULL)
   m = MATCH_ERROR;
        else
!  m = gfc_match_structure_constructor (sym, &e);
        break;

      /* If we're here, then the name is known to be the name of a
--- 2436,2442 ----
        if (sym == NULL)
   m = MATCH_ERROR;
        else
!  m = gfc_match_structure_constructor (sym, &e, false);
        break;

      /* If we're here, then the name is known to be the name of a
Index: gcc/testsuite/ChangeLog
===================================================================
*** gcc/testsuite/ChangeLog (revision 138273)
--- gcc/testsuite/ChangeLog (working copy)
***************
*** 1,3 ****
--- 1,15 ----
+ 2008-07-29  Paul Thomas  <pault@gcc.gnu.org>
+
+  * gfortran.dg/extends_1.f03: New test.
+  * gfortran.dg/extends_2.f03: New test.
+  * gfortran.dg/extends_3.f03: New test.
+  * gfortran.dg/extends_4.f03: New test.
+  * gfortran.dg/extends_5.f03: New test.
+  * gfortran.dg/extends_6.f03: New test.
+  * gfortran.dg/private_type_6.f90: Modify error message.
+  * gfortran.dg/structure_constructor_7.f03: Modify error message.
+  * gfortran.dg/structure_constructor_8.f03: Modify error message.
+
  2008-07-29  Richard Guenther  <rguenther@suse.de>

   PR tree-optimization/36945
Index: gcc/testsuite/gfortran.dg/extends_1.f03
===================================================================
*** gcc/testsuite/gfortran.dg/extends_1.f03 (revision 0)
--- gcc/testsuite/gfortran.dg/extends_1.f03 (revision 0)
***************
*** 0 ****
--- 1,73 ----
+ ! { dg-do run }
+ ! A basic functional test of derived type extension.
+ !
+ ! Contributed by Paul Thomas  <pault@gcc.gnu.org>
+ !
+ module persons
+   type :: person
+     character(24) :: name = ""
+     integer :: ss = 1
+   end type person
+ end module persons
+
+ module person_education
+   use persons
+   type, extends(person) :: education
+     integer ::  attainment = 0
+     character(24) :: institution = ""
+   end type education
+ end module person_education
+
+   use person_education
+   type, extends(education) :: service
+     integer :: personnel_number = 0
+     character(24) :: department = ""
+   end type service
+
+   type, extends(service) :: person_record
+     type (person_record), pointer :: supervisor => NULL ()
+   end type person_record
+
+   type(person_record), pointer :: recruit, supervisor
+
+ ! Check that references by ultimate component work
+
+   allocate (supervisor)
+   supervisor%name = "Joe Honcho"
+   supervisor%ss = 123455
+   supervisor%attainment = 100
+   supervisor%institution = "Celestial University"
+   supervisor%personnel_number = 1
+   supervisor%department = "Directorate"
+
+   recruit => entry ("John Smith", 123456, 1, "Bog Hill High School", &
+                     99, "Records", supervisor)
+
+   if (trim (recruit%name) /= "John Smith") call abort
+   if (recruit%name /= recruit%service%name) call abort
+   if (recruit%supervisor%ss /= 123455) call abort
+   if (recruit%supervisor%ss /= supervisor%person%ss) call abort
+
+   deallocate (supervisor)
+   deallocate (recruit)
+ contains
+   function entry (name, ss, attainment, institution, &
+                   personnel_number, department, supervisor) result (new_person)
+     integer :: ss, attainment, personnel_number
+     character (*) :: name, institution, department
+     type (person_record), pointer :: supervisor, new_person
+
+     allocate (new_person)
+
+ ! Check mixtures of references
+     new_person%person%name = name
+     new_person%service%education%person%ss = ss
+     new_person%service%attainment = attainment
+     new_person%education%institution = institution
+     new_person%personnel_number = personnel_number
+     new_person%service%department = department
+     new_person%supervisor => supervisor
+   end function
+ end
+
+ ! { dg-final { cleanup-modules "persons person_education" } }
Index: gcc/testsuite/gfortran.dg/extends_2.f03
===================================================================
*** gcc/testsuite/gfortran.dg/extends_2.f03 (revision 0)
--- gcc/testsuite/gfortran.dg/extends_2.f03 (revision 0)
***************
*** 0 ****
--- 1,66 ----
+ ! { dg-do run }
+ ! A test of f95 style constructors with derived type extension.
+ !
+ ! Contributed by Paul Thomas  <pault@gcc.gnu.org>
+ !
+ module persons
+   type :: person
+     character(24) :: name = ""
+     integer :: ss = 1
+   end type person
+ end module persons
+
+ module person_education
+   use persons
+   type, extends(person) :: education
+     integer ::  attainment = 0
+     character(24) :: institution = ""
+   end type education
+ end module person_education
+
+   use person_education
+   type, extends(education) :: service
+     integer :: personnel_number = 0
+     character(24) :: department = ""
+   end type service
+
+   type, extends(service) :: person_record
+     type (person_record), pointer :: supervisor => NULL ()
+   end type person_record
+
+   type(person_record), pointer :: recruit, supervisor
+
+ ! Check that simple constructor works
+   allocate (supervisor)
+   supervisor%service = service ("Joe Honcho", 123455, 100, &
+                                 "Celestial University", 1, &
+                                 "Directorate")
+
+   recruit => entry ("John Smith", 123456, 1, "Bog Hill High School", &
+                     99, "Records", supervisor)
+
+   if (trim (recruit%name) /= "John Smith") call abort
+   if (recruit%name /= recruit%service%name) call abort
+   if (recruit%supervisor%ss /= 123455) call abort
+   if (recruit%supervisor%ss /= supervisor%person%ss) call abort
+
+   deallocate (supervisor)
+   deallocate (recruit)
+ contains
+   function entry (name, ss, attainment, institution, &
+                   personnel_number, department, supervisor) result (new_person)
+     integer :: ss, attainment, personnel_number
+     character (*) :: name, institution, department
+     type (person_record), pointer :: supervisor, new_person
+
+     allocate (new_person)
+
+ ! Check nested constructors
+     new_person = person_record (education (person (name, ss), &
+                                 attainment, institution), &
+                                 personnel_number, department, &
+                                 supervisor)
+   end function
+ end
+
+ ! { dg-final { cleanup-modules "persons person_education" } }
Index: gcc/testsuite/gfortran.dg/extends_3.f03
===================================================================
*** gcc/testsuite/gfortran.dg/extends_3.f03 (revision 0)
--- gcc/testsuite/gfortran.dg/extends_3.f03 (revision 0)
***************
*** 0 ****
--- 1,71 ----
+ ! { dg-do run }
+ ! A test of f2k style constructors with derived type extension.
+ !
+ ! Contributed by Paul Thomas  <pault@gcc.gnu.org>
+ !
+ module persons
+   type :: person
+     character(24) :: name = ""
+     integer :: ss = 1
+   end type person
+ end module persons
+
+ module person_education
+   use persons
+   type, extends(person) :: education
+     integer ::  attainment = 0
+     character(24) :: institution = ""
+   end type education
+ end module person_education
+
+   use person_education
+   type, extends(education) :: service
+     integer :: personnel_number = 0
+     character(24) :: department = ""
+   end type service
+
+   type, extends(service) :: person_record
+     type (person_record), pointer :: supervisor => NULL ()
+   end type person_record
+
+   type(person_record), pointer :: recruit, supervisor
+
+ ! Check that F2K constructor with missing entries works
+   allocate (supervisor)
+   supervisor%service = service (NAME = "Joe Honcho", SS= 123455)
+
+   recruit => entry ("John Smith", 123456, 1, "Bog Hill High School", &
+                     99, "Records", supervisor)
+
+   if (supervisor%ss /= 123455) call abort
+   if (trim (supervisor%name) /= "Joe Honcho") call abort
+   if (trim (supervisor%institution) /= "") call abort
+   if (supervisor%attainment /= 0) call abort
+
+   if (trim (recruit%name) /= "John Smith") call abort
+   if (recruit%name /= recruit%service%name) call abort
+   if (recruit%supervisor%ss /= 123455) call abort
+   if (recruit%supervisor%ss /= supervisor%person%ss) call abort
+
+   deallocate (supervisor)
+   deallocate (recruit)
+ contains
+   function entry (name, ss, attainment, institution, &
+                   personnel_number, department, supervisor) result (new_person)
+     integer :: ss, attainment, personnel_number
+     character (*) :: name, institution, department
+     type (person_record), pointer :: supervisor, new_person
+
+     allocate (new_person)
+
+ ! Check F2K constructor with order shuffled a bit
+     new_person = person_record (NAME = name, SS =ss, &
+                                 DEPARTMENT = department, &
+                                 INSTITUTION = institution, &
+                                 PERSONNEL_NUMBER = personnel_number, &
+                                 ATTAINMENT = attainment, &
+                                 SUPERVISOR = supervisor)
+   end function
+ end
+
+ ! { dg-final { cleanup-modules "persons person_education" } }
Index: gcc/testsuite/gfortran.dg/extends_4.f03
===================================================================
*** gcc/testsuite/gfortran.dg/extends_4.f03 (revision 0)
--- gcc/testsuite/gfortran.dg/extends_4.f03 (revision 0)
***************
*** 0 ****
--- 1,52 ----
+ ! { dg-do run }
+ ! Check that derived type extension is compatible with renaming
+ ! the parent type and that allocatable components are OK.  At
+ ! the same time, private type and components are checked.
+ !
+ ! Contributed by Paul Thomas  <pault@gcc.gnu.org>
+ !
+ module mymod
+   type :: a
+     real, allocatable :: x(:)
+     integer, private :: ia = 0
+   end type a
+   type :: b
+     private
+     real, allocatable :: x(:)
+     integer :: i
+   end type b
+ contains
+   function set_b () result (res)
+     type(b) :: res
+     allocate (res%x(2))
+     res%x = [10.0, 20.0]
+     res%i = 1
+   end function
+   subroutine check_b (arg)
+     type(b) :: arg
+     if (any (arg%x /= [10.0, 20.0])) call abort
+     if (arg%i /= 1) call abort
+   end subroutine
+ end module mymod
+
+   use mymod, e => a
+   type, extends(e) :: f
+     integer :: if
+   end type f
+   type, extends(b) :: d
+     integer :: id
+   end type d
+
+   type(f) :: p
+   type(d) :: q
+
+   p = f (x = [1.0, 2.0], if = 3)
+   if (any (p%e%x /= [1.0, 2.0])) call abort
+
+   q%b = set_b ()
+   call check_b (q%b)
+   q = d (b = set_b (), id = 99)
+   call check_b (q%b)
+ end
+
+ ! { dg-final { cleanup-modules "persons person_education" } }
Index: gcc/testsuite/gfortran.dg/extends_5.f03
===================================================================
*** gcc/testsuite/gfortran.dg/extends_5.f03 (revision 0)
--- gcc/testsuite/gfortran.dg/extends_5.f03 (revision 0)
***************
*** 0 ****
--- 1,27 ----
+ ! { dg-do compile }
+ ! Some errors for derived type extension.
+ !
+ ! Contributed by Paul Thomas  <pault@gcc.gnu.org>
+ !
+ module m
+   use iso_c_binding
+   type :: date
+     sequence
+     integer :: yr, mon
+     integer,public :: day
+   end type
+   type, bind(c) :: dt
+     integer(c_int) :: yr, mon
+     integer(c_int) :: day
+   end type
+ end module m
+
+   use m
+   type, extends(date) :: datetime ! { dg-error "because it is a SEQUENCE type" }
+   end type ! { dg-error "Expecting END PROGRAM" }
+
+   type, extends(dt) :: dt_type ! { dg-error "because it is BIND" }
+   end type ! { dg-error "Expecting END PROGRAM" }
+ end
+
+ ! { dg-final { cleanup-modules "m" } }
Index: gcc/testsuite/gfortran.dg/extends_6.f03
===================================================================
*** gcc/testsuite/gfortran.dg/extends_6.f03 (revision 0)
--- gcc/testsuite/gfortran.dg/extends_6.f03 (revision 0)
***************
*** 0 ****
--- 1,49 ----
+ ! { dg-do compile }
+ ! Some errors pointed out in the development of the patch.
+ !
+ ! Contributed by Tobias Burnus  <burnus@net-b.de>
+ !
+ module m
+   type :: date
+     private
+     integer :: yr, mon
+     integer,public :: day
+   end type
+   type :: dt
+     integer :: yr, mon
+     integer :: day
+   end type
+ end module m
+
+   use m
+   type, extends(date) :: datetime
+     integer :: hr, min, sec
+   end type
+   type(datetime) :: o_dt
+
+   type :: one
+     integer :: i
+   end type one
+
+   type, extends(one) :: two
+     real :: r
+   end type two
+
+   o_dt%day = 5  ! VALID but failed in first version of EXTENDS patch
+   o_dt%yr  = 5  ! { dg-error "All components of 'date' are PRIVATE" }
+
+   t = two(one = one(4), i = 5, r=4.4) ! { dg-error "has already been set" }
+
+   call foo
+ contains
+   subroutine foo
+     use m, date_type => dt
+     type, extends(date_type) :: dt_type
+     end type
+     type (dt_type) :: foo_dt
+     foo_dt%date_type%day = 1
+     foo_dt%dt%day = 1 ! { dg-error "not a member" }
+   end subroutine
+ end
+
+ ! { dg-final { cleanup-modules "m" } }
Index: gcc/testsuite/gfortran.dg/private_type_6.f90
===================================================================
*** gcc/testsuite/gfortran.dg/private_type_6.f90 (revision 138273)
--- gcc/testsuite/gfortran.dg/private_type_6.f90 (working copy)
*************** program foo_test
*** 19,25 ****
    TYPE(footype) :: foo
    TYPE(bartype) :: foo2
    foo  = footype(1) ! { dg-error "All components of 'footype' are PRIVATE" }
!   foo2 = bartype(1,2) ! { dg-error "'dummy2' is PRIVATE" }
    foo2%dummy2 = 5 ! { dg-error "is a PRIVATE component" }
  end program foo_test
  ! { dg-final { cleanup-modules "foomod" } }
--- 19,25 ----
    TYPE(footype) :: foo
    TYPE(bartype) :: foo2
    foo  = footype(1) ! { dg-error "All components of 'footype' are PRIVATE" }
!   foo2 = bartype(1,2) ! { dg-error "is a PRIVATE component" }
    foo2%dummy2 = 5 ! { dg-error "is a PRIVATE component" }
  end program foo_test
  ! { dg-final { cleanup-modules "foomod" } }
Index: gcc/testsuite/gfortran.dg/structure_constructor_7.f03
===================================================================
*** gcc/testsuite/gfortran.dg/structure_constructor_7.f03 (revision 138273)
--- gcc/testsuite/gfortran.dg/structure_constructor_7.f03 (working copy)
*************** PROGRAM test
*** 13,18 ****
    TYPE(basics_t) :: basics

    basics = basics_t (42, 1.5, 1000) ! { dg-error "Too many components" }
!   basics = basics_t (42, xxx = 1000) ! { dg-error "Component 'xxx'" }

  END PROGRAM test
--- 13,18 ----
    TYPE(basics_t) :: basics

    basics = basics_t (42, 1.5, 1000) ! { dg-error "Too many components" }
!   basics = basics_t (42, xxx = 1000) ! { dg-error "is not a member" }

  END PROGRAM test
Index: gcc/testsuite/gfortran.dg/structure_constructor_8.f03
===================================================================
*** gcc/testsuite/gfortran.dg/structure_constructor_8.f03 (revision 138273)
--- gcc/testsuite/gfortran.dg/structure_constructor_8.f03 (working copy)
*************** PROGRAM test
*** 47,54 ****
    struct2 = allpriv_t ()

    ! These should fail
!   struct1 = haspriv_t (1, 2) ! { dg-error "'b' is PRIVATE" }
!   struct1 = haspriv_t (b = 2, a = 1) ! { dg-error "'b' is PRIVATE" }

    ! This should fail as all components are private
    struct2 = allpriv_t (5) ! { dg-error "of 'allpriv_t' are PRIVATE" }
--- 47,54 ----
    struct2 = allpriv_t ()

    ! These should fail
!   struct1 = haspriv_t (1, 2) ! { dg-error "is a PRIVATE component" }
!   struct1 = haspriv_t (b = 2, a = 1) ! { dg-error "is a PRIVATE component" }

    ! This should fail as all components are private
    struct2 = allpriv_t (5) ! { dg-error "of 'allpriv_t' are PRIVATE" }

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138275 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoMoved to gcc-interface directory.
charlet [Tue, 29 Jul 2008 20:43:33 +0000 (20:43 +0000)]
Moved to gcc-interface directory.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138274 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-29 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Tue, 29 Jul 2008 19:34:36 +0000 (19:34 +0000)]
2008-07-29  Paolo Carlini  <paolo.carlini@oracle.com>

* include/debug/set.h: Minor formatting fixes.
* include/debug/multiset.h: Likewise.
* include/debug/safe_association.h: Likewise.
* include/debug/vector: Likewise.
* include/debug/map.h: Likewise.
* include/debug/string: Likewise.
* include/debug/multimap.h: Likewise.
* include/bits/stl_list.h: Likewise.
* include/bits/stl_map.h: Likewise.
* include/bits/stl_set.h: Likewise.
* include/bits/stl_multimap.h: Likewise.
* include/bits/stl_vector.h: Likewise.
* include/bits/stl_multiset.h: Likewise.
* include/bits/stl_bvector.h: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138263 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * trans.c (process_inlined_subprograms): Remove tree_really_inline
charlet [Tue, 29 Jul 2008 18:52:26 +0000 (18:52 +0000)]
* trans.c (process_inlined_subprograms): Remove tree_really_inline
check.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138261 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoMoved to gcc-interface.
charlet [Tue, 29 Jul 2008 18:51:30 +0000 (18:51 +0000)]
Moved to gcc-interface.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138260 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * c-decl.c (merge_decls): Do not handle DECL_INLINE.
hubicka [Tue, 29 Jul 2008 17:10:55 +0000 (17:10 +0000)]
* c-decl.c (merge_decls): Do not handle DECL_INLINE.
(grokdeclarator): Likewise.
* langhooks.c (lhd_warn_unused_global_decl): Use
DECL_DECLARED_INLINE_P.
* print-tree.c (print_node): Remove DECL_INLINE check.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138258 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-29 Richard Guenther <rguenther@suse.de>
rguenth [Tue, 29 Jul 2008 17:09:26 +0000 (17:09 +0000)]
2008-07-29  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/36945
* tree-ssa-sccvn.h (copy_reference_ops_from_ref): Declare.
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Export.
Record invariant addresses un-decomposed.
(copy_reference_ops_from_call): Record reference call
arguments properly.  Simplify.
* tree-ssa-pre.c (create_component_ref_by_pieces_1): New
helper split out from ...
(create_component_ref_by_pieces): ... here.  Simplify.
Prepare for recursive invocation for call arguments.
(create_expression_by_pieces): Adjust call to
create_component_ref_by_pieces.
(compute_avail): Process operand 2 of reference ops.

* gcc.dg/tree-ssa/ssa-pre-18.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138257 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-29 Richard Guenther <rguenther@suse.de>
rguenth [Tue, 29 Jul 2008 17:07:42 +0000 (17:07 +0000)]
2008-07-29  Richard Guenther  <rguenther@suse.de>

* gimplify.c (gimplify_expr): Clear TREE_SIDE_EFFECTS for
OBJ_TYPE_REF.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138256 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-29 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Tue, 29 Jul 2008 17:06:24 +0000 (17:06 +0000)]
2008-07-29  Paolo Carlini  <paolo.carlini@oracle.com>

* include/std/utility: Include <initializer_list>, per the current WP.

* testsuite/lib/libstdc++.exp (check_v3_target_cstdint): Tweak,
don't use -std=gnu++0x unnecessarily.
* testsuite/18_support/numeric_limits/char16_32_t.cc: Use
dg-require-cstdint.
* testsuite/18_support/headers/cstdint/types_std_c++0x.cc: Likewise.
* testsuite/tr1/8_c_compatibility/cstdint/types_std_tr1.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138255 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * trans.c (process_inlined_subprograms): Remove tree_really_inline
hubicka [Tue, 29 Jul 2008 17:02:45 +0000 (17:02 +0000)]
* trans.c (process_inlined_subprograms): Remove tree_really_inline
check.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138254 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * class.c (build_utf8_ref): Set DECL_SIZE and DECL_SIZE_UNIT
jakub [Tue, 29 Jul 2008 16:31:18 +0000 (16:31 +0000)]
* class.c (build_utf8_ref): Set DECL_SIZE and DECL_SIZE_UNIT
from ctype's sizes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138252 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * class.c (build_utf8_ref): Pad initializer string to utf8const_type's
jakub [Tue, 29 Jul 2008 16:30:32 +0000 (16:30 +0000)]
* class.c (build_utf8_ref): Pad initializer string to utf8const_type's
alignment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138251 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago PR c++/36852
jakub [Tue, 29 Jul 2008 16:29:33 +0000 (16:29 +0000)]
PR c++/36852
* tree.c (cplus_array_hash, build_cplus_array_type_1): Hash on
TYPE_UID instead of pointers.

* g++.dg/pch/array-1.C: New test.
* g++.dg/pch/array-1.Hs: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138250 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * c-format.c (check_format_types): Revert unwanted checkin.
jakub [Tue, 29 Jul 2008 16:27:50 +0000 (16:27 +0000)]
* c-format.c (check_format_types): Revert unwanted checkin.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138249 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoResync.
charlet [Tue, 29 Jul 2008 15:50:16 +0000 (15:50 +0000)]
Resync.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138248 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * gcc-interface: New directory.
charlet [Tue, 29 Jul 2008 15:46:37 +0000 (15:46 +0000)]
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138246 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-29 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
aaronwl [Tue, 29 Jul 2008 14:10:03 +0000 (14:10 +0000)]
2008-07-29  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138245 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * flags.h (flag_really_no_inline): Remove.
hubicka [Tue, 29 Jul 2008 11:00:58 +0000 (11:00 +0000)]
* flags.h (flag_really_no_inline): Remove.
* cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
* toplev.c (flag_really_no_inline): Remove.
* c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
* ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
(cgraph_decide_inlining_incrementally): Likewise.
(compute_inline_parameters): Likewise.
* opts.c (decode_options): Simplify.
* c-opts.c (c_common_post_options): Do not set flag_no_inline.
* common.opt (finline): Initialize to 1.
* tree-inline.c (inlinable_function_p): Check flag_no_inline.

* lang.c (java_post_options): Remove handling of flag_no_inline.

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

* options.c (gfc_post_options): Do not set flag_no_inline.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138238 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * predict.c (always_optimize_for_size_p): New function.
hubicka [Tue, 29 Jul 2008 10:52:16 +0000 (10:52 +0000)]
* predict.c (always_optimize_for_size_p): New function.
(optimize_bb_for_size_p, optimize_bb_for_speed_p,
optimize_edge_for_size_p, optimize_edge_for_speed_p,
optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
functions.
(rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
* function.c (prepare_function_start): Set default profile.
* function.h (rtl_data): Add maybe_hot_insn_p.
* cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
(construct_exit_block): Likewise.
(tree_expand_cfg): Likewise.
* basic-block.h
(optimize_bb_for_size_p, optimize_bb_for_speed_p,
optimize_edge_for_size_p, optimize_edge_for_speed_p,
optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
(rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
Declare.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138237 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * optimize.c (maybe_clone_body): Remove DECL_INLINE.
hubicka [Tue, 29 Jul 2008 10:49:30 +0000 (10:49 +0000)]
  * optimize.c (maybe_clone_body): Remove DECL_INLINE.
* decl.c (duplicate_decls): Likewise.
(grokfndecl): Likewise.
(start_method): Likewise.
* method.c (make_thunk, make_alias_for, implicitly_declare_fn):
Likewise.
* pt.c (register_specialization, regenerate_decl_from_template):
Likewise.
* decl2.c (grokfield): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138236 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
manu [Tue, 29 Jul 2008 10:00:25 +0000 (10:00 +0000)]
2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

PR 34985
* c-decl.c (merge_decls): Merge USED flags.
cp/
* decl.c (duplicate_decls): Merge USED flags.
testsuite/
* gcc.dg/pr34985.c: New.
* g++.dg/warn/pr34985.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138235 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-29 Daniel Kraft <d@domob.eu>
domob [Tue, 29 Jul 2008 09:11:51 +0000 (09:11 +0000)]
2008-07-29  Daniel Kraft  <d@domob.eu>

PR fortran/36403
* trans-intrinsic.c (conv_generic_with_optional_char_arg):  New method
to append a string-length even if the string argument is missing, e.g.
for EOSHIFT.
(gfc_conv_intrinsic_function):  Call the new method for EOSHIFT, PACK
and RESHAPE.

2008-07-29  Daniel Kraft  <d@domob.eu>

PR fortran/36403
* gfortran.dg/char_eoshift_5.f90:  New test.
* gfortran.dg/intrinsic_optional_char_arg_1.f90:  New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138234 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
kkojima [Tue, 29 Jul 2008 09:07:49 +0000 (09:07 +0000)]
* config/sh/sh.c (sh_gimplify_va_arg_expr): Unshare the addr,
valist, next_fp, next_fp_tmp, next_fp_limit, next_o, next_o_limit,
next_stack, lab_false and lab_over trees.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138233 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * gfortran.h (try): Remove macro. Replace try with gfc_try
ghazi [Tue, 29 Jul 2008 00:45:52 +0000 (00:45 +0000)]
* gfortran.h (try): Remove macro.  Replace try with gfc_try
throughout.
* array.c: Likewise.
* check.c: Likewise.
* cpp.c: Likewise.
* cpp.h: Likewise.
* data.c: Likewise.
* data.h: Likewise.
* decl.c: Likewise.
* error.c: Likewise.
* expr.c: Likewise.
* interface.c: Likewise.
* intrinsic.c: Likewise.
* intrinsic.h: Likewise.
* io.c: Likewise.
* match.h: Likewise.
* parse.c: Likewise.
* parse.h: Likewise.
* resolve.c: Likewise.
* scanner.c: Likewise.
* simplify.c: Likewise.
* symbol.c: Likewise.
* trans-openmp.c: Likewise.
* trans-types.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138226 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoDaily bump.
gccadmin [Tue, 29 Jul 2008 00:16:58 +0000 (00:16 +0000)]
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138224 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago PR c++/36943
jason [Tue, 29 Jul 2008 00:06:08 +0000 (00:06 +0000)]
    PR c++/36943
        * decl.c (reshape_init_r): Allow C++0x initializer lists.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138221 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-28 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Mon, 28 Jul 2008 23:28:16 +0000 (23:28 +0000)]
2008-07-28  Paolo Carlini  <paolo.carlini@oracle.com>

PR libstdc++/36949
* include/tr1_impl/boost_shared_ptr.h
(__shared_ptr(_Sp_make_shared_tag, _Alloc, _Args&&...): Call
__enable_shared_from_this_helper.
* testsuite/20_util/shared_ptr/creation/36949.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138219 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-28 Richard Guenther <rguenther@suse.de>
rguenth [Mon, 28 Jul 2008 20:32:32 +0000 (20:32 +0000)]
2008-07-28  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/36957
* tree-flow.h (tree_ssa_useless_type_conversion): Remove.
(useless_type_conversion_p): Remove.
(types_compatible_p): Remove.
* gimple.h (tree_ssa_useless_type_conversion): Declare.
(useless_type_conversion_p): Declare.
(types_compatible_p): Declare.
(gimple_expr_type): Return the base type only if it is
trivially convertible to the subtype.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138217 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-28 Andreas Tobler <a.tobler@schweiz.org>
andreast [Mon, 28 Jul 2008 20:30:00 +0000 (20:30 +0000)]
2008-07-28  Andreas Tobler  <a.tobler@schweiz.org>

* configure.ac: Use the m4_do macro to concatenate the warnings into
one string in ACX_PROG_CC_WARNING_OPTS,
ACX_PROG_CC_WARNING_ALMOST_PEDANTIC and ACX_PROG_CC_WARNINGS_ARE_ERRORS.
* configure: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138216 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agofix typo
aldyh [Mon, 28 Jul 2008 19:50:50 +0000 (19:50 +0000)]
fix typo

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138215 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago* configure.tgt: Enable futex for MIPS.
chaoyingfu [Mon, 28 Jul 2008 18:47:44 +0000 (18:47 +0000)]
* configure.tgt: Enable futex for MIPS.
* config/linux/mips/futex.h: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138214 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-28 Richard Guenther <rguenther@suse.de>
rguenth [Mon, 28 Jul 2008 18:29:04 +0000 (18:29 +0000)]
2008-07-28  Richard Guenther  <rguenther@suse.de>

* tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
(insert_fake_stores): Remove.
(realify_fake_stores): Likewise.
(execute_pre): Remove dead code.
* tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary
case.
(find_func_aliases): Deal with it here instead.
Re-enable gcc_unreachable call.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138213 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * MAINTAINERS: Add Jakub and myself as gimple maintainers.
aldyh [Mon, 28 Jul 2008 17:37:05 +0000 (17:37 +0000)]
    * MAINTAINERS: Add Jakub and myself as gimple maintainers.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138211 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-28 Tobias Burnus <burnus@net-b.de>
burnus [Mon, 28 Jul 2008 16:02:51 +0000 (16:02 +0000)]
2008-07-28  Tobias Burnus  <burnus@net-b.de>

       * Make-lang.in: Remove -Wno-* from fortran-warn.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138208 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-28 Richard Guenther <rguenther@suse.de>
rguenth [Mon, 28 Jul 2008 14:33:56 +0000 (14:33 +0000)]
2008-07-28  Richard Guenther  <rguenther@suse.de>

Merge from gimple-tuples-branch.

* ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
* gimple.def: New file.
* gsstruct.def: Likewise.
* gimple-iterator.c: Likewise.
* gimple-pretty-print.c: Likewise.
* tree-gimple.c: Removed.  Merged into ...
* gimple.c: ... here.  New file.
* tree-gimple.h: Removed.  Merged into ...
* gimple.h: ... here.  New file.

* Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
* configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
--enable-checking=gimple flag.
* config.in: Likewise.
* configure: Regenerated.

* tree-ssa-operands.h: Tuplified.
* tree-vrp.c: Likewise.
* tree-loop-linear.c: Likewise.
* tree-into-ssa.c: Likewise.
* tree-ssa-loop-im.c: Likewise.
* tree-dump.c: Likewise.
* tree-complex.c: Likewise.
* cgraphbuild.c: Likewise.
* tree-ssa-threadupdate.c: Likewise.
* tree-ssa-loop-niter.c: Likewise.
* tree-pretty-print.c: Likewise.
* tracer.c: Likewise.
* gengtype.c: Likewise.
* tree-loop-distribution.c: Likewise.
* tree-ssa-loop-unswitch.c: Likewise.
* cgraph.c: Likewise.
* cgraph.h: Likewise.
* tree-ssa-loop-manip.c: Likewise.
* value-prof.c: Likewise.
* tree-ssa-loop-ch.c: Likewise.
* tree-tailcall.c: Likewise.
* value-prof.h: Likewise.
* tree.c: Likewise.
* tree.h: Likewise.
* tree-pass.h: Likewise.
* ipa-cp.c: Likewise.
* tree-scalar-evolution.c: Likewise.
* tree-scalar-evolution.h: Likewise.
* target.h: Likewise.
* lambda-mat.c: Likewise.
* tree-phinodes.c: Likewise.
* diagnostic.h: Likewise.
* builtins.c: Likewise.
* tree-ssa-alias-warnings.c: Likewise.
* cfghooks.c: Likewise.
* fold-const.c: Likewise.
* cfghooks.h: Likewise.
* omp-low.c: Likewise.
* tree-ssa-dse.c: Likewise.
* ipa-reference.c: Likewise.
* tree-ssa-uncprop.c: Likewise.
* toplev.c: Likewise.
* tree-gimple.c: Likewise.
* tree-gimple.h: Likewise.
* tree-chrec.c: Likewise.
* tree-chrec.h: Likewise.
* tree-ssa-sccvn.c: Likewise.
* tree-ssa-sccvn.h: Likewise.
* cgraphunit.c: Likewise.
* tree-ssa-copyrename.c: Likewise.
* tree-ssa-ccp.c: Likewise.
* tree-ssa-loop-ivopts.c: Likewise.
* tree-nomudflap.c: Likewise.
* tree-call-cdce.c: Likewise.
* ipa-pure-const.c: Likewise.
* c-format.c: Likewise.
* tree-stdarg.c: Likewise.
* tree-ssa-math-opts.c: Likewise.
* tree-ssa-dom.c: Likewise.
* tree-nrv.c: Likewise.
* tree-ssa-propagate.c: Likewise.
* ipa-utils.c: Likewise.
* tree-ssa-propagate.h: Likewise.
* tree-ssa-alias.c: Likewise.
* gimple-low.c: Likewise.
* tree-ssa-sink.c: Likewise.
* ipa-inline.c: Likewise.
* c-semantics.c: Likewise.
* dwarf2out.c: Likewise.
* expr.c: Likewise.
* tree-ssa-loop-ivcanon.c: Likewise.
* predict.c: Likewise.
* tree-ssa-loop.c: Likewise.
* tree-parloops.c: Likewise.
* tree-ssa-address.c: Likewise.
* tree-ssa-ifcombine.c: Likewise.
* matrix-reorg.c: Likewise.
* c-decl.c: Likewise.
* tree-eh.c: Likewise.
* c-pretty-print.c: Likewise.
* lambda-trans.c: Likewise.
* function.c: Likewise.
* langhooks.c: Likewise.
* ebitmap.h: Likewise.
* tree-vectorizer.c: Likewise.
* function.h: Likewise.
* langhooks.h: Likewise.
* tree-vectorizer.h: Likewise.
* ipa-type-escape.c: Likewise.
* ipa-type-escape.h: Likewise.
* domwalk.c: Likewise.
* tree-if-conv.c: Likewise.
* profile.c: Likewise.
* domwalk.h: Likewise.
* tree-data-ref.c: Likewise.
* tree-data-ref.h: Likewise.
* tree-flow-inline.h: Likewise.
* tree-affine.c: Likewise.
* tree-vect-analyze.c: Likewise.
* c-typeck.c: Likewise.
* gimplify.c: Likewise.
* coretypes.h: Likewise.
* tree-ssa-phiopt.c: Likewise.
* calls.c: Likewise.
* tree-ssa-coalesce.c: Likewise.
* tree.def: Likewise.
* tree-dfa.c: Likewise.
* except.c: Likewise.
* except.h: Likewise.
* cfgexpand.c: Likewise.
* tree-cfgcleanup.c: Likewise.
* tree-ssa-pre.c: Likewise.
* tree-ssa-live.c: Likewise.
* tree-sra.c: Likewise.
* tree-ssa-live.h: Likewise.
* tree-predcom.c: Likewise.
* lambda.h: Likewise.
* tree-mudflap.c: Likewise.
* ipa-prop.c: Likewise.
* print-tree.c: Likewise.
* tree-ssa-copy.c: Likewise.
* ipa-prop.h: Likewise.
* tree-ssa-forwprop.c: Likewise.
* ggc-page.c: Likewise.
* c-omp.c: Likewise.
* tree-ssa-dce.c: Likewise.
* tree-vect-patterns.c: Likewise.
* tree-ssa-ter.c: Likewise.
* tree-nested.c: Likewise.
* tree-ssa.c: Likewise.
* lambda-code.c: Likewise.
* tree-ssa-loop-prefetch.c: Likewise.
* tree-inline.c: Likewise.
* tree-inline.h: Likewise.
* tree-iterator.c: Likewise.
* tree-optimize.c: Likewise.
* tree-ssa-phiprop.c: Likewise.
* tree-vect-transform.c: Likewise.
* tree-object-size.c: Likewise.
* tree-outof-ssa.c: Likewise.
* cfgloop.c: Likewise.
* system.h: Likewise.
* tree-profile.c: Likewise.
* cfgloop.h: Likewise.
* c-gimplify.c: Likewise.
* c-common.c: Likewise.
* tree-vect-generic.c: Likewise.
* tree-flow.h: Likewise.
* c-common.h: Likewise.
* basic-block.h: Likewise.
* tree-ssa-structalias.c: Likewise.
* tree-switch-conversion.c: Likewise.
* tree-ssa-structalias.h: Likewise.
* tree-cfg.c: Likewise.
* passes.c: Likewise.
* ipa-struct-reorg.c: Likewise.
* ipa-struct-reorg.h: Likewise.
* tree-ssa-reassoc.c: Likewise.
* cfgrtl.c: Likewise.
* varpool.c: Likewise.
* stmt.c: Likewise.
* tree-ssanames.c: Likewise.
* tree-ssa-threadedge.c: Likewise.
* langhooks-def.h: Likewise.
* tree-ssa-operands.c: Likewise.
* config/alpha/alpha.c: Likewise.
* config/frv/frv.c: Likewise.
* config/s390/s390.c: Likewise.
* config/m32c/m32c.c: Likewise.
* config/m32c/m32c-protos.h: Likewise.
* config/spu/spu.c: Likewise.
* config/sparc/sparc.c: Likewise.
* config/i386/i386.c: Likewise.
* config/sh/sh.c: Likewise.
* config/xtensa/xtensa.c: Likewise.
* config/stormy16/stormy16.c: Likewise.
* config/ia64/ia64.c: Likewise.
* config/rs6000/rs6000.c: Likewise.
* config/pa/pa.c: Likewise.
* config/mips/mips.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138207 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * c-pragma.c (handle_pragma_message): New function.
simonb [Mon, 28 Jul 2008 11:55:11 +0000 (11:55 +0000)]
* c-pragma.c (handle_pragma_message): New function.
(init_pragma): Register handle_pragma_message.
* doc/extend.texi (Diagnostic Pragmas): Added #pragma message
documentation.

* gcc.dg/pragma-message.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138206 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoDaily bump.
gccadmin [Mon, 28 Jul 2008 00:16:51 +0000 (00:16 +0000)]
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138201 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-27 Victor Kaplansky <victork@il.ibm.com>
victork [Sun, 27 Jul 2008 21:44:25 +0000 (21:44 +0000)]
2008-07-27  Victor Kaplansky  <victork@il.ibm.com>

        PR tree-optimization/35252
        * tree-vect-analyze.c (vect_build_slp_tree): Make IMAGPART_EXPR and
        REALPART_EXPR to be considered as same load operation.

testsuite

        PR tree-optimization/35252
        * gcc.dg/vect/vect-complex-1.c, gcc.dg/vect/vect-complex-2.c,
        gcc.dg/vect/fast-math-vect-complex-3.c,
        gcc.dg/vect/vect-complex-4.c: New tests.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138198 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agogcc/cp/
hjl [Sun, 27 Jul 2008 17:40:04 +0000 (17:40 +0000)]
gcc/cp/

2008-07-27  H.J. Lu  <hongjiu.lu@intel.com>

PR c++/36944
* class.c (type_has_user_provided_default_constructor): Handle
default parameters.

gcc/testsuite/

2008-07-27  H.J. Lu  <hongjiu.lu@intel.com>

PR c++/36944
* g++.dg/other/pr36944.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138194 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago PR tree-optimization/36830
ebotcazou [Sun, 27 Jul 2008 16:55:31 +0000 (16:55 +0000)]
PR tree-optimization/36830
* tree-ssa-sccvn.c (vn_reference_op_compute_hash): Hash operand #2.
(expressions_equal_p): Return false if only one operand is null.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138191 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-27 Daniel Franke <franke.daniel@gmail.com>
dfranke [Sun, 27 Jul 2008 16:32:14 +0000 (16:32 +0000)]
2008-07-27  Daniel Franke  <franke.daniel@gmail.com>

PR fortran/36724
* gfortran.dg/pointer_to_substring.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138190 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-27 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Sun, 27 Jul 2008 15:49:12 +0000 (15:49 +0000)]
2008-07-27  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (push_library_fn): Add a parameter for the exceptions that
the function may throw.
(push_void_library_fn, push_throw_library_fn, expand_static_init):
Adjust.
(build_library_fn): Change to static.
* cp-tree.h: Adjust declarations.
* except.c (declare_nothrow_library_fn): New.
(do_get_exception_ptr, do_begin_catch, do_free_exception,
do_allocate_exception):  Use the latter, adjust the declarations
(ie, add empty exception-specification), consistently with the
actual implementation in libsupc++.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138189 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-27 Tobias Burnus <burnus@net-b.de>
burnus [Sun, 27 Jul 2008 10:45:44 +0000 (10:45 +0000)]
2008-07-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/36132
        PR fortran/29952
        PR fortran/36909
        * trans.c (gfc_trans_runtime_check): Allow run-time warning
        * besides
        run-time error.
        * trans.h (gfc_trans_runtime_check): Update declaration.
        * trans-array.c
        * (gfc_trans_array_ctor_element,gfc_trans_array_bound_check,
        gfc_conv_array_ref,gfc_conv_ss_startstride,gfc_trans_dummy_array_bias):
        Updated gfc_trans_runtime_check calls.
        (gfc_conv_array_parameter): Implement flag_check_array_temporaries,
        fix packing/unpacking for nonpresent optional actuals to optional
        formals.
        * trans-array.h (gfc_conv_array_parameter): Update declaration.
        * trans-expr.c (gfc_conv_substring,gfc_trans_arrayfunc_assign,
        gfc_conv_function_call): Updated gfc_trans_runtime_check calls.
        (gfc_conv_function_call): Update gfc_conv_array_parameter calls.
        * trans-expr.c (gfc_trans_goto): Updated gfc_trans_runtime_check
        calls.
        * trans-io.c (set_string,gfc_conv_intrinsic_repeat): Ditto.
        (gfc_conv_intrinsic_transfer,gfc_conv_intrinsic_loc): Same for
        gfc_conv_array_parameter.
        * trans-intrinsics.c (gfc_conv_intrinsic_bound): Ditto.
        * trans-decl.c (gfc_build_builtin_function_decls): Add
        gfor_fndecl_runtime_warning_at.
        * lang.opt: New option fcheck-array-temporaries.
        * gfortran.h (gfc_options): New flag_check_array_temporaries.
        * options.c (gfc_init_options, gfc_handle_option): Handle flag.
        * invoke.texi: New option fcheck-array-temporaries.

2008-07-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/36132
        PR fortran/29952
        PR fortran/36909
        * runtime/error.c: New function runtime_error_at.
        * gfortran.map: Ditto.
        * libgfortran.h: Ditto.

2008-07-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/36132
        PR fortran/29952
        PR fortran/36909
        gfortran.dg/internal_pack_4.f90: New.
        gfortran.dg/internal_pack_5.f90: New.
        gfortran.dg/array_temporaries_2.f90: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138186 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoDaily bump.
gccadmin [Sun, 27 Jul 2008 00:16:44 +0000 (00:16 +0000)]
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138184 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
gerald [Sat, 26 Jul 2008 21:41:15 +0000 (21:41 +0000)]
* doc/install.texi (powerpc-*-netbsd*): Remove redundant texinfo
version requirements.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138181 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoFix nits.
ebotcazou [Sat, 26 Jul 2008 19:03:37 +0000 (19:03 +0000)]
Fix nits.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138180 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * collect2.c (symkind): New enum. Symbol kinds we care about.
hainque [Sat, 26 Jul 2008 14:26:45 +0000 (14:26 +0000)]
* collect2.c (symkind): New enum.  Symbol kinds we care about.
(is_ctor_dtor): Return symkind instead of int.  Adjust prototype,
code and head comment accordingly.
(scan_prog_file): Use symkind names instead of bare integers.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138179 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-26 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Sat, 26 Jul 2008 10:30:50 +0000 (10:30 +0000)]
2008-07-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/36934
* gfortran.dg/allocatable_module_1.f90:  New test case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138167 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on DECL_INLINE.
hubicka [Sat, 26 Jul 2008 10:03:01 +0000 (10:03 +0000)]
* cgraph.c (cgraph_function_possibly_inlined_p): Do not rely on DECL_INLINE.
* cgraphunit.c (record_cdtor_fn): Do not initialize DECL_INLINE
(cgraph_preserve_function_body_p): Do not rely on DECL_INLINE.
* dojump.c (clear_pending_stack_adjust): Likewise.
* print-tree.c (print_node): Ignore DECL_INLINE.
* tree-inline.c (inlinable_function_p): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138165 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoDaily bump.
gccadmin [Sat, 26 Jul 2008 00:16:56 +0000 (00:16 +0000)]
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138159 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoFix IA-64 breakage; Make hot/cold optimization conversation port specific; Move disab...
meissner [Fri, 25 Jul 2008 23:44:24 +0000 (23:44 +0000)]
Fix IA-64 breakage; Make hot/cold optimization conversation port specific; Move disabling of scheduling from OVERRIDE_OPTIONS to OPTIMIZATION_OPTIONS

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138154 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoFix changelog entry of my earlier commit.
hubicka [Fri, 25 Jul 2008 21:05:23 +0000 (21:05 +0000)]
Fix changelog entry of my earlier commit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138151 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * typeck.c (inline_conversion): Remove.
hubicka [Fri, 25 Jul 2008 21:03:34 +0000 (21:03 +0000)]
* typeck.c (inline_conversion): Remove.
(cp_build_function_call): Do not use inline_conversion.
* decl.c (duplicate_decls): Do not insist on inline being declared
early.
(start_cleanup_fn): Do not assume that INLINE flags prevent function
from being output.  We now remove static functions always.
(finish_function): Do return warning on all static functions.
* call.c (build_over_call): Do not use inline_conversion.
* cp-tree.h (possibly_inlined_p): Declare.
(inline_conversion): Remove.
* pt.c (instantiate_decl): Use possibly_inlined_p predicate.
* decl2.c (cp_write_global_declarations): Likewise.
(mark_used): Likewise.
(possibly_inlined_p): New functions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138150 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-25 Martin Jambor <mjambor@suse.cz>
hjl [Fri, 25 Jul 2008 20:30:35 +0000 (20:30 +0000)]
2008-07-25  Martin Jambor  <mjambor@suse.cz>

PR tree-optimization/36926
* ipa-prop.c (ipa_analyze_call_uses): Call
ipa_is_ssa_with_stmt_def instead of SSA_NAME_IS_DEFAULT_DEF.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138148 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
jsm28 [Fri, 25 Jul 2008 16:21:05 +0000 (16:21 +0000)]
* config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
movv2si_internal): Add mem = reg alternative.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138146 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago2008-07-25 Andreas Tobler <a.tobler@schweiz.org>
andreast [Fri, 25 Jul 2008 15:59:12 +0000 (15:59 +0000)]
2008-07-25  Andreas Tobler  <a.tobler@schweiz.org>

PR bootstrap/36918
* config/sparc/sparc.h (DEFAULT_PCC_STRUCT_RETURN): Define
DEFAULT_PCC_STRUCT_RETURN to 127.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138145 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * lib/target-supports.exp (check_effective_target_arm_thumb1_ok):
jsm28 [Fri, 25 Jul 2008 15:49:36 +0000 (15:49 +0000)]
* lib/target-supports.exp (check_effective_target_arm_thumb1_ok):
New.
* g++.dg/inherit/thunk8.C: Use it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138143 138bc75d-0d04-0410-961f-82ee72b054a4

13 years ago * class.c (type_has_user_provided_default_constructor): Handle
jason [Fri, 25 Jul 2008 15:18:16 +0000 (15:18 +0000)]
    * class.c (type_has_user_provided_default_constructor): Handle
        templates.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138142 138bc75d-0d04-0410-961f-82ee72b054a4

13 years agoRemove files that was intended to be removed in last commit.
hubicka [Fri, 25 Jul 2008 14:25:39 +0000 (14:25 +0000)]
Remove files that was intended to be removed in last commit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138141 138bc75d-0d04-0410-961f-82ee72b054a4