platform/upstream/linaro-gcc.git
11 years ago2012-11-07 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Wed, 7 Nov 2012 13:20:33 +0000 (13:20 +0000)]
2012-11-07  Paolo Carlini  <paolo.carlini@oracle.com>

* include/debug/array (_GLIBCXX_THROW_OR_ABORT): Move...
* include/bits/c++config: ... here.
* include/bits/shared_ptr_base.h (__throw_bad_weak_ptr): Use it.
* include/ext/pb_ds/exception.hpp: Likewise.
* include/ext/throw_allocator.h (__throw_forced_error): Likewise.
* include/ext/concurrence.h (__throw_concurrence_lock_error,
__throw_concurrence_unlock_error, __throw_concurrence_broadcast_error,
__throw_concurrence_wait_error): Likewise.
* include/tr1/shared_ptr.h (__throw_bad_weak_ptr): Likewise.
* include/tr1/functional (function<_Res(_ArgTypes...)>::operator()
(_ArgTypes...)): Likewise.
* libsupc++/eh_aux_runtime.cc (__cxxabiv1::__cxa_bad_cast,
__cxxabiv1::__cxa_bad_typeid): Likewise.
* libsupc++/vec.cc (compute_size): Likewise.
* libsupc++/new_op.cc (operator new (std::size_t)): Likewise.
* src/c++11/functexcept.cc: Likewise.
* testsuite/util/io/illegal_input_error.hpp
(__throw_illegal_input_error): Likewise.
* libsupc++/eh_personality.cc: Avoid warning with -fno-exceptions.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust dg-error line
numbers.
* testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc:
Likewise.
* testsuite/23_containers/array/tuple_interface/
tuple_element_debug_neg.cc: Likewise.
* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
Likewise.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.

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

11 years ago * config/i386/i386.c (enum upper_128bits_state): Remove.
uros [Wed, 7 Nov 2012 12:15:59 +0000 (12:15 +0000)]
* config/i386/i386.c (enum upper_128bits_state): Remove.
(check_avx256_store): Use bool pointer argument.
(ix86_avx_u128_mode_needed): Use note_stores also for CALL insns.
* config/i386/predicates.md (vzeroupper_operation): Use match_test.

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

11 years ago/cp
paolo [Wed, 7 Nov 2012 11:15:40 +0000 (11:15 +0000)]
/cp
2012-11-07  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/55226
Revert:
2012-10-23  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/54922
* semantics.c (cx_check_missing_mem_inits): Handle anonymous union
members.

/testsuite
2012-11-07  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/55226
Revert:
2012-10-23  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/54922
* g++.dg/cpp0x/constexpr-union4.C: New.

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

11 years agogcc/ChangeLog
yufeng [Wed, 7 Nov 2012 11:01:46 +0000 (11:01 +0000)]
gcc/ChangeLog

2012-11-07  Yufeng Zhang  <yufeng.zhang@arm.com>

* config/aarch64/aarch64.c (aarch64_expand_prologue): For the
load-pair with writeback instruction, replace
aarch64_set_frame_expr with add_reg_note (REG_CFA_ADJUST_CFA);
add new local variable 'cfa_reg' and use it.

gcc/testsuite/ChangeLog

2012-11-07  Yufeng Zhang  <yufeng.zhang@arm.com>

* gcc.target/aarch64/dwarf-cfa-reg.c: New test.

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

11 years ago * gcc.c-torture/compile/pr49220.c: New test.
kkojima [Wed, 7 Nov 2012 10:50:22 +0000 (10:50 +0000)]
* gcc.c-torture/compile/pr49220.c: New test.

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

11 years ago PR middle-end/49220
kkojima [Wed, 7 Nov 2012 10:48:12 +0000 (10:48 +0000)]
PR middle-end/49220
* mode-switching.c (create_pre_exit): Set short_block if there
are no copy insns.

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

11 years ago * init.c (build_new_1): Do not check for arithmetic overflow if
fw [Wed, 7 Nov 2012 09:45:57 +0000 (09:45 +0000)]
* init.c (build_new_1): Do not check for arithmetic overflow if
inner array size is 1.

* g++.dg/init/new40.C: New.

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

11 years ago2012-11-07 Martin Jambor <mjambor@suse.cz>
jamborm [Wed, 7 Nov 2012 09:28:50 +0000 (09:28 +0000)]
2012-11-07  Martin Jambor  <mjambor@suse.cz>

* lto-cgraph.c: Include tree-pass.h.
(lto_output_node): Stream node->ipa_transforms_to_apply.
(input_node): Likewise.
* tree-pass.h (passes_by_id): Declare.
(passes_by_id_size): Likewise.
* Makefile.in (lto-cgraph.o): Add TREE_PASS_H to dependencies.

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

11 years ago * ipa-inline-analysis.c (true_predicate, single_cond_predicate,
hubicka [Wed, 7 Nov 2012 09:22:50 +0000 (09:22 +0000)]
* ipa-inline-analysis.c (true_predicate, single_cond_predicate,
reset_inline_edge_summary): Fix
formatting.
(account_size_time): Bump up the limit on number of size/time entries to
256.
(estimate_function_body_sizes): Work in reverse postorder.

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

11 years ago * include/bits/stl_vector.h (vector(size_type)): Add missing allocator
redi [Wed, 7 Nov 2012 09:17:42 +0000 (09:17 +0000)]
* include/bits/stl_vector.h (vector(size_type)): Add missing allocator
parameter.
* include/bits/stl_bvector.h: Likewise.
* include/debug/vector (vector(size_type)): Likewise.
* include/profile/vector (vector(size_type)): Likewise. Pass allocator
to base constructor.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
Adjust dg-error line numbers.
* testsuite/23_containers/vector/requirements/dr438/
constructor_1_neg.cc: Likewise.
* testsuite/23_containers/vector/requirements/dr438/
constructor_2_neg.cc: Likewise.
* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
Likewise.

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

11 years agoRevert sparc "U" constraint removal.
davem [Wed, 7 Nov 2012 08:42:09 +0000 (08:42 +0000)]
Revert sparc "U" constraint removal.

PR bootstrap/55211
Revert:
     * config/sparc/constraints.md ("U"): Delete.
     * config/sparc/sparc.md: Use 'r' constraint instead of 'U'.
     * config/sparc/sync.md: Likewise.
And revert parts of:
* doc/md.texi: Sync sparc constraint documentation with reality.

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

11 years ago * config/i386/i386.c (ix86_avx_u128_mode_after): Don't
jakub [Wed, 7 Nov 2012 07:52:16 +0000 (07:52 +0000)]
* config/i386/i386.c (ix86_avx_u128_mode_after): Don't
look for reg in CALL operand.

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

11 years ago PR debug/54693
jakub [Wed, 7 Nov 2012 07:50:01 +0000 (07:50 +0000)]
PR debug/54693
* tree-flow.h (propagate_threaded_block_debug_into): New prototype.
* tree-ssa-threadedge.c (propagate_threaded_block_debug_into): No
longer static.
* tree-ssa-loop-ch.c (copy_loop_headers): Use it.

* gcc.dg/guality/pr54693-2.c: New test.

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

11 years ago * gcc-interface/Makefile.in: Revert most changes.
ebotcazou [Wed, 7 Nov 2012 04:58:23 +0000 (04:58 +0000)]
* gcc-interface/Makefile.in: Revert most changes.
* gcc-interface/Make-lang.in (gnatlib): Remove ada/s-oscons.ads.
libada/
* libada/Makefile.in: Revert most changes.

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

11 years ago2012-11-06 Sterling Augustine <saugustine@google.com>
sterling [Wed, 7 Nov 2012 01:18:28 +0000 (01:18 +0000)]
2012-11-06  Sterling Augustine <saugustine@google.com>

* dwarf2out.c (output_comdat_type_unit): Check for OBJECT_FORMAT_ELF.

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

11 years ago2012-11-06 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Wed, 7 Nov 2012 00:42:19 +0000 (00:42 +0000)]
2012-11-06  Paolo Carlini  <paolo.carlini@oracle.com>

PR libstdc++/51850
* include/debug/array: New, debug-mode implementation.
* include/profile/array: New.
* include/std/array: Adjust.
* include/std/tuple: Just include <array>.
* include/Makefile.am: Add.
* include/Makefile.in: Regenerate.
* testsuite/23_containers/array/debug/front1_neg.cc: New.
* testsuite/23_containers/array/debug/
square_brackets_operator1_neg.cc: Likewise.
* testsuite/23_containers/array/debug/front2_neg.cc: Likewise.
* testsuite/23_containers/array/debug/
square_brackets_operator2_neg.cc: Likewise.
* testsuite/23_containers/array/debug/back1_neg.cc: Likewise.
* testsuite/23_containers/array/debug/back2_neg.cc: Likewise.
* testsuite/23_containers/array/tuple_interface/get_neg.cc: Tweak
to run only in normal-mode.
* testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc:
Likewise.
* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: New.
* testsuite/23_containers/array/tuple_interface/
tuple_element_debug_neg.cc: Likewise.

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

11 years agoAdd a contrib script for comparing the performance of two sets of
crowl [Wed, 7 Nov 2012 00:36:04 +0000 (00:36 +0000)]
Add a contrib script for comparing the performance of two sets of
compiler runs.

Usage documentation is in the script.

The script produces output of the form:

$ compare_two_ftime_report_sets "Log0/*perf" "Log3/*perf"

Arithmetic sample for timevar log files
"Log0/*perf"
and selecting lines containing "TOTAL" with desired confidence 95 is
trial count is 4, mean is 443.022 (95% confidence in 440.234 to 445.811),
std.deviation is 1.75264, std.error is 0.876322

Arithmetic sample for timevar log files
"Log3/*perf"
and selecting lines containing "TOTAL" with desired confidence 95 is
trial count is 4, mean is 441.302 (95% confidence in 436.671 to 445.934),
std.deviation is 2.91098, std.error is 1.45549

The first sample appears to be 0.39% larger,
with 60% confidence of being larger.
To reach 95% confidence, you need roughly 14 trials,
assuming the standard deviation is stable, which is iffy.

Tested on x86_64 builds.

Index: contrib/ChangeLog

2012-11-05  Lawrence Crowl  <crowl@google.com>

* compare_two_ftime_report_sets: New.

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

11 years ago2012-11-06 Andrew Pinski <apinski@cavium.com>
pinskia [Wed, 7 Nov 2012 00:18:31 +0000 (00:18 +0000)]
2012-11-06  Andrew Pinski  <apinski@cavium.com>

* gcc.target/aarch64/vect-fmaxv-fminv-compile.c: Add -fno-vect-cost-model.

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

11 years agoDaily bump.
gccadmin [Wed, 7 Nov 2012 00:18:29 +0000 (00:18 +0000)]
Daily bump.

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

11 years agotm: Add uninstrumented code path
rth [Tue, 6 Nov 2012 23:55:39 +0000 (23:55 +0000)]
tm: Add uninstrumented code path

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

11 years ago* cfghooks.c (copy_bbs): Handle a null loop_father.
rth [Tue, 6 Nov 2012 23:55:29 +0000 (23:55 +0000)]
* cfghooks.c (copy_bbs): Handle a null loop_father.

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

11 years agoHandle null current_function_decl in cgraph_debug_gimple_stmt
rth [Tue, 6 Nov 2012 23:55:20 +0000 (23:55 +0000)]
Handle null current_function_decl in cgraph_debug_gimple_stmt

        * cfghooks.c (cgraph_debug_gimple_stmt): Handle a null
        current_function_decl.

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

11 years agoPrevent "illegal" block sharing within transactions.
rth [Tue, 6 Nov 2012 23:55:11 +0000 (23:55 +0000)]
Prevent "illegal" block sharing within transactions.

        * tree-ssa-tail-merge.c (find_duplicate): Do not consider
        is_tm_ending_fndecl calls as mergable.

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

11 years agogcc/ChangeLog
sterling [Tue, 6 Nov 2012 23:15:25 +0000 (23:15 +0000)]
gcc/ChangeLog

2012-11-06  Sterling Augustine <saugustine@google.com>
            Cary Coutant <ccoutant@google.com>

* common.opt (gno-split-dwarf, gsplit-dwarf): New switches.
* doc/invoke.texi (Debugging Options): Document them.
* gcc.c (replace_extension_spec_func):  New function.
(ASM_FINAL_SPEC): Adjust.
(static_spec_functions): Add new field for replace-extension.
(check_live_switch): Adjust comment.  Add case for 'g'.
* opts.c (finish_options): Set x_debug_generate_pub_sections based on
x_dwarf_split_debug_info.
(common_handle_option): Add case for OPT_gsplit_dwarf.
* dwarf2out.h (addr_table_entry_struct): Add forward declaration.
(dw_val_struct): Add val_entry pointer.
* dwarf2out.c: (debug_skeleton_info_section,
debug_skeleton_abbrev_section, debug_addr_section,
debug_skeleton_line_section, debug_str_offsets_section): New globals.
(NOT_INDEXED, NO_INDEX_ASSIGNED): New defines.
(indirect_string_node): New field index.
(ate_kind): New enum with fields ate_kind_rtc, ate_kind_rtx_dtprel,
ate_kind_label.
(addr_table_entry): New structure and type.
(dw_loc_list_struct): Add field begin_entry.
(new_loc_desc): Initialize val_entry.
(size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
Add cases for DW_OP_GNU_addr_index and DW_OP_const_index.
(build_cfa_loc): Initialize val_entry.
(AT_index, add_addr_table_entry, remove_addr_table_entry,
add_AT_lbl_id): New functions.
(add_AT_addr, add_AT_range_list): New parameter force_direct.
(output_die_abbrevs): New function.
(add_ranges_by_labels): New parameter force_direct.
(output_line_info): New parameter prologue_only.
(dtprel_bool): New enum with dtprel_false and dtprel_true.
(dw_addr_op, new_addr_loc_descr): New functions.
(DEBUG_DWO_INFO_SECTION, DEBUG_DWO_ABBREV_SECTION,
DEBUG_ADDR_SECTION, DEBUG_NORM_MACINFO_SECTION,
DEBUG_DWO_MACINFO_SECTION, DEBUG_MACINFO_SECTION,
DEBUG_NORM_MACRO_SECTION, DEBUG_DWO_MACRO_SECTION,
DEBUG_MACRO_SECTION, DEBUG_DWO_LINE_SECTION,
DEBUG_DWO_LOC_SECTION, DEBUG_NORM_STR_OFFSETS_SECTION,
DEBUG_DWO_STR_OFFSETS_SECTION, DEBUG_STR_OFFSETS_SECTION,
DEBUG_DWO_STR_SECTION, DEBUG_NORM_STR_SECTION, DEBUG_STR_SECTION,
DEBUG_MACRO_SECTION_FLAGS, DEBUG_SKELETON_LINE_SECTION_LABEL,
DEBUG_SKELETON_INFO_SECTION_LABEL, DEBUG_ADDR_SECTION_LABEL
DEBUG_SKELETON_ABBREV_SECTION_LABEL): New macros.
(DEBUG_STR_SECTION_FLAGS): Adjust.
(TEXT_SECTION_LABEL, COLD_TEXT_SECTION_LABEL,
DEBUG_LINE_SECTION_LABEL, DEBUG_INFO_SECTION_LABEL,
DEBUG_ABBREV_SECTION_LABEL, DEBUG_ADDR_SECTION_LABEL,
DEBUG_LOC_SECTION_LABEL, DEBUG_RANGES_SECTION_LABEL,
DEBUG_MACINFO_SECTION_LABEL, DEBUG_MACRO_SECTION_LABEL): Adjust
indentation.
(debug_skeleton_abbrev_section_label, debug_addr_section_label,
debug_skeleton_line_section_label, debug_skeleton_info_section_label):
New global variables.
(add_AT_flag, add_AT_int, add_AT_unsigned, add_AT_double, add_AT_vec,
add_AT_data8): Initialize val_entry.
(add_AT_low_high_pc): New parameter force_direct. Handle
dwarf_split_debug_info.
(set_indirect_string, find_AT_string_form): New functions.
(AT_string_form): Adjust to call find_AT_string_from.
(add_AT_die_ref, add_AT_fde_ref, add_AT_loc, add_AT_list):
Initialize val_entry.
(addr_index_table): New global variable.
(addr_table_entry_do_hash, addr_table_entry_eq, add_addr_table_entry,
init_addr_table_entry, remove_addr_table_entry, index_addr_table_entry,
remove_loc_list_addr_table_entries): New functions.
(add_AT_addr, add_AT_lbl_id, add_AT_range_list): New parameter
force_direct.  Handle dwarf_split_debug_info.
(add_AT_file, add_AT_vms_delta, add_AT_lineptr, add_AT_macptr,
add_AT_offset): Initialize val_entry.
(UNRELOCATED_OFFSET, RELOCATED_OFFSET): New defines.
(size_of_die): Handle dwarf_split_debug_info.
(size_of_aranges, value_format): Call AT_class.  Check AT_index.
(output_die_abbrevs): New function.
(output_abbrev_section): Call output_die_abbrevs.
(new_loc_list): Initialize begin_entry.
(output_loc_list): Handle dwarf_split_debug_info.
(output_range_list_offset, output_loc_list_offset,
output_attr_index_or_value, ): New functions.
(output_die): Fix call to dw2_asm_output_data.  Call
output_attr_index_or_value and output_range_list_offset.
Adjust logic around dw_val_class_str.
(add_top_lebel_skeleton_die_attrs, get_skeleton_type_unit,
output_skeleton_debug_sections): New functions.
(output_comdat_type_unit, output_pubname, output_aranges): Handle
dwarf_split_debug_info.
(add_ranges_by_labels): New parameter force_direct.
(mem_loc_descriptor, loc_descr): Call new_addr_loc_descr.
(loc_list_from_tree, add_const_value_attribtue): Use dtprel_bools in
place of generic integer.
(dwarf2out_vms_debug_main_pointer, gen_entry_point_die, gen_label_die,
gen_call_site_die, gen_subprogram_die, gen_variable_die,
add_high_low_attributes): Adjust calls to add_AT_lbl_id.
(output_macinfo_op): Adjust indirect_string_logic.
(save_macinfo_strings): New function.
(output_macinfo): Adjust.
(dwarf2out_init): Handle dwarf_split_debug_info.
(index_string, output_index_string_offset, output_index_string): New
functions.
(output_indirect_string): Adjust.
(output_indirect_strings, output_addr_table_entry, output_addr_table):
New functions.
(resolve_addr_in_expr, hash_loc_operands): Handle DW_OP_GNU_addr_index
and DW_OP_GNU_const_index.  Handle dwarf_split_debug_info.  Call
remove_loc_list_addr_table_entries and remove_addr_table_entry.
(index_location_lists): New function.
(dwarf2out_finish): Handle dwarf_split_debug_info.  New variable
main_comp_unit_die.  Adjust calls to add_AT_low_high_pc,
add_ranges_by_labels, add_AT_addr, and add_AT_lineptr. Call
save_macinfo_strings and output_indirect_strings.

include/ChangeLog

2012-10-29  Sterling Augustine <saugustine@google.com>
            Cary Coutant <ccoutant@google.com>

* dwarf2.h (dwarf_location_list_entry_type): New enum with fields
DW_LLE_GNU_end_of_list_entry, DW_LLE_GNU_base_address_selection_entry,
DW_LLE_GNU_start_end_entry and DW_LLE_GNU_start_length_entry.

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

11 years ago * generic-morestack.c (__generic_morestack): Align the returned
ian [Tue, 6 Nov 2012 23:04:28 +0000 (23:04 +0000)]
* generic-morestack.c (__generic_morestack): Align the returned
stack pointer to a 32 byte boundary.
* config/i386/morestack.S (__morestack_non_split) [32-bit]: Don't
increment the return address until we have decided that we don't
have a varargs function.
(__morestack) [32-bit]: Align stack correctly when calling C
functions.
(__morestack) [64-bit]: Likewise.

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

11 years ago * testsuite/20_util/shared_ptr/cons/55123.cc: Remove duplicate
redi [Tue, 6 Nov 2012 22:53:16 +0000 (22:53 +0000)]
* testsuite/20_util/shared_ptr/cons/55123.cc: Remove duplicate
include.

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

11 years ago * config/i386/i386.c (make_dispatcher_decl): Guard with
gerald [Tue, 6 Nov 2012 22:14:47 +0000 (22:14 +0000)]
* config/i386/i386.c (make_dispatcher_decl): Guard with
ASM_OUTPUT_TYPE_DIRECTIVE and HAVE_GNU_INDIRECT_FUNCTION.

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

11 years ago2012-11-06 Andrew Pinski <apinski@cavium.com>
pinskia [Tue, 6 Nov 2012 22:06:19 +0000 (22:06 +0000)]
2012-11-06  Andrew Pinski  <apinski@cavium.com>

* g++.dg/abi/aarch64_guard1.C: Add -fno-section-anchors.

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

11 years ago * ipa-inline-analysis.c (estimate_function_body_sizes,
hubicka [Tue, 6 Nov 2012 21:08:49 +0000 (21:08 +0000)]
* ipa-inline-analysis.c (estimate_function_body_sizes,
inline_update_overall_summary): Cap time calculations.

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

11 years agoUpdate index.go from master testsuite.
ian [Tue, 6 Nov 2012 19:48:12 +0000 (19:48 +0000)]
Update index.go from master testsuite.

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

11 years ago * config/i386/i386.c (ix86_init_machine_status): Do not
uros [Tue, 6 Nov 2012 19:04:47 +0000 (19:04 +0000)]
* config/i386/i386.c (ix86_init_machine_status): Do not
explicitly clear tls_descriptor_call_expanded_p again.

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

11 years ago * config/i386/sse.md
uros [Tue, 6 Nov 2012 18:53:21 +0000 (18:53 +0000)]
* config/i386/sse.md
(<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>): Mark operand 0
as read and written by the instruction.

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

11 years agocompiler, runtime: Size of int is now 64 bits on x86_64.
ian [Tue, 6 Nov 2012 18:46:38 +0000 (18:46 +0000)]
compiler, runtime: Size of int is now 64 bits on x86_64.

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

11 years agocompiler, libgo: Fixes to prepare for 64-bit int.
ian [Tue, 6 Nov 2012 18:28:21 +0000 (18:28 +0000)]
compiler, libgo: Fixes to prepare for 64-bit int.

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

11 years agocompiler, runtime: Memcmp routine returns intgo.
ian [Tue, 6 Nov 2012 18:12:45 +0000 (18:12 +0000)]
compiler, runtime: Memcmp routine returns intgo.

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

11 years ago * ChangeLog: Add missing PR number.
uros [Tue, 6 Nov 2012 18:00:46 +0000 (18:00 +0000)]
* ChangeLog: Add missing PR number.
* testsuite/ChangeLog: Ditto.

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

11 years agoPR debug/54693
aoliva [Tue, 6 Nov 2012 17:58:52 +0000 (17:58 +0000)]
PR debug/54693
* tree-ssa-threadedge.c (propagate_threaded_block_debug_into):
Use a stack vector before allocating a pointer set.

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

11 years ago2012-11-06 Martin Jambor <mjambor@suse.cz>
jamborm [Tue, 6 Nov 2012 17:39:37 +0000 (17:39 +0000)]
2012-11-06  Martin Jambor  <mjambor@suse.cz>

* ipa-prop.c (ipa_get_param_decl_index_1): New function.
(ipa_get_param_decl_index): Just call ipa_get_param_decl_index_1.
(ipa_populate_param_decls): Accept descriptors parameter rather
than the whole info.
(load_from_unmodified_param): Likewise.
(ipa_load_from_parm_agg_1): Likewise.
(ipa_load_from_parm_agg): Extract descriptors from info.
(compute_complex_assign_jump_func): Likewise.
(ipa_analyze_indirect_call_uses): Likewise.

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

11 years ago * ipa-inline.c (compute_uninlined_call_time): Return gcov_type.
hubicka [Tue, 6 Nov 2012 17:32:40 +0000 (17:32 +0000)]
* ipa-inline.c (compute_uninlined_call_time): Return gcov_type.
(compute_inlined_call_time): Watch overflows.
(relative_time_benefit): Compute in gcov_type.

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

11 years agoForgot changelog :(
hubicka [Tue, 6 Nov 2012 17:28:36 +0000 (17:28 +0000)]
Forgot changelog :(

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

11 years ago * cfgloopanal.c (get_loop_hot_path): New function.
hubicka [Tue, 6 Nov 2012 16:22:45 +0000 (16:22 +0000)]
* cfgloopanal.c (get_loop_hot_path): New function.
* tree-ssa-lop-ivcanon.c (struct loop_size): Add CONSTANT_IV,
NUM_NON_PURE_CALLS_ON_HOT_PATH, NUM_PURE_CALLS_ON_HOT_PATH,
NUM_BRANCHES_ON_HOT_PATH.
(tree_estimate_loop_size): Compute the new values.
(try_unroll_loop_completely): Disable unrolling of loops with only
calls or too many branches.
(tree_unroll_loops_completely): Deal also with outer loops of hot loops.
* cfgloop.h (get_loop_hot_path): Declare.
* params.def (PARAM_MAX_PEEL_BRANCHES): New parameters.
* invoke.texi (max-peel-branches): Document.

* gcc.dg/tree-ssa/loop-1.c: Make to look like a good unroling candidate still.
* gcc.dg/tree-ssa/loop-23.c: Likewise.
* gcc.dg/tree-ssa/cunroll-1.c: Unrolling now happens early.
* gcc.dg/tree-prof/unroll-1.c: Remove confused dg-options.

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

11 years ago * ipa-pure-const.c (check_stmt): Fix debug info formatting.
hubicka [Tue, 6 Nov 2012 16:05:18 +0000 (16:05 +0000)]
* ipa-pure-const.c (check_stmt): Fix debug info formatting.

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

11 years ago * config/i386/i386.c (TARGET_INSTANTIATE_DECLS): New define.
uros [Tue, 6 Nov 2012 16:00:35 +0000 (16:00 +0000)]
* config/i386/i386.c (TARGET_INSTANTIATE_DECLS): New define.
(ix86_instantiate_decls): New function.
(ix86_expand_builtin) <case IX86_BUILTIN_LDMXCSR>: Use SLOT_TEMP
stack slot instead of SLOT_VIRTUAL.
<case IX86_BUILTIN_STMXCSR>: Ditto.
(assign_386_stack_local): Do not assert when virtual slot is valid.
* config/i386/i386.h (enum ix86_stack_slot): Remove SLOT_VIRTUAL.
* config/i386/i386.md (truncdfsf2): Do not use SLOT_VIRTUAL stack slot.
(truncxf<mode>2): Ditto.
(floatunssi<mode>2): Ditto.
(isinf<mode>2): Ditto.
* config/i386/sync.md (atomic_load<mode>): Ditto.
(atomic_store<mode>): Ditto.

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

11 years ago* const-uniq-1.c: Expand regex to match AIX XCOFF labels.
dje [Tue, 6 Nov 2012 14:54:33 +0000 (14:54 +0000)]
* const-uniq-1.c: Expand regex to match AIX XCOFF labels.

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

11 years ago PR middle-end/41993
uros [Tue, 6 Nov 2012 14:30:52 +0000 (14:30 +0000)]
PR middle-end/41993
* gcc.dg/torture/pr41993.c: New test.

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

11 years ago * gcc.target/i386/l_fma_float_?.c: Update.
hubicka [Tue, 6 Nov 2012 13:49:30 +0000 (13:49 +0000)]
* gcc.target/i386/l_fma_float_?.c: Update.
* gcc.target/i386/l_fma_double_?.c: Update.

* tree-vect-loop-manip.c (vect_do_peeling_for_loop_bound,
vect_do_peeling_for_alignment): Fix loop bound computation.
* tree-vect-loop.c (vect_transform_loop): Maintain loop bounds.

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

11 years ago * Makefile.in (osconstool): Revert previous change, still needed
charlet [Tue, 6 Nov 2012 13:16:43 +0000 (13:16 +0000)]
* Makefile.in (osconstool): Revert previous change, still needed
after all. Add call to copy-s-oscons target.

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

11 years ago * gcc-interface/Makefile.in (copy-s-oscons): New target.
charlet [Tue, 6 Nov 2012 13:15:37 +0000 (13:15 +0000)]
* gcc-interface/Makefile.in (copy-s-oscons): New target.

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

11 years ago2012-11-06 Robert Dewar <dewar@adacore.com>
charlet [Tue, 6 Nov 2012 11:56:42 +0000 (11:56 +0000)]
2012-11-06  Robert Dewar  <dewar@adacore.com>

* err_vars.ads, atree.ads: Minor reformatting.

2012-11-06  Arnaud Charlet  <charlet@adacore.com>

* gcc-interface/Make-lang.in: Update dependencies.
* gcc-interface/Makefile.in: Add runtime pairs for Android.
Rework handling of s-oscons.ads.
* s-osinte-android.ads, s-osinte-android.adb: New files.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

* gcc-interface/trans.c (gnat_to_gnu): For N_Real_Literal, create the
binary representation of vax floats.

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

11 years ago * Makefile.in (osconstool): Removed, no longer needed.
charlet [Tue, 6 Nov 2012 11:56:14 +0000 (11:56 +0000)]
* Makefile.in (osconstool): Removed, no longer needed.

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

11 years ago PR target/54089
olegendo [Tue, 6 Nov 2012 11:55:43 +0000 (11:55 +0000)]
PR target/54089
* config/sh/sh.c (and_xor_ior_costs, addsubcosts): Double the costs for
ops larger than SImode.
* config/sh/sh.md (rotcl, *rotcl): New insns and splits.
(ashldi3_k): Convert to insn_and_split and use new rotcl insn.

PR target/54089
* gcc.target/sh/pr54089-8.c: New.
* gcc.target/sh/pr54089-9.c: New.

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

11 years ago2012-11-06 Tristan Gingold <gingold@adacore.com>
charlet [Tue, 6 Nov 2012 11:28:27 +0000 (11:28 +0000)]
2012-11-06  Tristan Gingold  <gingold@adacore.com>

* sem_ch9.adb (Analyze_Protected_Type_Declaration): Fix thinko
in previous commit.

2012-11-06  Jose Ruiz  <ruiz@adacore.com>

* ali.adb (Scan_ALI): Fix parsing mechanism for -fstack-check.

2012-11-06  Thomas Quinot  <quinot@adacore.com>

* atree.adb, atree.ads, einfo.adb, errout.adb, errout.ads, erroutc.adb,
erroutc.ads, errutil.adb, errutil.ads, err_vars.ads, expander.adb,
exp_ch13.adb, exp_ch2.adb, exp_ch6.adb, exp_dist.adb, fe.h,
fmap.adb, fmap.ads, gprep.adb, makeutl.adb, osint.adb, osint.ads,
par_sco.adb, prepcomp.adb, prj-part.adb, prj-proc.adb, scng.adb,
sdefault.ads, sem_ch10.adb, sem_ch13.adb, sem_ch2.adb, sem_ch3.adb,
sem_ch4.adb, sem_ch5.adb, sem_dim.adb, sem_elab.adb, sem_eval.adb,
sem_intr.adb, sem_prag.adb, sem_type.adb, sem_warn.adb, stylesw.adb,
stylesw.ads, targparm.adb, targparm.ads (Cascaded_Error): Rename to
more descriptive name 'Check_Error_Detected'. Add calls to
Check_Error_Detected at places where semantic analysis is abandoned
assuming a previously detected error.

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

11 years ago2012-11-06 Robert Dewar <dewar@adacore.com>
charlet [Tue, 6 Nov 2012 11:16:06 +0000 (11:16 +0000)]
2012-11-06  Robert Dewar  <dewar@adacore.com>

* exp_ch4.adb: Minor comment change.

2012-11-06  Robert Dewar  <dewar@adacore.com>

* gnat_ugn.texi: Extensive revision of documentation of overflow
checking.
* vms_data.ads: Overflow check numbers must be in range 1-3,
not 0-3.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

* sem_ch9.adb (Analyze_Protected_Type_Declaration): Emit a
warning if pragma Priority is used in presence of an interrupt
handler.

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

11 years ago2012-11-06 Robert Dewar <dewar@adacore.com>
charlet [Tue, 6 Nov 2012 11:11:15 +0000 (11:11 +0000)]
2012-11-06  Robert Dewar  <dewar@adacore.com>

* checks.ads, checks.adb, exp_ch4.adb: Minor changes throughout for
new overflow checking.
* exp_util.adb (Insert_Actions): Remove special casing of
Overflow_Check.
* gnat1drv.adb (Adjust_Global_Switches): Fixes for new handling
of overflow checks.
* sem.adb (Analyze): Remove special casing of Overflow_Check
(Analyze_List): ditto.
* sem_prag.adb (Analyze_Pragma, case Overflow_Checks): Remove
SUPPRESSED and change CHECKED to STRICT.
* sem_res.adb (Analyze_And_Resolve): No longer treat
Overflow_Check specially.
(Preanalyze_And_Resolve): ditto.
(Resolve): ditto.
* snames.ads-tmpl: Replace Name_Checked by Name_Strict.
* switch-c.adb (Get_Overflow_Mode): Eliminate 0 setting,
CHECKED => STRICT.
* types.ads (Overflow_Check_Type): Remove Suppressed, change
Checked to Strict (Suppress_Record): Overflow check controlled
by Suppress array.

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

11 years ago2012-11-06 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Tue, 6 Nov 2012 11:03:45 +0000 (11:03 +0000)]
2012-11-06  Paolo Carlini  <paolo.carlini@oracle.com>

* include/bits/atomic_base.h: Don't include <cstddef>, use nullptr.
* include/std/atomic: Likewise.
* include/tr2/dynamic_bitset: Likewise.

* libsupc++/vec.cc (compute_size(std::size_t, std::size_t,
std::size_t)): Fix for -fno-exceptions.

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

11 years ago2012-11-06 Ed Schonberg <schonberg@adacore.com>
charlet [Tue, 6 Nov 2012 10:47:21 +0000 (10:47 +0000)]
2012-11-06  Ed Schonberg  <schonberg@adacore.com>

* sem_res.adb (Preanalyze_And_Resolve): In Alfa mode do not
disable checks, so that flags can be properly set on expressions
that are not further expanded.

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

11 years ago2012-11-06 Robert Dewar <dewar@adacore.com>
charlet [Tue, 6 Nov 2012 10:45:56 +0000 (10:45 +0000)]
2012-11-06  Robert Dewar  <dewar@adacore.com>

* exp_attr.adb, sem_attr.adb: Minor reformatting.

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

11 years ago * config/i386/i386-protos.h (emit_i387_cw_initialization): Deleted.
kyukhin [Tue, 6 Nov 2012 10:29:23 +0000 (10:29 +0000)]
    * config/i386/i386-protos.h (emit_i387_cw_initialization): Deleted.
        (emit_vzero): Added prototype.
        (ix86_mode_entry): Likewise.
        (ix86_mode_exit): Likewise.
        (ix86_emit_mode_set): Likewise.

        * config/i386/i386.c (typedef struct block_info_def): Deleted.
        (define BLOCK_INFO): Deleted.
        (check_avx256_stores): Added checking for MEM_P.
        (move_or_delete_vzeroupper_2): Deleted.
        (move_or_delete_vzeroupper_1): Deleted.
        (move_or_delete_vzeroupper): Deleted.
        (ix86_maybe_emit_epilogue_vzeroupper): Deleted.
        (function_pass_avx256_p): Deleted.
        (ix86_function_ok_for_sibcall): Deleted disabling sibcall.
        (nit_cumulative_args): Deleted initialization of of avx256 fields of
        cfun->machine.
        (ix86_emit_restore_sse_regs_using_mov): Deleted vzeroupper generation.
        (ix86_expand_epilogue): Likewise.
        (ix86_avx_u128_mode_needed): New.
        (ix86_i387_mode_needed): Renamed ix86_mode_needed.
        (ix86_mode_needed): New.
        (ix86_avx_u128_mode_after): New.
        (ix86_mode_after): New.
        (ix86_avx_u128_mode_entry): New.
        (ix86_mode_entry): New.
        (ix86_avx_u128_mode_exit): New.
        (ix86_mode_exit): New.
        (ix86_emit_mode_set): New.
        (ix86_expand_call): Deleted vzeroupper generation.
        (ix86_split_call_vzeroupper): Deleted.
        (ix86_init_machine_status): Initialzed optimize_mode_switching.
        (ix86_expand_special_args_builtin): Changed.
        (ix86_reorg): Deleted a call of move_or_delete_vzeroupper.

        * config/i386/i386.h  (VALID_AVX256_REG_OR_OI_MODE): New.
        (AVX_U128): New.
        (avx_u128_state): New.
        (NUM_MODES_FOR_MODE_SWITCHING): Added AVX_U128_ANY.
        (MODE_AFTER): New.
        (MODE_ENTRY): New.
        (MODE_EXIT): New.
        (EMIT_MODE_SET): Changed.
        (machine_function): Deleted avx256 fields.

        * config/i386/i386.md (UNSPEC_CALL_NEEDS_VZEROUPPER): Deleted.
        (define_insn_and_split "*call_vzeroupper"): Deleted.
        (define_insn_and_split "*call_rex64_ms_sysv_vzeroupper"): Deleted.
        (define_insn_and_split "*sibcall_vzeroupper"): Deleted.
        (define_insn_and_split "*call_pop_vzeroupper"): Deleted.
        (define_insn_and_split "*sibcall_pop_vzeroupper"): Deleted.
        (define_insn_and_split "*call_value_vzeroupper"): Deleted.
        (define_insn_and_split "*sibcall_value_vzeroupper"): Deleted.
        (define_insn_and_split "*call_value_rex64_ms_sysv_vzeroupper"): Deleted.
        (define_insn_and_split "*call_value_pop_vzeroupper"): Deleted.
        (define_insn_and_split "*sibcall_value_pop_vzeroupper"): Deleted.
        (define_expand "return"): Deleted vzeroupper emitting.
        (define_expand "simple_return"): Deleted.

        * config/i386/predicates.md (vzeroupper_operation): New.

        * config/i386/sse.md (avx_vzeroupper): Changed.

testsuite/ChangeLog:
        * gcc.target/i386/avx-vzeroupper-5.c: Changed scan-assembler-times.
        * gcc.target/i386/avx-vzeroupper-8.c: Likewise.
        * gcc.target/i386/avx-vzeroupper-9.c: Likewise.
        * gcc.target/i386/avx-vzeroupper-10.c: Likewise.
        * gcc.target/i386/avx-vzeroupper-11.c: Likewise.
        * gcc.target/i386/avx-vzeroupper-12.c: Likewise.
        * gcc.target/i386/avx-vzeroupper-19.c: Likewis.
        * gcc.target/i386/avx-vzeroupper-27.c: New.

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

11 years ago2012-11-06 Gary Dismukes <dismukes@adacore.com>
charlet [Tue, 6 Nov 2012 10:22:42 +0000 (10:22 +0000)]
2012-11-06  Gary Dismukes  <dismukes@adacore.com>

* exp_attr.adb (Expand_N_Attribute_Reference): Apply a predicate
check when evaluating the attribute Valid, and issue a warning
about infinite recursion when the check occurs within the
predicate function of the prefix's subtype.
* exp_ch4.adb (Expand_N_In): Remove test for Is_Discrete_Type
when we're checking that there's no predicate check function as a
condition for substituting a Valid check for a scalar membership
test (substitution should be suppressed for any kind of scalar
subtype with a predicate check). Also, don't emit a predicate
check when the right operand is a range.

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

11 years ago2012-11-06 Robert Dewar <dewar@adacore.com>
charlet [Tue, 6 Nov 2012 10:20:41 +0000 (10:20 +0000)]
2012-11-06  Robert Dewar  <dewar@adacore.com>

* par_sco.adb, bindgen.adb, exp_vfpt.adb, exp_vfpt.ads, exp_ch2.adb,
errout.adb, sem_ch8.adb: Minor reformatting.

2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

* einfo.adb: Include Loop_Entry_Attributes to the list of
Node/List/Elist10 usage.
(Loop_Entry_Attributes): New routine.
(Set_Loop_Entry_Attributes): New routine.
(Write_Field10_Name): Add an output string for Loop_Entry_Attributes.
* einfo.ads: Define new attribute Loop_Entry_Attributes along
with its usage in nodes.
(Loop_Entry_Attributes): New routine and dedicated pragma Inline.
(Set_Loop_Entry_Attributes): New routine and dedicated pragma Inline.
* exp_attr.adb (Expand_N_Attribute_Reference): Do not expand
Attribute_Loop_Entry here.
* exp_ch5.adb: Add with and use clause for Elists;
(Expand_Loop_Entry_Attributes): New routine.
(Expand_N_Loop_Statement): Add a call to Expand_Loop_Entry_Attributes.
* exp_prag.adb (Expand_Pragma_Loop_Assertion): Specialize the
search to include multiple nested loops produced by the expansion
of Ada 2012 array iterator.
* sem_attr.adb: Add with and use clause for Elists.
(Analyze_Attribute): Check the legality of attribute Loop_Entry.
(Resolve_Attribute): Nothing to do for Loop_Entry.
(S14_Attribute): New routine.
* snames.ads-tmpl: Add a comment on entries marked with
HiLite. Add new name Name_Loop_Entry. Add new attribute
Attribute_Loop_Entry.

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

11 years ago2012-11-06 Janus Weil <janus@gcc.gnu.org>
janus [Tue, 6 Nov 2012 10:15:42 +0000 (10:15 +0000)]
2012-11-06  Janus Weil  <janus@gcc.gnu.org>

PR fortran/54917
* target-memory.c (gfc_target_expr_size,gfc_target_interpret_expr):
Handle BT_CLASS.
* trans-intrinsic.c (gfc_conv_intrinsic_transfer): Add support for
polymorphic arguments.

2012-11-06  Janus Weil  <janus@gcc.gnu.org>

PR fortran/54917
* gfortran.dg/transfer_class_1.f90: New.
* gfortran.dg/transfer_class_2.f90: New.

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

11 years ago2012-11-06 Geert Bosch <bosch@adacore.com>
charlet [Tue, 6 Nov 2012 10:14:13 +0000 (10:14 +0000)]
2012-11-06  Geert Bosch  <bosch@adacore.com>

* eval_fat.adb (Machine, Succ): Fix front end to support static
evaluation of attributes on targets with both VAX and IEEE float.
* sem_util.ads, sem_util.adb (Has_Denormals, Has_Signed_Zeros):
New type-specific functions. Previously we used Denorm_On_Target
and Signed_Zeros_On_Target directly, but that doesn't work well
for OpenVMS where a single target supports both floating point
with and without signed zeros.
* sem_attr.adb (Attribute_Denorm, Attribute_Signed_Zeros): Use
new Has_Denormals and Has_Signed_Zeros functions to support both
IEEE and VAX floating point on a single target.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

* bindgen.adb (System_Interrupts_Used): New variable.
(Gen_Adainit): Declare and call
Install_Restricted_Handlers_Sequential if System.Interrupts is
used when elaboration policy is sequential.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

* sem_ch8.adb: Complete previous change.

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

11 years ago2012-11-06 Tristan Gingold <gingold@adacore.com>
charlet [Tue, 6 Nov 2012 10:11:20 +0000 (10:11 +0000)]
2012-11-06  Tristan Gingold  <gingold@adacore.com>

* fe.h (Get_Vax_Real_Literal_As_Signed): Declare.
* eval_fat.adb, eval_fat.ads (Decompose_Int): Move spec in package spec.
* exp_vfpt.adb, exp_vfpt.ads (Vax_Real_Literal_As_Signed): New function.
(Expand_Vax_Real_Literal): Remove.
* exp_ch2.adb (Expand_N_Real_Literal): Do nothing.
* sem_eval.adb (Expr_Value_R): Remove special Vax float case,
as this is not anymore a special case.

2012-11-06  Yannick Moy  <moy@adacore.com>

* uintp.ads: Minor correction of typo in comment.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

* sem_prag.adb (Analyze_Pragnma, case Unchecked_Union): remove
requirement that discriminants of an unchecked_union must have
defaults.

2012-11-06  Vasiliy Fofanov  <fofanov@adacore.com>

* projects.texi: Minor wordsmithing.

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

11 years ago2012-11-06 Robert Dewar <dewar@adacore.com>
charlet [Tue, 6 Nov 2012 10:09:01 +0000 (10:09 +0000)]
2012-11-06  Robert Dewar  <dewar@adacore.com>

* sem_ch9.adb, exp_vfpt.adb, xoscons.adb: Minor reformatting.

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

11 years ago2012-11-06 Tristan Gingold <gingold@adacore.com>
charlet [Tue, 6 Nov 2012 10:05:10 +0000 (10:05 +0000)]
2012-11-06  Tristan Gingold  <gingold@adacore.com>

* exp_vfpt.adb: Document VAX float point layout.

2012-11-06  Geert Bosch  <bosch@adacore.com>

* eval_fat.adb (Machine): Don't return -0.0 on targets without
signed zeros.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

* sem_ch9.adb (Analyze_Entry_Call_Alternative,
Check_Triggering_Statement): Reject properly an indirect call.

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

11 years ago2012-11-06 Pascal Obry <obry@adacore.com>
charlet [Tue, 6 Nov 2012 10:03:08 +0000 (10:03 +0000)]
2012-11-06  Pascal Obry  <obry@adacore.com>

* xoscons.adb, xutil.adb, xutil.ads: Add support for post-processing.

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

11 years ago2012-11-06 Yannick Moy <moy@adacore.com>
charlet [Tue, 6 Nov 2012 10:01:03 +0000 (10:01 +0000)]
2012-11-06  Yannick Moy  <moy@adacore.com>

* s-bignum.adb (Div_Rem): Fix another bug in step D3.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

* s-tarest.adb (Create_Restricted_Task): Call
Create_Restricted_Task_Sequential in sequential case.

2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_prag.adb (Expand_Pragma_Loop_Assertion): Do not rewrite the
pragma into a null statement as its presence is desirable in -gnatG
output.

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

11 years ago2012-11-06 Ed Schonberg <schonberg@adacore.com>
charlet [Tue, 6 Nov 2012 09:59:02 +0000 (09:59 +0000)]
2012-11-06  Ed Schonberg  <schonberg@adacore.com>

* sem_ch8.adb (Check_Constrained_Object): Do nothing if the
renamed object is a limited record.

2012-11-06  Bernard Banner  <banner@adacore.com>

* sysdep.c (_getpagesize): New. Minor reformatting.

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

11 years ago2012-11-06 Robert Dewar <dewar@adacore.com>
charlet [Tue, 6 Nov 2012 09:55:50 +0000 (09:55 +0000)]
2012-11-06  Robert Dewar  <dewar@adacore.com>

* sem_prag.adb: Minor reformatting.

2012-11-06  Robert Dewar  <dewar@adacore.com>

* s-bignum.adb (Div_Rem): Fix bug in step D3.
* uintp.adb (UI_Div_Rem): Add comment on bug in step D3.

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

11 years ago2012-11-06 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Tue, 6 Nov 2012 09:53:42 +0000 (09:53 +0000)]
2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_prag.adb (Expand_Pragma_Loop_Assertion): Update the comment
on intended expansion. Reimplement the logic which expands the
termination variants.
(Process_Increase_Decrease): Update the parameter profile and the
comment related to it. Accommodate the new aggregate-like appearance of
the termination variants.
* sem_prag.adb (Analyze_Pragma): Update the syntax of pragma
Loop_Assertion. Reimplement the semantic analysis of the pragma
to accommodate the new aggregate-like variant.
(Check_Variant): New routine.
* snames.ads-tmpl: Change names Name_Decreases and Name_Increases
to Name_Decreasing and Name_Increasing respectively. Add name
Variant.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

* sem_eval.adb: Static evaluation of case expressions.

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

11 years ago2012-11-06 Robert Dewar <dewar@adacore.com>
charlet [Tue, 6 Nov 2012 09:49:23 +0000 (09:49 +0000)]
2012-11-06  Robert Dewar  <dewar@adacore.com>

* exp_prag.adb, impunit.adb, exp_ch9.adb, par-ch4.adb,
s-tarest.adb: Minor reformatting.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

* s-tposen.ads: Minor comment update.

2012-11-06  Arnaud Charlet  <charlet@adacore.com>

* sysdep.c: Rename sig* wrappers to use unique names.

2012-11-06  Yannick Moy  <moy@adacore.com>

* exp_dbug.adb (Qualify_Entity_Name): Mark entity as having a qualified
name after being treated, in formal verification mode.

2012-11-06  Fedor Rybin  <frybin@adacore.com>

* gnat_ugn.texi: Updating gnattest section to reflect changes
in default behaviour of the tool.

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

11 years ago2012-11-06 Thomas Quinot <quinot@adacore.com>
charlet [Tue, 6 Nov 2012 09:44:51 +0000 (09:44 +0000)]
2012-11-06  Thomas Quinot  <quinot@adacore.com>

* s-oscons-tmplt.c: Interfaces.C now needs to be WITH'd even
on platforms that do not support sockets (for the benefit of
subtype IOCTL_Req_T).

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

* par-ch4.adb (P_Primary): if-expressions, case-expressions,
and quantified expressions are legal if surrounded by parentheses
from an enclosing context, such as a call or an instantiation.

2012-11-06  Yannick Moy  <moy@adacore.com>

* impunit.adb (Get_Kind_Of_Unit): Return appropriate kind for
predefined implementation files, instead of returning
Not_Predefined_Unit on all .adb files.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

* exp_ch9.adb (Build_Activation_Chain_Entity): Return immediately if
partition elaboration policy is sequential.
(Build_Task_Activation_Call): Likewise. Use
Activate_Restricted_Tasks on restricted profile.
(Make_Task_Create_Call): Do not use the _Chain
parameter if elaboration policy is sequential. Call
Create_Restricted_Task_Sequential in that case.
* exp_ch3.adb (Build_Initialization_Call): Change condition to
support concurrent elaboration policy.
(Build_Record_Init_Proc): Likewise.
(Init_Formals): Likewise.
* bindgen.adb (Gen_Adainit): Declare Partition_Elaboration_Policy
and set it in generated code if the elaboration policy is
sequential. The procedure called to activate all tasks is now
named __gnat_activate_all_tasks.
* rtsfind.adb (RE_Activate_Restricted_Task,
RE_Create_Restricted_Task_Sequential): New RE_Id literals.
* s-tarest.adb (Create_Restricted_Task): Added to create a task without
adding it on an activation chain.
(Activate_Tasks): Has now a Chain parameter.
(Activate_All_Tasks_Sequential): Added. Called by the binder to
activate all tasks.
(Activate_Restricted_Tasks): Added. Called during elaboration to
activate tasks of the units.
* s-tarest.ads: Remove pragma Partition_Elaboration_Policy.
(Partition_Elaboration_Policy): New variable (set by the binder).
(Create_Restricted_Task): Revert removal of the chain parameter.
(Create_Restricted_Task_Sequential): New procedure.
(Activate_Restricted_Tasks): Revert removal.
(Activate_All_Tasks_Sequential): New procedure.

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

11 years ago2012-11-06 Bernard Banner <banner@adacore.com>
charlet [Tue, 6 Nov 2012 09:41:56 +0000 (09:41 +0000)]
2012-11-06  Bernard Banner  <banner@adacore.com>

* adaint.c Add file macro definitions missing on Android.
* adaint.h Avoid definitions related to task affinity and CPU
sets since this functionality is missing on the Android
* errno.c (__set_errno): Android already contains such a named
procedure so do include again.
* gsocket.h: Sockets not supported on Android.
* init.c: Avoid linux related code not supported on Android.
* sysdep.c (sigismember, sigaddset, sigdelset, sigemptyset,
sigfillset): wrapper functions since sig routines are defined
as inline macros on Android.
* terminals.c: Add stubs for terminal related functions not
supported on Android.

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

11 years ago2012-11-06 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Tue, 6 Nov 2012 09:38:48 +0000 (09:38 +0000)]
2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_prag.adb (Analyze_Pragma): Do not
output the characters of an illegal argument as it may not have
characters to begin with.

2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_prag.adb (Expand_Pragma_Loop_Assertion):
Change the order of argument processing to avoid disappearing
increase / decrease expressions.

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

11 years ago2012-11-06 Hristian Kirtchev <kirtchev@adacore.com>
charlet [Tue, 6 Nov 2012 09:37:34 +0000 (09:37 +0000)]
2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

* exp_prag.adb: Add with and use clause for Sem_Ch8.
(Expand_N_Pragma): Add a new variant to expand pragma Loop_Assertion.
(Expand_Pragma_Loop_Assertion): New routine.
* par-prag.adb (Prag): The semantic analysis of pragma
Loop_Assertion is carried out by Analyze_Pragma. No need for
checks in the parser.
* sem_prag.adb: Add a reference position value for pragma
Loop_Assertion in Sig_Flags.
(Analyze_Pragma): Add semantic analysis for pragma Loop_Assertion.
* snames.ads-tmpl: Add the following new names:
Name_Decreases Name_Increases Name_Loop_Assertion.
Add new pragma id Pragma_Loop_Assertion.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

* exp_ch5.adb: Identifier in iterator must have debug
information.

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

11 years ago PR target/41993
kkojima [Tue, 6 Nov 2012 09:16:34 +0000 (09:16 +0000)]
PR target/41993
* mode-switching.c (create_pre_exit): Set return_copy to
last_insn when copy_start is a pseudo reg.

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

11 years agolibada/
charlet [Tue, 6 Nov 2012 09:03:55 +0000 (09:03 +0000)]
libada/
* Makefile.in (osconstool): Fix target.
ada/
* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Remove
duplicate rules handled by Make-generated.in.

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

11 years ago * config/i386/i386.c (bdesc_args): Rename CODE_FOR_avx2_umulhrswv16hi3 to
kyukhin [Tue, 6 Nov 2012 07:43:37 +0000 (07:43 +0000)]
* config/i386/i386.c (bdesc_args): Rename CODE_FOR_avx2_umulhrswv16hi3 to
CODE_FOR_avx2_pmulhrswv16hi3.
* config/i386/predicates.md (const1_operand): Extend for vectors.
* config/i386/sse.md (ssse3_avx2): Extend.
(ssedoublemode): Ditto.
(<sse2_avx2>_uavg<mode>3): Merge avx2_uavgv32qi3, sse2_uavgv16qi3,
avx2_uavgv16hi3 and sse2_uavgv8hi3 into one.
(*<sse2_avx2>_uavg<mode>3): Merge *avx2_uavgv32qi3, *sse2_uavgv16qi3,
*avx2_uavgv16hi3 and *sse2_uavgv8hi3 into one.
(PMULHRSW): New.
(<ssse3_avx2>_pmulhrsw<mode>3): Merge avx2_umulhrswv16hi3,
ssse3_pmulhrswv8hi3 and ssse3_pmulhrswv4hi3 into one.
(*avx2_pmulhrswv16hi3): Replace const_vector with const1_operand
predicate.
(*ssse3_pmulhrswv8hi3): Ditto.
(*ssse3_pmulhrswv4hi3): Ditto.

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

11 years agoUpdate Copyright years.
amylaar [Tue, 6 Nov 2012 05:16:42 +0000 (05:16 +0000)]
Update Copyright years.

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

11 years agoFix ChangeLog typo.
amylaar [Tue, 6 Nov 2012 05:15:56 +0000 (05:15 +0000)]
Fix ChangeLog typo.

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

11 years ago * config/epiphany/epiphany.c (epiphany_address_cost):
amylaar [Tue, 6 Nov 2012 05:01:47 +0000 (05:01 +0000)]
    * config/epiphany/epiphany.c (epiphany_address_cost):
        Use MODE parameter.

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

11 years agoFunction Multiversioning
tmsriram [Tue, 6 Nov 2012 02:35:17 +0000 (02:35 +0000)]
Function Multiversioning
========================

Sriraman Tallam, tmsriram@google.com

Overview of the patch which adds support to specify function versions.  This is
only enabled for target i386.

Example:

int foo ();  /* Default version */
int foo () __attribute__ ((target("avx,popcnt")));/*Specialized for avx and popcnt */
int foo () __attribute__ ((target("arch=core2,ssse3")));/*Specialized for core2 and ssse3*/

int main ()
{
 int (*p)() = &foo;
 return foo () + (*p)();
}

int foo ()
{
 return 0;
}

int __attribute__ ((target("avx,popcnt")))
foo ()
{
 return 0;
}

int __attribute__ ((target("arch=core2,ssse3")))
foo ()
{
 return 0;
}

The above example has foo defined 3 times, but all 3 definitions of foo are
different versions of the same function. The call to foo in main, directly and
via a pointer, are calls to the multi-versioned function foo which is dispatched
to the right foo at run-time.

Front-end changes:

The front-end changes are calls at appropriate places to target hooks that
determine the following:

* Determine if two function decls with the same signature are versions.
* Determine the assembler name of a function version.
* Generate the dispatcher function for a set of function versions.
* Compare versions to see if one has a higher priority over the other.

All the implementation happens in the target-specific config/i386/i386.c.

What does the patch do?

* Tracking decls that correspond to function versions of function
name, say "foo":

When the front-end sees more than one decl for "foo", it calls a target hook to
determine if they are versions. To prevent duplicate definition errors with
other versions of "foo", "decls_match" function in cp/decl.c is made to return
false when 2 decls have are deemed versions by the target. This will make all
function versions of "foo" to be added to the overload list of "foo".

* Change the assembler names of the function versions.

For i386, the target changes the assembler names of the function versions by
 suffixing the sorted list of args to "target" to the function name of "foo".
For example, the assembler name of
 "void foo () __attribute__ ((target ("sse4")))" will
become _Z3foov.sse4.  The target hook mangle_decl_assembler_name is used
for this.

* Overload resolution:

 Function "build_over_call" in cp/call.c sees a call to function
"foo", which is multi-versioned. The overload resolution happens in
function "joust" in "cp/call.c". Here, the call to "foo" has all
possible versions of "foo" as candidates. All the candidates of "foo" are
stored in the cgraph side data structure. Each version of foo is chained in a
doubly-linked list with the default function as the first element.  This allows
any pass to access all the semantically identical versions. A call to a
multi-versioned function will be replaced by a call to a dispatcher function,
determined by a target hook, to execute the right function version at run-time.

Optimization to directly call a version when possible:
Also, in joust, where overload resolution happens, a multiversioned function
resolution is made to return the most specialized version.  This is the version
that will be checked for dispatching first and is determined by the target.
Now, if the caller can inline this function version then a direct call is made
to this function version rather than go through the dispatcher. When a direct
call cannot be made, a call to the dispatcher function is created.

* Creating the dispatcher body.

The dispatcher body, called the resolver is made only when there is a call to a
multiversioned function dispatcher or the address of a function is taken. This
is generated during cgraph_analyze_function. This is done by another target hook.

* Dispatch ordering.

The order in which the function versions are checked during dispatch is based
on a priority value assigned for the ISA that is catered. More specialized
versions are checked for dispatching first.  This is to mitigate the ambiguity
that can arise when more than one function version is valid for execution on
a particular platform.  This is not a perfect solution, and in future the user
should be allowed to assign a dispatching priority value to each version.

Function MV in the Intel compiler:

The intel compiler supports function multiversioning and the syntax is
similar to the patch proposed here.  Here is an example of how to
generate multiple function versions with the intel compiler.

/* Create a stub function to specify the various versions of function that
   will be created, using declspec attribute cpu_dispatch.  */
__declspec (cpu_dispatch (core_i7_sse4_2, atom, generic))
void foo () {};

/* Bodies of each function version.  */

/* Intel Corei7 processor + SSE4.2 version.  */
__declspec (cpu_specific(core_i7_sse4_2))
void foo ()
{
  printf ("corei7 + sse4.2");
}

/* Atom processor.  */
__declspec (cpu_specific(atom))
void foo ()
{
  printf ("atom");
}

/* The generic or the default version.  */
__declspec (cpu_specific(generic))
void foo ()
{
  printf ("This is generic");
}

A new function version is generated by defining a new function with the same
signature but with a different cpu_specific declspec attribute string.  The
set of cpu_specific strings that are allowed is the following:

"core_2nd_gen_avx"
"core_aes_pclmulqdq"
"core_i7_sse4_2"
"core_2_duo_sse4_1"
"core_2_duo_ssse3"
"atom"
"pentium_4_sse3"
"pentium_4"
"pentium_m"
"pentium_iii"
"generic"

Comparison with the GCC MV implementation in this patch:

* Version creation syntax:

The implementation in this patch also has a similar syntax to specify function
versions. The first stub function is not needed.  Here is the code to generate
the function versions with this patch:

/* Intel Corei7 processor + SSE4.2 version.  */
__attribute__ ((target ("arch=corei7, sse4.2")))
void foo ()
{
  printf ("corei7 + sse4.2");
}

/* Atom processor.  */
__attribute__ ((target ("arch=atom")))
void foo ()
{
  printf ("atom");
}

void foo ()
{
}

The target attribute can have one of the following arch names:

"amd"
"intel"
"atom"
"core2"
"corei7"
"nehalem"
"westmere"
"sandybridge"
"amdfam10h"
"barcelona"
"shanghai"
"istanbul"
"amdfam15h"
"bdver1"
"bdver2"

and any number of the following ISA names:

"cmov"
"mmx"
"popcnt"
"sse"
"sse2"
"sse3"
"ssse3"
"sse4.1"
"sse4.2"
"avx"
"avx2"

* doc/tm.texi.in (TARGET_OPTION_FUNCTION_VERSIONS): New hook
description.
* (TARGET_COMPARE_VERSION_PRIORITY): New hook description.
* (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): New hook description.
* (TARGET_GENERATE_VERSION_DISPATCHER_BODY): New hook description.
* doc/tm.texi: Regenerate.
* target.def (compare_version_priority): New target hook.
* (generate_version_dispatcher_body): New target hook.
* (get_function_versions_dispatcher): New target hook.
* (function_versions): New target hook.
* cgraph.c (cgraph_fnver_htab): New htab.
(cgraph_fn_ver_htab_hash): New function.
(cgraph_fn_ver_htab_eq): New function.
(version_info_node): New pointer.
(insert_new_cgraph_node_version): New function.
(get_cgraph_node_version): New function.
(delete_function_version): New function.
(record_function_versions): New function.
* cgraph.h (cgraph_node): New bitfield dispatcher_function.
(cgraph_function_version_info): New struct.
(get_cgraph_node_version): New function.
(insert_new_cgraph_node_version): New function.
(record_function_versions): New function.
(delete_function_version): New function.
(init_lowered_empty_function): Expose function.
* tree.h (DECL_FUNCTION_VERSIONED): New macro.
(tree_function_decl): New bit-field versioned_function.
* cgraphunit.c (cgraph_analyze_function): Generate body of multiversion
function dispatcher.
(cgraph_analyze_functions): Analyze dispatcher function.
(init_lowered_empty_function): Make non-static. New parameter in_ssa.
(assemble_thunk): Add parameter to call to init_lowered_empty_function.
* config/i386/i386.c (add_condition_to_bb): New function.
(get_builtin_code_for_version): New function.
(ix86_compare_version_priority): New function.
(feature_compare): New function.
(dispatch_function_versions): New function.
(ix86_function_versions): New function.
(attr_strcmp): New function.
(ix86_mangle_function_version_assembler_name): New function.
(ix86_mangle_decl_assembler_name): New function.
(make_name): New function.
(make_dispatcher_decl): New function.
(is_function_default_version): New function.
(ix86_get_function_versions_dispatcher): New function.
(make_attribute): New function.
(make_resolver_func): New function.
(ix86_generate_version_dispatcher_body): New function.
(fold_builtin_cpu): Return integer for cpu builtins.
(TARGET_MANGLE_DECL_ASSEMBLER_NAME): New macro.
(TARGET_COMPARE_VERSION_PRIORITY): New macro.
(TARGET_GENERATE_VERSION_DISPATCHER_BODY): New macro.
(TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): New macro.
(TARGET_OPTION_FUNCTION_VERSIONS): New macro.

* class.c (add_method): Change assembler names of function versions.
(mark_versions_used): New static function.
(resolve_address_of_overloaded_function): Create dispatcher decl and
return address of dispatcher instead.
* decl.c (decls_match): Make decls unmatched for versioned
functions.
(duplicate_decls): Remove ambiguity for versioned functions.
Delete versioned function data for merged decls.
* decl2.c (check_classfn): Check attributes of versioned functions
for match.
* call.c (get_function_version_dispatcher): New function.
(mark_versions_used): New static function.
(build_over_call): Make calls to multiversioned functions
to call the dispatcher.
(joust): For calls to multi-versioned functions, make the most
specialized function version win.

* testsuite/g++.dg/mv1.C: New test.
* testsuite/g++.dg/mv2.C: New test.
* testsuite/g++.dg/mv3.C: New test.
* testsuite/g++.dg/mv4.C: New test.
* testsuite/g++.dg/mv5.C: New test.
* testsuite/g++.dg/mv6.C: New test.

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

11 years ago * recog.c (extract_insn): Enabled alternative defaults to 1.
amylaar [Tue, 6 Nov 2012 00:30:54 +0000 (00:30 +0000)]
    * recog.c (extract_insn): Enabled alternative defaults to 1.

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

11 years ago * include/profile/map.h (map::emplace_hint): Add missing return.
redi [Tue, 6 Nov 2012 00:19:57 +0000 (00:19 +0000)]
* include/profile/map.h (map::emplace_hint): Add missing return.

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

11 years agoDaily bump.
gccadmin [Tue, 6 Nov 2012 00:18:31 +0000 (00:18 +0000)]
Daily bump.

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

11 years agoReplace REX_INT_REG_P with REX_INT_REGNO_P
hjl [Tue, 6 Nov 2012 00:07:47 +0000 (00:07 +0000)]
Replace REX_INT_REG_P with REX_INT_REGNO_P

* config/i386/i386.c (print_reg): Replace REX_INT_REG_P with
REX_INT_REGNO_P.

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

11 years ago * include/profile/deque: Constrain InputIterator parameters.
redi [Tue, 6 Nov 2012 00:06:42 +0000 (00:06 +0000)]
* include/profile/deque: Constrain InputIterator parameters.
* include/profile/forward_list: Likewise.
* include/profile/list: Likewise.
* include/profile/map.h: Likewise.
* include/profile/multimap.h: Likewise.
* include/profile/set.h: Likewise.
* include/profile/multiset.h: Likewise.
* include/profile/vector: Likewise.

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

11 years ago PR testsuite/55186
hp [Mon, 5 Nov 2012 22:17:14 +0000 (22:17 +0000)]
PR testsuite/55186
* gcc.dg/const-uniq-1.c (a): Increase length four times.

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

11 years agoUse -Wl,-undefined,dynamic_lookup on darwin
hjl [Mon, 5 Nov 2012 21:59:49 +0000 (21:59 +0000)]
Use -Wl,-undefined,dynamic_lookup on darwin

* gcc.dg/torture/pr53922.c: Use -Wl,-undefined,dynamic_lookup on
darwin.

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

11 years ago PR tree-optimization/54986
ebotcazou [Mon, 5 Nov 2012 21:39:02 +0000 (21:39 +0000)]
PR tree-optimization/54986
* gimple-fold.c (canonicalize_constructor_val): Strip again all no-op
conversions on entry but add them back on exit if needed.

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

11 years ago* gcc/final.c (final_scan_insn) [HAVE_cc0]: Handle all comparison
schwab [Mon, 5 Nov 2012 21:11:04 +0000 (21:11 +0000)]
* gcc/final.c (final_scan_insn) [HAVE_cc0]: Handle all comparison
codes in non-jump and cmove insn.

* gcc/testsuite/gcc.dg/torture/fp-compare.c: New testcase.

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

11 years ago * include/profile/forward_list: Update to meet allocator-aware
redi [Mon, 5 Nov 2012 21:10:27 +0000 (21:10 +0000)]
* include/profile/forward_list: Update to meet allocator-aware
requirements.
* include/debug/forward_list: Likewise.
* include/debug/vector: Verify allocators are swapped or equal.
* include/debug/macros.h (__glibcxx_check_equal_allocs): Define.
* include/debug/formatter.h: Add new debug message.
* src/c++11/debug.cc: Likewise.
* testsuite/23_containers/forward_list/allocator/swap.cc: Do not
swap containers with non-propagating, non-equal allocators.
* testsuite/23_containers/vector/allocator/swap.cc: Likewise.

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

11 years ago2012-11-05 Benjamin Kosnik <bkoz@redhat.com>
bkoz [Mon, 5 Nov 2012 21:01:08 +0000 (21:01 +0000)]
2012-11-05  Benjamin Kosnik  <bkoz@redhat.com>
            Oleg Smolsky  <oleg@smolsky.net>

PR libstdc++/55028
*  config/abi/pre/gnu-versioned-namespace.ver: Add symbols.
* testsuite/23_containers/unordered_multimap/insert/55028-debug.cc: New.

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

11 years ago2012-10-05 François Dumont <fdumont@gcc.gnu.org>
fdumont [Mon, 5 Nov 2012 20:58:35 +0000 (20:58 +0000)]
2012-10-05  François Dumont  <fdumont@gcc.gnu.org>

* include/ext/throw_allocator.h (__throw_value_base): Add move
semantic, not throwing.
(__throw_value_limit): Likewise.
(__throw_value_random): Likewise.
* testsuite/util/exception/safety.h: Add validation of C++11
methods emplace/emplace_front/emplace_back/emplace_hint.
* testsuite/util/testsuite_container_traits.h: Signal emplace
support on deque, forward_list, list and vector.
* testsuite/23_containers/deque/requirements/exception/
propagation_consistent.cc: Remove dg-do run fail.

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

11 years ago * mode-switching.c (create_pre_exit): Force late switching if
uros [Mon, 5 Nov 2012 19:46:31 +0000 (19:46 +0000)]
* mode-switching.c (create_pre_exit): Force late switching if
__builtin_{apply,return} emitted a load that require mode,
other than MODE_EXIT.

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

11 years ago2012-11-05 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Mon, 5 Nov 2012 19:25:20 +0000 (19:25 +0000)]
2012-11-05  Paolo Carlini  <paolo.carlini@oracle.com>

PR libstdc++/55215
* include/bits/random.tcc (mersenne_twister_engine<>::seed(_Sseq&)):
Assign state_size to _M_p.
* testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc:
New.
* testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc:
Likewise.
* testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc:
Likewise.
* testsuite/26_numerics/random/subtract_with_carry_engine/cons/
55215.cc: Likewise.
* testsuite/26_numerics/random/discard_block_engine/cons/55215.cc:
Likewise.
* testsuite/26_numerics/random/linear_congruential_engine/cons/
55215.cc: Likewise.

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

11 years agogcc/
rsandifo [Mon, 5 Nov 2012 18:51:33 +0000 (18:51 +0000)]
gcc/
PR target/55204
* config/i386/i386.c (ix86_address_subreg_operand): Remove stack
pointer check.
(print_reg): Use true_regnum rather than REGNO.
(ix86_print_operand_address): Remove SUBREG handling.

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

11 years ago * gcc.dg/const-1.c: Update.
hubicka [Mon, 5 Nov 2012 18:12:37 +0000 (18:12 +0000)]
* gcc.dg/const-1.c: Update.
* gcc.dg/pure-1.c: Update.
* tree-ssa-loop-niter.c (finite_loop_p): Revamp to be just wrapper of
max_loop_iterations.

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

11 years agoDetect overflow in size calculations in __cxa_vec_new{2,3}
fw [Mon, 5 Nov 2012 17:48:46 +0000 (17:48 +0000)]
Detect overflow in size calculations in __cxa_vec_new{2,3}

2012-11-03  Florian Weimer  <fweimer@redhat.com>

* libsupc++/vec.cc (compute_size): New.
(__cxa_vec_new2, __cxa_vec_new3): Use it.
* testsuite/18_support/cxa_vec.cc: New.

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

11 years agoruntime: provide initcontext and fixcontext for NetBSD
ian [Mon, 5 Nov 2012 17:41:07 +0000 (17:41 +0000)]
runtime: provide initcontext and fixcontext for NetBSD

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