gcc.git
10 years ago[PATCH 2/4] OpenMP 4.0 offloading to Intel MIC: liboffloadmic.
Kirill Yukhin [Thu, 13 Nov 2014 14:03:17 +0000 (14:03 +0000)]
[PATCH 2/4] OpenMP 4.0 offloading to Intel MIC: liboffloadmic.

* Makefile.def: Add liboffloadmic to target_modules.  Make
liboffloadmic depend on libgomp's configure, libstdc++ and libgcc.
* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac: Add liboffloadmic to target binaries.
Restrict liboffloadmic for POSIX and i*86, and x86_64 architectures.
Add liboffloadmic to noconfig list when C++ is not supported.

config/
* target-posix: New file.

libcilkrts/
* configure.tgt: Use config/target-posix.

liboffloadmic/
Initial commit.  Imported from upstream:
https://www.openmprtl.org/sites/default/files/liboffload_oss.tgz
* Makefile.am: New file.
* Makefile.in: New file, generated by automake.
* aclocal.m4: New file, generated by aclocal.
* configure: New file, generated by autoconf.
* configure.ac: New file.
* configure.tgt: Ditto.
* doc/doxygen/config: Ditto.
* doc/doxygen/header.tex: Ditto.
* include/coi/common/COIEngine_common.h: Ditto.
* include/coi/common/COIMacros_common.h: Ditto.
* include/coi/common/COIPerf_common.h : Ditto.
* include/coi/common/COIResult_common.h : Ditto.
* include/coi/common/COITypes_common.h: Ditto.
* include/coi/sink/COIBuffer_sink.h: Ditto.
* include/coi/sink/COIPipeline_sink.h: Ditto.
* include/coi/sink/COIProcess_sink.h: Ditto.
* include/coi/source/COIBuffer_source.h: Ditto.
* include/coi/source/COIEngine_source.h: Ditto.
* include/coi/source/COIEvent_source.h: Ditto.
* include/coi/source/COIPipeline_source.h: Ditto.
* include/coi/source/COIProcess_source.h: Ditto.
* include/myo/myo.h: Ditto.
* include/myo/myoimpl.h: Ditto.
* include/myo/myotypes.h: Ditto.
* liboffloadmic_host.spec.in: Ditto.
* liboffloadmic_target.spec.in: Ditto.
* runtime/cean_util.cpp: Ditto.
* runtime/cean_util.h: Ditto.
* runtime/coi/coi_client.cpp: Ditto.
* runtime/coi/coi_client.h: Ditto.
* runtime/coi/coi_server.cpp: Ditto.
* runtime/coi/coi_server.h: Ditto.
* runtime/compiler_if_host.cpp: Ditto.
* runtime/compiler_if_host.h: Ditto.
* runtime/compiler_if_target.cpp: Ditto.
* runtime/compiler_if_target.h: Ditto.
* runtime/dv_util.cpp: Ditto.
* runtime/dv_util.h: Ditto.
* runtime/emulator/coi_common.h: Ditto.
* runtime/emulator/coi_device.cpp: Ditto.
* runtime/emulator/coi_device.h: Ditto.
* runtime/emulator/coi_host.cpp: Ditto.
* runtime/emulator/coi_host.h: Ditto.
* runtime/emulator/coi_version_asm.h: Ditto.
* runtime/emulator/coi_version_linker_script.map: Ditto.
* runtime/emulator/myo_client.cpp: Ditto.
* runtime/emulator/myo_service.cpp: Ditto.
* runtime/emulator/myo_service.h: Ditto.
* runtime/emulator/myo_version_asm.h: Ditto.
* runtime/emulator/myo_version_linker_script.map: Ditto.
* runtime/liboffload_error.c: Ditto.
* runtime/liboffload_error_codes.h: Ditto.
* runtime/liboffload_msg.c: Ditto.
* runtime/liboffload_msg.h: Ditto.
* runtime/mic_lib.f90: Ditto.
* runtime/offload.h: Ditto.
* runtime/offload_common.cpp: Ditto.
* runtime/offload_common.h: Ditto.
* runtime/offload_engine.cpp: Ditto.
* runtime/offload_engine.h: Ditto.
* runtime/offload_env.cpp: Ditto.
* runtime/offload_env.h: Ditto.
* runtime/offload_host.cpp: Ditto.
* runtime/offload_host.h: Ditto.
* runtime/offload_myo_host.cpp: Ditto.
* runtime/offload_myo_host.h: Ditto.
* runtime/offload_myo_target.cpp: Ditto.
* runtime/offload_myo_target.h: Ditto.
* runtime/offload_omp_host.cpp: Ditto.
* runtime/offload_omp_target.cpp: Ditto.
* runtime/offload_orsl.cpp: Ditto.
* runtime/offload_orsl.h: Ditto.
* runtime/offload_table.cpp: Ditto.
* runtime/offload_table.h: Ditto.
* runtime/offload_target.cpp: Ditto.
* runtime/offload_target.h: Ditto.
* runtime/offload_target_main.cpp: Ditto.
* runtime/offload_timer.h: Ditto.
* runtime/offload_timer_host.cpp: Ditto.
* runtime/offload_timer_target.cpp: Ditto.
* runtime/offload_trace.cpp: Ditto.
* runtime/offload_trace.h: Ditto.
* runtime/offload_util.cpp: Ditto.
* runtime/offload_util.h: Ditto.
* runtime/ofldbegin.cpp: Ditto.
* runtime/ofldend.cpp: Ditto.
* runtime/orsl-lite/include/orsl-lite.h: Ditto.
* runtime/orsl-lite/lib/orsl-lite.c: Ditto.
* runtime/orsl-lite/version.txt: Ditto.
* runtime/use_mpss2.txt: Ditto.

From-SVN: r217498

10 years agomatch.pd: Add tcc_comparison...
Richard Biener [Thu, 13 Nov 2014 13:58:59 +0000 (13:58 +0000)]
match.pd: Add tcc_comparison...

2014-11-13  Richard Biener  <rguenther@suse.de>

* match.pd: Add tcc_comparison, inverted_tcc_comparison
and inverted_tcc_comparison_with_nans operator lists.
Use tcc_comparison in the truth_valued_p predicate definition.
Restrict logical_inverted_value with bit_xor to integral types.
Build a boolean true for simplifying x |^ !x because of
vector types.  Implement patterns from forward_propagate_comparison
* tree-ssa-forwprop.c (forward_propagate_comparison): Remove.
(get_prop_dest_stmt): Likewise.
(pass_forwprop::execute): Do not call it.
* fold-const.c (fold_unary_loc): Remove the pattern here.

* gcc.dg/tree-ssa/forwprop-28.c: Adjust.

From-SVN: r217496

10 years ago[PATCH 1/4] OpenMP 4.0 offloading to Intel MIC: mkoffload.
Ilya Verbin [Thu, 13 Nov 2014 13:57:58 +0000 (13:57 +0000)]
[PATCH 1/4] OpenMP 4.0 offloading to Intel MIC: mkoffload.

gcc/
* config.gcc (*-intelmic-* | *-intelmicemul-*): Add i386/t-intelmic to
tmake_file.
(i[34567]86-*-* | x86_64-*-*): Build mkoffload$(exeext) with the
accelerator compiler.
* config/i386/intelmic-mkoffload.c: New file.
* config/i386/t-intelmic: Ditto.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
From-SVN: r217495

10 years ago[PATCH 7/7] OpenMP 4.0 offloading infrastructure: testsuite.
Andrey Turetskiy [Thu, 13 Nov 2014 13:56:22 +0000 (13:56 +0000)]
[PATCH 7/7] OpenMP 4.0 offloading infrastructure: testsuite.

libgomp/
* testsuite/lib/libgomp.exp
(check_effective_target_offload_device): New.
* testsuite/libgomp.c++/c++.exp: Include tests from subdirectories.
* testsuite/libgomp.c++/examples-4/e.51.5.C: New test.
* testsuite/libgomp.c++/examples-4/e.53.2.C: Ditto.
* testsuite/libgomp.c/examples-4/e.50.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.50.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.50.3.c: Ditto.
* testsuite/libgomp.c/examples-4/e.50.4.c: Ditto.
* testsuite/libgomp.c/examples-4/e.50.5.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.3.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.4.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.6.c: Ditto.
* testsuite/libgomp.c/examples-4/e.51.7.c: Ditto.
* testsuite/libgomp.c/examples-4/e.52.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.52.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.53.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.53.3.c: Ditto.
* testsuite/libgomp.c/examples-4/e.53.4.c: Ditto.
* testsuite/libgomp.c/examples-4/e.53.5.c: Ditto.
* testsuite/libgomp.c/examples-4/e.54.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.54.3.c: Ditto.
* testsuite/libgomp.c/examples-4/e.54.4.c: Ditto.
* testsuite/libgomp.c/examples-4/e.54.5.c: Ditto.
* testsuite/libgomp.c/examples-4/e.54.6.c: Ditto.
* testsuite/libgomp.c/examples-4/e.55.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.55.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.56.3.c: Ditto.
* testsuite/libgomp.c/examples-4/e.56.4.c: Ditto.
* testsuite/libgomp.c/examples-4/e.57.1.c: Ditto.
* testsuite/libgomp.c/examples-4/e.57.2.c: Ditto.
* testsuite/libgomp.c/examples-4/e.57.3.c: Ditto.
* testsuite/libgomp.c/target-7.c: Fix test.
* testsuite/libgomp.fortran/examples-4/e.50.1.f90: New test.
* testsuite/libgomp.fortran/examples-4/e.50.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.50.3.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.50.4.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.50.5.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.1.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.3.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.4.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.5.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.6.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.51.7.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.52.1.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.52.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.53.1.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.53.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.53.3.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.53.4.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.53.5.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.54.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.54.3.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.54.4.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.54.5.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.54.6.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.55.1.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.55.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.56.3.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.56.4.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.57.1.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.57.2.f90: Ditto.
* testsuite/libgomp.fortran/examples-4/e.57.3.f90: Ditto.

Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
From-SVN: r217494

10 years ago[PATCH 6/7] OpenMP 4.0 offloading infrastructure: option handling.
Bernd Schmidt [Thu, 13 Nov 2014 13:54:07 +0000 (13:54 +0000)]
[PATCH 6/7] OpenMP 4.0 offloading infrastructure: option handling.

gcc/
* common.opt (foffload, foffload-abi): New options.
* config/i386/i386.c (ix86_offload_options): New static function.
(TARGET_OFFLOAD_OPTIONS): Define.
* coretypes.h (enum offload_abi): New enum.
* doc/tm.texi: Regenerate.
* doc/tm.texi.in (TARGET_OFFLOAD_OPTIONS): Document.
* gcc.c (offload_targets): New static variable.
(handle_foffload_option): New static function.
(driver_handle_option): Handle OPT_foffload_.
(driver::maybe_putenv_OFFLOAD_TARGETS): Set OFFLOAD_TARGET_NAMES
according to offload_targets.
* hooks.c (hook_charptr_void_null): New hook.
* hooks.h (hook_charptr_void_null): Declare.
* lto-opts.c: Include lto-section-names.h.
(lto_write_options): Append options from target offload_options hook and
store them to offload_lto section.  Do not store target-specific,
driver and diagnostic options in offload_lto section.
* lto-wrapper.c (merge_and_complain): Handle OPT_foffload_ and
OPT_foffload_abi_.
(append_compiler_options, append_linker_options)
(append_offload_options): New static functions.
(compile_offload_image): Add new arguments with options.
Call append_compiler_options and append_offload_options.
(compile_images_for_offload_targets): Add new arguments with options.
(find_and_merge_options): New static function.
(run_gcc): Outline options handling into the new functions:
find_and_merge_options, append_compiler_options, append_linker_options.
* opts.c (common_handle_option): Don't handle OPT_foffload_.
Forbid OPT_foffload_abi_ for non-offload compiler.
* target.def (offload_options): New target hook.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
From-SVN: r217493

10 years ago[PATCH 5/7] OpenMP 4.0 offloading infrastructure: libgomp.
Jakub Jelinek [Thu, 13 Nov 2014 13:49:47 +0000 (14:49 +0100)]
[PATCH 5/7] OpenMP 4.0 offloading infrastructure: libgomp.

libgomp/
* libgomp.map (GOMP_4.0.1): New symbol version.
Add GOMP_offload_register.
* libgomp_target.h: New file.
* splay-tree.h: New file.
* target.c: Include config.h, libgomp_target.h, dlfcn.h, splay-tree.h.
(gomp_target_init): New forward declaration.
(gomp_is_initialized): New static variable.
(splay_tree_node, splay_tree, splay_tree_key): New typedefs.
(struct target_mem_desc, struct splay_tree_key_s, offload_image_descr):
New structures.
(offload_images, num_offload_images, devices, num_devices): New static
variables.
(splay_compare): New static function.
(struct gomp_device_descr): New structure.
(gomp_get_num_devices): Call gomp_target_init.
(resolve_device, gomp_map_vars_existing, gomp_map_vars, gomp_unmap_tgt)
(gomp_unmap_vars, gomp_update, gomp_init_device): New static functions.
(GOMP_offload_register): New function.
(GOMP_target): Arrange for host callback to be performed in a separate
initial thread and contention group, inheriting ICVs from
gomp_global_icv etc.  Call gomp_map_vars and gomp_unmap_vars.
Add device initialization and lookup for target function in splay tree.
(GOMP_target_data): Add device initialization and call gomp_map_vars.
(GOMP_target_end_data): Call gomp_unmap_vars.
(GOMP_target_update): Add device initialization and call gomp_update.
(gomp_load_plugin_for_device, gomp_register_images_for_device)
(gomp_target_init): New static functions.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
From-SVN: r217492

10 years ago[PATCH 4/7] OpenMP 4.0 offloading infrastructure: lto-wrapper.
Ilya Verbin [Thu, 13 Nov 2014 13:47:46 +0000 (13:47 +0000)]
[PATCH 4/7] OpenMP 4.0 offloading infrastructure: lto-wrapper.

gcc/
* gcc.c (spec_host_machine, accel_dir_suffix): New variables.
(process_command): Tweak path construction for the possibility
of being configured as an offload compiler.
(driver::maybe_putenv_OFFLOAD_TARGETS): New function.
(driver::main): Call maybe_putenv_OFFLOAD_TARGETS.
(driver::set_up_specs): Tweak path construction for the possibility of
being configured as an offload compiler.
* lto-wrapper.c (OFFLOAD_TARGET_NAMES_ENV): Define.
(offload_names, offloadbegin, offloadend): New static variables.
(free_array_of_ptrs, parse_env_var, access_check, compile_offload_image)
(compile_images_for_offload_targets, copy_file, find_offloadbeginend):
New static functions.
(run_gcc): Determine whether offload sections are present.  If so, run
compile_images_for_offload_targets and return the names of new generated
objects to linker.  If there are offload sections, but no LTO sections,
then return the copies of input objects without link-time recompilation.

lto-plugin/
* lto-plugin.c (OFFLOAD_SECTION, OFFLOAD_SECTION_LEN): Define.
(struct plugin_objfile): Add new field "offload".
(process_offload_section): New static function.
(claim_file_handler): Claim file if it contains offload sections.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Bernd Schmidt <bernds@codesourcery.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r217491

10 years ago[PATCH 3/7] OpenMP 4.0 offloading infrastructure: Offload tables.
Ilya Verbin [Thu, 13 Nov 2014 13:44:04 +0000 (13:44 +0000)]
[PATCH 3/7] OpenMP 4.0 offloading infrastructure: Offload tables.

gcc/
* Makefile.in (GTFILES): Add omp-low.h to list of GC files.
* cgraphunit.c: Include omp-low.h.
* doc/tm.texi: Regenerate.
* doc/tm.texi.in (TARGET_RECORD_OFFLOAD_SYMBOL): Document.
* gengtype.c (open_base_files): Add omp-low.h to ifiles.
* lto-cgraph.c (output_offload_tables): New function.
(input_offload_tables): Likewise.
* lto-section-in.c (lto_section_name): Add "offload_table".
* lto-section-names.h (OFFLOAD_VAR_TABLE_SECTION_NAME): Define.
(OFFLOAD_FUNC_TABLE_SECTION_NAME): Likewise.
* lto-streamer-out.c (lto_output): Call output_offload_tables.
* lto-streamer.h (lto_section_type): Add LTO_section_offload_table.
(output_offload_tables, input_offload_tables): Declare.
* omp-low.c: Include common/common-target.h and lto-section-names.h.
(offload_funcs, offload_vars): New global <tree, va_gc> vectors.
(expand_omp_target): Add child_fn into offload_funcs vector.
(add_decls_addresses_to_decl_constructor): New function.
(omp_finish_file): Likewise.
* omp-low.h (omp_finish_file, offload_funcs, offload_vars): Declare.
* target.def (record_offload_symbol): New DEFHOOK.
* toplev.c: Include omp-low.h.
(compile_file): Call omp_finish_file.
* varpool.c: Include omp-low.h.
(varpool_node::get_create): Add decl into offload_vars vector.

gcc/lto/
* lto/lto.c (read_cgraph_and_symbols): Call input_offload_tables.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Bernd Schmidt <bernds@codesourcery.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r217489

10 years agogenmatch.c (dt_node::gen_kids): Fix placement of break statement.
Richard Biener [Thu, 13 Nov 2014 13:41:11 +0000 (13:41 +0000)]
genmatch.c (dt_node::gen_kids): Fix placement of break statement.

2014-11-13  Richard Biener  <rguenther@suse.de>

* genmatch.c (dt_node::gen_kids): Fix placement of break statement.

From-SVN: r217487

10 years ago[PATCH 2/7] OpenMP 4.0 offloading infrastructure: LTO streaming.
Ilya Verbin [Thu, 13 Nov 2014 13:37:38 +0000 (13:37 +0000)]
[PATCH 2/7] OpenMP 4.0 offloading infrastructure: LTO streaming.

gcc/
* cgraph.c: Include context.h.
(cgraph_node::create): Set node->offloadable and g->have_offload if
decl have "omp declare target" attribute.
* cgraph.h (symtab_node): Add need_lto_streaming and offloadable flags.
* cgraphunit.c: Include lto-section-names.h.
(ipa_passes): Call ipa_write_summaries if there is something to write to
OFFLOAD_SECTION_NAME_PREFIX sections.
(symbol_table::compile): Set flag_generate_lto if there is something to
offload.
Replace flag_lto with flag_generate_lto before lto_streamer_hooks_init.
* context.c (gcc::context::context): Initialize have_offload with false.
* context.h (class context): Add have_offload flag.
* ipa-inline-analysis.c (inline_generate_summary): Do not exit under
flag_generate_lto.
(inline_free_summary): Always remove hooks.
* lto-cgraph.c (referenced_from_other_partition_p): Ignore references
from non-offloadable nodes while streaming a node into offload section.
(reachable_from_other_partition_p): Likewise.
(select_what_to_stream): New function.
(compute_ltrans_boundary): Do not call
lto_set_symtab_encoder_in_partition if the node should not be streamed.
* lto-section-names.h (OFFLOAD_SECTION_NAME_PREFIX): Define.
(section_name_prefix): Declare.
* lto-streamer.c (section_name_prefix): New variable.
(lto_get_section_name): Use section_name_prefix instead of
LTO_SECTION_NAME_PREFIX.
* lto-streamer.h (select_what_to_stream): Declare.
* omp-low.c: Include context.h.
(is_targetreg_ctx): New function.
(scan_sharing_clauses): Use offloadable flag, instead of an attribute.
(create_omp_child_function, check_omp_nesting_restrictions): Use new
is_targetreg_ctx function.  Replace usage of "omp declare target"
attribute with a cgraph_node flag offloadable.
(expand_omp_target): Set mark_force_output for offloadable functions.
(lower_omp_critical): Set offloadable flag for omp critical symbol.
* passes.c (ipa_write_summaries): New argument offload_lto_mode.  Call
select_what_to_stream.  Do not call lto_set_symtab_encoder_in_partition
if the node should not be streamed out.
* tree-pass.h (ipa_write_summaries): New bool argument.
* varpool.c: Include context.h.
(varpool_node::get_create): Set node->offloadable and g->have_offload if
decl have "omp declare target" attribute.

gcc/lto/
* lto-object.c (lto_obj_add_section): Use section_name_prefix instead of
LTO_SECTION_NAME_PREFIX.
* lto-partition.c (lto_promote_cross_file_statics): Call
select_what_to_stream.
* lto.c (lto_section_with_id): Use section_name_prefix instead of
LTO_SECTION_NAME_PREFIX.
(read_cgraph_and_symbols): Read OFFLOAD_SECTION_NAME_PREFIX sections, if
being built as an offload compiler.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Bernd Schmidt <bernds@codesourcery.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r217486

10 years ago[PATCH 1/7] OpenMP 4.0 offloading infrastructure: configure and make
Bernd Schmidt [Thu, 13 Nov 2014 13:28:56 +0000 (13:28 +0000)]
[PATCH 1/7] OpenMP 4.0 offloading infrastructure: configure and make

* configure: Regenerate.
* configure.ac (--enable-as-accelerator-for)
(--enable-offload-targets): New configure options.
gcc/
* Makefile.in (real_target_noncanonical, accel_dir_suffix)
(enable_as_accelerator): New variables substituted by configure.
(libsubdir, libexecsubdir, unlibsubdir): Tweak for the possibility of
being configured as an offload compiler.
(DRIVER_DEFINES): Pass new defines DEFAULT_REAL_TARGET_MACHINE and
ACCEL_DIR_SUFFIX.
(install-cpp, install-common, install_driver, install-gcc-ar): Do not
install for the offload compiler.
* config.in: Regenerate.
* configure: Regenerate.
* configure.ac (real_target_noncanonical, accel_dir_suffix)
(enable_as_accelerator): Compute new variables.
(ACCEL_COMPILER): Define if the compiler is built as the accel compiler.
(OFFLOAD_TARGETS): List of target names suitable for offloading.
(ENABLE_OFFLOADING): Define if list of offload targets is not empty.
gcc/cp/
* Make-lang.in (c++.install-common): Do not install for the offload
compiler.
gcc/doc/
* install.texi (Options specification): Document
--enable-as-accelerator-for and --enable-offload-targets.
gcc/fortran/
* Make-lang.in (fortran.install-common): Do not install for the offload
compiler.
libgcc/
* Makefile.in (crtoffloadbegin$(objext)): New rule.
(crtoffloadend$(objext)): Likewise.
* configure: Regenerate.
* configure.ac (accel_dir_suffix): Compute new variable.
(extra_parts): Add crtoffloadbegin.o and crtoffloadend.o
if enable_offload_targets is not empty.
* offloadstuff.c: New file.
libgomp/
* config.h.in: Regenerate.
* configure: Regenerate.
* configure.ac: Check for libdl, required for plugin support.
(PLUGIN_SUPPORT): Define if plugins are supported.
(enable_offload_targets): Support Intel MIC targets.
(OFFLOAD_TARGETS): List of target names suitable for offloading.
lto-plugin/
* Makefile.am (libexecsubdir): Tweak for the possibility of being
configured for offload compiler.
(accel_dir_suffix, real_target_noncanonical): New variables substituted
by configure.
* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac (accel_dir_suffix, real_target_noncanonical): Compute new
variables.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
From-SVN: r217485

10 years agoUse POINTER_SIZE to check for pointer size
H.J. Lu [Thu, 13 Nov 2014 13:08:12 +0000 (13:08 +0000)]
Use POINTER_SIZE to check for pointer size

PR tree-optimization/63828
* ipa-polymorphic-call.c (possible_placement_new): Check
POINTER_SIZE, instead of BITS_PER_WORD, for pointer size.

From-SVN: r217483

10 years agoPR 60324 Unbounded stack allocations in libgfortran.
Janne Blomqvist [Thu, 13 Nov 2014 12:05:01 +0000 (14:05 +0200)]
PR 60324 Unbounded stack allocations in libgfortran.

2014-11-13  Janne Blomqvist  <jb@gcc.gnu.org>

PR libfortran/60324
* configure: Regenerated.
* configure.ac (AM_CFLAGS): Add Werror=vla.
* libgfortran.h (gfc_alloca): Remove macro.
(fc_strdup_notrim): New prototype.
* intrinsics/access.c (access_func): Use fc_strdup rather than
stack allocation.
* intrinsics/chdir.c (chdir_i4_sub): Likewise.
(chdir_i8_sub): Likewise.
* intrinsics/chmod.c (chmod_internal): New function, move logic
here.
(chmod_func): Call chmod_internal.
* intrinsics/env.c (getenv): Use fc_strdup rather than stack
allocation.
(get_environment_variable_i4): Likewise.
* intrinsics/execute_command_line.c (execute_command_line):
Likewise.
* intrinsics/hostnm.c (hostnm_0): New function, use static buffer
rather than VLA.
(hostnm_i4_sub): Call hostnm_0.
(hostnm_i8_sub): Likewise.
(hostnm): Likewise.
* intrinsics/link.c (link_internal): New function, use fc_strdup
rather than stack allocation.
(link_i4_sub): Call link_internal.
(link_i8_sub): Likewise.
(link_i4): Likewise.
(link_i8): Likewise.
* intrinsics/perror.c (perror_sub): Use fc_strdup rather than
stack allocation.
* intrinsics/random.c (random_seed_i4): Use static buffer rather
than VLA, use _Static_assert to make sure it's big enough.
* intrinsics/rename.c (rename_internal): New function, use
fc_strdup rather than stack allocation.
(rename_i4_sub): Call rename_internal.
(rename_i8_sub): Likewise.
(rename_i4): Likewise.
(rename_i8): Likewise.
* intrinsics/stat.c (stat_i4_sub_0): Use fc_strdup rather than
stack allocation.
(stat_i8_sub_0): Likewise.
* intrinsics/symlink.c (symlnk_internal): New function, use
fc_strdup rather than stack allocation.
(symlnk_i4_sub): Call symlnk_internal.
(symlnk_i8_sub): Likewise.
(symlnk_i4): Likewise.
(symlnk_i8): Likewise.
* intrinsics/system.c (system_sub): Use fc_strdup rather than
stack allocation.
* intrinsics/unlink.c (unlink_i4_sub): Likewise.
* io/file_pos.c (READ_CHUNK): Make it a macro rather than variable.
* io/list_read.c (nml_get_obj_data): Use fixed stack buffer, fall
back to xmalloc/free for large sizes.
* io/read.c (read_f): Likewise.
* io/transfer.c (MAX_READ): Make it a macro rather than variable.
(WRITE_CHUNK): Likewise.
* io/write_float.def (write_float): Use fixed stack buffer, fall
back to xmalloc/free for large sizes.
* runtime/string.c (fc_strdup_notrim): New function.

From-SVN: r217480

10 years agotm.texi.in (SELECT_CC_MODE): Update example.
Eric Botcazou [Thu, 13 Nov 2014 11:44:26 +0000 (11:44 +0000)]
tm.texi.in (SELECT_CC_MODE): Update example.

* doc/tm.texi.in (SELECT_CC_MODE): Update example.
(REVERSIBLE_CC_MODE): Fix example.
(REVERSE_CONDITION): Fix typo.
* doc/tm.texi: Regenerate.

From-SVN: r217476

10 years agoRun pass_expand_omp_ssa after pass_paralellize_loops
Tom de Vries [Thu, 13 Nov 2014 10:51:58 +0000 (10:51 +0000)]
Run pass_expand_omp_ssa after pass_paralellize_loops

2014-11-13  Tom de Vries  <tom@codesourcery.com>

* omp-low.c (pass_data_expand_omp): Set properties_provided to
PROP_gimple_eomp.
(pass_expand_omp::gate): Remove function.  Move gate expression to ...
(pass_expand_omp::execute): ... here, as new variable gate.  Add early
exit if gate is false.
(pass_data pass_data_expand_omp_ssa): New pass_data.
(class pass_expand_omp_ssa): New pass.
(make_pass_expand_omp_ssa): New function.
* passes.def (pass_parallelize_loops): Use PUSH_INSERT_PASSES_WITHIN
instead of NEXT_PASS.
(pass_expand_omp_ssa): Add after pass_parallelize_loops.
* tree-parloops.c (gen_parallel_loop): Remove call to omp_expand_local.
(pass_parallelize_loops::execute): Don't do cleanups TODO_cleanup_cfg
and TODO_rebuild_alias yet.  Add TODO_update_ssa.  Set
cfun->omp_expand_needed.
* tree-pass.h: Add define PROP_gimple_eomp.
(make_pass_expand_omp_ssa): Declare.

From-SVN: r217474

10 years agoline-map.h: Include EXPR, so that unused variable warnings do not occur.
Manuel López-Ibáñez [Thu, 13 Nov 2014 10:46:56 +0000 (10:46 +0000)]
line-map.h: Include EXPR, so that unused variable warnings do not occur.

* include/line-map.h: Include EXPR, so that unused variable warnings
do not occur.

From-SVN: r217473

10 years agoEnable libcc1 on Solaris
Rainer Orth [Thu, 13 Nov 2014 10:22:22 +0000 (10:22 +0000)]
Enable libcc1 on Solaris

* configure.ac (libcc1_cv_lib_sockets): Check for -lsocket -lnsl.
* configure: Regenerate.
* connection.cc: Include <string.h>.
        * libcc1.cc (libcc1_compile): Use AF_UNIX instead of AF_LOCAL.

From-SVN: r217471

10 years agotree.h (TYPE_OVERFLOW_SANITIZED): Define.
Marek Polacek [Thu, 13 Nov 2014 10:17:51 +0000 (10:17 +0000)]
tree.h (TYPE_OVERFLOW_SANITIZED): Define.

* tree.h (TYPE_OVERFLOW_SANITIZED): Define.
* fold-const.c (fold_binary_loc): Use it.
* match.pd: Likewise.

From-SVN: r217470

10 years agocp-tree.h (cp_build_function_call): Remove prototype.
Kai Tietz [Thu, 13 Nov 2014 09:46:53 +0000 (10:46 +0100)]
cp-tree.h (cp_build_function_call): Remove prototype.

2014-11-13  Kai Tietz  <ktietz@redhat.com>

* cp-tree.h (cp_build_function_call): Remove prototype.
(cp_build_addr_expr_strict): Likewise.
(build_typed_address): Likewise.
* typeck.c (build_typed_address): Removed.
(cp_build_addr_expr_strict): Make static.
(cp_build_function_call): Likewise.

From-SVN: r217469

10 years agoRename struct in gcc/lra-lives.c
Kirill Yukhin [Thu, 13 Nov 2014 09:12:09 +0000 (09:12 +0000)]
Rename struct in gcc/lra-lives.c

gcc/
* gcc/lra-lives.c (struct bb_data): Rename to ...
(struct bb_data_pseudos): ... this.
(initiate_live_solver): Update struct name.

From-SVN: r217468

10 years agotarget-supports.exp (error_h): New check.
Alexander Ivchenko [Thu, 13 Nov 2014 09:08:18 +0000 (09:08 +0000)]
target-supports.exp (error_h): New check.

gcc/testsuite/
* lib/target-supports.exp (error_h): New check.
(libc_has_complex_functions): Ditto.
(tgmath_h): Ditto.
* gcc.dg/builtins-59.c: Add libc_has_complex_functions check.
* gcc.dg/builtins-61.c: Likewise.
* gcc.dg/builtins-67.c: Disable test for Bionic.
* gcc.dg/strlenopt-14g.c: Likewise.
* gcc.dg/strlenopt-14gf.c: Likewise.
* gcc.dg/c99-tgmath-1.c: Add tgmath_h check.
* gcc.dg/c99-tgmath-2.c: Likewise.
* gcc.dg/c99-tgmath-3.c: Likewise.
* gcc.dg/c99-tgmath-4.c: Likewise.
* gcc.dg/dfp/convert-dfp-round-thread.c: Add error_h check.

From-SVN: r217467

10 years agomatch.pd: Implement conditional expression patterns.
Richard Biener [Thu, 13 Nov 2014 08:53:23 +0000 (08:53 +0000)]
match.pd: Implement conditional expression patterns.

2014-11-13  Richard Biener  <rguenther@suse.de>

* match.pd: Implement conditional expression patterns.
* tree-ssa-forwprop.c (forward_propagate_into_cond): Remove
them here.
(combine_cond_exprs): Remove.
(pass_forwprop::execute): Do not call combine_cond_exprs.
* fold-const.c (fold_ternary_loc): Remove patterns here.
(pedantic_omit_one_operand_loc): Remove.

From-SVN: r217465

10 years agore PR tree-optimization/61559 (FAIL: gcc.dg/builtin-bswap-8.c on i686 with -mmovbe)
Richard Biener [Thu, 13 Nov 2014 08:45:29 +0000 (08:45 +0000)]
re PR tree-optimization/61559 (FAIL: gcc.dg/builtin-bswap-8.c on i686 with -mmovbe)

2014-12-13  Richard Biener  <rguenther@suse.de>

PR middle-end/61559
* match.pd: Implement bswap patterns for transforms checked by
gcc.dg/builtin-bswap-8.c.

From-SVN: r217464

10 years agodivmodhi.S: Add support for the G10 architecture.
Nick Clifton [Thu, 13 Nov 2014 08:34:41 +0000 (08:34 +0000)]
divmodhi.S: Add support for the G10 architecture.

* config/rl78/divmodhi.S: Add support for the G10 architecture.
Use START_FUNC and END_FUNC macros to enable linker garbage
collection.
* config/rl78/divmodqi.S: Likewise.
* config/rl78/divmodsi.S: Likewise.
* config/rl78/mulsi3.S: Likewise.
* config/rl78/lib2div.c: Remove G10 functions.
* config/rl78/lib2muls.c: Likewise.
* config/rl78/t-rl8 (HOST_LIBGCC2_CFLAGS): Define.
* config/rl78/vregs.h (START_FUNC): New macro.
(END_FUNC): New macro.

From-SVN: r217463

10 years agore PR libstdc++/63775 ([C++11] Regex range with leading dash (-) not working)
Tim Shen [Thu, 13 Nov 2014 07:40:01 +0000 (07:40 +0000)]
re PR libstdc++/63775 ([C++11] Regex range with leading dash (-) not working)

PR libstdc++/63775
* include/bits/regex_compiler.h (_Compiler<>::_M_expression_term,
_BracketMatcher<>::_M_make_range): Throw regex_erorr on invalid range
like [z-a]. Change _M_expression_term interface.
* include/bits/regex_compiler.tcc (
_Compiler<>::_M_insert_bracket_matcher,
_Compiler<>::_M_expression_term): Rewrite bracket expression parsing.
* testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc:
Add testcases and move file out of extended.

From-SVN: r217461

10 years agolra.c (lra): Switch off rematerialization pass.
Vladimir Makarov [Thu, 13 Nov 2014 05:07:52 +0000 (05:07 +0000)]
lra.c (lra): Switch off rematerialization pass.

2014-11-13  Vladimir Makarov  <vmakarov@redhat.com>

* lra.c (lra): Switch off rematerialization pass.

From-SVN: r217459

10 years agocommon.opt (flra-remat): New.
Vladimir Makarov [Thu, 13 Nov 2014 03:02:49 +0000 (03:02 +0000)]
common.opt (flra-remat): New.

2014-11-12  Vladimir Makarov  <vmakarov@redhat.com>

* common.opt (flra-remat): New.
* opts.c (default_options_table): Add entry for flra_remat.
* timevar_def (TV_LRA_REMAT): New.
* doc/invoke.texi (-flra-remat): Add description of the new
option.
* doc/passes.texi (-flra-remat): Remove lra-equivs.c and
lra-saves.c.  Add lra-remat.c.
* Makefile.in (OBJS): Add lra-remat.o.
* lra-remat.c: New file.
* lra.c: Add info about the rematerialization pass in the top
comment.
(collect_non_operand_hard_regs, add_regs_to_insn_regno_info):
Process unallocatable regs too.
(lra_constraint_new_insn_uid_start): Remove.
(lra): Add code for calling rematerialization sub-pass.
* lra-int.h (lra_constraint_new_insn_uid_start): Remove.
(lra_constrain_insn, lra_remat): New prototypes.
(lra_eliminate_regs_1): Add parameter.
* lra-lives.c (make_hard_regno_born, make_hard_regno_dead):
Process unallocatable hard regs too.
(process_bb_lives): Ditto.
* lra-spills.c (remove_pseudos): Add argument to
lra_eliminate_regs_1 call.
* lra-eliminations.c (lra_eliminate_regs_1): Add parameter.  Use it
for sp offset calculation.
(lra_eliminate_regs): Add argument for lra_eliminate_regs_1 call.
(eliminate_regs_in_insn): Add parameter.  Use it for sp offset
calculation.
(process_insn_for_elimination): Add argument for
eliminate_regs_in_insn call.
* lra-constraints.c (get_equiv_with_elimination):  Add argument
for lra_eliminate_regs_1 call.
(process_addr_reg): Add parameter.  Use it.
(process_address_1): Ditto.  Add argument for process_addr_reg
call.
(process_address): Ditto.
(curr_insn_transform): Add parameter.  Use it.  Add argument for
process_address calls.
(lra_constrain_insn): New function.
(lra_constraints): Add argument for curr_insn_transform call.

From-SVN: r217458

10 years agoopts-global.c (postpone_unknown_option_warning): Fix spelling.
Manuel López-Ibáñez [Thu, 13 Nov 2014 01:08:06 +0000 (01:08 +0000)]
opts-global.c (postpone_unknown_option_warning): Fix spelling.

2014-11-13  Manuel López-Ibáñez  <manu@gcc.gnu.org>

* opts-global.c (postpone_unknown_option_warning): Fix spelling.
(print_ignored_options): Fix quoting.
* opts.c (common_handle_option): Likewise.
(set_debug_level): Likewise.
* toplev.c (process_options): Likewise.

From-SVN: r217457

10 years agoDaily bump.
GCC Administrator [Thu, 13 Nov 2014 00:16:35 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r217456

10 years agocompiler: Do not count package uses from ambiguous lookups.
Ian Lance Taylor [Thu, 13 Nov 2014 00:10:37 +0000 (00:10 +0000)]
compiler: Do not count package uses from ambiguous lookups.

When using dot imports, it is possible to
have an imported symbol name that matches
the name of a struct field in a composite
literal.  Do not consider the imported
package to be used in this situation.
Fixes issue 6427.

From-SVN: r217453

10 years agostd::shared_ptr atomic operations
Jonathan Wakely [Wed, 12 Nov 2014 23:55:11 +0000 (23:55 +0000)]
std::shared_ptr atomic operations

PR libstdc++/57250
* config/abi/pre/gnu.ver: Export new symbols.
* include/Makefile.am: Add new header.
* include/Makefile.in: Regenerate.
* include/bits/shared_ptr_atomic.h: Define atomic access functions.
* include/std/memory: Include new header.
* src/c++11/shared_ptr.cc (_Sp_locker): Define and use mutex pool.
* testsuite/20_util/shared_ptr/atomic/1.cc: New.
* testsuite/20_util/shared_ptr/atomic/2.cc: New.
* testsuite/20_util/shared_ptr/atomic/3.cc: New.

From-SVN: r217452

10 years agore PR ipa/63838 (ipa-pure-const miscomputes can_throw)
Jakub Jelinek [Wed, 12 Nov 2014 23:09:15 +0000 (00:09 +0100)]
re PR ipa/63838 (ipa-pure-const miscomputes can_throw)

PR ipa/63838
* ipa-pure-const.c (propagate_nothrow): Walk w->indirect_calls
chain instead of node->indirect_calls.  Put !can_throw into
conditions of all the loops.

* g++.dg/ipa/pr63838.C: New test.

From-SVN: r217449

10 years agoUse gen_rtx_REG to set pic_offset_table_rtx
H.J. Lu [Wed, 12 Nov 2014 21:50:20 +0000 (21:50 +0000)]
Use gen_rtx_REG to set pic_offset_table_rtx

* config/i386/i386.c (x86_output_mi_thunk): Use gen_rtx_REG to
set pic_offset_table_rtx.

From-SVN: r217448

10 years agoImplement MIPS o32 FPXX, FP64, FP64A ABI extensions.
Matthew Fortune [Wed, 12 Nov 2014 21:39:46 +0000 (21:39 +0000)]
Implement MIPS o32 FPXX, FP64, FP64A ABI extensions.

2014-11-12  Matthew Fortune  <matthew.fortune@imgtec.com>

gcc/
* common/config/mips/mips-common.c (mips_handle_option): Ensure
that -mfp32, -mfp64 disable -mfpxx and -mfpxx disables -mfp64.
* config.gcc (--with-fp-32): New option.
(--with-odd-spreg-32): Likewise.
* config.in (HAVE_AS_DOT_MODULE): New config define.
* config/mips/mips-protos.h
(mips_secondary_memory_needed): New prototype.
(mips_hard_regno_caller_save_mode): Likewise.
* config/mips/mips.c (mips_get_reg_raw_mode): New static prototype.
(mips_get_arg_info): Assert that V2SFmode is only handled specially
with TARGET_PAIRED_SINGLE_FLOAT.
(mips_return_mode_in_fpr_p): Likewise.
(mips16_call_stub_mode_suffix): Likewise.
(mips_get_reg_raw_mode): New static function.
(mips_return_fpr_pair): O32 return values span two registers.
(mips16_build_call_stub): Likewise.
(mips_function_value_regno_p): Support both FP return registers.
(mips_output_64bit_xfer): Use mthc1 whenever TARGET_HAS_MXHC1.  Add
specific cases for TARGET_FPXX to move via memory.
(mips_dwarf_register_span): For TARGET_FPXX pretend that modes larger
than UNITS_PER_FPREG 'span' one register.
(mips_dwarf_frame_reg_mode): New static function.
(mips_file_start): Switch to using .module instead of .gnu_attribute.
No longer support FP ABI 4 (-mips32r2 -mfp64), replace with FP ABI 6.
Add FP ABI 5 (-mfpxx) and FP ABI 7 (-mfp64 -mno-odd-spreg).
(mips_save_reg, mips_restore_reg): Always represent DFmode frame
slots with two CFI directives even for O32 FP64.
(mips_for_each_saved_gpr_and_fpr): Account for fixed_regs when
saving/restoring callee-saved registers.
(mips_hard_regno_mode_ok_p): Implement O32 FP64A extension.
(mips_secondary_memory_needed): New function.
(mips_option_override): ABI check for TARGET_FLOATXX.  Disable
odd-numbered single-precision registers when using TARGET_FLOATXX.
Implement -modd-spreg and defaults.
(mips_conditional_register_usage): Redefine O32 FP64 to match O32 FP32
callee-saved behaviour.
(mips_hard_regno_caller_save_mode): Implement.
(TARGET_GET_RAW_RESULT_MODE): Define target hook.
(TARGET_GET_RAW_ARG_MODE): Define target hook.
(TARGET_DWARF_FRAME_REG_MODE): Define target hook.
* config/mips/mips.h (TARGET_FLOAT32): New macro.
(TARGET_O32_FP64A_ABI): Likewise.
(TARGET_CPU_CPP_BUILTINS): TARGET_FPXX is __mips_fpr==0. Add
_MIPS_SPFPSET builtin define.
(MIPS_FPXX_OPTION_SPEC): New macro.
(OPTION_DEFAULT_SPECS): Pass through --with-fp-32=* to -mfp and
--with-odd-spreg-32=* to -m[no-]odd-spreg.
(ISA_HAS_ODD_SPREG): New macro.
(ISA_HAS_MXHC1): True for anything other than -mfp32.
(ASM_SPEC): Pass through mfpxx, mfp64, -mno-odd-spreg and -modd-spreg.
(MIN_FPRS_PER_FMT): Redefine in terms of TARGET_ODD_SPREG.
(HARD_REGNO_CALLER_SAVE_MODE): Define.  Implement O32 FPXX extension
(HARD_REGNO_CALL_PART_CLOBBERED): Likewise.
(SECONDARY_MEMORY_NEEDED): Likewise.
(FUNCTION_ARG_REGNO_P): Update for O32 FPXX and FP64 extensions.
* config/mips/mips.md (define_attr enabled): Implement O32 FPXX and
FP64A ABI extensions.
(move_doubleword_fpr<mode>): Use ISA_HAS_MXHC1 instead of
TARGET_FLOAT64.
* config/mips/mips.opt (mfpxx): New target option.
(modd-spreg): Likewise.
* config/mips/mti-elf.h (DRIVER_SELF_SPECS): Infer FP ABI from arch.
* config/mips/mti-linux.h (DRIVER_SELF_SPECS): Likewise and remove
fp64 sysroot.
* config/mips/t-mti-elf: Remove fp64 multilib.
* config/mips/t-mti-linux: Likewise.
* configure.ac: Detect .module support.
* configure: Regenerate.
* doc/invoke.texi: Document -mfpxx, -modd-spreg, -mno-odd-spreg option.
* doc/install.texi (--with-fp-32, --with-odd-spreg-32): Document new
options.

gcc/testsuite/
* gcc.target/mips/args-1.c: Handle __mips_fpr == 0.
* gcc.target/mips/call-clobbered-1.c: New.
* gcc.target/mips/call-clobbered-2.c: New.
* gcc.target/mips/call-clobbered-3.c: New.
* gcc.target/mips/call-clobbered-4.c: New.
* gcc.target/mips/call-clobbered-5.c: New.
* gcc.target/mips/call-saved-4.c: New.
* gcc.target/mips/call-saved-5.c: New.
* gcc.target/mips/call-saved-6.c: New.
* gcc.target/mips/mips.exp: Support -mfpxx, -ffixed-f*,
and -m[no-]odd-spreg.  Use _MIPS_SPFPSET to determine default
odd-spreg option.  Account for -modd-spreg in minimum arch code.
* gcc.target/mips/movdf-1.c: New.
* gcc.target/mips/movdf-2.c: New.
* gcc.target/mips/movdf-3.c: New.
* gcc.target/mips/oddspreg-1.c: New.
* gcc.target/mips/oddspreg-2.c: New.
* gcc.target/mips/oddspreg-3.c: New.
* gcc.target/mips/oddspreg-4.c: New.
* gcc.target/mips/oddspreg-5.c: New.
* gcc.target/mips/oddspreg-6.c: New.

libgcc/
* config/mips/mips16.S: Set .module when supported.  Update O32
FP64 calling convention and use for FPXX when possible.  Add FPXX
calling convention fallback case.

From-SVN: r217446

10 years agoInitialize PIC register for large PIC model C++ thunk
H.J. Lu [Wed, 12 Nov 2014 21:16:14 +0000 (21:16 +0000)]
Initialize PIC register for large PIC model C++ thunk

gcc/

PR target/63815
* config/i386/i386.c (ix86_init_large_pic_reg): New.  Extracted
from ...
(ix86_init_pic_reg): Here.  Use ix86_init_large_pic_reg.
(x86_output_mi_thunk): Set PIC register to %r11.  Call
ix86_init_large_pic_reg to initialize PIC register.

gcc/testsuite/

PR target/63815
* g++.dg/other/pr63815.C: New test.

From-SVN: r217445

10 years agoDR 1510 PR c++/60420
Paolo Carlini [Wed, 12 Nov 2014 20:43:09 +0000 (20:43 +0000)]
DR 1510 PR c++/60420

/cp
2014-11-12  Paolo Carlini  <paolo.carlini@oracle.com>

DR 1510
PR c++/60420
* cp-tree.h (struct cp_decl_specifier_seq): Add decltype_p bool field.
* decl.c (grokdeclarator): Use it.
* parser.c (cp_parser_simple_type_specifier): Likewise.
* pt.c (tsubst, case DECLTYPE_TYPE): Use tf_ignore_bad_quals.

/testsuite
2014-11-12  Paolo Carlini  <paolo.carlini@oracle.com>

DR 1510
PR c++/60420
* g++.dg/cpp0x/decltype61.C: New.

From-SVN: r217444

10 years agosdbout.c (sdbout_symbol): Eliminate register only if decl isn't a global variable.
Kai Tietz [Wed, 12 Nov 2014 20:04:50 +0000 (21:04 +0100)]
sdbout.c (sdbout_symbol): Eliminate register only if decl isn't a global variable.

2014-11-12  Kai Tietz  <ktietz@redhat.com>

        * sdbout.c (sdbout_symbol): Eliminate register only
        if decl isn't a global variable.

From-SVN: r217443

10 years agoImplement resolutions of LWG 2399, 2400 and 2401.
Jonathan Wakely [Wed, 12 Nov 2014 19:41:36 +0000 (19:41 +0000)]
Implement resolutions of LWG 2399, 2400 and 2401.

* include/bits/shared_ptr.h (shared_ptr, weak_ptr): Define
_Convertible alias template to simplify constraints.
(shared_ptr(unique_ptr<TD>&&)): Constrain (LWG 2399).
* include/bits/shared_ptr_base.h: Likewise.
(_Sp_counted_deleter::_M_get_deleter()): Use addressof (LWG 2400).
* include/std/functional (function::operator=(nullptr_t)): Add
noexcept (LWG 2401).
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error.
* testsuite/20_util/shared_ptr/cons/void_neg.cc: Adjust dg-error.

From-SVN: r217442

10 years agoAdd a testcase for PR tree-optimization/63835
H.J. Lu [Wed, 12 Nov 2014 18:56:50 +0000 (18:56 +0000)]
Add a testcase for PR tree-optimization/63835

PR tree-optimization/63835
* gcc.dg/pr63835.c: New test.

From-SVN: r217441

10 years agoAdd bounds checking to vqdm*_lane intrinsics via a qualifier that also flips endianness
Alan Lawrence [Wed, 12 Nov 2014 18:51:53 +0000 (18:51 +0000)]
Add bounds checking to vqdm*_lane intrinsics via a qualifier that also flips endianness

gcc/:

* config/aarch64/aarch64.c (aarch64_simd_lane_bounds): Display indices.

* config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers): Add
qualifier_lane_index.
(aarch64_types_ternop_lane_qualifiers, TYPES_TERNOP_LANE): Rename to...
(aarch64_types_quadop_lane_qualifiers, TYPES_QUADOP_LANE): ...these.
(aarch64_types_ternop_lane_qualifiers, TYPES_TERNOP_LANE): New.

(aarch64_types_getlane_qualifiers): Rename to...
(aarch64_types_binop_imm_qualifiers): ...this.
(TYPES_SHIFTIMM): Follow renaming.
(TYPES_GETLANE): Rename to...
(TYPE_GETREG): ...this.

(aarch64_types_setlane_qualifiers): Rename to...
(aarch64_type_ternop_imm_qualifiers): ...this.
(TYPES_SHIFTINSERT, TYPES_SHIFTACC): Follow renaming.
(TYPES_SETLANE): Follow renaming above, and rename self to...
(TYPE_SETREG): ...this.

(enum builtin_simd_arg): Add SIMD_ARG_LANE_INDEX.
(aarch64_simd_expand_args): Add range check and endianness-flip.

(aarch64_simd_expand_builtin): Add mapping for qualifier_lane_index.

* config/aarch64/aarch64-simd.md
(aarch64_sq<r>dmulh_lane<mode>_internal *2): Rename to...
(aarch64_sq<r>dmulh_lane<mode>): ...this, and remove lane bounds check.
(aarch64_sqdmulh_lane<mode> *2, aarch64_sqrdmulh_lane<mode> *2): Delete.

(aarch64_sq<r>dmulh_laneq<mode>_internal): Rename to...
(aarch64_sq<r>dmulh_lane<mode>): ...this.

(aarch64_sqdml<SBINQOPS:as>l_lane<mode>_internal *2): Rename to...
(aarch64_sqdml<SBINQOPS:as>l_lane<mode>): ...this.

(aarch64_sqdml<SBINQOPS:as>l_laneq<mode>_internal *2): Rename to...
(aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): ...this.

(aarch64_sqdmull_lane<mode>_internal *2): Rename to...
(aarch64_sqdmull_lane<mode>): ...this.

(aarch64_sqdmull_laneq<mode>_internal *2): Rename to...
(aarch64_sqdmull_laneq<mode>): ...this.

(aarch64_sqdmulh_laneq<mode>, aarch64_sqrdmulh_laneq<mode>,
(aarch64_sqdmlal_lane<mode>, aarch64_sqdmlal_laneq<mode>,
aarch64_sqdmlsl_lane<mode>, aarch64_sqdmlsl_laneq<mode>,
aarch64_sqdmull_lane<mode>, aarch64_sqdmull_laneq<mode>): Delete.

(aarch64_sqdmlal2_lane<mode>, aarch64_sqdmlal2_laneq<mode>,
aarch64_sqdmlsl2_lane<mode>, aarch64_sqdmlsl2_laneq<mode>,
aarch64_sqdmull2_lane<mode>, aarch64_sqdmull2_laneq<mode>): Remove
bounds check and lane flip.

* config/aarch64/aarch64-simd-builtins.def (be_checked_get_lane,
get_dregoi, get_dregci, getdregxi, get_qregoi,get_qregci, get_qregxi,
set_qregoi, set_qregci, set_qregxi): Change qualifiers to GETREG.

(sqdmlal_lane, sqdmlsl_lane, sqdmlal_laneq, sqdmlsl_laneq,
sqdmlal2_lane, sqdmlsl2_lane, sqdmlal2_laneq, sqdmlsl2_laneq): Follow
renaming of TERNOP_LANE to QUADOP_LANE.

(sqdmull_lane, sqdmull_laneq, sqdmull2_lane, sqdmull2_laneq,
sqdmulh_lane, sqdmulh_laneq, sqrdmulh_lane, sqrdmulh_laneq): Set
qualifiers to TERNOP_LANE.

gcc/testsuite/:

         * gcc.target/aarch64/simd/vqdmlal_high_lane_s16_indices_1.c: New test.
         * gcc.target/aarch64/simd/vqdmlal_high_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_high_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_high_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlal_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlalh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlals_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_high_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_high_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_high_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_high_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsl_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlslh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmlsls_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulh_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulh_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulh_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhq_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhq_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhq_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhq_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulhs_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_high_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_high_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_high_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_high_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmull_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmullh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqdmulls_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulh_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulh_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulh_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhh_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhq_lane_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhq_lane_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhq_laneq_s16_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhq_laneq_s32_indices_1.c: Likewise.
         * gcc.target/aarch64/simd/vqrdmulhs_lane_s32_indices_1.c: Likewise.

From-SVN: r217440

10 years agoFix ChangeLog of previous commit, r217438:
Tobias Burnus [Wed, 12 Nov 2014 18:45:17 +0000 (19:45 +0100)]
Fix ChangeLog of previous commit, r217438:

        * Makefile.def: Make all-gcc depend on all-isl.

From-SVN: r217439

10 years agoMakefile.def: Remove CLooG.
Tobias Burnus [Wed, 12 Nov 2014 18:42:03 +0000 (19:42 +0100)]
Makefile.def: Remove CLooG.

2014-11-11  Tobias Burnus  <burnus@net-b.de>

        * Makefile.def: Remove CLooG.
        * Makefile.in: Regenerate.

From-SVN: r217438

10 years ago387-1.c (dg-skip-if): Use *-*-* target selector.
Uros Bizjak [Wed, 12 Nov 2014 18:32:57 +0000 (19:32 +0100)]
387-1.c (dg-skip-if): Use *-*-* target selector.

* gcc.target/i386/387-1.c (dg-skip-if): Use *-*-* target selector.
* gcc.target/i386/387-2.c (dg-skip-if): Ditto.
* gcc.target/i386/387-5.c (dg-skip-if): Ditto.
* gcc.target/i386/387-6.c (dg-skip-if): Ditto.
* gcc.target/i386/cmov7.c (dg-skip-if): Ditto.
* gcc.target/i386/funcspec-2.c (dg-skip-if): Ditto.
* gcc.target/i386/funcspec-3.c (dg-skip-if): Ditto.
* gcc.target/i386/funcspec-8.c (dg-skip-if): Ditto.
* gcc.target/i386/funcspec-9.c (dg-skip-if): Ditto.
* gcc.target/i386/gcc-have-sync-compare-and-swap-1.c (dg-skip-if):
Ditto.
* gcc.target/i386/gcc-have-sync-compare-and-swap-2.c (dg-skip-if):
Ditto.
* gcc.target/i386/isa-1.c (dg-skip-if): Ditto.
* gcc.target/i386/isa-6.c (dg-skip-if): Ditto.
* gcc.target/i386/isa-9.c (dg-skip-if): Ditto.
* gcc.target/i386/lea.c (dg-skip-if): Ditto.
* gcc.target/i386/memcpy-strategy-1.c (dg-skip-if): Ditto.
* gcc.target/i386/memcpy-strategy-2.c (dg-skip-if): Ditto.
* gcc.target/i386/memcpy-vector_loop-1.c (dg-skip-if): Ditto.
* gcc.target/i386/memcpy-vector_loop-2.c (dg-skip-if): Ditto.
* gcc.target/i386/memset-vector_loop-1.c (dg-skip-if): Ditto.
* gcc.target/i386/memset-vector_loop-2.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-10.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-2.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-3.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-4.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-5a.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-5b.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-6a.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-6b.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-7.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-8.c (dg-skip-if): Ditto.
* gcc.target/i386/pad-9.c (dg-skip-if): Ditto.
* gcc.target/i386/pentium4-not-mull.c (dg-skip-if): Ditto.
* gcc.target/i386/pr42589.c (dg-skip-if): Ditto.
* gcc.target/i386/sse-19.c (dg-skip-if): Ditto.
* gcc.target/i386/sse2-init-v2di-2.c (dg-skip-if): Ditto.
* gcc.target/i386/ssefn-1.c (dg-skip-if): Ditto.
* gcc.target/i386/ssetype-1.c (dg-skip-if): Ditto.
* gcc.target/i386/ssetype-2.c (dg-skip-if): Ditto.
* gcc.target/i386/ssetype-5.c (dg-skip-if): Ditto.
* gcc.target/i386/vect-double-1.c (dg-skip-if): Ditto.

From-SVN: r217437

10 years agoMakefile.in (CLOOGLIBS, CLOOGINC): Remove.
Tobias Burnus [Wed, 12 Nov 2014 18:28:36 +0000 (19:28 +0100)]
Makefile.in (CLOOGLIBS, CLOOGINC): Remove.

2014-11-12  Tobias Burnus  <burnus@net-b.de>

        * Makefile.in (CLOOGLIBS, CLOOGINC): Remove.
        * configure.ac: Ditto.
        * graphite-interchange.c: Remove HAVE_CLOOG block.
        * config.in: Regenerate.
        * configure: Regenerate.

From-SVN: r217436

10 years agopr45852.c: Simplify target selector.
Uros Bizjak [Wed, 12 Nov 2014 17:45:29 +0000 (18:45 +0100)]
pr45852.c: Simplify target selector.

* gcc.target/i386/pr45852.c: Simplify target selector.
* gcc.target/i386/pr63495.c: Ditto.
* gcc.target/i386/pr39496.c: Ditto.
* gcc.target/i386/pr36613.c: Ditto.

From-SVN: r217432

10 years ago[AArch64] Let LR register alloctable
Jiong Wang [Wed, 12 Nov 2014 17:15:57 +0000 (17:15 +0000)]
[AArch64] Let LR register alloctable

  gcc/
    * config/aarch64/aarch64.h (CALL_USED_REGISTERS): Mark LR as caller-save.
    (EPILOGUE_USES): Guard the check by epilogue_completed.
    * config/aarch64/aarch64.c (aarch64_layout_frame): Explictly check for LR.
    (aarch64_can_eliminate): Check LR_REGNUM liveness.

  gcc/testsuite/
    * gcc.target/aarch64/lr_free_1.c: New testcase for -fomit-frame-pointer.
    * gcc.target/aarch64/lr_free_2.c: New testcase for leaf
    -fno-omit-frame-pointer.

From-SVN: r217431

10 years agoFix typo in *<arith_shift_insn>_shiftsi
Ramana Radhakrishnan [Wed, 12 Nov 2014 17:07:12 +0000 (17:07 +0000)]
Fix typo in *<arith_shift_insn>_shiftsi

From-SVN: r217430

10 years agoCast strtol return to unsigned long
Kirill Yukhin [Wed, 12 Nov 2014 16:24:30 +0000 (16:24 +0000)]
Cast strtol return to unsigned long

* testsuite/test-strtol.c (run_tests): Cast strtol return to
unsigned long.

From-SVN: r217429

10 years agogcc-dg.exp (${tool}_load): Call prune_file_path instead of prune_gcc_output.
Marek Polacek [Wed, 12 Nov 2014 15:48:54 +0000 (15:48 +0000)]
gcc-dg.exp (${tool}_load): Call prune_file_path instead of prune_gcc_output.

* lib/gcc-dg.exp (${tool}_load): Call prune_file_path instead
of prune_gcc_output.
* lib/prune.exp (prune_file_path): New procedure.

From-SVN: r217428

10 years agofold-const.c (fold_binary_loc): Don't fold if the result is undefined.
Marek Polacek [Wed, 12 Nov 2014 14:36:41 +0000 (14:36 +0000)]
fold-const.c (fold_binary_loc): Don't fold if the result is undefined.

* fold-const.c (fold_binary_loc): Don't fold if the result
is undefined.
* match.pd (A + (-B) -> A - B, A - (-B) -> A + B,
-(-A) -> A): Likewise.

* c-c++-common/ubsan/overflow-sub-4.c: New test.
* c-c++-common/ubsan/overflow-sub-2.c: Adjust dg-output.
* c-c++-common/ubsan/overflow-int128.c: Likewise.

From-SVN: r217427

10 years agopr52252-atom-1.c: Extend assembler scan on AVX2 case.
Evgeny Stupachenko [Wed, 12 Nov 2014 14:33:18 +0000 (14:33 +0000)]
pr52252-atom-1.c: Extend assembler scan on AVX2 case.

gcc/testsuite

* gcc.target/i386/pr52252-atom-1.c: Extend assembler scan on AVX2 case.

From-SVN: r217423

10 years ago[multiple changes]
Richard Biener [Wed, 12 Nov 2014 14:29:14 +0000 (14:29 +0000)]
[multiple changes]

2014-11-12  Richard Biener  <rguenther@suse.de>

Merge from match-and-simplify branch
2014-11-04  Prathamesh Kulkarni  <bilbotheelffriend@gmail.com>

* genmatch.c (user_id): Add new member is_oper_list.
(user_id::user_id): Add new default argument.
(parser::parse_operator_list): New function.
(parser::parse_for): Allow operator-list.
(parser::parse_pattern): Call parser::parse_operator_list.
(parser::parse_operation): Reject operator-list.
* match-builtin.pd: Define operator lists POWs, CBRTs and SQRTs.

2014-10-31  Prathamesh Kulkarni  <bilbotheelffriend@gmail.com>

* genmatch.c (parser::parse_c_expr): Mark user-defined ops as used.

2014-10-30  Prathamesh Kulkarni  <bilbotheelffriend@gmail.com>

* genmatch.c (parser::parse_op): Check if predicate is used in
result operand.

2014-10-29  Prathamesh Kulkarni  <bilbotheelffriend@gmail.com>

* genmatch.c (parser::parse_for): Make sure to have a valid
token to report errors at.

2014-10-28  Prathamesh Kulkarni  <bilbotheelffriend@gmail.com>

* genmatch.c (parser): Add new member parsing_match_operand.
(parser::parse_operation): Check for conditional convert in result
operand.
(parser::parse_expr): Check for commutative operator in result operand.
Check for :type in match operand.
(parser::parse_simplify): Set/unset parsing_match_operand.
(parser::parser): Initialize parsing_match_operand.

2014-10-28  Richard Biener  <rguenther@suse.de>

* genmatch.c (parser::parse_for): Properly check for already
defined operators.

2014-10-28  Prathamesh Kulkarni  <bilbotheelffriend@gmail.com>

* genmatch.c (error_cb): Adjust for printing warnings.
(warning_at): New function.
(user_id): Add new member used.
(get_operator): Mark user_id as used.
(parse_for): Warn for unused operators.

From-SVN: r217422

10 years agomatch.pd: Implement simple complex operations cancelling.
Richard Biener [Wed, 12 Nov 2014 13:45:48 +0000 (13:45 +0000)]
match.pd: Implement simple complex operations cancelling.

2014-11-12  Richard Biener  <rguenther@suse.de>

* match.pd: Implement simple complex operations cancelling.
* fold-const.c (fold_unary_loc): Remove them here.

* gcc.dg/tree-ssa/ssa-fre-32.c: Disable forwprop.

From-SVN: r217421

10 years agoPredefine __NO_MATH_ERRNO__ for -fno-math-errno.
Joseph Myers [Wed, 12 Nov 2014 13:33:45 +0000 (13:33 +0000)]
Predefine __NO_MATH_ERRNO__ for -fno-math-errno.

This patch adds a predefined macro __NO_MATH_ERRNO__ for when
-fno-math-errno is passed or implied.  This allows math.h to provide a
more accurate definition of the C99 math_errhandling macro that takes
this option into account, and allows for choice of libm functions to
be optimized at compile time based on this option.

(There may be a case for such interfaces for -fno-rounding-math
(default) and -fno-trapping-math as well, but as C99 standard pragmas
would allow those to vary on a per-block basis, predefined macros
would be problematic as the interface; you can't select a
-fno-trapping-math or -fno-rounding-math version of a function in a
standard header if a conforming program could then use "#pragma STDC
FENV_ACCESS ON" to require a -ftrapping-math -frounding-math version
in a particular block.  So built-in functions might be a better way of
providing access to information about those options.)

Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  OK to
commit?

* cppbuiltin.c (define_builtin_macros_for_compilation_flags):
Define __NO_MATH_ERRNO__ if -fno-math-errno.
* doc/cpp.texi (__NO_MATH_ERRNO__): Document predefined macro.

c-family:
* c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): Define and
undefine __NO_MATH_ERRNO__ based on changes to -fmath-errno state.

testsuite:
* gcc.dg/no-math-errno-1.c, gcc.dg/no-math-errno-2.c,
gcc.dg/no-math-errno-3.c, gcc.dg/no-math-errno-4.c: New tests.

From-SVN: r217420

10 years agoAvoid tail call in c-c++-common/asan/strlen-overflow-1.c
H.J. Lu [Wed, 12 Nov 2014 12:54:00 +0000 (12:54 +0000)]
Avoid tail call in c-c++-common/asan/strlen-overflow-1.c

PR testsuite/63830
* c-c++-common/asan/strlen-overflow-1.c (main): Avoid tail call.

From-SVN: r217417

10 years agogenmatch.c (::gen_transform): Add capture_info and expand_compares arguments.
Richard Biener [Wed, 12 Nov 2014 12:49:14 +0000 (12:49 +0000)]
genmatch.c (::gen_transform): Add capture_info and expand_compares arguments.

2014-11-12  Richard Biener  <rguenther@suse.de>

* genmatch.c (::gen_transform): Add capture_info and
expand_compares arguments.
(struct expr): Add is_generic flag.
(lower_cond): New functions lowering [VEC_]COND_EXPR
conditions to a GENERIC and a GIMPLE variant.
(lower): Call lower_cond.
(cmp_operand): Also compare the is_generic flag.
(capture_info::cinfo): Add cond_expr_cond_p flag.
(capture_info::capture_info): Pass down whether the
expression argument is a COND_EXPR condition.
(capture_info::walk_match): Likewise, mark captures
capturing COND_EXPR conditions with cond_expr_cond_p.
(expr::gen_transform): Pass down whether we need to
expand compares from COND_EXPR conditions.
(capture::gen_transform): Expand compares substituted
from COND_EXPR conditions into non-COND_EXPR conditions.
(dt_operand::gen_gimple_expr): Handle explicitely marked
GENERIC expressions as generic.
(dt_simplify::gen): Pass whether we need to expand
conditions to gen_transform.  Handle capture results
which are from COND_EXPR conditions.
(main): Pass gimple flag down to lower.

From-SVN: r217416

10 years agore PR c/59708 (clang-compatible checked arithmetic builtins)
Jakub Jelinek [Wed, 12 Nov 2014 12:28:06 +0000 (13:28 +0100)]
re PR c/59708 (clang-compatible checked arithmetic builtins)

PR c/59708
* builtin-attrs.def (ATTR_NOTHROW_TYPEGENERIC_LEAF): New attribute.
* builtins.c (fold_builtin_arith_overflow): New function.
(fold_builtin_3): Use it.
* builtins.def (BUILT_IN_ADD_OVERFLOW, BUILT_IN_SUB_OVERFLOW,
BUILT_IN_MUL_OVERFLOW, BUILT_IN_SADD_OVERFLOW, BUILT_IN_SADDL_OVERFLOW,
BUILT_IN_SADDLL_OVERFLOW, BUILT_IN_SSUB_OVERFLOW,
BUILT_IN_SSUBL_OVERFLOW, BUILT_IN_SSUBLL_OVERFLOW,
BUILT_IN_SMUL_OVERFLOW, BUILT_IN_SMULL_OVERFLOW,
BUILT_IN_SMULLL_OVERFLOW, BUILT_IN_UADDL_OVERFLOW,
BUILT_IN_UADDLL_OVERFLOW, BUILT_IN_USUB_OVERFLOW,
BUILT_IN_USUBL_OVERFLOW, BUILT_IN_USUBLL_OVERFLOW,
BUILT_IN_UMUL_OVERFLOW, BUILT_IN_UMULL_OVERFLOW,
BUILT_IN_UMULLL_OVERFLOW): New built-in functions.
* builtin-types.def (BT_PTR_UINT, BT_PTR_ULONG, BT_PTR_LONGLONG,
BT_FN_BOOL_INT_INT_INTPTR, BT_FN_BOOL_LONG_LONG_LONGPTR,
BT_FN_BOOL_LONGLONG_LONGLONG_LONGLONGPTR, BT_FN_BOOL_UINT_UINT_UINTPTR,
BT_FN_BOOL_ULONG_ULONG_ULONGPTR,
BT_FN_BOOL_ULONGLONG_ULONGLONG_ULONGLONGPTR, BT_FN_BOOL_VAR): New.
* expr.c (write_complex_part): Remove prototype, no longer static.
* expr.h (write_complex_part): New prototype.
* function.c (aggregate_value_p): For internal functions return 0.
* gimple-fold.c (arith_overflowed_p): New functions.
(gimple_fold_call): Fold {ADD,SUB,MUL}_OVERFLOW internal calls.
* gimple-fold.h (arith_overflowed_p): New prototype.
* tree-ssa-dce.c: Include tree-ssa-propagate.h and gimple-fold.h.
(find_non_realpart_uses, maybe_optimize_arith_overflow): New
functions.
(eliminate_unnecessary_stmts): Transform {ADD,SUB,MUL}_OVERFLOW
into COMPLEX_CST/COMPLEX_EXPR if IMAGPART_EXPR of the result is
never used.
* gimplify.c (gimplify_call_expr): Handle gimplification of
internal calls with lhs.
* internal-fn.c (get_range_pos_neg, get_min_precision,
expand_arith_overflow_result_store): New functions.
(ubsan_expand_si_overflow_addsub_check): Renamed to ...
(expand_addsub_overflow): ... this.  Add LOC, LHS, ARG0, ARG1,
UNSR_P, UNS0_P, UNS1_P, IS_UBSAN arguments, remove STMT argument.
Handle ADD_OVERFLOW and SUB_OVERFLOW expansion.
(ubsan_expand_si_overflow_neg_check): Renamed to ...
(expand_neg_overflow): ... this.  Add LOC, LHS, ARG1, IS_UBSAN
arguments, remove STMT argument.  Handle SUB_OVERFLOW with
0 as first argument expansion.
(ubsan_expand_si_overflow_mul_check): Renamed to ...
(expand_mul_overflow): ... this.  Add LOC, LHS, ARG0, ARG1,
UNSR_P, UNS0_P, UNS1_P, IS_UBSAN arguments, remove STMT argument.
Handle MUL_OVERFLOW expansion.
(expand_UBSAN_CHECK_ADD): Use expand_addsub_overflow, prepare
arguments for it.
(expand_UBSAN_CHECK_SUB): Use expand_addsub_overflow or
expand_neg_overflow, prepare arguments for it.
(expand_UBSAN_CHECK_MUL): Use expand_mul_overflow, prepare arguments
for it.
(expand_arith_overflow, expand_ADD_OVERFLOW, expand_SUB_OVERFLOW,
expand_MUL_OVERFLOW): New functions.
* internal-fn.def (ADD_OVERFLOW, SUB_OVERFLOW, MUL_OVERFLOW): New
internal functions.
* tree-vrp.c (check_for_binary_op_overflow): New function.
(extract_range_basic): Handle {REAL,IMAG}PART_EXPR if the operand
is SSA_NAME set by {ADD,SUB,MUL}_OVERFLOW internal functions.
(simplify_internal_call_using_ranges): Handle {ADD,SUB,MUL}_OVERFLOW
internal functions.
* optabs.def (umulv4_optab): New optab.
* config/i386/i386.md (umulv<mode>4, <u>mulvqi4): New define_expands.
(*umulv<mode>4, *<u>mulvqi4): New define_insns.
* doc/extend.texi (Integer Overflow Builtins): Document
__builtin_*_overflow.
c-family/
* c-common.c (check_builtin_function_arguments): Handle
BUILT_IN_{ADD,SUB,MUL}_OVERFLOW.
testsuite/
* c-c++-common/builtin-arith-overflow-1.c: New test.
* c-c++-common/torture/builtin-arith-overflow-10.c: New test.
* c-c++-common/torture/builtin-arith-overflow-11.c: New test.
* c-c++-common/torture/builtin-arith-overflow-12.c: New test.
* c-c++-common/torture/builtin-arith-overflow-12.h: New file.
* c-c++-common/torture/builtin-arith-overflow-13.c: New test.
* c-c++-common/torture/builtin-arith-overflow-14.c: New test.
* c-c++-common/torture/builtin-arith-overflow-15.c: New test.
* c-c++-common/torture/builtin-arith-overflow-16.c: New test.
* c-c++-common/torture/builtin-arith-overflow-17.c: New test.
* c-c++-common/torture/builtin-arith-overflow-18.c: New test.
* c-c++-common/torture/builtin-arith-overflow-1.c: New test.
* c-c++-common/torture/builtin-arith-overflow-1.h: New file.
* c-c++-common/torture/builtin-arith-overflow-2.c: New test.
* c-c++-common/torture/builtin-arith-overflow-3.c: New test.
* c-c++-common/torture/builtin-arith-overflow-4.c: New test.
* c-c++-common/torture/builtin-arith-overflow-5.c: New test.
* c-c++-common/torture/builtin-arith-overflow-6.c: New test.
* c-c++-common/torture/builtin-arith-overflow-7.c: New test.
* c-c++-common/torture/builtin-arith-overflow-8.c: New test.
* c-c++-common/torture/builtin-arith-overflow-9.c: New test.
* c-c++-common/torture/builtin-arith-overflow.h: New file.
* gcc.dg/builtin-arith-overflow-1.c: New test.
* gcc.dg/builtin-arith-overflow-2.c: New test.

From-SVN: r217415

10 years agogenmatch.c (capture_info::capture_info): Add missing COND_EXPR handling.
Richard Biener [Wed, 12 Nov 2014 11:59:40 +0000 (11:59 +0000)]
genmatch.c (capture_info::capture_info): Add missing COND_EXPR handling.

2014-11-12  Richard Biener  <rguenther@suse.de>

* genmatch.c (capture_info::capture_info): Add missing
COND_EXPR handling.
(capture_info::walk_match): Fix COND_EXPR handling.
(capture_info::walk_result): Likewise.

From-SVN: r217414

10 years agoLWG DR 2315. weak_ptr should be movable
Jonathan Wakely [Wed, 12 Nov 2014 11:54:08 +0000 (11:54 +0000)]
LWG DR 2315. weak_ptr should be movable

* include/bits/shared_ptr.h (weak_ptr): Add move constructor and
assignment.
* include/bits/shared_ptr_base.h (__weak_count, __weak_ptr): Likewise.
Use nullptr and injected class name.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error.
* testsuite/20_util/shared_ptr/cons/void_neg.cc: Adjust dg-error.

From-SVN: r217413

10 years agoAdd -Wno-deprecated to dg-options.
Jonathan Wakely [Wed, 12 Nov 2014 10:32:17 +0000 (10:32 +0000)]
Add -Wno-deprecated to dg-options.

PR c++/33911
* testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Use -Wno-deprecated.
* testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
* testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Likewise.
* testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Likewise.
* testsuite/20_util/unique_ptr/cons/auto_ptr.cc: Likewise.
* testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc: Likewise.
* testsuite/ext/array_allocator/variadic_construct.cc: Likewise.

From-SVN: r217412

10 years agore PR bootstrap/63821 (ICE in verify_gimple during libgcc build starting with r217349)
Richard Biener [Wed, 12 Nov 2014 10:13:48 +0000 (10:13 +0000)]
re PR bootstrap/63821 (ICE in verify_gimple during libgcc build starting with r217349)

2014-11-12  Richard Biener  <rguenther@suse.de>

PR middle-end/63821
* match.pd: Add missing conversion to the -(T)-X pattern.

* gfortran.dg/pr63821.f90: New testcase.

From-SVN: r217411

10 years agore PR middle-end/63819 (Cannot build compiler with --enable-gather-detailed-mem-stats...
Richard Biener [Wed, 12 Nov 2014 10:12:47 +0000 (10:12 +0000)]
re PR middle-end/63819 (Cannot build compiler with --enable-gather-detailed-mem-stats (error: default argument given for parameter 5 of ‘void* ggc_internal_cleared_alloc))

2014-11-12  Richard Biener  <rguenther@suse.de>

PR bootstrap/63819
* hash-table.h: Include ggc.h also for generator programs.
* genmatch.c (ggc_internal_cleared_alloc): Properly define
using MEM_STAT_DECL instead of CXX_MEM_STAT_INFO.

From-SVN: r217410

10 years ago[multiple changes]
Thomas Preud'homme [Wed, 12 Nov 2014 09:50:20 +0000 (09:50 +0000)]
[multiple changes]

2014-11-12  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    PR tree-optimization/63761
    * tree-ssa-math-opts.c (bswap_replace): Construct gsi from cur_stmt
    rather than taking it as a parameter. Add some comments to explain the
    gsi_move_before in case of load and why canonicalization of bswap into
    a rotation is only done for 16bit values.
    (pass_optimize_bswap::execute): Adapt for loop via gsi to make gsi
    refer to the statement just before cur_stmt. Ignore 16bit bswap that
    are already in canonical form. Adapt bswap_replace to removal of its
    gsi parameter.

    2014-11-12  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/testsuite/
    PR tree-optimization/63761
    * gcc.c-torture/compile/pr63761.c: New test.

From-SVN: r217409

10 years ago[PATCH][dejagnu] truncate absolute file path into relative for dg-output
Jiong Wang [Wed, 12 Nov 2014 09:37:01 +0000 (09:37 +0000)]
[PATCH][dejagnu] truncate absolute file path into relative for dg-output

  gcc/testsuite/
    * lib/gcc-dg.exp (${tool}_load): Truncate gcc output.
    * lib/prune.exp (prune_gcc_output): New absolute path to relative path
    truncation pattern.

From-SVN: r217408

10 years agortl.h (rtx_function, [...]): Delete.
Richard Sandiford [Wed, 12 Nov 2014 09:05:29 +0000 (09:05 +0000)]
rtl.h (rtx_function, [...]): Delete.

gcc/
* rtl.h (rtx_function, for_each_rtx, for_each_rtx_in_insn): Delete.
* rtlanal.c (non_rtx_starting_operands, for_each_rtx_1, for_each_rtx):
(for_each_rtx_in_insn): Delete.
(init_rtlanal): Remove initialization of non_rtx_starting_operands.
* df-core.c: Remove reference to for_each_rtx in comment.

From-SVN: r217407

10 years ago[AArch64] Remove unnecessary files.
Tejas Belagod [Wed, 12 Nov 2014 08:46:05 +0000 (08:46 +0000)]
[AArch64] Remove unnecessary files.

2014-11-12  Tejas Belagod  <tejas.belagod@arm.com>

        * Makefile.in (TEXI_GCC_FILES): Remove arm-acle-intrinsics.texi,
        arm-neon-intrinsics.texi, aarch64-acle-intrinsics.texi.
        * doc/aarch64-acle-intrinsics.texi: Remove.
        * doc/arm-acle-intrinsics.texi: Remove.
        * doc/arm-neon-intrinsics.texi: Remove.
        * doc/extend.texi: Consolidate sections AArch64 intrinsics,
        ARM NEON Intrinsics, ARM ACLE Intrinsics into one ARM C Language
        Extension section. Add references to public ACLE specification.

From-SVN: r217406

10 years ago[AArch64] Add reference to ACLE and consolidate documentation.
Tejas Belagod [Wed, 12 Nov 2014 08:42:41 +0000 (08:42 +0000)]
[AArch64] Add reference to ACLE and consolidate documentation.

2014-11-12  Tejas Belagod  <tejas.belagod@arm.com>

        * Makefile.in (TEXI_GCC_FILES): Remove arm-acle-intrinsics.texi,
        arm-neon-intrinsics.texi, aarch64-acle-intrinsics.texi.
        * doc/aarch64-acle-intrinsics.texi: Remove.
        * doc/arm-acle-intrinsics.texi: Remove.
        * doc/arm-neon-intrinsics.texi: Remove.
        * doc/extend.texi: Consolidate sections AArch64 intrinsics,
        ARM NEON Intrinsics, ARM ACLE Intrinsics into one ARM C Language
        Extension section. Add references to public ACLE specification.

From-SVN: r217405

10 years agolibgo: Update libtool support to files in current GCC trunk.
Ian Lance Taylor [Wed, 12 Nov 2014 03:51:36 +0000 (03:51 +0000)]
libgo: Update libtool support to files in current GCC trunk.

From-SVN: r217404

10 years agoeabi1.c: Replace arm*-*-*eabi* and arm*-*-symbianelf* with arm_eabi.
Andreas Tobler [Wed, 12 Nov 2014 03:06:14 +0000 (04:06 +0100)]
eabi1.c: Replace arm*-*-*eabi* and arm*-*-symbianelf* with arm_eabi.

2014-11-12  Andreas Tobler  <andreast@gcc.gnu.org>

        * gcc.target/arm/eabi1.c: Replace arm*-*-*eabi* and arm*-*-symbianelf*
with arm_eabi.
* g++.dg/abi/arm_rtti1.C: Likewise.
* g++.dg/abi/key1.C: Likewise.
* g++.dg/ext/visibility/arm1.C: Likewise.
* g++.dg/ext/visibility/arm2.C: Likewise.
* g++.dg/ext/visibility/arm3.C: Likewise.

From-SVN: r217403

10 years agoFix dump scanning in g++.dg/ipa/devirt-42.C
H.J. Lu [Wed, 12 Nov 2014 02:05:06 +0000 (02:05 +0000)]
Fix dump scanning in g++.dg/ipa/devirt-42.C

* g++.dg/ipa/devirt-42.C: Fix dump scanning for "return 2".

From-SVN: r217402

10 years ago1.cc: Remove unused header.
Jonathan Wakely [Wed, 12 Nov 2014 00:34:19 +0000 (00:34 +0000)]
1.cc: Remove unused header.

* testsuite/experimental/optional/constexpr/observers/1.cc: Remove
unused header.
* testsuite/experimental/optional/constexpr/observers/2.cc: Likewise.
* testsuite/experimental/optional/constexpr/observers/3.cc: Likewise.
* testsuite/experimental/optional/constexpr/observers/4.cc: Likewise.
* testsuite/experimental/optional/constexpr/observers/5.cc: Likewise.

From-SVN: r217401

10 years agoVRP: Simplify logic for checking if any asserts need to be inserted
Patrick Palka [Wed, 12 Nov 2014 00:29:33 +0000 (00:29 +0000)]
VRP: Simplify logic for checking if any asserts need to be inserted

2014-11-11  Patrick Palka  <ppalka@gcc.gnu.org>

* tree-vrp.c (register_edge_assert_for_2): Change return type to
void and adjust accordingly.
(register_edge_assert_for_1): Likewise.
(register_edge_assert_for): Likewise.
(find_conditional_asserts): Likewise.
(find_switch_asserts): Likewise.
(find_assert_locations_1): Likewise.
(find_assert_locations): Likewise.
(insert_range_insertions): Inspect the need_assert_for bitmap.

From-SVN: r217400

10 years agoDaily bump.
GCC Administrator [Wed, 12 Nov 2014 00:16:31 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r217399

10 years agooptional (_Has_addressof): Check for non-member operator&.
Jonathan Wakely [Wed, 12 Nov 2014 00:16:19 +0000 (00:16 +0000)]
optional (_Has_addressof): Check for non-member operator&.

* include/experimental/optional (_Has_addressof): Check for non-member
operator&.
* testsuite/experimental/optional/observers/2.cc: Add operator&.
* testsuite/experimental/optional/constexpr/observers/2.cc: Likewise.

From-SVN: r217397

10 years agoDefine __void_t and SFINAE-friendly iterator_traits.
Jonathan Wakely [Tue, 11 Nov 2014 23:57:35 +0000 (23:57 +0000)]
Define __void_t and SFINAE-friendly iterator_traits.

* include/std/type_traits (__void_t): Define new alias template.
(_GLIBCXX_HAS_NESTED_TYPE): Redefine using __void_t.
* include/std/functional (_Maybe_get_result_type): Likewise.
* include/bits/stl_iterator_base_types.h (__iterator_traits): Likewise.
* include/bits/uses_allocator.h (__uses_allocator_helper): Likewise.
* testsuite/20_util/bind/ref_neg.cc: Adjust dg-error.
* testsuite/20_util/reference_wrapper/typedefs-3.cc: Adjust to changes
in _GLIBCXX_HAS_NESTED_TYPE.

From-SVN: r217395

10 years agoBug target/61997
Andrew Pinski [Tue, 11 Nov 2014 23:40:03 +0000 (23:40 +0000)]
Bug target/61997

2014-11-11  Andrew Pinski  <apinski@cavium.com>

        Bug target/61997
        * config.gcc (aarch64*-*-*): Set target_gtfiles to include
        aarch64-builtins.c.
        * config/aarch64/aarch64-builtins.c: Include gt-aarch64-builtins.h
        at the end of the file.

From-SVN: r217394

10 years agoMake std::mem_fn work with varargs functions.
Jonathan Wakely [Tue, 11 Nov 2014 23:38:34 +0000 (23:38 +0000)]
Make std::mem_fn work with varargs functions.

* include/std/functional (_Mem_fn_traits): Add partial specializations
for varargs functions.
(_Mem_fn_base): Do not check arguments are convertible for varargs.
(_Bind_check_arity): Add partial specializations for varargs functions.
* include/std/type_traits (__bool_constant): Add alias template.
* testsuite/20_util/bind/ref_neg.cc: Adjust dg-error.
* testsuite/20_util/bind/refqual.cc: New, test ref-qualifiers.
* testsuite/20_util/declval/requirements/1_neg.cc: Adjust dg-error.
* testsuite/20_util/function_objects/mem_fn/refqual.cc: Test varargs.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
dg-error.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
dg-error.

From-SVN: r217393

10 years agore PR driver/36312 (should refuse to overwrite input file with output file)
Anthony Brandon [Tue, 11 Nov 2014 23:33:25 +0000 (23:33 +0000)]
re PR driver/36312 (should refuse to overwrite input file with output file)

gcc/testsuite/ChangeLog:

2014-11-11  Anthony Brandon  <anthony.brandon@gmail.com>
    Manuel López-Ibáñez  <manu@gcc.gnu.org>

PR driver/36312
* gcc.misc-tests/output.exp: New test case for identical input and
output files.

include/ChangeLog:

2014-11-11  Anthony Brandon  <anthony.brandon@gmail.com>
    Manuel López-Ibáñez  <manu@gcc.gnu.org>

PR driver/36312
* filenames.h: Add prototype for canonical_filename_eq.

gcc/ChangeLog:

2014-11-11  Anthony Brandon  <anthony.brandon@gmail.com>
    Manuel López-Ibáñez  <manu@gcc.gnu.org>

PR driver/36312
* diagnostic-core.h: Add prototype for fatal_error.
* diagnostic.c (fatal_error): New function fatal_error.
* gcc.c (store_arg): Remove have_o_argbuf_index.
(process_command): Check if input and output files are the same.
* toplev.c (init_asm_output): Check if input and output files are
the same.

libiberty/ChangeLog:

2014-11-11  Anthony Brandon  <anthony.brandon@gmail.com>
    Manuel López-Ibáñez  <manu@gcc.gnu.org>

PR driver/36312
* filename_cmp.c (canonical_filename_eq): New function to check if
file names are the same.
* functions.texi: Updated with documentation for new function.

Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org>
From-SVN: r217391

10 years agore PR fortran/44054 (Handle -Werror, -Werror=, -fdiagnostics-show-option, !GCC$ diagn...
Manuel López-Ibáñez [Tue, 11 Nov 2014 22:50:48 +0000 (22:50 +0000)]
re PR fortran/44054 (Handle -Werror, -Werror=, -fdiagnostics-show-option, !GCC$ diagnostic (pragmas) and color)

libcpp/ChangeLog:

2014-11-11  Manuel López-Ibáñez  <manu@gcc.gnu.org>

PR fortran/44054
* include/line-map.h (linemap_position_for_loc_and_offset):
Declare.
* line-map.c (linemap_position_for_loc_and_offset): New.

gcc/fortran/ChangeLog:

2014-11-11  Manuel López-Ibáñez  <manu@gcc.gnu.org>

PR fortran/44054
* gfortran.h (warn_use_without_only): Remove.
(gfc_diagnostics_finish): Declare.
* error.c: Include tree-diagnostics.h
(gfc_format_decoder): New.
(gfc_diagnostics_init): Use gfc_format_decoder. Set default caret
char.
(gfc_diagnostics_finish): Restore tree diagnostics defaults, but
keep gfc_diagnostics_starter and finalizer. Restore default caret.
* options.c: Remove all uses of warn_use_without_only.
* lang.opt (Wuse-without-only): Add Var.
* f95-lang.c (gfc_be_parse_file): Call gfc_diagnostics_finish.
* module.c (gfc_use_module): Use gfc_warning_now_2.
* parse.c (decode_statement): Likewise.
(decode_gcc_attribute): Likewise.
(next_free): Likewise.
(next_fixed): Likewise.

gcc/testsuite/ChangeLog:

2014-11-11  Manuel López-Ibáñez  <manu@gcc.gnu.org>

PR fortran/44054
* lib/gfortran-dg.exp: Update regexp to match locus and message
without caret.
* gfortran.dg/use_without_only_1.f90: Add column numbers.
        * gfortran.dg/warnings_are_errors_1.f: Update.

From-SVN: r217383

10 years ago* reorg.c (fill_slots_from_thread): Do not copy frame-related insns.
Eric Botcazou [Tue, 11 Nov 2014 22:31:09 +0000 (22:31 +0000)]
* reorg.c (fill_slots_from_thread): Do not copy frame-related insns.

From-SVN: r217381

10 years agoassociative-containers.cc: Add new file missed from earlier commit.
Siva Chandra Reddy [Tue, 11 Nov 2014 22:10:21 +0000 (22:10 +0000)]
associative-containers.cc: Add new file missed from earlier commit.

2014-11-11  Siva Chandra Reddy  <sivachandra@google.com>

* testsuite/libstdc++-xmethods/associative-containers.cc: Add new
file missed from earlier commit.

From-SVN: r217378

10 years agore PR target/61535 (SIGBUS in gen_group_rtx compiling 64-bit gcc.dg/vect/vect-singlet...
Eric Botcazou [Tue, 11 Nov 2014 22:09:40 +0000 (22:09 +0000)]
re PR target/61535 (SIGBUS in gen_group_rtx compiling 64-bit gcc.dg/vect/vect-singleton_1.c)

PR target/61535
* config/sparc/sparc.c (function_arg_vector_value): Deal with vectors
smaller than 8 bytes.
(sparc_function_arg_1): Tweak.
(sparc_function_value_1): Tweak.

From-SVN: r217377

10 years agoMerger of dmalcolm/jit branch from git
David Malcolm [Tue, 11 Nov 2014 21:55:52 +0000 (21:55 +0000)]
Merger of dmalcolm/jit branch from git

ChangeLog:
* ChangeLog.jit: New.
* MAINTAINERS (Various Maintainers): Add myself as jit maintainer.

contrib/ChangeLog:
* ChangeLog.jit: New.
* jit-coverage-report.py: New file: a script to print crude
code-coverage information for the libgccjit API.

gcc/ChangeLog:
* ChangeLog.jit: New.
* Makefile.in (doc_build_sys): New variable, set to "sphinx" if
sphinx is installed, falling back to "texinfo" otherwise.
(FULL_DRIVER_NAME): New variable, adapted from the
install-driver target.  New target, a symlink within the builddir,
linked to "xgcc", for use when running the JIT library from the
builddir.
(MOSTLYCLEANFILES): Add FULL_DRIVER_NAME.
(install-driver): Use $(FULL_DRIVER_NAME) rather than spelling it
out.
* configure.ac (doc_build_sys): New variable, set to "sphinx" if
sphinx is installed, falling back to "texinfo" otherwise.
(GCC_DRIVER_NAME): Generate a gcc-driver-name.h file containing
GCC_DRIVER_NAME for the benefit of jit/internal-api.c.
* configure: Regenerate.
* doc/install.texi (--enable-host-shared): Specify that this is
required when building libgccjit.
(Tools/packages necessary for modifying GCC): Add Sphinx.
* timevar.def (TV_JIT_REPLAY): New.
(TV_ASSEMBLE): New.
(TV_LINK): New.
(TV_LOAD): New.

gcc/java/ChangeLog:
* gcc/ChangeLog.jit: New.

gcc/jit/ChangeLog:
* ChangeLog.jit: New.
* ChangeLog: New.
* Make-lang.in: New.
* TODO.rst: New.
* config-lang.in: New.
* docs/Makefile: New.
* docs/_build/texinfo/Makefile: New.
* docs/_build/texinfo/factorial.png: New.
* docs/_build/texinfo/libgccjit.texi: New.
* docs/_build/texinfo/sum-of-squares.png: New.
* docs/conf.py: New.
* docs/examples/tut01-hello-world.c: New.
* docs/examples/tut02-square.c: New.
* docs/examples/tut03-sum-of-squares.c: New.
* docs/examples/tut04-toyvm/Makefile: New.
* docs/examples/tut04-toyvm/factorial.toy: New.
* docs/examples/tut04-toyvm/fibonacci.toy: New.
* docs/examples/tut04-toyvm/toyvm.c: New.
* docs/index.rst: New.
* docs/internals/index.rst: New.
* docs/intro/factorial.png: New.
* docs/intro/index.rst: New.
* docs/intro/sum-of-squares.png: New.
* docs/intro/tutorial01.rst: New.
* docs/intro/tutorial02.rst: New.
* docs/intro/tutorial03.rst: New.
* docs/intro/tutorial04.rst: New.
* docs/topics/contexts.rst: New.
* docs/topics/expressions.rst: New.
* docs/topics/functions.rst: New.
* docs/topics/index.rst: New.
* docs/topics/locations.rst: New.
* docs/topics/objects.rst: New.
* docs/topics/results.rst: New.
* docs/topics/types.rst: New.
* dummy-frontend.c: New.
* jit-builtins.c: New.
* jit-builtins.h: New.
* jit-common.h: New.
* jit-playback.c: New.
* jit-playback.h: New.
* jit-recording.c: New.
* jit-recording.h: New.
* libgccjit++.h: New.
* libgccjit.c: New.
* libgccjit.h: New.
* libgccjit.map: New.
* notes.txt: New.

gcc/testsuite/ChangeLog:
* ChangeLog.jit: New.
* jit.dg/all-non-failing-tests.h: New.
* jit.dg/harness.h: New.
* jit.dg/jit.exp: New.
* jit.dg/test-accessing-struct.c: New.
* jit.dg/test-accessing-union.c: New.
* jit.dg/test-array-as-pointer.c: New.
* jit.dg/test-arrays.c: New.
* jit.dg/test-calling-external-function.c: New.
* jit.dg/test-calling-function-ptr.c: New.
* jit.dg/test-combination.c: New.
* jit.dg/test-dot-product.c: New.
* jit.dg/test-empty.c: New.
* jit.dg/test-error-accessing-field-in-other-struct.c: New.
* jit.dg/test-error-adding-to-terminated-block.c: New.
* jit.dg/test-error-array-as-pointer.c: New.
* jit.dg/test-error-bad-cast.c: New.
* jit.dg/test-error-block-in-wrong-function.c: New.
* jit.dg/test-error-call-through-ptr-with-mismatching-args.c: New.
* jit.dg/test-error-call-through-ptr-with-non-function.c: New.
* jit.dg/test-error-call-through-ptr-with-non-pointer.c: New.
* jit.dg/test-error-call-through-ptr-with-not-enough-args.c: New.
* jit.dg/test-error-call-through-ptr-with-too-many-args.c: New.
* jit.dg/test-error-call-with-mismatching-args.c: New.
* jit.dg/test-error-call-with-not-enough-args.c: New.
* jit.dg/test-error-call-with-too-many-args.c: New.
* jit.dg/test-error-dereference-field-of-non-pointer.c: New.
* jit.dg/test-error-dereference-read-of-non-pointer.c: New.
* jit.dg/test-error-get-type-bad-enum.c: New.
* jit.dg/test-error-index-not-a-numeric-type.c: New.
* jit.dg/test-error-mismatching-types-in-assignment.c: New.
* jit.dg/test-error-mismatching-types-in-call.c: New.
* jit.dg/test-error-missing-return.c: New.
* jit.dg/test-error-new-binary-op-bad-op.c: New.
* jit.dg/test-error-new-function-bad-kind.c: New.
* jit.dg/test-error-new-unary-op-bad-op.c: New.
* jit.dg/test-error-null-passed-to-api.c: New.
* jit.dg/test-error-return-within-void-function.c: New.
* jit.dg/test-error-unreachable-block.c: New.
* jit.dg/test-error-unterminated-block.c: New.
* jit.dg/test-error-value-not-a-numeric-type.c: New.
* jit.dg/test-expressions.c: New.
* jit.dg/test-factorial.c: New.
* jit.dg/test-fibonacci.c: New.
* jit.dg/test-functions.c: New.
* jit.dg/test-fuzzer.c: New.
* jit.dg/test-hello-world.c: New.
* jit.dg/test-linked-list.c: New.
* jit.dg/test-long-names.c: New.
* jit.dg/test-nested-contexts.c: New.
* jit.dg/test-nested-loops.c: New.
* jit.dg/test-operator-overloading.cc: New.
* jit.dg/test-quadratic.c: New.
* jit.dg/test-quadratic.cc: New.
* jit.dg/test-reading-struct.c: New.
* jit.dg/test-string-literal.c: New.
* jit.dg/test-sum-of-squares.c: New.
* jit.dg/test-threads.c: New.
* jit.dg/test-types.c: New.
* jit.dg/test-using-global.c: New.
* jit.dg/test-volatile.c: New.

include/ChangeLog:
* ChangeLog.jit: New.

libbacktrace/ChangeLog:
* ChangeLog.jit: New.

libcpp/ChangeLog:
* ChangeLog.jit: New.

libdecnumber/ChangeLog:
* ChangeLog.jit: New.

libiberty/ChangeLog:
* ChangeLog.jit: New.

zlib/ChangeLog:
* ChangeLog.jit: New.

From-SVN: r217374

10 years agore PR libstdc++/61107 (stl_algo.h: std::__inplace_stable_partition() doesn't process...
François Dumont [Tue, 11 Nov 2014 21:21:10 +0000 (21:21 +0000)]
re PR libstdc++/61107 (stl_algo.h: std::__inplace_stable_partition() doesn't process the whole data range)

2014-11-11  François Dumont  <fdumont@gcc.gnu.org>

PR libstdc++/61107
* include/bits/stl_algo.h (__inplace_stable_partition): Delete.
(__stable_partition_adaptive): Return __first if range length is 1.
(__stable_partition): Adapt.
* testsuite/util/testsuite_new_operators.h: New.
* testsuite/25_algorithms/stable_sort/1.cc: Test algo in simulated
constraint memory context.
* testsuite/25_algorithms/inplace_merge/1.cc: Likewise.
* testsuite/25_algorithms/stable_partition/1.cc: Likewise.

From-SVN: r217370

10 years agore PR target/63610 (Fixing the libtool bug for Yosemite (darwin14))
Francois-Xavier Coudert [Tue, 11 Nov 2014 20:25:18 +0000 (20:25 +0000)]
re PR target/63610 (Fixing the libtool bug for Yosemite (darwin14))

toplevel:
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* libtool.m4: Fix globbing of darwin versions.

boehm-gc/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

gcc/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libatomic/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libbacktrace/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libcc1/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libcilkrts/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libffi/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libgfortran/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libgomp/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libitm/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libobjc/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libquadmath/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libsanitizer/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libssp/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libstdc++-v3/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libvtv/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

lto-plugin/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libjava/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

libjava/classpath/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

zlib/
2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR target/63610
* configure: Regenerate.

From-SVN: r217366

10 years agocloog.m4: Remove.
Tobias Burnus [Tue, 11 Nov 2014 18:54:16 +0000 (19:54 +0100)]
cloog.m4: Remove.

2014-11-11  Tobias Burnus  <burnus@net-b.de>

        * config/cloog.m4: Remove.
        * Makefile.def: Remove CLooG.
        * Makefile.tpl: Ditto.
        * configure.ac: Ditto.
        * configure: Regenerate.
        * Makefile.in: Ditto.

From-SVN: r217364

10 years ago[Patch AArch64] Fix up BSL expander for floating point types
James Greenhalgh [Tue, 11 Nov 2014 17:37:35 +0000 (17:37 +0000)]
[Patch AArch64] Fix up BSL expander for floating point types

gcc/

* config/aarch64/aarch64-simd.md
(aarch64_simd_bsl<mode>_internal): Remove float cases, canonicalize.
(aarch64_simd_bsl<mode>): Add gen_lowpart expressions where we
are punning between float vectors and integer vectors.

gcc/testsuite/

* gcc.target/aarch64/vbslq_f64_1.c: New.
* gcc.target/aarch64/vbslq_f64_2.c: Likewise.
* gcc.target/aarch64/vbslq_u64_1.c: Likewise.
* gcc.target/aarch64/vbslq_u64_2.c: Likewise.

From-SVN: r217362

10 years agore PR c++/63265 (Constexpr variables can trigger spurious compiler warnings)
Paolo Carlini [Tue, 11 Nov 2014 17:34:12 +0000 (17:34 +0000)]
re PR c++/63265 (Constexpr variables can trigger spurious compiler warnings)

/cp
2014-11-11  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/63265
* pt.c (tsubst_copy_and_build, case COND_EXPR): Maybe fold to
constant the condition.

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

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

From-SVN: r217361

10 years agoalpha.c (alpha_emit_conditional_branch): Replace open-coded swap with std::swap to...
Uros Bizjak [Tue, 11 Nov 2014 17:07:47 +0000 (18:07 +0100)]
alpha.c (alpha_emit_conditional_branch): Replace open-coded swap with std::swap to swap values.

* config/alpha/alpha.c (alpha_emit_conditional_branch): Replace
open-coded swap with std::swap to swap values.
(alpha_emit_setcc): Ditto.
(alpha_emit_conditional_move): Ditto.
(alpha_split_tmode_pair): Ditto.

From-SVN: r217360

10 years agotree-vect-data-refs.c (vect_shift_permute_load_chain): Extend shift permutations...
Evgeny Stupachenko [Tue, 11 Nov 2014 16:07:52 +0000 (16:07 +0000)]
tree-vect-data-refs.c (vect_shift_permute_load_chain): Extend shift permutations on power of 2 cases.

gcc/

        * tree-vect-data-refs.c (vect_shift_permute_load_chain): Extend shift
permutations on power of 2 cases.

gcc/testsuites/

* gcc.target/i386/pr52252-atom-1.c: New.

From-SVN: r217359

10 years ago[AArch64] Properly guard CUMULATIVE_ARGS definition and remove 'enum' from machine_mo...
Kyrylo Tkachov [Tue, 11 Nov 2014 15:29:21 +0000 (15:29 +0000)]
[AArch64] Properly guard CUMULATIVE_ARGS definition and remove 'enum' from machine_mode in aarch64.h

* config/aarch64/aarch64.h (MACHMODE): Remove 'enum' keyword.
(CUMULATIVE_ARGS): Guard on !defined(USED_FOR_TARGET).

From-SVN: r217358

10 years agomklog: Symbol '}' stops search for changes.
Marat Zakirov [Tue, 11 Nov 2014 15:26:03 +0000 (15:26 +0000)]
mklog: Symbol '}' stops search for changes.

contrib/

2014-11-11  Marat Zakirov  <m.zakirov@samsung.com>

* mklog: Symbol '}' stops search for changes.

From-SVN: r217357

10 years agotree-core.h (pedantic_lvalues): Remove.
Richard Biener [Tue, 11 Nov 2014 15:21:12 +0000 (15:21 +0000)]
tree-core.h (pedantic_lvalues): Remove.

2014-11-11  Richard Biener  <rguenther@suse.de>

* tree-core.h (pedantic_lvalues): Remove.
* fold-const.c (pedantic_lvalues): Likewise.
(pedantic_non_lvalue_loc): Remove conditional non_lvalue_loc call.

c/
* c-decl.c (c_init_decl_processing): Do not set pedantic_lvalues
to true.

From-SVN: r217356

10 years agore PR bootstrap/63622 (Bootstrap fails on x86_64-apple-darwin1[34] after revision...
Martin Liska [Tue, 11 Nov 2014 14:58:21 +0000 (15:58 +0100)]
re PR bootstrap/63622 (Bootstrap fails on x86_64-apple-darwin1[34] after revision r216305)

PR ipa/63622

        PR ipa/63795
* g++.dg/ipa/ipa-icf-4.C: Add more precise dump scan.
* g++.dg/ipa/ipa-icf-5.C: Add condition for target
with symbol alias support.
* ipa-icf.c (sem_function::merge): Add new target symbol alias
support guard.
(sem_variable::merge): Likewise.
* ipa-icf.h (target_supports_symbol_aliases_p): New function.

From-SVN: r217355

10 years agomatch.pd: Implement patterns from associate_plusminus and factor in differences from...
Richard Biener [Tue, 11 Nov 2014 13:23:26 +0000 (13:23 +0000)]
match.pd: Implement patterns from associate_plusminus and factor in differences from the...

2014-11-11  Richard Biener  <rguenther@suse.de>

* match.pd: Implement patterns from associate_plusminus
and factor in differences from the fold-const.c implementation.
* fold-const.c (fold_binary_loc): Remove patterns here.
* tree-ssa-forwprop.c (associate_plusminus): Remove.
(pass_forwprop::execute): Don't call it.
* tree.c (tree_nop_conversion_p): New function, factored
from tree_nop_conversion.
* tree.h (tree_nop_conversion_p): Declare.

From-SVN: r217349

10 years agosystem.h: Include algorithm and utility.
Uros Bizjak [Tue, 11 Nov 2014 13:12:39 +0000 (14:12 +0100)]
system.h: Include algorithm and utility.

* system.h: Include algorithm and utility.
* rtl.h: Do not include utility here.
* wide-int.h: Ditto.
* tree-vect-data-refs.c (swap): Remove template.
(vect_prune_runtime_alias_test_list): Use std::swap instead of swap.

From-SVN: r217348

10 years agore PR ada/42978 (gnatmake doesn't report the options it actually provides to ranlib)
Simon Wright [Tue, 11 Nov 2014 11:58:26 +0000 (11:58 +0000)]
re PR ada/42978 (gnatmake doesn't report the options it actually provides to ranlib)

PR ada/42978
* mlib-utl.adb (ar): Output the options passed to ranlib.

From-SVN: r217346

10 years ago[Fortran] PR 63701 Make sure variable is always used initialised
Kyrylo Tkachov [Tue, 11 Nov 2014 11:52:36 +0000 (11:52 +0000)]
[Fortran] PR 63701 Make sure variable is always used initialised

PR fortran/63701
* trans-expr.c (gfc_get_tree_for_caf_expr): Initialise found to false.

From-SVN: r217345

10 years agoxmethods.py: Add xmethods for associative containers.
Siva Chandra Reddy [Tue, 11 Nov 2014 11:35:34 +0000 (11:35 +0000)]
xmethods.py: Add xmethods for associative containers.

2014-11-11  Siva Chandra Reddy  <sivachandra@google.com>

* python/libstdcxx/v6/xmethods.py: Add xmethods for associative
containers.
* testsuite/libstdc++-xmethods/associative-containers.cc: New file.

From-SVN: r217344

10 years agore PR libstdc++/63811 (r217322 breaks bootstrap)
Jonathan Wakely [Tue, 11 Nov 2014 10:41:46 +0000 (10:41 +0000)]
re PR libstdc++/63811 (r217322 breaks bootstrap)

PR libstdc++/63811
* include/bits/stl_deque.h (_Deque_base::_M_move_impl()): Avoid using
badname.

From-SVN: r217343