Marek Polacek [Mon, 7 Dec 2015 17:52:23 +0000 (17:52 +0000)]
re PR c/68668 (bogus error: invalid use of array with unspecified bounds)
PR c/68668
* c-decl.c (grokdeclarator): If ORIG_QUAL_INDIRECT is indirect, use
TREE_TYPE of ORIG_QUAL_TYPE, otherwise decrement ORIG_QUAL_INDIRECT.
* gcc.dg/pr68668.c: New test.
From-SVN: r231374
Jan Hubicka [Mon, 7 Dec 2015 17:36:54 +0000 (18:36 +0100)]
re PR lto/61886 (LTO breaks fread with _FORTIFY_SOURCE=2)
PR ipa/61886
* symtab.c (ultimate_transparent_alias_target): New inline function.
(symbol_table::assembler_names_equal_p): New method; break out from ...
(symbol_table::decl_assembler_name_equal): ... here.
(symbol_table::change_decl_assembler_name): Also update names and
translation links of transparent aliases.
(symtab_node::dump_base): Dump transparent_alias.
(symtab_node::verify_base): Implement basic transparent alias
verification.
(symtab_node::make_decl_local): Support localization of weakrefs;
recurse to transparent aliases; set TREE_STATIC.
(symtab_node::ultimate_alias_target_1): Handle visibility of
transparent aliases.
(symtab_node::resolve_alias): New parmaeter transparent; handle
transparent aliases; recurse to aliases of aliases to fix comdat
groups.
(symtab_node::get_partitioning_class): Handle transparent aliases.
* ipa-visibility.c (cgraph_externally_visible_p,
varpool_node::externally_visible_p): Visibility of transparent alias
depends on its target.
(function_and_variable_visibility): Do not tweak visibility of
transparent laiases.
(function_and_variable_visibility): Likewise.
* ipa.c (symbol_table::remove_unreachable_nodes): Clear
transparent_alias flag.
* alias.c (cgraph_node::create_alias, cgraph_node::get_availability):
Support transparent aliases.
* cgraph.h (symtab_node): Update prototype of resolve_alias;
add transparent_alias flag.
(symbol_table: Add assembler_names_equal_p.
(symtab_node::real_symbol_p): Skip transparent aliases.
* cgraphunit.c (cgraph_node::reset): Reset transparent_alias flag.
(handle_alias_pairs): Set transparent_alias for weakref.
(cgraph_node::assemble_thunks_and_aliases): Do not asemble transparent
aliases.
* lto-cgraph.c (lto_output_node): When outputting same_comdat_group
skip symbols not put into boundary; stream transparent_alias.
(lto_output_varpool_node): Likewise.
(input_overwrite_node, input_varpool_node): Stream transparent alias.
* varpool.c (ctor_for_folding, varpool_node::get_availability,
varpool_node::assemble_aliases,
symbol_table::remove_unreferenced_decls): Handle transparent aliase.
(varpool_node::create_alias): Set transparent_alias.
* lto-partition.c (add_symbol_to_partition_1, contained_in_symbol,
rename_statics, rename_statics): Handle transparent aliases.
From-SVN: r231373
Eric Botcazou [Mon, 7 Dec 2015 16:45:45 +0000 (16:45 +0000)]
re PR middle-end/68291 (ICE in emit_move_insn, at expr.c:3540)
PR middle-end/68291
PR middle-end/68292
* cfgexpand.c (set_rtl): Always accept PARALLELs with BLKmode for
SSA names based on RESULT_DECLs.
* function.c (expand_function_start): Do not create BLKmode REGs
for GIMPLE registers when coalescing is enabled.
From-SVN: r231372
Bernd Edlinger [Mon, 7 Dec 2015 16:27:59 +0000 (16:27 +0000)]
final.c (shorten_branches): Fix check for basic asm.
2015-12-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
* final.c (shorten_branches): Fix check for basic asm.
From-SVN: r231371
Vladimir Makarov [Mon, 7 Dec 2015 16:26:23 +0000 (16:26 +0000)]
pr68349.c (strlen): Rename to my_strlen.
2015-12-07 Vladimir Makarov <vmakarov@redhat.com>
* gcc.target/i386/pr68349.c (strlen): Rename to my_strlen.
From-SVN: r231370
Bernd Edlinger [Mon, 7 Dec 2015 16:23:49 +0000 (16:23 +0000)]
ipa-icf-gimple.c (func_checker::compare_gimple_asm): Add check for basic asm.
2015-12-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
* ipa-icf-gimple.c (func_checker::compare_gimple_asm): Add check for
basic asm.
From-SVN: r231369
Nathan Sidwell [Mon, 7 Dec 2015 16:08:42 +0000 (16:08 +0000)]
nvptx.c (nvptx_output_call_insn): Emit trap after no return call.
gcc/
* config/nvptx/nvptx.c (nvptx_output_call_insn): Emit trap after no
return call.
gcc/testsuite/
* gcc.target/nvptx/abort.c: New.
From-SVN: r231368
David Malcolm [Mon, 7 Dec 2015 16:07:00 +0000 (16:07 +0000)]
Fix missing range information for "%q+D" format code
gcc/c-family/ChangeLog:
* c-common.c (c_cpp_error): Update for change to
rich_location::set_range.
gcc/fortran/ChangeLog:
* error.c (gfc_format_decoder): Update for change of
text_info::set_range to text_info::set_location.
gcc/ChangeLog:
* pretty-print.c (text_info::set_range): Rename to...
(text_info::set_location): ...this, converting 2nd param
from source_range to a location_t.
* pretty-print.h (text_info::set_location): Convert
from inline function to external definition.
(text_info::set_range): Delete.
gcc/testsuite/ChangeLog:
* gcc.dg/diagnostic-ranges-1.c: New test file.
* gcc.dg/plugin/diagnostic-test-show-locus-bw.c
(test_percent_q_plus_d): New test function.
* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
(test_show_locus): Rewrite test code using
rich_location::set_range. Add code to unit-test the "%q+D"
format code.
libcpp/ChangeLog:
* include/line-map.h (rich_location::set_range): Add line_maps *
param; convert param from source_range to source_location. Drop
"overwrite_loc_p" param.
* line-map.c (rich_location::set_range): Likewise, acting as if
"overwrite_loc_p" were true, and getting range from the location.
From-SVN: r231367
Martin Liska [Mon, 7 Dec 2015 15:35:25 +0000 (16:35 +0100)]
Fix changelog entry and add pr66896.C.
From-SVN: r231365
Dmitry Vyukov [Mon, 7 Dec 2015 15:27:50 +0000 (07:27 -0800)]
Fix new sancov tests
* gcc.dg/sancov/sancov.exp: Load asan-dg.exp.
* gcc.dg/sancov/asan.c: Don't run when asan is not available.
From-SVN: r231364
Nathan Sidwell [Mon, 7 Dec 2015 13:46:07 +0000 (13:46 +0000)]
nvptx.c (nvptx_assemble_decl_begin): Look inside complex and vector types.
gcc/
* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Look inside
complex and vector types. Cope with packed structs.
gcc/testsuite/
* gcc.target/nvptx/decl-init.c: New.
From-SVN: r231362
Kirill Yukhin [Mon, 7 Dec 2015 11:12:41 +0000 (11:12 +0000)]
re PR target/68627 ([i386, AVX-512] Illegal insn generated while compiling spec2k6/437.leslie3d for KNL)
PR target/68627
gcc/
* config/i386/sse.md: Make 'v' alternative work on 'avx512f' ISA only.
Force destination to 512 bits register.
gcc/testsuite/
* gfortran.dg/pr68627.f: New test.
From-SVN: r231361
Kirill Yukhin [Mon, 7 Dec 2015 11:06:44 +0000 (11:06 +0000)]
Commit accidentally forgotten tests.
gcc/testsuite/
* c-c++-common/attr-simd-4.c: New test.
* c-c++-common/attr-simd-5.c: New test.
From-SVN: r231360
Kirill Yukhin [Mon, 7 Dec 2015 11:05:40 +0000 (11:05 +0000)]
re PR target/68633 ([i386, AVX-512] Spec2006/434.zeus miscompares when executed on KNL)
PR target/68633
gcc/
* config/i386/sse.md (define_insn "kunpckhi"): Fix operands order.
(define_insn "kunpcksi"): Ditto.
(define_insn "kunpckdi"): Ditto.
gcc/testsuite
* gcc.target/i386/pr68633.c: New test.
From-SVN: r231359
Jason Merrill [Mon, 7 Dec 2015 04:35:14 +0000 (23:35 -0500)]
Fix parse/no-type-defn1.C with -std=c++1z.
* parser.c (struct tentative_firewall): New.
(cp_parser_template_id, cp_parser_decltype_expr): Use it.
From-SVN: r231354
Jason Merrill [Mon, 7 Dec 2015 04:35:08 +0000 (23:35 -0500)]
Fix decltype-call1.C with -std=c++1z.
* parser.h (struct cp_token): Tell GTY that CPP_DECLTYPE uses
tree_check_value.
* parser.c (cp_parser_decltype): Use tree_check_value.
(saved_checks_value): New.
(cp_parser_nested_name_specifier_opt): Use it.
(cp_parser_template_id): Use it.
(cp_parser_simple_type_specifier): Use it.
(cp_parser_pre_parsed_nested_name_specifier): Use it.
From-SVN: r231353
Jason Merrill [Mon, 7 Dec 2015 04:35:02 +0000 (23:35 -0500)]
Fix crash70.C with -std=c++1z.
* semantics.c (finish_qualified_id_expr): Handle
UNBOUND_CLASS_TEMPLATE.
From-SVN: r231352
Jason Merrill [Mon, 7 Dec 2015 04:34:57 +0000 (23:34 -0500)]
Fix template/ref1.C, nontype15.C, addr-builtin1.C with -std=c++1z.
* parser.c (cp_parser_template_argument): Handle references in
C++1z mode.
* constexpr.c (potential_constant_expression_1): Don't error about
TREE_THIS_VOLATILE on declarations.
[COMPONENT_REF]: Don't consider the object if we're dealing with an
overloaded function.
From-SVN: r231351
Jason Merrill [Mon, 7 Dec 2015 04:34:51 +0000 (23:34 -0500)]
Fix memclass5.C, memfriend10.C, var-templ19.C with -std=c++1z.
* constraint.cc (strictly_subsumes): New.
* cp-tree.h: Declare it.
* pt.c (process_partial_specialization): Use it instead of
subsumes_constraints.
(maybe_new_partial_specialization): Do compare null constraints.
* search.c (lookup_member): Handle currently_open_class returning null.
From-SVN: r231350
Jason Merrill [Mon, 7 Dec 2015 04:34:43 +0000 (23:34 -0500)]
PR c++/68597, fix auto9.C and auto-neg1.C with -std=c++1z.
* decl.c (check_tag_decl): Use ds_type_spec in auto diagnostic.
* typeck.c (check_return_expr): Check for inconsistent deduction.
* parser.c (class type_id_in_expr_sentinel): New.
(cp_parser_primary_expression) [RID_VA_ARG]: Use it.
(cp_parser_new_expression): Use it.
(cp_parser_trait_expr): Use it.
(cp_parser_type_id_1): Complain about auto if in_type_id_in_expr_p.
(cp_parser_default_type_template_argument): Check for auto.
(cp_parser_type_id_list): Likewise.
(cp_parser_simple_type_specifier): Allow auto parms if flag_concepts.
* pt.c (do_auto_deduction): Handle erroneous type.
From-SVN: r231349
Jason Merrill [Mon, 7 Dec 2015 04:34:36 +0000 (23:34 -0500)]
static_assert8.C: Fix for -std=c++1z.
* g++.dg/cpp0x/static_assert8.C: Fix for -std=c++1z.
* g++.dg/cpp0x/auto3.C: Fix for -std=c++1z.
* g++.dg/cpp1y/feat-cxx14.C: Only run with -std=c++14.
* g++.dg/cpp1y/feat-cxx14-neg.C: Only run with -std=c++14.
* g++.dg/cpp1z/feat-cxx1z.C: Fill in from feat-cxx14.C.
* g++.dg/cpp1z/fold5.C: Don't run with -std=c++1z.
* g++.dg/template/function1.C: Don't run with -std=c++1z.
* g++.dg/template/call4.C: Fix access.
* g++.dg/parse/crash31.C: Remove expected error text.
From-SVN: r231348
GCC Administrator [Mon, 7 Dec 2015 00:16:12 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r231347
Kaz Kojima [Mon, 7 Dec 2015 00:02:14 +0000 (00:02 +0000)]
sh.md (rsqrtsf2): Adjust for the recent rsqrt_optab changes
* config/sh/sh.md (rsqrtsf2): Adjust for the recent rsqrt_optab changes
From-SVN: r231344
Piotr Trojanek [Sun, 6 Dec 2015 18:53:37 +0000 (18:53 +0000)]
re PR ada/60164 (Missing parenthesis in the documentation)
PR ada/60164
* doc/gnat_ugn/gnat_and_program_execution.rst (gnatmem): Fix typo.
From-SVN: r231342
Eric Botcazou [Sun, 6 Dec 2015 18:44:56 +0000 (18:44 +0000)]
re PR ada/50048 ("cc1: note: obsolete option -I- used, please use -iquote instead" during bootstrap)
gnattools/
PR ada/50048
* Makefile.in (ftop_srcdir): New variable.
(INCLUDES_FOR_SUBDIR): Use -iquote and $(ftop_srcdir).
gcc/ada/
PR ada/50048
* gcc-interface/Makefile.in (INCLUDES): Use -iquote.
From-SVN: r231341
Victoria Stepanyan [Sun, 6 Dec 2015 17:02:48 +0000 (17:02 +0000)]
support for AMD clzero isa.
gcc/ChangeLog
2015-12-06 Victoria Stepanyan <victoria.stepanyan@amd.com>
* common/config/i386/i386-common.c
(OPTION_MASK_ISA_CLZERO_SET): New.
(ix86_handle_option): Handle clzero.
* config.gcc (i[34567]86-*-*): Add clzerointrin.h,
(x86_64-*-*): Likewise.
* config/i386/clzerointrin.h: New header.
* config/i386/cpuid.h (bit_CLZERO): Define.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect
CLZERO support.
* config/i386/i386.opt (clzero): New.
* config/i386/i386-c.c: Define __CLZERO__ if needed.
* config/i386/i386.c (ix86_target_string): Define -mclzero option.
(PTA_CLZERO): New.
(ix86_option_override_internal): Handle new option.
(processor_alias_table): Added PTA_CLZERO.
(ix86_valid_target_attribute_inner_p): Add OPT_mclzero.
(ix86_builtins): Add IX86_BUILTIN_CLZERO, IX86_BUILTIN_CLZERO.
(ix86_expand_builtin): Handle IX86_BUILTIN_CLZERO and
IX86_BUILTIN_CLZERO built-ins.
* config/i386/i386.h (TARGET_CLZERO): New.
* config/i386/i386.md (unspecv): Add UNSPEC_CLZERO.
(clzero): New pattern.
(clzero_<mode>): New pattern.
* config/i386/x86intrin.h: Include clzerointrin.h.
* doc/extend.texi: Document clzero builtins.
* doc/invoke.texi: Document -mclzero option.
gcc/testsuite/ChangeLog
2015-12-06 Victoria Stepanyan <victoria.stepanyan@amd.com>
* gcc.target/i386/clzero.c: New.
* gcc.target/i386/sse-12.c: Add -mclzero.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-14.c: Ditto.
* gcc.target/i386/sse-22.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
* g++.dg/other/i386-2.C: Ditto.
* g++.dg/other/i386-3.C: Ditto.
From-SVN: r231340
Eric Botcazou [Sun, 6 Dec 2015 15:28:16 +0000 (15:28 +0000)]
re PR ada/56274 (libada bootstrap failure on kfreebsd ("pthread_rwlock_t" not declared in "OS_Interface"))
PR ada/56274
* s-osinte-kfreebsd-gnu.ads (pthread_rwlock_t): New subtype.
(pthread_rwlockattr_t): Likewise.
From-SVN: r231337
Ludovic Brenta [Sun, 6 Dec 2015 14:11:17 +0000 (14:11 +0000)]
re PR ada/49944 (Bootstrapping on x86_64-pc-kfreebsd-gnu fails with "s-taprop.adb:856:10: "pthread_attr_setaffinity_np" is undefined (more references follow)")
PR ada/49944
* s-osinte-freebsd.ads: Minor reformatting.
(Stack_Base_Available): Correct comments.
* s-osinte-kfreebsd-gnu.ads (Time_Slice_Supported, nanosleep,
clock_id_t, clock_gettime, Stack_Base_Available, Get_Page_Size,
mprotect, pthread_mutexattr_setprotocol,pthread_mutexattr_getprotocol
pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling,
pthread_attr_setscope, pthread_attr_getscope,
pthread_attr_setinheritsched, pthread_attr_getinheritsched,
Time_Slice_Supported): Copy from s-osinte-freebsd.ads.
* gcc-interface/Makefile.in (x86/kfreebsd): Use the POSIX version of
the System.Task_Primitives.Operations package.
From-SVN: r231333
Ludovic Brenta [Sun, 6 Dec 2015 14:00:16 +0000 (14:00 +0000)]
re PR ada/49940 (Bootstrapping on x86_64-pc-kfreebsd-gnu fails with "s-taprop.adb:717:32: "lwp_self" is undefined")
PR ada/49940
* s-osinte-kfreebsd-gnu.ads (lwp_self): New imported function.
From-SVN: r231330
Tobias Burnus [Sun, 6 Dec 2015 10:42:49 +0000 (11:42 +0100)]
download_prerequisites: Download ISL 0.15 instead of 0.14.
2015-12-06 Tobias Burnus <burnus@net-b.de>
* download_prerequisites: Download ISL 0.15 instead of 0.14.
From-SVN: r231329
Jan Hubicka [Sun, 6 Dec 2015 05:45:16 +0000 (06:45 +0100)]
* ipa-icf.c (sem_function::merge): Check that local_original exists.
From-SVN: r231328
GCC Administrator [Sun, 6 Dec 2015 00:16:12 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r231326
Juoko Orava [Sat, 5 Dec 2015 18:12:26 +0000 (20:12 +0200)]
re PR fortran/50201 (gfortran with -static causes seg fault at runtime for writing double prec array with precision increased to kind=16)
2015-12-05 Juoko Orava <jouko.orava@iki.fi>
PR fortran/50201
* io/write_float.def: Avoid marking quadmath_snprintf as an untyped
weak reference, which fixing linking with -static.
From-SVN: r231320
Paul Thomas [Sat, 5 Dec 2015 17:10:33 +0000 (17:10 +0000)]
re PR fortran/68676 (ICE in gfc_match_formal_arglist when compiling gfortran.dg/submodule_10.f08)
2015-12-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/68676
* decl.c (gfc_match_formal_arglist): Correct error, where 'sym'
was used instead of 'progname'.
From-SVN: r231319
David Edelsohn [Sat, 5 Dec 2015 12:55:43 +0000 (12:55 +0000)]
* gcc.target/powerpc/recip-sqrtf.c: New test.
From-SVN: r231318
David Edelsohn [Sat, 5 Dec 2015 12:53:45 +0000 (12:53 +0000)]
re PR target/68609 (PowerPC reciprocal estimate missed opportunities)
PR target/68609
* config/rs6000/rs6000-protos.h (rs6000_emit_swsqrt): Rename and add
bool arguement.
* config/rs6000/rs6000.c (rs6000_emit_swsqrt): Rename. Add
non-reciporcal path.
* config/rs6000/rs6000.md (rsqrt<mode>2): Call new function name.
(sqrt<mode>2): Replace define_insn with define_expand that may call
rs6000_emit_swsqrt.
From-SVN: r231317
GCC Administrator [Sat, 5 Dec 2015 00:16:11 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r231314
Aditya Kumar [Fri, 4 Dec 2015 21:38:56 +0000 (21:38 +0000)]
check that all the scev applied ops have are dominated by their defs
2015-12-02 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>
* gcc.dg/graphite/id-29.c: New test.
gcc/ChangeLog:
2015-12-02 Aditya Kumar <aditya.k7@samsung.com>
Sebastian Pop <s.pop@samsung.com>
* graphite-isl-ast-to-gimple.c (translate_isl_ast_node_user): Improve debug.
(get_rename_from_scev): Check that all the ops in an expression have their uses dominated by corresponding defs.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r231310
Aditya Kumar [Fri, 4 Dec 2015 21:36:55 +0000 (21:36 +0000)]
fix PR68693: Check for loop structure when extending the SCoP
The check for dominance while extending the scop assumed that
multiple successors meant a loop which is not true in case of
conditionals around the loop.
Improved pretty printers for better debugging.
PR tree-optimization/68693
* graphite-scop-detection.c (dot_all_sese): New
(dot_all_scops_1): Renamed to dot_all_sese.
(dot_all_scops): Removed.
(dot_sese): New.
(dot_cfg): New.
(scop_detection::get_nearest_dom_with_single_entry): Check that preds are from different loop levels.
(scop_detection::get_nearest_pdom_with_single_exit): Check that succs are from different loop levels.
(scop_detection::print_sese): Inlined.
(scop_detection::print_edge): New.
(scop_detection::merge_sese): Added dumps.
* graphite.h: Add declarations.
gcc/testsuite/ChangeLog:
* gfortran.dg/graphite/pr68693.f90: New test.
Co-Authored-By: Sebastian Pop <s.pop@samsung.com>
From-SVN: r231309
James Greenhalgh [Fri, 4 Dec 2015 20:02:56 +0000 (20:02 +0000)]
[AArch64] Add register constraints to add<mode>3_pluslong
gcc/
2015-12-04 James Greenhalgh <james.greenhalgh@arm.com>
* config/aarch64/aarch64.md (add<mode>3_pluslong): Add register
constraints.
gcc/testsuite/
2015-12-04 James Greenhalgh <james.greenhalgh@arm.com>
* gcc.c-torture/compile/
20151204.c: New.
From-SVN: r231304
Nathan Sidwell [Fri, 4 Dec 2015 19:58:43 +0000 (19:58 +0000)]
* gcc.dg/vla-24.c: Requires alloca.
From-SVN: r231303
Vladimir Makarov [Fri, 4 Dec 2015 19:23:21 +0000 (19:23 +0000)]
re PR rtl-optimization/68349 (ice in decompose_normal_address with -O2 at rtlanal.c:6086)
2015-12-04 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/68349
* lra-eliminations.c (move_plus_up): New function.
(lra_eliminate_regs_1): Use the function.
2015-12-04 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/68349
* gcc.target/i386/pr68349.c: New test.
From-SVN: r231300
Nathan Sidwell [Fri, 4 Dec 2015 18:41:46 +0000 (18:41 +0000)]
nvptx.c (nvptx_assemble_decl_begin): New, replacing ...
gcc/
* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): New,
replacing ...
(init_output_initializer): ... this.
(nvptx_output_aligned_decl, nvptx_asm_declare_constant_name,
nvptx_declare_object_name, nvptx_assemble_undefined_decl): Use
nvptx_assemble_decl_begin.
gcc/testsuite/
* gcc.target/nvptx/ary-init.c: New.
From-SVN: r231298
Dmitry Vyukov [Fri, 4 Dec 2015 18:27:54 +0000 (10:27 -0800)]
Add fuzzing coverage support
* sancov.c: New file.
* Makefile.in (OBJS): Add sancov.o.
* invoke.texi (-fsanitize-coverage=trace-pc): Describe.
* passes.def (sancov_pass): Add.
* tree-pass.h (sancov_pass): Add.
* common.opt (-fsanitize-coverage=trace-pc): Add.
* sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_PC): Add.
* builtins.def (DEF_SANITIZER_BUILTIN): Enable for
flag_sanitize_coverage.
From-SVN: r231296
Eric Botcazou [Fri, 4 Dec 2015 18:25:54 +0000 (18:25 +0000)]
re PR middle-end/65958 (-fstack-check breaks alloca on architectures using generic stack checking)
PR middle-end/65958
* config/arm/unspecs.md (unspec): Remove UNSPEC_PROBE_STACK_RANGE.
(unspecv): Add VUNSPEC_PROBE_STACK_RANGE.
* config/arm/arm.md (probe_stack_range): Adjust.
* config/aarch64/aarch64.md (unspec): Remove UNSPEC_PROBE_STACK_RANGE.
(unspecv): Add UNSPECV_PROBE_STACK_RANGE.
(probe_stack_range_<PTR:mode>): Adjust.
From-SVN: r231295
Jason Merrill [Fri, 4 Dec 2015 18:18:27 +0000 (13:18 -0500)]
re PR c++/68645 (FAIL: c-c++-common/attr-simd-3.c -std=gnu++11 (test for excess errors))
PR c++/68645
* parser.c (cp_parser_direct_declarator)
(cp_parser_late_return_type_opt): Put Cilk+ attributes on
declarator->attributes, not std_attributes.
From-SVN: r231294
David Malcolm [Fri, 4 Dec 2015 18:09:54 +0000 (18:09 +0000)]
C++ FE: expression ranges
gcc/ChangeLog:
* convert.c (convert_to_real_1): When converting from a
REAL_TYPE, preserve the location of EXPR in the result.
* tree.c (get_pure_location): Make non-static.
(set_source_range): Return the resulting location_t.
(make_location): New function.
* tree.h (get_pure_location): New decl.
(get_finish): New inline function.
(set_source_range): Convert return type from void to location_t.
(make_location): New decl.
gcc/cp/ChangeLog:
* cp-tree.h (class cp_expr): New class.
(finish_parenthesized_expr): Convert return type and param to
cp_expr.
(perform_koenig_lookup): Convert return type and param from tree
to cp_expr.
(finish_increment_expr): Likewise.
(finish_unary_op_expr): Likewise.
(finish_id_expression): Likewise for return type.
(build_class_member_access_expr): Likewise for param.
(finish_class_member_access_expr): Likewise.
(build_x_unary_op): Likewise.
(build_c_cast): New decl.
(build_x_modify_expr): Convert return type from tree to cp_expr.
* cvt.c (cp_convert_and_check): When warning about conversions,
attempt to use the location of "expr" if available, otherwise
falling back to the old behavior of using input_location.
* name-lookup.c (lookup_arg_dependent_1): Convert return type from
tree to cp_expr.
(lookup_arg_dependent): Likewise; also for local "ret".
* name-lookup.h (lookup_arg_dependent): Likewise for return type.
* parser.c (cp_lexer_previous_token): Skip past purged tokens.
(struct cp_parser_expression_stack_entry): Convert field "lhs" to
cp_expr.
(cp_parser_identifier): Likewise for return type. Use cp_expr
ctor to preserve the token's location.
(cp_parser_string_literal): Likewise, building up a meaningful
location for the case where a compound string literal is built by
concatentation.
(cp_parser_userdef_char_literal): Likewise for return type.
(cp_parser_userdef_numeric_literal): Likewise.
(cp_parser_statement_expr): Convert return type to cp_expr.
Generate a suitable location for the expr and return it via the
cp_expr ctor.
(cp_parser_fold_expression): Convert return type to cp_expr.
(cp_parser_primary_expression): Likewise, and for locals "expr",
"lam", "id_expression", "decl".
Use cp_expr ctor when parsing literals, to preserve the spelling
location of the token. Preserve the locations of parentheses.
Preserve location when calling objc_lookup_ivar.
Preserve the location for "this" tokens. Generate suitable
locations for "__builtin_va_arg" constructs and for
Objective C 2.0 dot-syntax. Set the location for the result of
finish_id_expression.
(cp_parser_primary_expression): Convert return type from tree to
cp_expr.
(cp_parser_id_expression): Likewise.
(cp_parser_unqualified_id): Likewise. Also for local "id".
(cp_parser_postfix_expression): Likewise, also for local
"postfix_expression". Generate suitable locations for
C++-style casts, "_Cilk_spawn" constructs. Convert local
"initializer" to cp_expr and use it to preserve the location of
compound literals. Capture the location of the closing
parenthesis of a call site via
cp_parser_parenthesized_expression_list, and use it to build
a source range for a call. Use cp_expr in ternary expression.
(cp_parser_postfix_dot_deref_expression): Convert param from tree to
cp_expr. Generate and set a location.
(cp_parser_parenthesized_expression_list): Add "close_paren_loc"
out-param, and write back to it.
(cp_parser_unary_expression): Convert return type from tree to
cp_expr. Also for locals "cast_expression" and "expression".
Generate and use suitable locations for addresses of
labels and for cast expressions. Call cp_expr::set_location where
necessary. Preserve the locations of negated numeric literals.
(cp_parser_new_expression): Generate meaningful locations/ranges.
(cp_parser_cast_expression): Convert return type from tree to
cp_expr; also for local "expr". Use the paren location to generate a
meaningful range for the expression.
(cp_parser_binary_expression): Convert return type from tree to
cp_expr; also for local "rhs". Generate a meaningful location
for the expression, and use it. Replace call to
protected_set_expr_location by converting a build2 to a build2_loc
and using the location in the call to build_x_binary_op, adding a
cp_expr::set_location to the latter case.
(cp_parser_question_colon_clause): Convert param from tree to
cp_expr; also for local "assignment_expr". Set the spelling range
of the expression.
(cp_parser_assignment_expression): Likewise for return type and
locals "expr" and "rhs". Build a meaningful spelling range for
the expression. Remove saving of input_location in favor of a
call to cp_expr::set_location.
(cp_parser_expression): Convert return type and locals
"expression" and "assignment_expression" to cp_expr. Build a
meaningful spelling range for assignment expressions.
(cp_parser_constant_expression): Likewise for return type and
local "expression".
(cp_parser_builtin_offsetof): Convert return type and local "expr"
to cp_expr. Generate suitable locations.
(cp_parser_lambda_expression): Convert return return type to
cp_expr.
(cp_parser_operator_function_id): Likewise.
(cp_parser_operator): Likewise. Generate a meaningful range,
using cp_expr's ctor to return it.
(cp_parser_template_id): When converting a token to
CPP_TEMPLATE_ID, update the location.
(cp_parser_initializer_clause): Convert return type and local
"initializer" to cp_expr.
(cp_parser_braced_list): Likewise for return type. Generate
suitable locations.
(cp_parser_lookup_name): Likewise for return type. Use cp_expr's
ctor to preserve the location_t of the name.
(cp_parser_simple_cast_expression): Likewise for return type.
(cp_parser_functional_cast): Convert return type and local "cast"
to cp_expr. Generate suitable locations.
(cp_parser_objc_expression): Convert return type to cp_expr.k Generate
(cp_parser_objc_message_expression): Generate suitable locations.
(cp_parser_objc_encode_expression): Convert return type to
cp_expr. Generate suitable locations.
(cp_parser_objc_protocol_expression): Generate suitable locations.
(cp_parser_objc_selector_expression): Generate suitable locations.
(cp_parser_omp_for_cond): Attempt to use the location
of "cond" for the binary op.
(cp_parser_transaction_expression): Issue the tm-not-enabled error
at the location of the __transaction_foo token, rather than at
input_location.
* semantics.c (finish_parenthesized_expr): Convert return type and
param to cp_expr. Preserve location.
(perform_koenig_lookup): Likewise for return type
and param.
(finish_increment_expr): Likewise. Generate suitable locations.
(finish_unary_op_expr): Likewise for return type and local "result".
Generate suitable locations.
(finish_id_expression): Convert return type to cp_expr and use
cp_expr ctor to preserve location information.
* typeck.c (build_class_member_access_expr): Convert param to
cp_expr.
(finish_class_member_access_expr): Likewise.
(cp_build_binary_op): Convert a build2 to a build2_loc.
(build_x_unary_op): Convert param from tree to cp_expr.
(build_nop): Preserve the location of EXPR.
(build_c_cast): Provide an overloaded variant that takes a cp_expr
and returns a cp_expr.
(build_x_modify_expr): Convert return type from tree to cp_expr.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/nsdmi-template14.C: Move dg-error directive.
* g++.dg/gomp/loop-1.C: Update dg-error locations.
* g++.dg/plugin/diagnostic-test-expressions-1.C: New file, adapted
from gcc.dg/plugin/diagnostic-test-expressions-1.c.
* g++.dg/plugin/plugin.exp (plugin_test_list): Add the above.
* g++.dg/template/crash55.C: Update dg-error directives.
* g++.dg/template/pseudodtor3.C: Update column numbers in dg-error
directives.
* g++.dg/template/pr64100.C: Update location of dg-error
directive.
* g++.dg/template/ref3.C: Add XFAIL (PR c++/68699).
* g++.dg/ubsan/pr63956.C: Update dg directives to reflect
improved location information.
* g++.dg/warn/pr35635.C (func3): Update location of a
dg-warning.
* g++.dg/warn/Wconversion-real-integer2.C: Update location of
dg-warning; add a dg-message.
* obj-c++.dg/plugin/diagnostic-test-expressions-1.mm: New file,
based on objc.dg/plugin/diagnostic-test-expressions-1.m.
* obj-c++.dg/plugin/plugin.exp: New file, based on
objc.dg/plugin/plugin.exp.
From-SVN: r231293
Jakub Jelinek [Fri, 4 Dec 2015 18:04:06 +0000 (19:04 +0100)]
re PR middle-end/68656 (warning about disabled var-tracking uses odd location info)
PR c/68656
* toplev.c (init_asm_output): Pass UNKNOWN_LOCATION instead of
input_location to inform.
(process_options): Use warning_at (UNKNOWN_LOCATION instead of
warning ( and error_at (UNKNOWN_LOCATION instead of error (.
Pass UNKNOWN_LOCATION instead of input_location to fatal_error.
* gcc.target/i386/pr65044.c: Expect error on line 0 rather than
line 1.
* g++.dg/opt/pr34036.C: Expect warning on line 0 rather than line 1.
* gcc.dg/tree-ssa/pr23109.c: Likewise.
* gcc.dg/tree-ssa/recip-5.c: Likewise.
* gcc.dg/pr33007.c: Likewise.
From-SVN: r231292
Jan Hubicka [Fri, 4 Dec 2015 18:02:26 +0000 (19:02 +0100)]
* ipa-inline.c (can_inline_edge_p) Use merged_comdat.
* cgraphclones.c (cgraph_node::create_clone): Use merged_comdat.
* cgraph.c (cgraph_node::dump): Dump merged_comdat.
* ipa-icf.c (sem_function::merge): Drop merged_comdat when merging
comdat and non-comdat.
* cgraph.h (cgraph_node): Rename merged to merged_comdat.
* ipa-inline-analysis.c (simple_edge_hints): Check both merged_comdat
and icf_merged.
* lto-symtab.c (lto_cgraph_replace_node): Update code computing
merged_comdat.
From-SVN: r231291
Paolo Bonzini [Fri, 4 Dec 2015 17:43:53 +0000 (17:43 +0000)]
c-common.c (maybe_warn_shift_overflow): Warn on all overflows if shifting 1 out of the sign bit.
gcc:
2015-12-04 Paolo Bonzini <bonzini@gnu.org>
* c-family/c-common.c (maybe_warn_shift_overflow): Warn on all
overflows if shifting 1 out of the sign bit.
gcc/testsuite:
2015-12-04 Paolo Bonzini <bonzini@gnu.org>
* c-c++-common/Wshift-overflow-1.c: Test shifting 1 out of the sign bit.
* c-c++-common/Wshift-overflow-2.c: Test shifting 1 out of the sign bit.
* c-c++-common/Wshift-overflow-3.c: Test shifting 1 out of the sign bit.
* c-c++-common/Wshift-overflow-4.c: Test shifting 1 out of the sign bit.
* c-c++-common/Wshift-overflow-6.c: Test shifting 1 out of the sign bit.
* c-c++-common/Wshift-overflow-7.c: Test shifting 1 out of the sign bit.
From-SVN: r231290
Jonathan Wakely [Fri, 4 Dec 2015 17:32:40 +0000 (17:32 +0000)]
PR libstdc++/57060 cope with invalid thread IDs
PR libstdc++/57060
* include/std/thread (operator==(thread::id, thread::id)): Do not use
__gthread_equal.
(operator<(thread::id, thread::id)): Add comment.
(this_thread::get_id()): Do not use __gthread_self for single-threaded
programs using glibc.
* testsuite/30_threads/this_thread/57060.cc: New.
From-SVN: r231289
Segher Boessenkool [Fri, 4 Dec 2015 17:28:54 +0000 (18:28 +0100)]
rs6000: Clean up the cstore code a bit
"register_operand" was a bit confusing. Also some other minor cleanups.
* (cstore<mode>4_unsigned): Use gpc_reg_operand instead of
register_operand. Remove empty constraints. Use std::swap.
(cstore_si_as_di, cstore<mode>4_signed_imm,
cstore<mode>4_unsigned_imm, cstore<mode>4 for GPR): Use
gpc_reg_operand instead of register_operand.
(cstore<mode>4 for FP): Use gpc_reg_operand instead of
register_operand. Remove empty constraints.
From-SVN: r231287
Nick Clifton [Fri, 4 Dec 2015 17:24:30 +0000 (17:24 +0000)]
gcc * config.gcc (extra_gcc_objs): Define for MSP430.
* common/config/msp430/msp430-common.c (msp430_handle_option):
Pass both -mmcu and -mcpu on to the back end if they are both
defined.
* config/msp430/msp430.c (hwmult_name): New function.
(msp430_option_override): If an unrecognised MCU name is
detected only warn if the user has not provided suitable
-mhwmult and -mcpu options. Use msp430_warn_mcu to control
warning messages. Generate warnings about conflicts between
-mmcu and -mcpu and -mhwmult options.
If neither -mcpu nor -mmcu have been specified but -mhwmult=
f5series has the select the 430X isa.
(msp430_no_hwmult): If -mmcu has not been specified and
msp430_hwmult_type is AUTO then return true.
* config/msp430/msp430.h (EXTRA_SPEC_FUNCTIONS): Define.
(LIB_SPEC): Add hardware multiply library selection.
* config/msp430/t-msp430: Delete hardware multiply multilibs.
Add rule to build driver-msp430.o
* config/msp430/driver-msp430.c: New file.
* config/msp430/msp430.opt (warn-mcu): New option.
* doc/invoke.texi: Update description of -mhwmult=auto.
Document -mwarn-mcu option.
tests * gcc.target/msp430/msp_abi_div_funcs.c: New test.
* gcc.target/msp430/mul_main.h: New test support file.
* gcc.target/msp430/mul_none.c: New test.
* gcc.target/msp430/mul_16bit.c: New test.
* gcc.target/msp430/mul_32bit.c: New test.
* gcc.target/msp430/mul_f5.c: New test.
libgcc * config/msp430/mpy.c (__mulhi3): Use a faster algorithm.
Allow for the second argument being negative.
* config.host (extra_parts): Define for MSP430. Create separate
libraries for each of the hardware multiply formats.
* config/msp430/lib2hw_mul.S: Build only the multiply routines
that are needed.
* config/msp430/lib2mul.c: Likewise.
* config/msp430/t-msp430 (LIB2ADD): Remove lib2hw_mul.S.
Add rules to build hardware multiply libraries.
* config/msp430/lib2divSI.c: (__mspabi_divlu): Alias for
__mspabi_divul function.
(__mspabi_divllu): New stub function.
From-SVN: r231286
Segher Boessenkool [Fri, 4 Dec 2015 17:22:38 +0000 (18:22 +0100)]
I really do hate this keyboard.
From-SVN: r231285
Segher Boessenkool [Fri, 4 Dec 2015 17:21:49 +0000 (18:21 +0100)]
rs6000: Implement cstore for signed Pmode register compares
This implements cstore for the last case we do not yet handle, using
the superopt algo from the venerable CWG. The only integer cases we
do still not handle after this are for -m32 -mpowerpc64.
* (cstore<mode>4_signed): New expander.
(cstore<mode>4): Call it.
From-SVN: r231284
Jakub Jelinek [Fri, 4 Dec 2015 16:40:05 +0000 (17:40 +0100)]
* tree-tailcall.c (find_tail_calls): Ignore GIMPLE_NOPs.
From-SVN: r231282
Steven G. Kargl [Fri, 4 Dec 2015 16:37:54 +0000 (16:37 +0000)]
re PR fortran/68684 (gcc/fortran/resolve.c:8748: bad if test ?)
2015-12-04 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68684
* resolve.c (resolve_lock_unlock_event): Fix logic faux pas.
From-SVN: r231281
Jakub Jelinek [Fri, 4 Dec 2015 16:32:22 +0000 (17:32 +0100)]
re PR tree-optimization/68680 (On-stack VLA does not cause instrumentation with -fstack-protector)
PR tree-optimization/68680
* calls.c (special_function_p): Return ECF_MAY_BE_ALLOCA for
BUILT_IN_ALLOCA{,_WITH_ALIGN}. Don't check for __builtin_alloca
by name.
* gcc.target/i386/pr68680.c: New test.
From-SVN: r231279
Jakub Jelinek [Fri, 4 Dec 2015 16:23:27 +0000 (17:23 +0100)]
re PR tree-optimization/68671 (gcc.dg/torture/pr66952.c FAILs with -fno-tree-dce)
PR tree-optimization/68671
* tree-ssa-reassoc.c (maybe_optimize_range_tests): For basic
blocks starting with the successor of first bb we've modified
and ending with last_bb call reset_flow_sensitive_info_in_bb.
* gcc.dg/pr68671.c: New test.
From-SVN: r231278
Jeff Law [Fri, 4 Dec 2015 16:19:30 +0000 (09:19 -0700)]
tree-ssa-reassoc.c (maybe_optimize_range_tests): Return boolean indicating if a gimple conditional was optimized to true/false.
* tree-ssa-reassoc.c (maybe_optimize_range_tests): Return boolean
indicating if a gimple conditional was optimized to true/false.
(reassociate_bb): Bubble up return value from
maybe_optimize_range_tests.
(do_reassoc): Similarly, but for reassociate_bb.
(execute_reassoc): Return TODO_cleanup_cfg as needed.
* gcc.dg/tree-ssa/reassoc-43.c: New test.
From-SVN: r231277
Kyrylo Tkachov [Fri, 4 Dec 2015 15:02:42 +0000 (15:02 +0000)]
[AArch64] Don't allow -mgeneral-regs-only to change the .arch assembler directives
* config/aarch64/aarch64.c (aarch64_override_options_internal):
Do not alter target_flags due to TARGET_GENERAL_REGS_ONLY_P.
* doc/invoke.texi (AArch64 options): Mention that -mgeneral-regs-only
does not affect the assembler directives.
* gcc.target/aarch64/mgeneral-regs_4.c: New test.
From-SVN: r231275
Dominik Vogt [Fri, 4 Dec 2015 14:35:14 +0000 (14:35 +0000)]
S/390: Add -mbackchain options to fix test failure.
gcc/testsuite/ChangeLog
* gcc.dg/Wframe-address.c: S/390 requires the -mbackchain option to
access arbitrary stack frames.
* gcc.dg/Wno-frame-address.c: Likewise.
From-SVN: r231273
Dominik Vogt [Fri, 4 Dec 2015 14:33:01 +0000 (14:33 +0000)]
[PATCH 2/2] S/390: Implement "target" attribute.
gcc/ChangeLog
* config/s390/s390.c (s390_asm_file_start): Implement hook function to
emit .machine and .machinemode to the top of the assembler file.
(TARGET_ASM_FILE_START): Provide target hook.
(s390_asm_output_machine_for_arch): Protect with
HAVE_AS_MACHINE_MACHINEMODE instead of S390_USE_TARGET_ATTRIBUTE.
gcc/testsuite/ChangeLog
* gcc.target/s390/asm-machine-1.c: Updated.
* gcc.target/s390/asm-machine-2.c: Updated.
* gcc.target/s390/asm-machine-3.c: Updated.
* gcc.target/s390/asm-machine-4.c: Updated.
From-SVN: r231272
Dominik Vogt [Fri, 4 Dec 2015 14:30:42 +0000 (14:30 +0000)]
[PATCH 1/2] S/390: Implement "target" attribute.
gcc/ChangeLog
* config/s390/s390.opt (s390_arch_string): Remove.
(s390_tune_string): Likewise.
(s390_cost_pointer): Add Variable.
(s390_tune_flags): Add TargetVariable.
(s390_arch_flags, march=, mbackchain, mdebug, mesa, mhard-dfp),
(mhard-float, mlong-double-128, mlong-double-64, mhtm, mvx),
(mpacked-stack, msmall-exec, msoft-float, mstack-guard=, mstack-size=),
(mtune=, mmvcle, mzvector, mzarch, mbranch-cost=, mwarn-dynamicstack),
(mwarn-framesize=): Save option.
(mno-stack-guard, mno-stack-guard): New option.
(mwarn-dynamicstack): Allow mno-warn-dynamicstack.
(mwarn-framesize=): Convert to UInteger (negative values are rejected
now).
* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Split setting
macros changeable through the GCC target pragma into a separate
function.
(s390_cpu_cpp_builtins): Likewise.
(s390_pragma_target_parse): New function, implement GCC target pragma
if enabled.
(s390_register_target_pragmas): Register s390_pragma_target_parse if
available.
* common/config/s390/s390-common.c (s390_handle_option):
Export.
Move setting s390_arch_flags to s390.c.
Remove s390_tune_flags.
Allow 0 as argument to -mstack-size (switch to default value).
Allow 0 as argument to -mstack-guard (switch off).
Remove now unnecessary explicit parsing code for -mwarn-framesize.
* config/s390/s390-protos.h (s390_handle_option): Export.
(s390_valid_target_attribute_tree): Export.
(s390_reset_previous_fndecl): Export.
* config/s390/s390-builtins.def: Use new macro B_GROUP to mark the start
and end of HTM and VX builtins.
(s390_asm_output_function_prefix): Declare hook.
(s390_asm_declare_function_size): Likewise.
* config/s390/s390-builtins.h (B_GROUP): Use macro.
* config/s390/s390-opts.h: Add comment about processor_type usage.
* config/s390/s390.h (TARGET_CPU_IEEE_FLOAT_P, TARGET_CPU_ZARCH_P),
(TARGET_CPU_LONG_DISPLACEMENT_P, TARGET_CPU_EXTIMM_P, TARGET_CPU_DFP_P),
(TARGET_CPU_Z10_P, TARGET_CPU_Z196_P, TARGET_CPU_ZEC12_P),
(TARGET_CPU_HTM_P, TARGET_CPU_Z13_P, TARGET_CPU_VX_P),
(TARGET_HARD_FLOAT_P, TARGET_LONG_DISPLACEMENT_P, TARGET_EXTIMM_P),
(TARGET_DFP_P, TARGET_Z10_P, TARGET_Z196_P, TARGET_ZEC12_P),
(TARGET_HTM_P, TARGET_Z13_P, TARGET_VX_P, TARGET_CPU_EXTIMM),
(TARGET_CPU_DFP, TARGET_CPU_Z10, TARGET_CPU_Z196, TARGET_CPU_ZEC12),
(TARGET_CPU_HTM, TARGET_CPU_Z13, TARGET_LONG_DISPLACEMENT),
(TARGET_EXTIMM, TARGET_DFP, TARGET_Z10, TARGET_Z196, TARGET_ZEC12),
(TARGET_Z13, TARGET_VX, S390_USE_TARGET_ATTRIBUTE),
(S390_USE_ARCHITECTURE_MODIFIERS, SWITCHABLE_TARGET),
(ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_FUNCTION_PREFIX): Likewise.
* config/s390/vecintrin.h: Use vector definitions even if __VEC__ is
undefined.
(vec_all_nan): Rewrite as macro using statement expressions to avoid
that the vector keyword needs to be defined when including the file.
(vec_all_numeric): Likewise.
(vec_any_nan): Likewise.
(vec_any_numeric): Likewise.
* config/s390/s390.c (s390_previous_fndecl): New static variable.
(s390_set_current_function): New function.
(s390_cost): Wrapper macro to allow defining the cost table pointer in
the options file.
(processor_table): Table for march= and mtune= parsing.
(s390_init_builtins): Enable all builtins and types unconditionally.
(s390_expand_builtin): Generate an error message if builtin is not
supported by current options.
Correct an error message.
(s390_function_specific_restore): New function to set s390_cost.
(s390_asm_output_machine_for_arch): New function for emitting .machine
and .machinmode directives to the assembler file.
(s390_asm_output_function_prefix): Likewise.
(s390_asm_declare_function_size): Likewise.
(s390_asm_output_function_label): Add mdebug output for feature testing.
(s390_option_override): Move implementation into internal function.
(s390_option_override_internal): Likewise.
Implement option overriding based on current options.
(s390_valid_target_attribute_inner_p): New function implementing target
attribute logic.
(s390_valid_target_attribute_tree): Likewise.
(s390_valid_target_attribute_p): Likewise.
(s390_reset_previous_fndecl): Likewise.
(s390_set_current_function): Likewise.
(TARGET_SET_CURRENT_FUNCTION): Provide target hook function.
(TARGET_OPTION_VALID_ATTRIBUTE_P): Likewise.
(TARGET_OPTION_RESTORE): Likewise.
* doc/extend.texi: S390: Document target attribute and pragma.
* config.in: Regenerated.
* configure: Regenerated.
* configure.ac: S390: Check for .machinemode and .machine in gas.
S390: Check for architecture modifiers support in gas.
gcc/testsuite/ChangeLog
* gcc.target/s390/asm-machine-1.c: New test.
* gcc.target/s390/asm-machine-2.c: New test.
* gcc.target/s390/asm-machine-3.c: New test.
* gcc.target/s390/asm-machine-4.c: New test.
* gcc.target/s390/target-attribute/tattr-1.c: New test.
* gcc.target/s390/target-attribute/tattr-2.c: New test.
* gcc.target/s390/target-attribute/tattr-3.c: New test.
* gcc.target/s390/target-attribute/tattr-4.c: New test.
* gcc.target/s390/target-attribute/tattr-5.c: New test.
* gcc.target/s390/target-attribute/tattr-6.c: New test.
* gcc.target/s390/target-attribute/tattr-7.c: New test.
* gcc.target/s390/target-attribute/tattr-8.c: New test.
* gcc.target/s390/target-attribute/tattr-9.c: New test.
* gcc.target/s390/target-attribute/tattr-10.c: New test.
* gcc.target/s390/target-attribute/tattr-11.c: New test.
* gcc.target/s390/target-attribute/tattr-12.c: New test.
* gcc.target/s390/target-attribute/tattr-13.c: New test.
* gcc.target/s390/target-attribute/tattr-14.c: New test.
* gcc.target/s390/target-attribute/tattr-15.c: New test.
* gcc.target/s390/target-attribute/tattr-16.c: New test.
* gcc.target/s390/target-attribute/tattr-17.c: New test.
* gcc.target/s390/target-attribute/tattr-18.c: New test.
* gcc.target/s390/target-attribute/tattr-19.c: New test.
* gcc.target/s390/target-attribute/tattr-arch-tune-1.c: New test.
* gcc.target/s390/target-attribute/tattr-arch-tune-2.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-1.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-2.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-3.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-4.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-5.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-6.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-7.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-8.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-9.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-10.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-11.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-12.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-13.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-14.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-15.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-16.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-17.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-18.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-19.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-20.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-21.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-22.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-23.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-24.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-25.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-26.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-27.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-28.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-29.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-30.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-31.c: New test.
* gcc.target/s390/target-attribute/tattr-m31-32.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-1.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-2.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-3.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-4.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-5.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-6.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-7.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-8.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-9.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-10.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-11.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-12.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-13.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-14.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-15.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-16.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-17.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-18.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-19.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-20.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-21.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-22.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-23.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-24.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-25.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-26.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-27.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-28.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-29.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-30.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-31.c: New test.
* gcc.target/s390/target-attribute/tattr-m64-32.c: New test.
* gcc.target/s390/target-attribute/tpragma-struct-vx-2.c: New test.
* gcc.target/s390/s390.exp (check_effective_target_target_attribute):
Add check whether target attribute is available.
Run test in target-attribute subdir.
* gcc.target/s390/s390-c++.exp
(check_effective_target_target_attribute): Likewise.
From-SVN: r231271
Kirill Yukhin [Fri, 4 Dec 2015 14:22:06 +0000 (14:22 +0000)]
Add notinbranch/inbranch flags to attribute __simd__.
gcc/
* c-family/c-common.c (c_common_attribute_table[]): Update max arguments
count for "simd" attribute.
(handle_simd_attribute): Parse "notinbranch" and "inbranch" arguments.
* doc/extend.texi ("simd"): Describe new flags.
gcc/testsuite/
* c-c++-common/attr-simd-4.c: New test.
* c-c++-common/attr-simd-5.c: New test.
From-SVN: r231270
Ilya Enkovich [Fri, 4 Dec 2015 14:18:58 +0000 (14:18 +0000)]
sse.md (<avx512>_store<mode>_mask): Fix operand checked for alignment.
gcc/
* config/i386/sse.md (<avx512>_store<mode>_mask): Fix
operand checked for alignment.
From-SVN: r231269
Nathan Sidwell [Fri, 4 Dec 2015 14:02:27 +0000 (14:02 +0000)]
nvptx.c (write_one_arg): Deal with prologue emission too.
* config/nvptx/nvptx.c (write_one_arg): Deal with prologue
emission too. Change 'no_arg_types' to 'prototyped'.
(write_fn_proto): Use write_one_arg for stdarg, static chain &
main.
(nvptx_declare_function_name): Use write_one_arg for prologue copies.
From-SVN: r231267
Nathan Sidwell [Fri, 4 Dec 2015 13:47:47 +0000 (13:47 +0000)]
* gcc.dg/graphite/id-28.c: Requires pthreads.
From-SVN: r231266
Richard Biener [Fri, 4 Dec 2015 12:32:26 +0000 (12:32 +0000)]
tree-ssa-sccvn.c (sccvn_dom_walker): Add unreachable_dom member and initialize it.
2015-12-04 Richard Biener <rguenther@suse.de>
* tree-ssa-sccvn.c (sccvn_dom_walker): Add unreachable_dom
member and initialize it.
(sccvn_dom_walker::after_dom_children): Reset unreachable_dom
if necessary.
(sccvn_dom_walker::before_dom_children): If unreachable_dom
is set BB is not reachable either. Set unreachable_dom
if not set and BB is unreachable.
From-SVN: r231262
Richard Biener [Fri, 4 Dec 2015 11:58:59 +0000 (11:58 +0000)]
bitmap.c (bitmap_find_bit): Guard the bitmap descriptor query with GATHER_STATISTICS.
2015-12-04 Richard Biener <rguenther@suse.de>
* bitmap.c (bitmap_find_bit): Guard the bitmap descriptor
query with GATHER_STATISTICS.
From-SVN: r231261
Eric Botcazou [Fri, 4 Dec 2015 11:57:15 +0000 (11:57 +0000)]
re PR middle-end/65958 (-fstack-check breaks alloca on architectures using generic stack checking)
PR middle-end/65958
* gimplify.c (struct gimplify_ctx): Turn boolean fields into 1-bit
fields, add keep_stack and reorder them.
(gimplify_bind_expr): Save gimplify_ctxp->keep_stack on entry then
set it to false. Do not insert a stack save/restore pair if it has
been set to true by the gimplification of the statements.
Restore it to the saved value on exit if it is still false.
(gimplify_vla_decl): Do not set gimplify_ctxp->save_stack here.
(gimplify_call_expr) <BUILT_IN_ALLOCA[_WITH_ALIGN]>: New case. Set
either save_stack or keep_stack depending on CALL_ALLOCA_FOR_VAR_P.
* doc/extend.texi (Variable Length): Document new behavior.
* doc/generic.texi (Blocks): Document new handling of VLAs.
From-SVN: r231260
Eric Botcazou [Fri, 4 Dec 2015 11:52:04 +0000 (11:52 +0000)]
re PR middle-end/65958 (-fstack-check breaks alloca on architectures using generic stack checking)
PR middle-end/65958
* config/aarch64/aarch64-protos.h (aarch64_output_probe_stack-range):
Declare.
* config/aarch64/aarch64.md: Declare UNSPECV_BLOCKAGE and
UNSPEC_PROBE_STACK_RANGE.
(blockage): New instruction.
(probe_stack_range_<PTR:mode>): Likewise.
* config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): New
function.
(aarch64_output_probe_stack_range): Likewise.
(aarch64_expand_prologue): Invoke aarch64_emit_probe_stack_range if
static builtin stack checking is enabled.
* config/aarch64/aarch64-linux.h (STACK_CHECK_STATIC_BUILTIN):
Define to 1.
Co-Authored-By: Tristan Gingold <gingold@adacore.com>
From-SVN: r231259
Richard Biener [Fri, 4 Dec 2015 09:56:28 +0000 (09:56 +0000)]
re PR testsuite/68681 (testcase gcc.dg/vect/pr45752.c fails on AArch64)
2015-12-04 Richard Biener <rguenther@suse.de>
PR testsuite/68681
* gcc.dg/vect/pr45752.c: Add --param tree-reassoc-width=1.
From-SVN: r231253
Kyrylo Tkachov [Fri, 4 Dec 2015 09:44:42 +0000 (09:44 +0000)]
[ARM] PR target/68214: Delete IP-reg-clobbering call-through-mem patterns
PR target/68214
* config/arm/arm.md (*call_mem): Delete pattern.
(*call_value_mem): Likewise.
* config/arm/arm.c (output_call_mem): Delete.
* config/arm/arm-protos.h (output_call_mem): Delete prototype.
From-SVN: r231252
Bin Cheng [Fri, 4 Dec 2015 09:35:22 +0000 (09:35 +0000)]
atomics.md (atomic_store<mode>): Use predicate aarch64_sync_memory_operand.
* config/aarch64/atomics.md (atomic_store<mode>): Use predicate
aarch64_sync_memory_operand.
From-SVN: r231251
Eric Botcazou [Fri, 4 Dec 2015 08:52:24 +0000 (08:52 +0000)]
c-tree.h (c_build_va_arg): Adjust prototype.
* c-tree.h (c_build_va_arg): Adjust prototype.
* c-parser.c (c_parser_postfix_expression): Adjust call to above.
* c-typeck.c (c_build_va_arg): Rename LOC parameter to LOC2, add LOC1
parameter, adjust throughout and issue an error if EXPR is a component
with reverse storage order.
From-SVN: r231250
Jakub Jelinek [Fri, 4 Dec 2015 08:25:24 +0000 (09:25 +0100)]
re PR target/68655 (SSE2 cannot vec_perm of low and high part)
PR target/68655
* config/i386/i386.c (canonicalize_vector_int_perm): New function.
(expand_vec_perm_1): Use it and recurse if everything else
failed. Use nd.perm instead of perm2.
(expand_vec_perm_even_odd_1): If testing_p, use gen_raw_REG
instead of gen_lowpart for the target.
(ix86_expand_vec_perm_const_1): Use canonicalize_vector_int_perm
and recurse if everything else failed.
* gcc.dg/torture/vshuf-4.inc (TESTS): Add one extra test.
* gcc.dg/torture/vshuf-4.inc (TESTS): Add two extra tests.
From-SVN: r231247
Richard Biener [Fri, 4 Dec 2015 08:17:50 +0000 (08:17 +0000)]
re PR rtl-optimization/68636 (unnecessary unaligned load on mips o32)
2015-12-04 Richard Biener <rguenther@suse.de>
PR middle-end/68636
* builtins.c (get_pointer_alignment_1): Take care of byte to
bit alignment computation overflow.
From-SVN: r231246
Richard Biener [Fri, 4 Dec 2015 08:09:46 +0000 (08:09 +0000)]
re PR middle-end/67438 (~X op ~Y pattern relocation causes loop performance degradation on 32bit x86)
2015-12-04 Richard Biener <rguenther@suse.de>
PR middle-end/67438
* match.pd: Guard ~X cmp ~Y -> Y cmp X and the variant with
a constant with single_use.
From-SVN: r231245
Bin Cheng [Fri, 4 Dec 2015 03:26:19 +0000 (03:26 +0000)]
aarch64.c (aarch64_legitimize_address): legitimize address expressions like Ra + Rb + CONST and Ra + Rb<<SCALE + CONST.
* config/aarch64/aarch64.c (aarch64_legitimize_address): legitimize
address expressions like Ra + Rb + CONST and Ra + Rb<<SCALE + CONST.
Co-Authored-By: Jiong Wang <jiong.wang@arm.com>
From-SVN: r231244
Cesar Philippidis [Fri, 4 Dec 2015 00:17:48 +0000 (16:17 -0800)]
parser.c (cp_ensure_no_oacc_routine): Update error message.
gcc/cp/
* parser.c (cp_ensure_no_oacc_routine): Update error message.
(cp_parser_oacc_routine): Likewise.
(cp_parser_late_parsing_oacc_routine): Likewise. Update comment
describing this function.
(cp_finalize_oacc_routine): Update error message.
From-SVN: r231243
GCC Administrator [Fri, 4 Dec 2015 00:16:11 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r231242
Jan Hubicka [Thu, 3 Dec 2015 21:57:15 +0000 (22:57 +0100)]
* alias.c (alias_set_subset_of, alias_sets_must_conflict_p)
Short circuit for !flag_strict_aliasing
(get_alias_set): Remove flag_strict_aliasing check.
(new_alias_set): Likewise.
From-SVN: r231239
Evandro Menezes [Thu, 3 Dec 2015 16:08:40 +0000 (16:08 +0000)]
Add cost model for Exynos M1
gcc/
* config/aarch64/aarch64-cores.def: Use the Exynos M1 cost model.
* config/aarch64/aarch64.c (exynosm1_addrcost_table): New variable.
(exynosm1_regmove_cost): Likewise.
(exynosm1_vector_cost): Likewise.
(exynosm1_tunings): Likewise.
* config/arm/aarch-cost-tables.h (exynosm1_extra_costs): Likewise.
* config/arm/arm.c (arm_exynosm1_tune): Likewise.
* config/arm/arm-cores.def: Use the Exynos M1 cost model.
From-SVN: r231233
Alan Lawrence [Thu, 3 Dec 2015 15:46:57 +0000 (15:46 +0000)]
Empty the redirect_edge_var_map after each pass
Alan Lawrence <alan.lawrence@arm.com>
Richard Biener <richard.guenther@gmail.com>
* cfgexpand.c (pass_expand::execute): Replace call to
redirect_edge_var_map_destroy with redirect_edge_var_map_empty.
* tree-ssa.c (delete_tree_ssa): Likewise.
* function.c (set_cfun): Call redirect_edge_var_map_empty.
* passes.c (execute_one_ipa_transform_pass, execute_one_pass): Likewise.
* tree-ssa.h (redirect_edge_var_map_destroy): Remove.
(redirect_edge_var_map_empty): New.
* tree-ssa.c (redirect_edge_var_map_destroy): Remove.
(redirect_edge_var_map_empty): New.
Co-Authored-By: Richard Biener <richard.guenther@gmail.com>
From-SVN: r231232
Jeff Law [Thu, 3 Dec 2015 15:40:08 +0000 (08:40 -0700)]
[PR tree-optimization/68599] Avoid over-zealous optimization with -funsafe-loop-optimizations
PR tree-optimization/68599
* loop-init.c (rtl_loop_init): Set LOOPS_HAVE_RECORDED_EXITS
in call to loop_optimizer_init.
* loop-iv.c (get_simple_loop_desc): Only allow unsafe loop
optimization to drop the assumptions/infinite notations if
the loop has a single exit.
From-SVN: r231231
Richard Sandiford [Thu, 3 Dec 2015 14:36:19 +0000 (14:36 +0000)]
Documentation tweaks for internal-fn-related optabs
As Bernd requested, this patch adds "This pattern cannot FAIL" to the
documentation of optabs that came to be mapped to interal functions.
For consistency I did the same for optabs that were already being
used for internal functions.
Many of the optabs weren't documented in the first place, so I added
entries for the missing ones. Also, there were some inaccuracies in
the documentation of the rounding optabs. The bitcount optabs said
that operand 0 has mode @var{m} and that operand 1 is under target
control, whereas it should be the other way around.
Tested on x86_64-linux-gnu.
gcc/
* doc/md.texi (vec_load_lanes@var{m}@var{n}): Document that
the pattern cannot FAIL.
(vec_store_lanes@var{m}@var{n}): Likewise.
(maskload@var{m}@var{n}): Likewise.
(maskstore@var{m}@var{n}): Likewise. Fix a cut-&-paste error
in the name of the pattern.
(rsqrt@var{m}2): Document that mode m must be a scalar or vector
floating-point mode and that all operands have that mode.
(fmin@var{m}3, fmax@var{m}3): Likewise. Document that the
pattern cannot FAIL.
(sqrt@var{m}2): Document that mode m must be a scalar or vector
floating-point mode, that all operands have that mode, and that
the patterns cannot FAIL. Remove previous documentation referring
to @code{double} and @code{float}.
(fmod@var{m}3, remainder@var{m}3, cos@var{m}2, sin@var{m}2)
(sincos@var{m}3, log@var{m}2, pow@var{m}3, atan2@var{m}3)
(copysign@var{m}3): Likewise.
(exp@var{m}2): Likewise. Explicitly state the base.
(floor@var{m}2): As for sqrt@var{m}2, but also specify the operands.
(btrunc@var{m}2, rint@var{m}2): Likewise.
(round@var{m}2): Likewise. Fix incorrect description of rounding
effect.
(ceil@var{m}2): As for round@var{m}2.
(nearbyint@var{m}2): As for floor@var{m}2, but also mention that
the instruction must not raise an inexact condition.
(scalb@var{m}3): Document previously-undocumented pattern
(ldexp@var{m}3, tan@var{m}2, asin@var{m}2, acos@var{m}2)
(atan@var{m}2, expm1@var{m}2, exp10@var{m}2, exp2@var{m}2)
(log1p@var{m}2, log10@var{m}2, log2@var{m}2, logb@var{m}2)
(significand@var{m}2): Likewise.
(ffs@var{m}2): Fix the description of the modes, so that operand 1 has
mode m and operand 0 is defined more freely. Document that @var{m}
can be a scalar or vector integer mode and that the pattern is not
allowed to FAIL.
(clz@var{m}2, ctz@var{m}2, popcount@var{m}2, parity@var{m}2): Likewise.
(clrsb@var{m}2): Likewise, except that the description of the
mode was missing in this case.
From-SVN: r231230
Richard Sandiford [Thu, 3 Dec 2015 14:31:55 +0000 (14:31 +0000)]
Add an rsqrt_optab and IFN_RSQRT internal function
All current uses of builtin_reciprocal convert 1.0/sqrt into rsqrt.
This patch adds an rsqrt optab and associated internal function for
that instead. We can then pick up the vector forms of rsqrt automatically,
fixing an AArch64 regression from my internal_fn patches.
With that change, builtin_reciprocal only needs to handle target-specific
built-in functions. I've restricted the hook to those since, if we need
a reciprocal of another standard function later, I think there should be
a strong preference for adding a new optab and internal function for it,
rather than hiding the code in a backend.
Three targets implement builtin_reciprocal: aarch64, i386 and rs6000.
i386 and rs6000 already used the obvious rsqrt<mode>2 pattern names
for the instructions, so they pick up the new code automatically.
aarch64 needs a slight rename.
mn10300 is unusual in that its native operation is rsqrt, and
sqrt is approximated as 1.0/rsqrt. The port also uses rsqrt<mode>2
for the rsqrt pattern, so after the patch we now pick it up as a native
operation.
Two other ports define rsqrt patterns: sh and v850. AFAICT these
patterns aren't currently used, but I think the patch does what the
authors of the patterns would have expected. There's obviously some
risk of fallout though.
Tested on x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabihf
(as a target without the hooks) and powerpc64-linux-gnu.
gcc/
* internal-fn.def (RSQRT): New function.
* optabs.def (rsqrt_optab): New optab.
* doc/md.texi (rsqrtM2): Document.
* target.def (builtin_reciprocal): Replace gcall argument with
a function decl. Restrict hook to machine functions.
* doc/tm.texi: Regenerate.
* targhooks.h (default_builtin_reciprocal): Update prototype.
* targhooks.c (default_builtin_reciprocal): Likewise.
* tree-ssa-math-opts.c: Include internal-fn.h.
(internal_fn_reciprocal): New function.
(pass_cse_reciprocals::execute): Call it, and build a call to an
internal function on success. Only call targetm.builtin_reciprocal
for machine functions.
* config/aarch64/aarch64-protos.h (aarch64_builtin_rsqrt): Remove
second argument.
* config/aarch64/aarch64-builtins.c (aarch64_expand_builtin_rsqrt):
Rename aarch64_rsqrt_<mode>2 to rsqrt<mode>2.
(aarch64_builtin_rsqrt): Remove md_fn argument and only handle
machine functions.
* config/aarch64/aarch64.c (use_rsqrt_p): New function.
(aarch64_builtin_reciprocal): Replace gcall argument with a
function decl. Use use_rsqrt_p. Remove optimize_size check.
Only handle machine functions. Update call to aarch64_builtin_rsqrt.
(aarch64_optab_supported_p): New function.
(TARGET_OPTAB_SUPPORTED_P): Define.
* config/aarch64/aarch64-simd.md (aarch64_rsqrt_<mode>2): Rename to...
(rsqrt<mode>2): ...this.
* config/i386/i386.c (use_rsqrt_p): New function.
(ix86_builtin_reciprocal): Replace gcall argument with a
function decl. Use use_rsqrt_p. Remove optimize_insn_for_size_p
check. Only handle machine functions.
(ix86_optab_supported_p): Handle rsqrt_optab.
* config/rs6000/rs6000.c (TARGET_OPTAB_SUPPORTED_P): Define.
(rs6000_builtin_reciprocal): Replace gcall argument with a
function decl. Remove optimize_insn_for_size_p check.
Only handle machine functions.
(rs6000_optab_supported_p): New function.
From-SVN: r231229
Bernd Schmidt [Thu, 3 Dec 2015 14:17:35 +0000 (14:17 +0000)]
Fix some issues with the ROP patch (PR 68471, 68472)
PR target/68471
PR target/68472
* config/i386/i386.c (ix86_mitigate_rop): Don't call
compute_bb_for_insn again. Call df_insn_rescan_all.
* config/i386/i386.md (set_got_rex64): Override modrm_class.
* regrename.c (build_def_use): Ignore stack regs if regstack_completed.
testsuite/
* gcc.target/i386/rop1.c: New test.
From-SVN: r231228
Nathan Sidwell [Thu, 3 Dec 2015 13:59:20 +0000 (13:59 +0000)]
nvptx-protos.h (npvptx_section_from_addr_space): Delete.
gcc/
* config/nvptx/nvptx-protos.h (npvptx_section_from_addr_space): Delete.
* config/nvptx/nvptx.c (enum nvptx_data_area): New.
(SYMBOL_DATA_AREA, SET_SYMBOL_DATA_AREA): New defines.
(nvptx_option_override): Set data ares for worker vars.
(nvptx_addr_space_from_sym): Delete.
(nvptx_encode_section_info): New.
(section_for_sym, section_for_decl): New.
(nvptx_maybe_convert_symbolic_operand): Get data area from symbol
flags,
(nvptx_section_from_addr_space): Delete.
(nvptx_section_for_decl): Delete.
(nvptx_output_aligned, nvptx_declare_object_name,
nvptx_assemble_undefined_decl): Use section_for_decl, remove
unnecessary checks.
(nvptx_print_operand): Add 'D', adjust 'A'.
(nvptx_expand_worker_addr): Adjust unspec generation.
(TARGET_ENCODE_SECTION_INFO): Override.
* config/nvptx/nvptx.h (ADDR_SPACE_GLOBAL, ADDR_SPACE_SHARED,
ADDR_SPACE_CONST, ADDR_SPACE_LOCAL, ADDR_SPACE_PARAM): Delete.
* config/nvptx/nvptx.md (UNSPEC_FROM_GLOBAL, UNSPEC_FROM_LOCAL,
UNSPEC_FROM_PARAM, UNSPEC_FROM_SHARED, UNSPEC_FROM_CONST,
UNSPEC_TO_GLOBAL, UNSPEC_TO_LOCAL, UNSPEC_TO_PARAM,
UNSPEC_TO_SHARED, UNSPEC_TO_CONST): Delete.
(UNSPEC_TO_GENERIC): New.
(nvptx_register_or_symbolic_operand): Delete.
(cvt_code, cvt_name, cvt_str): Delete.
(convaddr_<cvt_name><mode> [P]): Delete.
(convaddr_<mode> [P]): New.
gcc/testsuite/
* gcc.target/nvptx/decl.c: New.
* gcc.target/nvptx/uninit-decl.c: Robustify regexps.
From-SVN: r231227
Kyrylo Tkachov [Thu, 3 Dec 2015 13:28:55 +0000 (13:28 +0000)]
[RTL-ifcvt] PR rtl-optimization/68624: Clean up logic that checks for clobbering conflicts across basic blocks
PR rtl-optimization/68624
* ifcvt.c (noce_try_cmove_arith): Check clobbers of temp regs in both
blocks if they exist and simplify the logic choosing the order to emit
them in.
* gcc.c-torture/execute/pr68624.c: New test.
From-SVN: r231226
Richard Biener [Thu, 3 Dec 2015 11:26:56 +0000 (11:26 +0000)]
re PR tree-optimization/66051 (can't vectorize reductions inside an SLP group)
2015-12-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/66051
* tree-vect-slp.c (vect_build_slp_tree_1): Remove restriction
on load group size. Do not pass in vectorization_factor.
(vect_transform_slp_perm_load): Do not require any permute support.
(vect_build_slp_tree): Do not pass in vectorization factor.
(vect_analyze_slp_instance): Do not compute vectorization
factor estimate. Use vector size instead of vectorization factor
estimate to split store groups for BB vectorization.
* gcc.dg/vect/slp-42.c: New testcase.
From-SVN: r231225
Ilya Enkovich [Thu, 3 Dec 2015 10:35:41 +0000 (10:35 +0000)]
cfgexpand.c (expand_gimple_stmt_1): Return statement with DECL as return value is allowed to have NULL bounds.
gcc/
* cfgexpand.c (expand_gimple_stmt_1): Return statement with
DECL as return value is allowed to have NULL bounds.
From-SVN: r231224
Tom de Vries [Thu, 3 Dec 2015 10:16:07 +0000 (10:16 +0000)]
Guard isl_ast_op_zdiv_r usage with HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
2015-12-03 Tom de Vries <tom@codesourcery.com>
* graphite-isl-ast-to-gimple.c (binary_op_to_tree)
(gcc_expression_from_isl_expr_op): Guard isl_ast_op_zdiv_r usage with
HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS.
From-SVN: r231223
Kirill Yukhin [Thu, 3 Dec 2015 10:00:57 +0000 (10:00 +0000)]
Added missing ChangeLogs. Fix scan pattern for gcc.target/i386/avx512vl-vextracti32x4-1.c.
From-SVN: r231222
Richard Biener [Thu, 3 Dec 2015 08:43:22 +0000 (08:43 +0000)]
re PR tree-optimization/67800 (Missed vectorization opportunity on x86 (DOT_PROD_EXPR in non-reduction))
2015-12-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/67800
PR tree-optimization/68333
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Restore
restriction to reduction contexts but allow SLP reductions as well.
(vect_recog_sad_pattern): Likewise.
(vect_recog_widen_sum_pattern): Likewise.
* gcc.target/i386/vect-pr67800.c: New testcase.
From-SVN: r231221
Richard Biener [Thu, 3 Dec 2015 08:38:10 +0000 (08:38 +0000)]
re PR tree-optimization/68639 (ICE: Floating point exception)
2015-12-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/68639
* tree-vect-data-refs.c (dr_group_sort_cmp): Split groups
belonging to different loops.
(vect_analyze_data_ref_accesses): Likewise.
* gfortran.fortran-torture/compile/pr68639.f90: New testcase.
From-SVN: r231220
Jan Hubicka [Thu, 3 Dec 2015 04:21:50 +0000 (05:21 +0100)]
ipa-pure-const.c (ignore_edge_for_pure_const): New function.
* ipa-pure-const.c (ignore_edge_for_pure_const): New function.
(propagate_pure_const): Use it; fix comments and optimize loops.
From-SVN: r231219
Jan Hubicka [Thu, 3 Dec 2015 04:19:44 +0000 (05:19 +0100)]
ipa-pure-const.c (ignore_edge): Rename to ...
* ipa-pure-const.c (ignore_edge): Rename to ...
(ignore_edge_for_nothrow) ... this one; also ignore eges to
interposable functions or ones that can not throw.
(propagate_nothrow): Fix handling of availability.
From-SVN: r231218
Jan Hubicka [Thu, 3 Dec 2015 04:13:33 +0000 (05:13 +0100)]
re PR c++/68184 (Exception from a virtual function does not get caught)
PR ipa/68184
* g++.dg/torture/pr68184.C: New testcase.
* cgraphunit.c (cgraph_node::analyze): Set can_throw_external.
From-SVN: r231217