H.J. Lu [Wed, 24 Nov 2010 18:24:39 +0000 (18:24 +0000)]
Improve vzeroupper optimization.
gcc/
2010-11-24 H.J. Lu <hongjiu.lu@intel.com>
PR target/46519
* config/i386/i386.c (upper_128bits_state): New.
(block_info_def): Remove upper_128bits_set and done. Add state,
referenced, count, processed and rescanned.
(check_avx256_stores): Updated.
(move_or_delete_vzeroupper_2): Updated. Handle deleted BB_END.
Call note_stores only if needed. Set referenced and count.
(move_or_delete_vzeroupper_1): Updated. Set rescan_vzeroupper_p.
(rescan_move_or_delete_vzeroupper): New.
(move_or_delete_vzeroupper): Process and rescan all all basic
blocks instead of predecessor blocks of all exit points.
(ix86_option_override_internal): Enable vzeroupper optimization
only for -fexpensive-optimizations and not optimizing for size.
(use_avx256_p): Removed.
(init_cumulative_args): Don't set use_avx256_p.
(ix86_function_arg): Likewise.
(ix86_expand_move): Likewise.
(ix86_expand_vector_move_misalign): Likewise.
(ix86_local_alignment): Likewise.
(ix86_minimum_alignment): Likewise.
(ix86_expand_epilogue): Don't check use_avx256_p when generating
vzeroupper.
(ix86_expand_call): Likewise.
* config/i386/i386.h (machine_function): Remove use_vzeroupper_p
and use_avx256_p. Add rescan_vzeroupper_p.
gcc/testsuite/
2010-11-24 H.J. Lu <hongjiu.lu@intel.com>
PR target/46519
* gcc.target/i386/avx-vzeroupper-10.c: Expect no avx_vzeroupper.
* gcc.target/i386/avx-vzeroupper-11.c: Likewise.
Jakub Jelinek [Wed, 24 Nov 2010 16:56:44 +0000 (17:56 +0100)]
re PR rtl-optimization/46614 (gcc.dg/vect/vect-strided-u8-i8-gap4.c FAILs with -fno-rename-registers -fsched2-use-superblocks)
PR rtl-optimization/46614
* sched-deps.c (NON_FLUSH_JUMP_KIND, NON_FLUSH_JUMP_P): Define.
(deps_analyze_insn): Mark JUMP_INSNs in
last_pending_memory_flush that weren't added through
flush_pending_lists with NON_FLUSH_JUMP_KIND.
(sched_analyze_2, sched_analyze_insn): Check NON_FLUSH_JUMP_P
on INSN_LIST instead of JUMP_P check on its operand.
* sched-rgn.c (concat_INSN_LIST): Copy over REG_NOTE_KIND.
Richard Guenther [Wed, 24 Nov 2010 14:00:43 +0000 (14:00 +0000)]
re PR lto/46606 (ICE in input_gimple_stmt in lto1)
2010-11-24 Richard Guenther <rguenther@suse.de>
PR lto/46606
* lto-streamer-in.c (input_gimple_stmt): When we cannot find
a FIELD_DECL that is type correct issue a warning and fixup
with a VIEW_CONVERT_EXPR.
Joseph Myers [Wed, 24 Nov 2010 13:28:38 +0000 (13:28 +0000)]
common.opt (user_vect_verbosity_level): New Variable entry.
* common.opt (user_vect_verbosity_level): New Variable entry.
(ftree-vectorizer-verbose=): Mark as UInteger.
* flag-types.h (enum vect_verbosity_levels): Move from enum
verbosity_levels in tree-vectorizer.h.
* opts.c: Don't include tree.h.
(vect_set_verbosity_level): Move from tree-vectorizer.c. Use
gcc_options parameter; take integer option argument.
(common_handle_option): Update call to vect_set_verbosity_level.
* tree-vectorizer.c (user_vect_verbosity_level): Remove.
(vect_set_verbosity_level): Move to opts.c.
(vect_verbosity_level, vect_print_dump_info): Update for change of
enum name.
* tree-vectorizer.h (enum verbosity_levels): Move to flag-types.h.
(vect_print_dump_info): Update for change of enum name.
* tree.h (vect_set_verbosity_level): Remove.
* Makefile.in (opts.o): Update dependencies.
Joseph Myers [Wed, 24 Nov 2010 00:54:26 +0000 (00:54 +0000)]
common.opt (initial_max_fld_align, [...]): New Variable entries.
* common.opt (initial_max_fld_align, flag_debug_asm,
flag_dump_rtl_in_asm, flag_dump_all_passed, rtl_dump_and_exit,
flag_print_asm_name, graph_dump_format, help_printed,
help_columns, flag_opts_finished): New Variable entries.
(fdbg-cnt-list, fdbg-cnt=, fdebug-prefix-map=, frandom-seed,
frandom-seed=): Mark deferred.
(fsched-verbose=): Use UInteger and Var.
* flags.h (set_struct_debug_option, flag_print_asm_name,
rtl_dump_and_exit, flag_debug_asm, flag_dump_rtl_in_asm,
graph_dump_format): Don't declare here.
* haifa-sched.c (sched_verbose_param, fix_sched_param): Remove.
* opts-global.c: Include dbgcnt.h and debug.h.
(decode_options): Pass location to finish_options.
(handle_common_deferred_options): Check flag_dump_all_passed.
Handle OPT_fdbg_cnt_, OPT_fdbg_cnt_list, OPT_fdebug_prefix_map_,
OPT_frandom_seed and OPT_frandom_seed_. Don't assert on
OPT_fstack_limit.
* opts.c: Don't include toplev.h, dbgcnt.h or debug.h.
(set_struct_debug_option): Add location_t parameter. Update
recursive call. Use error_at.
(default_options_optimization): Use error_at.
(finish_options): Add location_t parameter. Use
opts->x_flag_opts_finished instead of first_time_p. Use
opts->x_optimize instead of optimize. Use error_at. Pass
location to inform.
(print_filtered_help): Use opts->x_help_printed to track what
options have been printed.
(print_specific_help): Use opts->x_help_columns to track number of
columns.
(common_handle_option): Pass locations and gcc_options pointers to
more functions. Use warning_at instead of fnotice and warning.
Don't handle OPT_fdbg_cnt_, OPT_fdbg_cnt_list or
OPT_fdebug_prefix_map_. Use error_at. Set
opts->x_initial_max_fld_align; don't set maximum_field_alignment.
Don't handle OPT_frandom_seed or OPT_frandom_seed_. Don't handle
OPT_fsched_verbose_.
(handle_param): Add location_r parameter. Use error_at.
(set_debug_level): Add location_r parameter. Use error_at and
warning_at.
(setup_core_dumping): Add diagnostic_context parameter.
(decode_d_option): Add gcc_options, location_t and
diagnostic_context parameters and use them instead of global
state. Use warning_at.
(enable_warning_as_error): Use error_at.
* opts.h (finish_options): Update prototype.
(set_struct_debug_option): Declare here.
* rtl.h (fix_sched_param): Remove.
* stor-layout.c (initial_max_fld_align): Remove.
* toplev.c (rtl_dump_and_exit, flag_print_asm_name,
graph_dump_format, flag_debug_asm, flag_dump_rtl_in_asm): Remove.
(process_options): Set maximum_field_alignment.
* tree.h (initial_max_fld_align) Don't declare here.
* Makefile.in (opts.o, opts-global.o): Update dependencies.
c-family:
* c-opts.c (c_common_handle_option): Pass location to
set_struct_debug_option.
Jeffrey Yasskin [Wed, 24 Nov 2010 00:24:54 +0000 (00:24 +0000)]
Propagate the source location from a template function's definition to
any already-instantiated declarations.
PR c++/46527
* gcc/cp/pt.c (instantiate_decl): Propagate the template's
location to its instance.
* gcc/testsuite/g++.dg/debug/dwarf2/pr46527.C: New test.
Dave Korn [Tue, 23 Nov 2010 19:18:39 +0000 (19:18 +0000)]
re PR driver/42690 (Undefined reference errors with -flto -fuse-linker-plugin)
PR driver/42690
* gcc.c (LINK_COMMAND_SPEC): Remove hard-coded pass-through plugin
options, replace by call of pass-through-libs spec function to process
link_gcc_c_sequence spec.
(lto_libgcc_spec): Delete variable.
(static_specs[]): Remove related entry.
(static_spec_functions[]): Add new entry for pass-through-libs.
(main): Don't generate deleted lto_libgcc_spec.
(pass_through_libs_spec_func): New function to implement the new
pass-through-libs spec function.
* doc/invoke.texi (pass-through-libs): Document new spec function.
Nicola Pero [Tue, 23 Nov 2010 09:47:07 +0000 (09:47 +0000)]
In gcc/objc/: 2010-11-23 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/objc/:
2010-11-23 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/24358
* lang-specs.h: Added objective-c-cpp-output. Mapped .mi to
objective-c-cpp-output instead of objc-cpp-output. Print a
deprecation note every time objc-cpp-output is requested.
In gcc/objcp/:
2010-11-23 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/24358
* lang-specs.h: Print a deprecation note every time
objc++-cpp-output is requested.
Richard Guenther [Tue, 23 Nov 2010 09:42:41 +0000 (09:42 +0000)]
tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid doing work twice.
2010-11-23 Richard Guenther <rguenther@suse.de>
* tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid doing work
twice. Avoid re-allocating the ops vector all the time.
2010-11-23 Richard Guenther <rguenther@suse.de>
* tree-ssa-alias.c (refs_may_alias_p_1): Avoid calls to
is_gimple_min_invariant, group tree code checks to allow
combining them.
(stmt_may_clobber_ref_p_1): Check for SSA_NAME instead
of is_gimple_reg.
Joseph Myers [Mon, 22 Nov 2010 23:59:18 +0000 (23:59 +0000)]
common.opt (exit_after_options, [...]): New Variable entries.
* common.opt (exit_after_options, write_symbols, debug_info_level,
use_gnu_debug_info_extensions): New Variable entries.
(fprofile-dir=): Use Var.
* flag-types.h (enum debug_info_level): Rename to enum
debug_info_levels.
* flags.h (write_symbols, debug_info_level,
use_gnu_debug_info_extensions): Remove declarations.
* opts.c (exit_after_options, write_symbols, debug_info_level):
Remove.
(set_struct_debug_option): Make static variables const.
(use_gnu_debug_info_extensions): Remove.
(set_debug_level, print_filtered_help, print_specific_help,
fast_math_flags_set_p): Take gcc_options parameters and use them
in place of global variables.
(print_filtered_help): Make new_help non-static.
(print_specific_help): Update call to print_filtered_help.
(common_handle_option): Update calls to print_specific_help. Use
gcc_options structure for more settings. Make --help table
const. Don't handle OPT_fprofile_dir_ here. Update calls to
set_debug_level.
* toplev.c (profile_data_prefix): Remove.
* toplev.h (profile_data_prefix, exit_after_options): Remove
declarations.
(fast_math_flags_set_p): Update prototype.
* cppbuiltin.c (define_builtin_macros_for_compilation_flags):
Update call to fast_math_flags_set_p.
* lib/target-supports.exp (check_vect_support_and_set_flags): New
procedure to check if the target supports vectorizer tests. Set
DEFAULT_VECTCFLAGS and dg-do-what-default depending on vectorization
capabilites.
* gcc.dg/vect/vect.exp: Use check_vect_support_and_set_flags.
* g++.dg/vect/vect.exp: Ditto.
* gfortran.dg/vect/vect.exp: Ditto.
Nicola Pero [Mon, 22 Nov 2010 19:27:17 +0000 (19:27 +0000)]
In gcc/c-family/: 2010-11-22 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/c-family/:
2010-11-22 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/34033
* c-lex.c (lex_string): Check that each string in an Objective-C
string concat sequence starts with either one or zero '@', and
that there are no spurious '@' signs at the end.
In gcc/testsuite/:
2010-11-22 Nicola Pero <nicola.pero@meta-innovation.com>
Paolo Bonzini [Mon, 22 Nov 2010 16:20:16 +0000 (16:20 +0000)]
re PR bootstrap/44970 (Revision 162270 failed to bootstrap)
2010-11-22 Paolo Bonzini<bonzini@gnu.org>
PR bootstrap/44970
* Makefile.in (fwprop.o) Add sparseset.h.
* fwprop.c: Include sparseset.h
(struct find_occurrence_data, find_occurrence_callback,
find_occurrence): Remove.
(active_defs, active_defs_check, register_active_defs,
update_df_init, update_uses): New.
(update_df): Rewrite.
(try_fwprop_subst, forward_propagate_asm): Add calls to
update_df_init and update_df.
(fwprop_init): Allocate active_defs and active_defs_check.
(fwprop_done): Free them.
(fwprop, fwprop_addr): Adjust comments.
* df.h (df_uses_create): Declare.
* df-scan.c (df_install_ref_incremental): Break out of df_ref_create.
(df_ref_create): Return result of df_ref_create_structure directly.
(df_ref_create_structure): Call df_install_ref_incremental when
no collection_rec is passed.
(df_ref_record): Do not create multiword hard reg info when no
collection_rec is passed.
(df_uses_create): New.
Michael Matz [Mon, 22 Nov 2010 11:39:01 +0000 (11:39 +0000)]
gfortranspec.c (library): New global, moved from ...
* gfortranspec.c (library): New global, moved from ...
(lang_specific_driver): ... here.
(lang_specific_pre_link): Test it here before including
libgfortran.spec.
re PR rtl-optimization/45652 (gcc.dg/compat/scalar-by-value-3 FAILs with -O2 -fselective-scheduling2)
PR rtl-optimization/45652
* alias.c (get_reg_base_value): New.
* rtl.h (get_reg_base_value): Add prototype.
* sel-sched.c (init_regs_for_mode): Use it. Don't use registers with
non-null REG_BASE_VALUE for renaming.
* gengtype.c: Include xregex.h and obstack.h
Added comments about role of get_output_file_with_visibility and
our regexpr machinery.
(frul_actionrout_t, struct file_rule_st): New.
(hader_dot_h_frul, source_dot_c_frul): New functions.
(NULL_REGEX, NULL_FRULACT): New.
(files_rules): New.
(matching_file_name_substitute): New function.
(get_output_file_with_visibility): Updated comments and rewritten
to use the new files_rules machinery.
* Makefile.in (XREGEX_H): Added variable.
(build/gengtype.o): Added dependencies for xregex.h and obstack.h
Eric Botcazou [Sun, 21 Nov 2010 10:36:54 +0000 (10:36 +0000)]
mips.c (machine_function): Rename load_label_length to load_label_num_insns.
* config/mips/mips.c (machine_function): Rename load_label_length to
load_label_num_insns.
(mips_load_label_length): Rename to...
(mips_load_label_num_insns): ...this. Adjust to first renaming.
(mips_adjust_insn_length): Adjust to second renaming. Fix thinko.
Michael Matz [Sun, 21 Nov 2010 07:56:12 +0000 (07:56 +0000)]
re PR driver/46516 (Non-multilib search problem in gcc.c / gfortran error: libgfortran.spec: No such file or directory)
2010-11-21 Michael Matz <matz@suse.de>
Tobias Burnus <burnus@net-b.de>
PR driver/46516
* gfortranspec.c (lang_specific_driver,
lang_specific_pre_link): Load libgfortran.spec in
lang_specific_pre_link unless found in the -L path.
Ian Lance Taylor [Sun, 21 Nov 2010 01:49:05 +0000 (01:49 +0000)]
configure.ac: Only disable a language library if no language needs it.
* configure.ac: Only disable a language library if no language needs
it. Don't let --disable-libgcj uncondtionally disable libffi.
* configure: Rebuild.
testsuite:
* g++.dg/cpp/_Pragma1.C: Test for all non-Solaris targets.
* gcc.dg/cpp/_Pragma6.c: Test for all non-Solaris targets.
* gcc.dg/pack-test-1.c: Test for all non-default_packed targets.
* gcc.dg/pack-test-2.c: Test for all targets.
* gcc.dg/pragma-align.c: Test for all targets.
* gcc.dg/pragma-pack-4.c: Do not skip for AVR.
* gcc.dg/ucnid-10.c: Test for all targets.
* cgraph.c (ld_plugin_symbol_resolution_names): New.
(dump_cgraph_node): Dump resolution.
* cgraph.h (ld_plugin_symbol_resolution_names): Declare.
(cgraph_comdat_can_be_unshared_p): Dclare.
* lto-streamer-out.c (produce_symtab): Use
cgraph_comdat_can_be_unshared_p.
* ipa.c (cgraph_address_taken_from_non_vtable_p): New function.
(cgraph_comdat_can_be_unshared_p): New function based on logic
in cgraph_externally_visible_p.
(cgraph_externally_visible_p): Use it.
(varpool_externally_visible_p): Virtual tables can be unshared.
* varpool.c (dump_varpool_node): Dump resolution.
* cgraph.c (ld_plugin_symbol_resolution_names): New.
(dump_cgraph_node): Dump resolution.
* cgraph.h (ld_plugin_symbol_resolution_names): Declare.
(cgraph_comdat_can_be_unshared_p): Dclare.
* lto-streamer-out.c (produce_symtab): Use
cgraph_comdat_can_be_unshared_p.
* ipa.c (cgraph_address_taken_from_non_vtable_p): New function.
(cgraph_comdat_can_be_unshared_p): New function based on logic
in cgraph_externally_visible_p.
(cgraph_externally_visible_p): Use it.
(varpool_externally_visible_p): Virtual tables can be unshared.
* varpool.c (dump_varpool_node): Dump resolution.