X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2FChangeLog;h=50aebde213958df4bd82b27296cdefc130ead125;hb=8d134460bb9f43abd6745039bcd0f1cb661ecce0;hp=00a6055e1add4f99f085eb17491a5eaa19eb9f16;hpb=22db8a52b0b2ca0ac08068d13d5e2f2c0caf34fe;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 00a6055e1ad..50aebde2139 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,10 +1,1245 @@ +2009-10-09 Richard Guenther + + PR lto/41638 + * target-def.h (TARGET_BUILTIN_DECL): Define. + (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL. + * target.h (struct gcc_target): Add builtin_decl target hook. + * doc/tm.texi (TARGET_BUILTIN_DECL): Document. + * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of + target builtins. + * lto-streamer-out.c (lto_output_tree_pointers): Use sorry, + not gcc_unreachable. + (lto_output_builtin_tree): Sorry if the target does not support + streaming target builtins. + * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define. + (rs6000_builtin_decl): New function. + * config/i386/i386.c (TARGET_BUILTIN_DECL): Define. + (ix86_builtin_decl): New function. + +2009-10-09 Jakub Jelinek + + PR preprocessor/41445 + * c-ppoutput.c (do_line_change): New function. + (cb_line_change): Use it. + (scan_translation_unit): Call do_line_change if + avoid_paste or PREV_WHITE and token location is on a different line + than print.src_line. + + PR debug/40521 + * dwarf2out.c (dwarf2out_init): Test whether + HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking + it is defined. + + PR rtl-optimization/41646 + * calls.c (expand_call): For BLKmode types returned in registers + avoid likely spilled hard regs in copy_blkmode_from_reg generated + insns. + +2009-10-09 Richard Guenther + + PR tree-optimization/41634 + * tree-ssa-dom.c (remove_local_expressions_from_table): Assert + we remove the correct elements. + (optimize_stmt): Make sure to update stmt operands before + optimizing redundancies. + +2009-10-09 Andreas Krebbel + + * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching. + +2009-10-09 Richard Guenther + + PR driver/41637 + * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New + globals. + (lto_wrapper_exit): New function. + (fatal): Use it. + (fatal_perror): Likewise. + (fork_execute): Use global args_name, do not free it. + (run_gcc): Use global ltrans_output_file, flto_out, do not free them. + * lto-streamer.h: Remove duplicate prototypes. + +2009-10-09 Richard Guenther + + * cgraph.c (cgraph_create_edge): Check for NULL call_stmt + before calling stmt_can_throw_external. + +2009-10-09 Eric Botcazou + + PR tree-optimization/40071 + * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all + pointer if the original data reference doesn't conflict with the + created vector data reference. Fix long line. + +2009-10-09 Uros Bizjak + + * config/i386/i386.md (any_div): New code iterator. + (u): Handle div and udiv. + (sgnprefix): Ditto. + (divqi3): Macroize insn from {,u}divqi3 using any_div + code iterator. + (lfloor2): Macroize insn from + lfloor{si,di}2 patterns using SWI48 mode iterator. + (lceil2): Macroize insn from + lceil{si,di}2 patterns using SWI48 mode iterator. + +2009-10-08 Joseph Myers + + * gcc.c (main): Remove trailing "." from diagnostics. + +2009-10-08 Cary Coutant + + Add support for debugging with ICF (Identical Code Folding). + * calls.c (debug.h): New #include. + (emit_call_1): Call virtual_call_token debug hook. + * common.opt (-fenable-icf-debug): New option. + * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two + locations in the source). + (poc_label_num): New variable. + (dcall_entry, vcall_entry): New typedefs. + (dcall_table, vcall_table): New variables. + (struct vcall_insn): New type. + (vcall_insn_table): New variable. + (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros. + (size_of_dcall_table): New function. + (output_dcall_table): New function. + (size_of_vcall_table): New function. + (output_vcall_table): New function. + (dwarf2out_direct_call): New function. + (vcall_insn_table_hash): New function. + (vcall_insn_table_eq): New function. + (dwarf2out_virtual_call_token): New function. + (dwarf2out_virtual_call): New function. + (dwarf2out_init): Allocate new tables and sections. + (prune_unused_types): Mark DIEs referenced from direct call table. + (dwarf2out_finish): Output direct and virtual call tables. + * final.c (final_scan_insn): Call direct_call and virtual_call + debug hooks. + * debug.h (struct gcc_debug_hooks): Add direct_call, + virtual_call_token, virtual_call hooks. + (debug_nothing_uid): New function. + * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks. + (debug_nothing_uid): New function. + * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks. + (xcoff_debug_hooks): Likewise. + * sdbout.c (sdb_debug_hooks): Likewise. + * vmsdbgout.c (vmsdbg_debug_hooks): Likewise. + * doc/invoke.texi (-fenable-icf-debug): New option. + +2009-10-08 Alexandre Oliva + + PR debug/41353 + * regmove.c (regmove_backward_pass): Replace src with dst in the + debug insn, and check for dst before rather than after. + +2009-10-08 Janis Johnson + + * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove. + (TARGET_DELEGITIMIZE_ADDRESS): Likewise. + +2009-10-08 Jan Hubicka + + PR middle-end/41626 + * cgraphbuild.c (record_reference): When parameter DATA is NULL, + do not mark cgraph nodes as needed. + (record_references_in_initializer): Add new only_vars parameter. + * cgraph.h (record_references_in_initializer): New parameter. + * varasm.c (assemble_variable): Update call. + * varpool.c (varpool_analyze_pending_decls): Always look for + referenced vars. + +2009-10-08 Anatoly Sokolov + + * config/avr/avr.c (last_insn_address) Remove variable. + (expand_prologue): Don't initialise last_insn_address variable. + (final_prescan_insn): Don't output insn size. + * config/avr/avr.opt (msize): Remove switch. + * doc/invoke.texi (AVR Options): Remove documentation of -msize + switch. + +2009-10-08 Adam Nemet + + * combine.c (label_tick_ebb_start): Fix comment. + (combine_instructions): Set label_tick and label_tick_ebb_start before + calling setup_incoming_promotions. Start them from 1. Increment + label_tick instead of deriving it from the BB index. Rather than + comparing ticks use the block from the previous iteration to decide + whether to start a new EBB. Remove empty lines before function. + +2009-10-08 Michael Matz + + PR middle-end/41573 + * builtins.c (fold_builtin_isascii): Use fold_build2. + (fold_builtin_isdigit): Ditto. + * except.c (duplicate_eh_regions_1): Tolerate NULL labels. + * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached, + remove_useless_stmts_cond, remove_useless_stmts_tf, + remove_useless_stmts_tc, remove_useless_stmts_bind, + remove_useless_stmts_goto, remove_useless_stmts_label, + remove_useless_stmts_1, remove_useless_stmts, + pass_remove_useless_stmts): Remove. + * tree-pass.h (pass_remove_useless_stmts): Don't declare. + * passes.c (init_optimization_passes): Don't add + pass_remove_useless_stmts. + * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups. + * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of + static constants. + * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL + for static constants. + * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP. + * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP. + +2009-10-08 Richard Guenther + + * gimple.c (free_gimple_type_tables): New function. + * gimple.h (free_gimple_type_tables): Declare. + +2009-10-07 Mark Heffernan + + * ipa-prop.c (ipa_print_node_params) Only print + names of named arguments. + +2009-10-08 Rafael Avila de Espindola + + * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is + being statically linked. + +2009-10-08 Rainer Orth + + * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE. + +2009-10-08 Jan Hubicka + + PR bootstrap/41620 + * ipa.c (cgraph_externally_visible_p, + function_and_variable_visibility, + whole_program_function_and_variable_visibility): Skip non-finalized + nodes. + +2009-10-08 Nick Clifton + + * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow + CONST_DOUBLEs. + +2009-10-08 Andreas Tobler + + PR bootstrap/37739 + * config.host: Use config/x-cflags-O1 for powerpc FreeBSD. + +2009-10-07 Joseph Myers + + PR c/41182 + * c-common.c (c_fully_fold_internal): Strip nops from the result + of recursive calls to c_fully_fold_internal. + (c_wrap_maybe_const): New. + (c_save_expr): Use c_wrap_maybe_const. + * c-common.h (c_wrap_maybe_const): Declare. + * c-typeck.c (build_conditional_expr, c_finish_stmt_expr, + build_binary_op): Use c_wrap_maybe_const. + +2009-10-07 Kaveh R. Ghazi + + * real.c: Fix comment to reflect actual exponent size. + +2009-10-08 Ben Elliston + + * config/rs6000/a2.md: Add FSF comment header. + +2009-10-07 Uros Bizjak + + * config/i386/i386.md (any_extend): New code iterator. + (u, s): New code attributes. + (sgnprefix): Ditto. + (DWIH): Rewrite as code iterator for SI and DI modes. + (DWI): Rewrite as mode attribute. + (dwi): New mode attribute. + (di): Depend on SI mode and DI mode. + (doubleint_general_operand): Remove mode attribute. + + (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using + DWIH mode iterator. + + (*add3_doubleword): Use DWIH as the base mode iterator. + (*sub3_doubleword): Ditto. + + (mul3): Macroize expander from mul{hi,si,di}3 patterns + using SWIM248 mode iterator. + (*mul3_1): Macroize insn from mul{si,di}3_1 patterns + using SWI48 mode iterator. + (mul3): Macroize expander from {,u}mul{sidi,diti}3 + patterns using DWIH mode iterator and any_extend code iterator. + (mulqihi3): Macroize expander from {,u}mulqihi3 patterns + using any_extend code iterator. + (*mul3_1): Macroize insn from {,u}mul{sidi,diti}3_1 + patterns using DWIH mode iterator and any_extend code iterator. + (*mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns + using any_extend code iterator. + (mul3_highpart): Macroize expander from + {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator + and any_extend code iterator. + (*muldi3_highpart_1): Macroize insn from + *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator. + (*mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1 + patterns using any_extend code iterator. + (*mulsi3_highpart_zext): Macroize insn from + *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator. + +2009-10-07 Jakub Jelinek + + * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add + DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin + refering to a DIE with DW_AT_const_value. + +2009-10-07 Vladimir Makarov + + PR middle-end/22072 + * ira-lives.c (check_and_make_def_conflict): Process all operands. + +2009-10-06 Jan Hubicka + + * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes + correctly. + +2009-10-06 Uros Bizjak + + * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext, + *lea_2_rex64): Move before *add_1 pattern. + +2009-10-07 Jan Hubicka + + * collect2.c (main): Add -fno-whole-program. + * gcc.c (set_collect_gcc_options): Do not remove whole program here. + +2009-10-07 Jan Hubicka + + * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones + has no address taken. + * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are + never needed. + (cgraph_clone_node): Clear externally_visible flag for clones. + * cgraph.h (cgraph_only_called_directly_p, + cgraph_can_remove_if_no_direct_calls_p): New predicates. + * tree-pass.h (pass_ipa_whole_program_visibility): Declare. + * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate. + (ipcp_initialize_node_lattices, ipcp_estimate_growth, + ipcp_insert_stage): Likwise. + * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute + externally_visible flag. + (verify_cgraph_node): Verify that inline clones look right. + (process_function_and_variable_attributes): Do not set + externally_visible flags. + (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've + been already run. + * lto-cgraph.c (lto_output_node): Assert that inline clones are not + boundaries. + * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates; + clear externally_visible when turning into inline clones + (cgraph_mark_inline_edge): Use new predicates. + (cgraph_estimate_growth): Likewise. + (cgraph_decide_inlining): Likewise. + * ipa.c (cgraph_postorder): Likewise. + (cgraph_remove_unreachable_nodes): Likewise; sanity check + that inline clones are not needed. + (cgraph_externally_visible_p): New predicate. + (function_and_variable_visibility): Add whole_program parameter; + always set externally_visible flag; handle COMDAT function + privatization. + (local_function_and_variable_visibility): New function. + (gate_whole_program_function_and_variable_visibility): New function. + (whole_program_function_and_variable_visibility): New function. + (pass_ipa_whole_program_visibility): New function. + * passes.c (init_optimization_passes): Add whole program visibility + pass. + (do_per_function_toporder, function_called_by_processed_nodes_p): Do + not care about needed/reachable flags. + * varpool.c: Include flags.h + (decide_is_variable_needed): When doing LTO assume whole-program mode. + (varpool_finalize_decl): When we are in LTO read-back, all variables + are analyzed. + (varpool_analyze_pending_decls): Skip analyzis of analyzed vars. + +2009-10-07 Andreas Krebbel + + * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and + add MASK_HARD_DFP. + +2009-10-07 Andreas Krebbel + + * config.gcc: Don't include the makefile fragments intended for + libgcc. + * config/s390/fixdfdi.h: File removed. + * config/s390/libgcc-glibc.ver: File removed. + * config/s390/s390.h: Remove the fixdfdi.h hack. + * config/s390/t-crtstuff: File moved to libgcc dir. + * config/s390/t-linux: Likewise. + * config/s390/t-tpf: libgcc specific parts removed. + * config/s390/t-linux64: Likewise. + +2009-10-06 Jerry Quinn + + * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS. + (lto-compress.o): Likewise. + +2009-10-07 Danny Smith + + PR target/41512 + * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate + dllexport to class members here. + (i386_pe_determine_dllimport_p): Only check static class data for + definition. + (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P. + * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check + functions for vague linkage. + (i386_pe_type_dllexport_p): Fix formatting. + (maybe_add_dllexport) New function. + (i386_pe_adjust_class_at_definition): Use it to propagate dllexport + to class members. + +2009-10-07 Ben Elliston + + * config/rs6000/a2.md: Remove duplicated lines. + +2009-10-07 Ben Elliston + + * config.gcc (powerpc*-*-*): Handle a2. + * config/rs6000/rs6000.md (cpu): Add ppca2. Include "a2.md". + * config/rs6000/a2.md: New file. + * config/rs6000/rs6000.opt (mno-update): New. + (mupdate): Return to using a mask, not a var. + * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2. + (enum processor_type): Add PROCESSOR_PPCA2. + * config/rs6000/rs6000.c (ppca2_cost): New costs. + (rs6000_override_options): Add "a2" to processor_target_table. + Update rs6000_always_hint logic. Correctly set rs6000_cost for a2. + * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2. + +2009-10-06 Uros Bizjak + + * config/i386/i386.md (float2): + Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid + reference to nonexistent gen_truncxfxf2 function. + +2009-10-06 Uros Bizjak + + * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators. + (DWIH, g, di, doubleint_general_operand): New mode attributes. + (general_operand): Handle TI mode. + (add3): Macroize expander from add{qi,hi,si,di,ti}3 patterns + using SDWIM mode iterator. + (*add3_doubleword): New insn_and_split pattern. Macroize + pattern from *add{di,ti}3_1 patterns and corresponding splitters + using DWI mode iterator. + (add3_carry): Macroize insn from add{qi,hi,si,di}3_carry + patterns using SWI mode iterator. + (*add3_cc): Macroize insn from add{si,di}3_cc patterns + using SWI48 mode iterator. + (*add_1): Ditto from add{si,di}_1 patterns. + (*add_2): Ditto from add{si,di}_2 patterns. + (*add_3): Ditto from add{si,di}_3 patterns. + (*add_5): Ditto from add{si,di}_5 patterns. + (sub3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns + using SDWIM mode iterator. + (*sub3_doubleword): New insn_and_split pattern. Macroize + pattern from *sub{di,ti}3_1 patterns and corresponding splitters + using DWI mode iterator. + (sub3_carry): Macroize insn from sub{qi,hi,si,di}3_carry + patterns using SWI mode iterator. + (*sub_1): Ditto from from sub{qi,hi,si,di}_1 patterns. + (*sub_2): Ditto from sub{qi,hi,si,di}_2 patterns. + (*sub_3): Ditto from sub{qi,hi,si,di}_3 patterns. + (xf3): Macroize expander from addxf3 and subxf3 + patterns using plusminus code iterator. + (3): Macroize expander from add3 and + sub3 patterns using plusminus code iterator. + * config/i386/i386.c (override_options): Update call to + gen_subdi_carry_rex64 for renamed function. + (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64 + and gen_adddi3_carry_rex64 for renamed functions. Use indirect + calls to instruction expanders. + +2009-10-06 Martin Jambor + + PR bootstrap/41395 + * opts.c (decode_options): Run IPA-SRA at -O2. + +2009-10-06 Richard Guenther + + * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers. + +2009-10-06 Tobias Burnus + + PR lto/41591 + * doc/invoke.texi (-flto,-fwhole-program): Make clear that the + -flto and -fwhole-program flags can be combined. + +2009-10-06 Ryan Mansfield + + PR driver/41217 + * gcc.c (process_command): Check that -o argument was specified. + +2009-10-06 Jerry Quinn + + * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation. + +2009-10-05 Ralf Wildenhues + + * c.opt (Wjump-misses-init): Fix typo to enable for ObjC. + * doc/invoke.texi (Warning Options): Annotate allowed languages + for -Wunsuffixed-float-constants. + +2009-10-05 Jakub Jelinek + + * dwarf2out.c (modified_type_die): Don't add DW_AT_name to + DW_TAG_{const,volatile}_type if its DW_AT_type already has the + same name and isn't the main variant. + + PR debug/41558 + * dwarf2out.c (loc_by_reference): Removed. + (dw_loc_list_1): New function. + (dw_loc_list): Remove toplev argument, add want_address argument. + Don't look at decl_by_reference_p at all. Use dw_loc_list_1. + (loc_list_from_tree) : Pass want_address rather than + want_address == 2 to dw_loc_list. For successful dw_loc_list + set have_address to 1 only if want_address is not 0. + +2009-10-05 Richard Sandiford + + * config/mips/mips-protos.h (mips_trampoline_code_size): Declare. + * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of + a code block followed by two pointers. + (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too. + * config/mips/mips.c (MIPS_LOAD_PTR): New macro. + (MIPS_MOVE): Likewise. + (MIPS_LUI): Likewise. + (MIPS_JR): Likewise. + (MIPS_BAL): Likewise. + (MIPS_NOP): Likewise. + (mips_asm_trampoline_template): Delete. + (mips_trampoline_code_size): New function. + (mips_trampoline_init): Add shorter sequences for all cases + except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG. + Calculate the opcodes directly, rather than copying from a template. + Only flush the code part of the trampoline. + (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete. + +2009-10-05 Richard Sandiford + + * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace + GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM. + (INCOMING_RETURN_ADDR_RTX): Likewise. + (FUNCTION_PROFILER): Likewise. Replace GP_REG_FIRST + 1 + with AT_REGNUM. + * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31 + with RETURN_ADDR_REGNUM. + (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise. + * config/mips/mips.c (mips16_build_call_stub): Replace + GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1 + with AT_REGNUM and 31 with RETURN_ADDR_REGNUM. + (mips_print_operand_punctuation): Likewise. + (mips_frame_set): Likewise. + (mips16e_output_save_restore): Likewise. + (mips_cfun_might_clobber_call_saved_reg_p): Likewise. + (mips_save_reg_p): Likewise. + (mips_return_addr): Likewise. + (mips_set_return_address): Likewise. + (mips_direct_save_slot_move_p): Likewise. + (mips_output_function_prologue): Likewise. + (mips_restore_reg): Likewise. + (mips_expand_epilogue): Likewise. + (mips_epilogue_uses): Likewise. + * config/mips/mips.md (RETURN_ADD_REGNUM): Define. + (*mov_ra): Use it instead of a hard-coded 31. + (clear_hazard_): Likewise. + (call_internal): Likewise. + (call_internal_direct): Likewise. + (call_direct_split): Likewise. + (call_value_internal): Likewise. + (call_value_split): Likewise. + (call_value_internal_direct): Likewise. + (call_value_direct_split): Likewise. + (call_value_multiple_internal): Likewise. + (call_value_multiple_split): Likewise. + +2009-10-05 Eric Botcazou + Jakub Jelinek + + PR rtl-optimization/41511 + * combine.c (record_value_for_reg): Pass explicit values as argument + to get_last_value_validate. + (get_last_value_validate): Document INSN parameter. + For non-readonly MEMs, assume they might have been modified if INSN + was in another basic block. + (get_last_value): Minor reformatting. + +2009-10-05 Andrew Pinski + + PR tree-opt/40992 + * final.c (asm_str_count): Split out from asm_insn_count. + * rtl.h (asm_str_count): New prototype. + * tree-inline (estimate_num_insns) : Call + asm_str_count. + +2009-10-05 Sriraman Tallam + + * doc/plugins.texi: Change plugin_pass to register_pass_info. + +2009-10-05 Basile Starynkevitch + Rafael Espindola + + * gengtype.c (write_types): Moved call to write_func_for_structure + into seperate loops. + +2009-10-05 Richard Guenther + + PR lto/41281 + * lto-cgraph.c (output_cgraph): Output toplevel asms. + (input_cgraph_1): Input toplevel asms. + +2009-10-05 Richard Guenther + + PR lto/40902 + * lto-symtab.c (lto_compatible_attributes_p): Remove. + (external_aggregate_decl_p): Likewise. + (lto_symtab_compatible): Re-structure. Remove dead code. + For variables ignore toplevel qualifiers when comparing types. + Issue warnings, not errors for mismatched user-alignment. + +2009-10-05 Richard Guenther + + PR lto/41552 + PR lto/41487 + * lto-symtab.c (struct lto_symtab_base_def): Remove. + (struct lto_symtab_identifier_def): Likewise. + (struct lto_symtab_decl_def): Likewise. + (struct lto_symtab_entry_def): New. + (lto_symtab_identifier_t): Rename to ... + (lto_symtab_entry_t): ... this. + (lto_symtab_decls): Remove. + (lto_symtab_base_hash): Rename to ... + (lto_symtab_entry_hash): ... this. + (lto_symtab_base_eq): Rename to ... + (lto_symtab_entry_eq): ... this. + (lto_symtab_base_marked_p): Rename to ... + (lto_symtab_entry_marked_p): ... this. + (lto_symtab_identifier_marked_p): Remove. + (lto_symtab_decl_marked_p): Likewise. + (lto_symtab_maybe_init_hash_tables): Rename to ... + (lto_symtab_maybe_init_hash_table): ... this. + (lto_symtab_set_resolution_and_file_data): Remove. + (lto_symtab_register_decl): New function. + (lto_symtab_get_identifier): Remove. + (lto_symtab_get): New function. + (lto_symtab_get_resolution): Adjust. + (lto_symtab_get_identifier_decl): Remove. + (lto_symtab_set_identifier_decl): Likewise. + (lto_symtab_merge_decl): Rename to ... + (lto_symtab_merge): ... this. Rewrite. + (lto_symtab_merge_var): Remove. + (lto_symtab_merge_fn): Likewise. + (lto_symtab_prevailing_decl): Adjust. + (lto_cgraph_replace_node): New function. + (lto_symtab_merge_decls_2): Likewise. + (lto_symtab_merge_decls_1): Likewise. + (lto_symtab_fixup_var_decls): Likewise. + (lto_symtab_resolve_symbols): Likewise. + (lto_symtab_merge_decls): Likewise. + (lto_symtab_prevailing_decl): Adjust. + (lto_symtab_get_symtab_def): Remove. + (lto_symtab_get_file_data): Likewise. + (lto_symtab_clear_resolution): Adjust. + (lto_symtab_clear_resolution): Likewise. + * lto-cgraph.c (input_edge): Do not merge cgraph nodes here. + (input_cgraph_1): Likewise. + * lto-streamer-in.c (get_resolution): Do not provide fake + symbol resolutions here. + (deferred_global_decls): Remove. + (lto_register_deferred_decls_in_symtab): Likewise. + (lto_register_var_decl_in_symtab): Change signature, register + variable via lto_symtab_register_decl. + (lto_register_function_decl_in_symtab): Likewise. + (lto_read_tree): Adjust. + * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove. + (lto_symtab_merge_var): Likewise. + (lto_symtab_merge_fn): Likewise. + (lto_symtab_register_decl): Declare. + (lto_symtab_merge_decls): Likewise. + +2009-10-05 Richard Guenther + + PR tree-optimization/23821 + * tree-vrp.c (vrp_finalize): Do not perform copy propagation. + * tree-ssa-dom.c (cprop_operand): Do not propagate copies into + simple IV increments. + +2009-10-05 Ramana Radhakrishnan + + * config/arm/arm.c (arm_override_options): Really initialize + flag_dwarf2_cfi_asm to 0. + +2009-10-05 Doug Kwan + + PR rtl-optimization/41574 + * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is + floating point and we are not doing unsafe math optimizations. + +2009-10-03 Simon Baldwin + Cary Coutant + Rafael Espindola + Richard Guenther + Jan Hubicka + Doug Kwan + H.J. Lu + Bill Maddox + Ryan Mansfield + Diego Novillo + Ollie Wild + Kenneth Zadeck + + * lto-cgraph.c: New file. + * lto-compress.c: New file. + * lto-compress.h: New file. + * lto-opts.c: New file. + * lto-section-in.c: New file. + * lto-section-out.c: New file. + * lto-streamer-in.c: New file. + * lto-streamer-out.c: New file. + * lto-streamer.c: New file. + * lto-streamer.h: New file. + * lto-symtab.c: New file. + * lto-wpa-fixup.c: New file. + * lto-wrapper.c: New file. + +2009-10-03 Simon Baldwin + Ben Elliston + Rafael Espindola + Nathan Froyd + Jan Hubicka + Doug Kwan + Diego Novillo + Kenneth Zadeck + + * Makefile.in (enable_lto): New. + (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO. + (LINKER_PLUGIN_API_H): Define. + (LTO_SYMTAB_H): Define. + (LTO_STREAMER_H): Define. + (TREE_VECTORIZER_H): Define. + (INCLUDES): Add LIBELFINC. + (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o, + lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o, + lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o. + (MOSTLYCLEANFILES): Add lto-wrapper$(exeext) + (native): Add lto-wrapper$(exeext) + (lto-compress.o, lto-cgraph.o, lto-streamer-in.o, + lto-streamer-out.o, lto-section-in.o, lto-section-out.o, + lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules. + (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H. + (varasm.o): Add dependency on tree-iterator.h. + (cgraph.o): Add dependency on cif-code.def. + (ipa-reference.o): Add dependency on LTO_STREAMER_H. + (ipa-pure-const.o): Likewise. + (GTFILES): Add lto-symtab.c. + (install-lto-wrapper): New. + * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO + and enable_lto. If LIBELFLIBS is set, define HAVE_libelf. + * config.in: Regenerate. + +2009-10-03 Rafael Espindola + Diego Novillo + + * cgraphunit.c (ipa_passes): Prevent lto1 from calling + ipa_write_summaries. + Call execute_ipa_summary_passes for all_regular_ipa_passes and + all_lto_gen_passes. + (cgraph_optimize): Make extern. + +2009-10-03 Nathan Froyd + Kenneth Zadeck + + * toplev.c (in_lto_p): Declare. + * collect2.c (scan_prog_file): Read all the output when reading + information for LTO. + (enum lto_mode_d): Declare. + +2009-10-03 Richard Guenther + Diego Novillo + + * gimple.c: Include target.h and alias.h. + (gimple_types): Declare. + (type_hash_cache): Declare. + (gimple_alloc_stat): Make extern. + (gimple_build_eh_must_not_throw): Call + gimple_eh_must_not_throw_set_fndecl. + (struct type_pair_d): Declare. + (type_pair_t): Declare. + (type_pair_hash): New. + (type_pair_eq): New. + (lookup_type_pair): New. + (gimple_force_type_merge): New. + (compare_type_names_p): New. + (compare_field_offset): New. + (gimple_types_compatible_p): New. + (struct sccs): Declare. + (next_dfs_num): Declare. + (iterative_hash_gimple_type): New. + (visit): New. + (iterative_hash_type_name): New. + (iterative_hash_gimple_type): New. + (gimple_type_hash): New. + (gimple_type_eq): New. + (gimple_register_type): New. + (print_gimple_types_stats): New. + (gimple_signed_or_unsigned_type): New. + (gimple_unsigned_type): New. + (gimple_signed_type): New. + (gimple_get_alias_set): New. + (gimple_decl_printable_name): Do not use DMGL_TYPES. + * gimple.h (gimple_alloc, gimple_alloc_stat): Declare. + (gimple_force_type_merge): Declare. + (gimple_types_compatible_p): Declare. + (gimple_register_type): Declare. + (print_gimple_types_stats): Declare. + (gimple_unsigned_type): Declare. + (gimple_signed_type): Declare. + (gimple_get_alias_set): Declare. + (gimple_eh_must_not_throw_set_fndecl): New. + +2009-10-03 Jan Hubicka + Kenneth Zadeck + + * ipa-pure-const.c: Include lto-streamer.h. + (register_hooks): Factor out of ... + (generate_summary): ... here. + (pure_const_write_summary): New. + (pure_const_read_summary): New. + (pass_ipa_pure_const): Add pure_const_write_summary and + pure_const_read_summary. + * ipa-reference.c: Include lto-streamer.h. + (add_new_function): New. + (remove_node_data): New. + (duplicate_node_data): New. + (ipa_init): Guard against multiple calls. + Move hook setup from analyze_function. + (write_node_summary_p): New. + (ipa_reference_write_summary): New. + (ipa_reference_read_summary): New. + (pass_ipa_reference): Add ipa_reference_write_summary and + ipa_reference_read_summary. + * cgraph.h (cgraph_local_info): Add field lto_file_data. + (struct cgraph_edge): Add fields lto_stmt_uid and + call_stmt_cannot_inline_p. + (cgraph_optimize): Declare. + (cgraph_decide_is_function_needed): Declare. + (reset_inline_failed): Declare. + (enum LTO_cgraph_tags): Declare. + (LTO_cgraph_tag_names): Declare. + (LCC_NOT_FOUND): Define. + +2009-10-03 Doug Kwan + Rafael Espindola + Jan Hubicka + Diego Novillo + Kenneth Zadeck + + * passes.c (all_regular_ipa_passes): New. + (all_ipa_passes): Rename to all_small_ipa_passes. + (init_optimization_passes): Init all_regular_ipa_passes. + * tree-pass.h (all_regular_ipa_passes): New. + (all_ipa_passes): Rename to all_small_ipa_passes. + * passes.c (all_lto_gen_passes): New. + (init_optimization_passes): Initialize all_lto_gen_passes. + (execute_ipa_summary_passes): Make non-static. + (ipa_write_summaries_1): New. + (ipa_write_summaries_2): New. + (ipa_write_summaries): New. + (ipa_write_summaries_of_cgraph_node_set): New. + (ipa_read_summaries_1): New. + (ipa_read_summaries): New. + (execute_ipa_pass_list): Call cgraph_process_new_functions. + (execute_regular_ipa_pass_list): Remove. + (init_optimization_passes): Schedule + pass_rebuild_cgraph_edges and pass_early_inline outside + of pass_all_early_optimizations. Document reason. + (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup, + pass_ipa_lto_finish_out): New pass. + (pass_ipa_summary_passes): Start and stop timers if the pass has them. + (execute_all_ipa_transforms): New. + (execute_one_pass): Don't call execute_one_ipa_transform_pass. + (dump_properties, debug_properties): New. + * tree-optimize.c (gate_all_early_local_passes): Return + false if we are in lto1. + (tree_rest_of_compilation): Call execute_all_ipa_transforms. + * tree-pass.h (execute_all_ipa_transforms): Declare. + (pass_ipa_function_and_variable_visibility): Declare. + (pass_ipa_early_inline): Declare. + (pass_ipa_lto_gimple_out): Declare. + (pass_ipa_lto_wpa_fixup): Declare. + (pass_ipa_lto_finish_out): Declare. + (all_small_ipa_passes, all_regular_ipa_passes, + all_lto_gen_passes): Declare. + (execute_ipa_summary_passes): Declare. + (execute_all_ipa_transforms): Declare. + (ipa_write_summaries): Declare + (ipa_write_summaries_of_cgraph_node_set): Declare. + (ipa_read_summaries): Declare. + +2009-10-03 Doug Kwan + Ollie Wild + + * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA. + + * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums. + (lto_mode): New variable. + (maybe_run_lto_and_relink): Handle the -fwpa option. + (main): Handle the -fwpa option. + (maybe_unlink_list): New function. + * gcc.c (link_lto_options): Replace -flto with -fwpa. + * common.opt (flto): New flag. + * toplev.c (flag_generate_lto): Declare. + +2009-10-03 Simon Baldwin + + * common.opt (flto-compression-level): New flag. + + * opts.c: Include lto-opts.h. + (handle_option): Call lto_register_user_option for each + valid option handled. + (decode_options): Clear registered options before the options + handling loop. + +2009-10-03 Cary Coutant + + * collect2.c (is_elf): New function. + (scan_prog_file): Require LTO object to be in ELF format. + +2009-10-03 Rafael Espindola + + * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass + libgcc to the linker. + + * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running. + + * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper. + (collect_execute): Add flags argument. Pass flags to pex_run. Update + all callers. + * collect2.h (collect_execute): Add flags argument. + * tlink.c (tlink_execute): Update call to collect_execute. + * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable. + (use_linker_plugin): New. + (use_linker_plugin_spec_function): New. + (LINK_COMMAND_SPEC): Pass plugin options to the linker. + (linker_plugin_file_spec): New. + (lto_wrapper_spec): New. + (lto_gcc_spec): New. + (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc. + (static_spec_functions): Add use-linker-plugin. + (process_command): Handle -use-linker-plugin. + (main): Use lto_wrapper_spec instead of lto_wrapper. Set + linker_plugin_file_spec and lto_gcc_spec. + (use_linker_plugin_spec_function): New. + +2009-10-03 Richard Guenther + + PR lto/41547 + PR lto/41548 + * tree.h (is_lang_specific): Include LANG_TYPE. + * tree.c (find_decls_types_r): Manually add interesting parts + of TYPE_FIELDS. Walk BINFO_VIRTUALS. Do not walk TYPE_METHODS. + + * gimple.c (type_pair_hash): Make symmetric. + (type_pair_eq): Likewise. + (lookup_type_pair): Increase initial hashtable size. + (gimple_force_type_merge): Rely on type-pair symmetry. + (visit): Remove excessive checking code. + (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions. + (gimple_register_type): Remove getenv calls, shrink initial + hashtable size. + + PR middle-end/41502 + * cgraphunit.c (ipa_passes): Do not remove bodies of extern + inline functions if not generating lto output. + + PR lto/41379 + * toplev.c (finalize): In WPA mode remove the asm file. + +2009-10-03 Doug Kwan + + * ipa-inline.c (cgraph_mark_inline): Check + edge->call_stmt_cannot_inline_p instead of calling + gimple_call_cannot_inline_p. + (cgraph_decide_inlining): Do nothing in WPA and LTRANS. + (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set. + (inline_generate_summary): Do nothing in LTRANS. + * cgraph.c (initialize_inline_failed): Make sure e->call_stmt + exists before calling gimple_call_cannot_inline_p. + (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p. + (cgraph_clone_edge): Add argument STMT_UID. Modify all callers. + Update new_edge->lto_stmt_uid. + * cgraphbuild.c (reset_inline_failed): New. + + * common.opt (fwpa): New flag. + (fltrans): New option. + * gcc.c (gcc_lto_option_t): New type. + (current_lto_option): New variable. + (lto_single_spec_function): Remove and is replaced by .. + (lto_option_spec_function): New function. + (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just + passing the -flto flag. + (cc1_options): Separate non-LTO related parts into .. + (cc1_non_lto_options): Non-LTO related options shared by all FEs. + (lto1_options): New spec for lto FE. + (link_lto_options): New spec for handling LTO flags in linker. + (invoke_lto_single): Re-format to fit in 80 column. Replace + lto-single with lto-option. + (static_specs): Add cc1_non_lto_options, lto1_options and + link_lto_options. + (static_spec_function): Replace lto-single with lto-option. + (process_command): Handle -flto, -fwpa and -fltran by setting + current_lto_option and not passing it to subprocess unconditionally. + +2009-10-03 Bill Maddox + + Add `gcc' driver support for link-time code generation (LTO). + + * collect2.c (enum pass): Add new literal PASS_LTOINFO. + (lto_flag, lto_objects, lto_o_file): New variables. + (struct lto_object, struct lto_object_list): New structures. + (collect_exit, handler): Remove LTO temporary output file on exit. + (add_lto_object): New function. + (maybe_run_lto_and_relink): New function. Perform link time code + generation and relinking for object files containing LTO information. + (main): Invoke maybe_run_lto_and_relink(). + (dump_argv): New function. For debugging, currently disabled. + (scan_prog_file): Add LTO information pass. + * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e., + collect2. + * toplev.c (compile_file): Emit assembler directive to create + the `gnu_lto_v1' marker symbol when compiling with `-flto'. + +2009-10-03 Diego Novillo + + * c.opt: Add LTO to warn_abi and warn_psabi. + + * tree.c (fld_worklist_push): Rename from PUSH. Convert to static + inline function. Ignore language-specific nodes. Update all users. + (find_decls_types_r): Do not traverse the subtrees of + language-specific nodes. Do not traverse DECL_INITIAL for TYPE_DECLs. + * tree.h (is_lang_specific): New. + * langhooks.h (struct lang_hooks_for_decls): Remove + may_need_assembler_name_p. Update all users. + + * c-common.c (set_builtin_user_assembler_name): Move ... + * builtins.c (set_builtin_user_assembler_name): ... here. + (is_builtin_name): Add comment + (is_builtin_fn): New. + * except.c (output_ttype): Only call + lookup_type_for_runtime if TYPE is not a runtime type. + + * passes.c (register_pass): Call position_pass on + all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes. + * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define. + (TV_IPA_LTO_DECL_IO): Define. + (TV_IPA_LTO_CGRAPH_IO): Define. + (TV_LTO): Define. + (TV_WHOPR_WPA): Define. + (TV_WHOPR_WPA_IO): Define. + (TV_WHOPR_LTRANS): Define. + (TV_WHOPR_WPA_FIXUP): Define. + (TV_WHOPR_WPA_LTRANS_EXEC): Define. + * tree-cfg.c (tree_node_can_be_shared): Make extern. + * tree-flow.h (tree_node_can_be_shared): Declare. + * tree-inline.c (tree_can_inline_p): Check that E has a + statement associated with it. + * tree.c (free_lang_data_in_binf): Factor out of ... + (free_lang_data_in_type): ... here. + Call RECORD_OR_UNION_TYPE_P. + (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC + set. Call lang_hooks.decls.may_need_assembler_name_p if set. + (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs. + (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE. Set + write_symbols to NO_DEBUG. Set debug_hooks to do_nothing_debug_hooks. + (gate_free_lang_data): Return true if flag_generate_lto is set. + (walk_tree_1): Call RECORD_OR_UNION_TYPE_P. + * c-common.h (set_builtin_user_assembler_name): Move ... + * tree.h (set_builtin_user_assembler_name): ... here. + + * common.opt (flto-report): New flag. + * opts.c (complain_wrong_lang): Do not complain if running lto1. + * collect2.c (scan_prog_file): Send the error output of + 'nm' to HOST_BIT_BUCKET. + +2009-10-03 Ollie Wild + + * langhooks-def.h (lhd_begin_section): New function declaration. + (lhd_write_section): New function declaration. + (lhd_end_section): New function declaration. + (LANG_HOOKS_BEGIN_SECTION): New macro. + (LANG_HOOKS_WRITE_SECTION_DATA): New macro. + (LANG_HOOKS_END_SECTION): New macro. + (LANG_HOOKS_LTO): New macro. + (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO. + * langhooks.c (output.h): Add include. + (saved_section): New static variable. + (lhd_begin_section): New function. + (lhd_write_section_data): New function. + (lhd_end_section): New function. + * langhooks.h (struct lang_hooks_for_lto): New structure. + (struct lang_hooks): Add member lto. + * Makefile.in (langhooks.o): Add dependency on output.h. + + * c-opts.c (c_common_post_options): Handle -flto and -fwhopr. + +2009-10-03 Richard Guenther + + * config/rs6000/rs6000.c (rs6000_output_function_epilogue): + Handle LTO. + +2009-10-03 Simon Baldwin + Richard Guenther + Janis Johnson + Doug Kwan + Diego Novillo + Ramana Radhakrishnan + Ollie Wild + + * doc/install.texi: Add documentation for libelf and --enable-lto. + * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans, + -flto-report, -flto-compression-level and -use-linker-plugin. + * doc/sourcebuild.texi: Document use of zlib. Document lto-plugin. + Add section for LTO Testing. + +2009-10-02 Cary Coutant + + Add support for comdat type sections for DWARF v4. + Merge from dwarf4 branch. + + * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant. + (dw_die_ref): Define vector type. + (enum dw_val_class): Add dw_val_class_data8. + (struct dw_val_struct): Add v.val_data8. + (comdat_type_node_ref): New type. + (struct die_struct): Move die_symbol into a union; add new field + die_type_node. Change all uses. + (comdat_type_node): New type. + (skeleton_chain_node): New type. + (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant. + (comdat_type_list): New variable. + (dwarf_tag_name): Add DW_TAG_type_unit. + (dwarf_attr_name): Add DW_AT_signature. + (add_AT_data8): New function. + (replace_child): New function. + (move_all_children): New function. + (print_signature): New function. + (print_die): Print signature information; add dw_val_class_data8. + (attr_checksum): Support dw_val_class_data8. + (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte. + (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros. + (checksum_sleb128, checksum_uleb128): New functions. + (checksum_die_context): New function. + (loc_checksum_ordered): New function. + (attr_checksum_ordered): New function. + (struct checksum_attributes): New structure. + (collect_checksum_attributes): New function. + (die_checksum_ordered): New function. + (generate_type_signature): New function. + (same_dw_val_p): Add dw_val_class_data8. + (is_symbol_die): Use new is_declaration_die function. + (is_declaration_die): New function. + (should_move_die_to_comdat): New function. + (clone_die): New function. + (clone_tree): New function. + (clone_as_declaration): New function. + (copy_declaration_context): New function. + (generate_skeleton_ancestor_tree): New function. + (generate_skeleton_bottom_up): New function. + (generate_skeleton): New function. + (remove_child_or_replace_with_skeleton): New function. + (break_out_comdat_types): New function. + (struct decl_table_entry): New type. + (htab_decl_hash): New function. + (htab_decl_eq): New function. + (htab_decl_del): New function. + (copy_ancestor_tree): New function. + (copy_decls_walk): New function. + (copy_decls_for_unworthy_types): New function. + (build_abbrev_table): Don't assert on missing die_symbol when doing + comdat type sections. + (size_of_die): Use DW_FORM_sig8 for external references. Add + dw_val_class_data8. + (unmark_dies): Don't assert for unmarked dies when doing comdat + type sections. + (value_format): Support DW_FORM_sig8 and dw_val_class_data8. + (output_signature): New function. + (output_die): Likewise. + (output_compilation_unit_header): Mark output as DWARF version 3 + even if generating DWARF 4. + (output_comdat_type_unit): New function. + (output_line_info): Mark output as DWARF version 3 even if generating + DWARF 4. + (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with + DWARF-4. + (dwarf2out_end_source_file): Likewise. + (prune_unused_types_walk_attribs): Don't follow references into + comdat type sections. + (prune_unused_types_mark): When generating type units, do not mark + children of non-defining declarations of types; do mark children of + type entries. + (prune_unused_types): Process comdat type sections. + (htab_ct_hash): New function. + (htab_ct_eq): New function. + (dwarf2out_finish): Move types to comdat sections when using DWARF-4. + Add a pointer to the line table from type unit entries so + DW_AT_decl_file has meaning. + * varasm.c (default_elf_asm_named_section): Use identifier name as + comdat key instead of lang hook. + +2009-10-02 Neil Vachharajani + + * gcov-io.c (gcov_open): Open files read-only when MODE < 0. + +2009-10-02 Uros Bizjak + + * config/i386/i386.md (SWIM248): New mode iterator. + (divmod4) Macroize expander from divmoddi4, divmodsi4 and + divmodhi4 patterns using SWIM248 macro. + (*divmod4): Macroize insn_and_split pattern from + *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns + and their corresponding splitters usign SWIM248 macro. Split SImode + insn to generate cltd and DImode insn to generate cqto instead of + move+shift when optimizing for size or TARGET_USE_CLTD is in effect. + (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns. + (*divmod4_noext): Macroize insn from *divmoddi_noext_rex64 and + *divmodsi_noext patterns using SWIM248 macro. + (udivmod4): Macroize expander from udivmoddi4, udivmodsi4 and + udivmodhi4 patterns using SWIM248 macro. + (*udivmod4): Macroize insn_and_split pattern from + *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their + corresponding splitters using SWIM248 macro. + (*udivmod4_noext): Macroize insn from *udivmoddi4_noext, + *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro. + +2009-10-02 Eric Botcazou + + * stor-layout.c (layout_type) : Make sure that an array + of zero-sized element is zero-sized regardless of its extent. + 2009-10-02 Jakub Jelinek + PR debug/40521 + * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test. + * configure: Regenerated. + * config.in: Regenerated. + * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if + !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame. + (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and + not emitting .eh_frame, emit .cfi_sections .debug_frame + directive. + PR debug/41404 PR debug/41353 * cfgexpand.c (expand_debug_expr) : Don't create - CONST_STRING if STRING_CST contains embedded '\0's or doesn't end with - '\0'. + CONST_STRING if STRING_CST contains embedded '\0's or doesn't end + with '\0'. (expand_debug_expr) : For TREE_STATIC !DECL_EXTERNAL vars use DECL_RTL with resetting it back to NULL afterwards. * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with @@ -21,7 +1256,7 @@ 2009-10-02 Andreas Schwab Maxim Kuvyrkov - + * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch. 2009-10-02 Nick Clifton @@ -74,12 +1309,12 @@ PR c++/41503 * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if DECL_ARTIFICIAL (param_decl) is true. - + 2009-09-30 Gabriel Dos Reis * tree.h (tree_decl_common::lang_flag_8): New. * c-common.c (c_common_reswords): Include "constexpr" as C++0x - keyword. + keyword. * c-common.h (RID_CONSTEXPR): New. 2009-09-30 Uros Bizjak @@ -424,8 +1659,7 @@ 2009-09-28 Nick Clifton - * config/m32r/m32r.c (m32r_is_insn): Return false for debugging - insns. + * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns. 2009-09-28 Duncan Sands @@ -494,7 +1728,7 @@ 2009-09-27 Peter O'Gorman - collect2.c (main): Look for -brtl before adding libraries. + * collect2.c (main): Look for -brtl before adding libraries. 2009-09-27 Jonathan Gray @@ -574,9 +1808,10 @@ * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies, generic_parameter_die, template_parameter_pack_die, - gen_formal_parameter_die, gen_subprogram_die): Adjust after renaming - DW_TAG_formal_parameter_pack and DW_TAG_template_parameter_pack into - DW_TAG_GNU_formal_parameter_pack and DW_TAG_GNU_template_parameter_pack. + gen_formal_parameter_die, gen_subprogram_die): Adjust after + renaming DW_TAG_formal_parameter_pack and + DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack + and DW_TAG_GNU_template_parameter_pack. 2009-09-25 Anatoly Sokolov @@ -624,9 +1859,7 @@ (reg_class): Likewise. (REG_CLASS_NAMES): Likewise. * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise. - - * config/m32c/m32c.c (m32c_override_options): Disable -fivopts for - M32C. + (m32c_override_options): Disable -fivopts for M32C. 2009-09-24 Michael Meissner @@ -747,7 +1980,8 @@ * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New. (xtensa_static_chain): New. - * config/xtensa/xtensa.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove. + * config/xtensa/xtensa.h (STATIC_CHAIN): Remove. + (STATIC_CHAIN_INCOMING): Remove. 2009-09-23 Anatoly Sokolov