Richard Biener [Fri, 21 Jul 2017 07:13:57 +0000 (07:13 +0000)]
re PR tree-optimization/81303 (410.bwaves regression caused by r249919)
2016-07-21 Richard Biener <rguenther@suse.de>
PR tree-optimization/81303
* tree-vect-loop.c (vect_estimate_min_profitable_iters): Take
into account prologue and epilogue iterations when raising
min_profitable_iters to sth at least covering one vector iteration.
From-SVN: r250416
Tamar Christina [Fri, 21 Jul 2017 06:46:05 +0000 (06:46 +0000)]
arm.c (arm_test_cpu_arch_dat): Check for overlap.
2017-07-21 Tamar Christina <tamar.christina@arm.com>
* config/arm/arm.c (arm_test_cpu_arch_dat):
Check for overlap.
From-SVN: r250415
Nathan Sidwell [Fri, 21 Jul 2017 00:27:51 +0000 (00:27 +0000)]
Remove TYPE_METHODS.
gcc/
Remove TYPE_METHODS.
* tree.h (TYPE_METHODS): Delete.
* dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
* dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs.
(dbxout_type_methods): Scan TYPE_FIELDS.
(dbxout_type): Don't check TYPE_METHODS here.
* function.c (use_register_for_decl): Always ignore register for
class types when not optimizing.
* ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
* tree.c (free_lang_data_in_type): Stitch out member functions and
templates from TYPE_FIELDS.
(build_distinct_type_copy, verify_type_variant,
verify_type): Member fns are on TYPE_FIELDS.
* tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
* tree-pretty-print.c (dump_generic_node): Likewise.
gcc/cp/
Remove TYPE_METHODS.
* class.c (maybe_warn_about_overly_private_class,
finish_struct_methods, one_inheriting_sig, count_fields,
add_fields_to_record_type, check_field_decls, check_methods,
clone_function_decl, set_method_tm_attributes,
finalize_literal_type_property, check_bases_and_members,
create_vtable_ptr, determine_key_method,
unreverse_member_declarations, finish_struct,
add_vcall_offset_vtbl_entries_1): Member fns are on TYPE_FIELDS.
* decl.c (fixup_anonymous_aggr): Likewise.
* decl2.c (reset_type_linkage_2): Likewise.
* method.c (after_nsdmi_defaulted_late_checks,
lazily_declare_fn): Likewise.
* optimize.c (maybe_thunk_body, maybe_clone_body): Likewise.
* pt.c (instantiate_class_template_1, tsubst_expr,
do_type_instantiation, instantiate_pending_templates): Likewise.
* search.c (lookup_field_1): Likewise.
* semantics.c (finish_member_declaration,
finish_omp_declare_simd_methods): Likewise.
gcc/c-family/
Remove TYPE_METHODS.
* c-ada-spec.c (is_tagged_type, has_nontrivial_methods,
dump_ada_template, print_ada_methods,
print_ada_declaration): Member fns are on TYPE_FIELDS.
gcc/objc/
Remove TYPE_METHODS.
* objc-runtime-shared-support.c (build_ivar_list_initializer):
Don't presume first item is a FIELD_DECL.
gcc/testsuite/
* g++.dg/ext/anon-struct6.C: Adjust diag.
* g++.old-deja/g++.other/anon4.C: Adjust diag.
libcc1/
Remove TYPE_METHODS.
* libcp1plugin.cc (plugin_build_decl): Member fns are on TYPE_FIELDS.
From-SVN: r250413
GCC Administrator [Fri, 21 Jul 2017 00:16:34 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r250412
Ian Lance Taylor [Thu, 20 Jul 2017 19:53:54 +0000 (19:53 +0000)]
compiler: add explicit convert in Type_guard_expression::do_get_backend
The current recipe in Type_guard_expression for creating a Bexpression
performs a type conversion at the Type level, but doesn't invoke
Backend::convert_expression to capture the conversion for the back
end. Add code to create a BE type conversion operation.
Reviewed-on: https://go-review.googlesource.com/50373
From-SVN: r250400
Jakub Jelinek [Thu, 20 Jul 2017 16:36:18 +0000 (18:36 +0200)]
re PR target/80846 (auto-vectorized AVX2 horizontal sum should narrow to 128b right away, to be more efficient for Ryzen and Intel)
PR target/80846
* config/i386/i386.c (ix86_expand_vector_init_general): Handle
V2TImode and V4TImode.
(ix86_expand_vector_extract): Likewise.
* config/i386/sse.md (VMOVE): Enable V4TImode even for just
TARGET_AVX512F, instead of only for TARGET_AVX512BW.
(ssescalarmode): Handle V4TImode and V2TImode.
(VEC_EXTRACT_MODE): Add V4TImode and V2TImode.
(*vec_extractv2ti, *vec_extractv4ti): New insns.
(VEXTRACTI128_MODE): New mode iterator.
(splitter for *vec_extractv?ti first element): New.
(VEC_INIT_MODE): New mode iterator.
(vec_init<mode>): Consolidate 3 expanders into one using
VEC_INIT_MODE mode iterator.
* gcc.target/i386/avx-pr80846.c: New test.
* gcc.target/i386/avx2-pr80846.c: New test.
* gcc.target/i386/avx512f-pr80846.c: New test.
From-SVN: r250397
Alexander Monakov [Thu, 20 Jul 2017 15:15:55 +0000 (18:15 +0300)]
lra-assigns.c: fix pseudo_compare_func
* lra-assigns.c (pseudo_compare_func): Fix comparison step based on
non_spilled_static_chain_regno_p.
From-SVN: r250395
Alexander Monakov [Thu, 20 Jul 2017 15:13:56 +0000 (18:13 +0300)]
gimple-ssa-store-merging.c: fix sort_by_bitpos
* gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos.
From-SVN: r250394
Jan Hubicka [Thu, 20 Jul 2017 14:27:41 +0000 (16:27 +0200)]
bb-reorder.c (connect_traces): Allow copying of blocks within single partition.
* bb-reorder.c (connect_traces): Allow copying of blocks within
single partition.
From-SVN: r250390
Eric Botcazou [Thu, 20 Jul 2017 12:54:42 +0000 (12:54 +0000)]
Minor tweaks
From-SVN: r250386
Richard Biener [Thu, 20 Jul 2017 12:37:14 +0000 (12:37 +0000)]
gimple.h (gimple_phi_result): Add gphi * overload.
2017-07-20 Richard Biener <rguenther@suse.de>
* gimple.h (gimple_phi_result): Add gphi * overload.
(gimple_phi_result_ptr): Likewise.
(gimple_phi_arg): Likewise. Adjust index assert to only
allow actual argument accesses rather than all slots available
by capacity.
(gimple_phi_arg_def): Add gphi * overload.
* tree-phinodes.c (make_phi_node): Initialize only actual
arguments.
(resize_phi_node): Clear memory not covered by old node,
do not initialize excess argument slots.
(reserve_phi_args_for_new_edge): Initialize new argument slot
completely.
From-SVN: r250385
Bin Cheng [Thu, 20 Jul 2017 12:02:19 +0000 (12:02 +0000)]
re PR tree-optimization/81388 (Incorrect code generation with -O1)
PR tree-optimization/81388
Revert r238585:
2016-07-21 Bin Cheng <bin.cheng@arm.com>
* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
by removing computation of may_be_zero.
gcc/testsuite
PR tree-optimization/81388
* gcc.dg/tree-ssa/pr81388-1.c: New test.
* gcc.dg/tree-ssa/pr81388-2.c: New test.
From-SVN: r250384
Jan Hubicka [Thu, 20 Jul 2017 11:27:31 +0000 (11:27 +0000)]
re PR middle-end/81030 (ICE on valid code at -O1 (only) on x86_64-linux-gnu: verify_flow_info failed)
PR middle-end/81030
* cfgbuild.c (find_many_sub_basic_blocks): Update REG_BR_PROB note
when gimple level profile disagrees with what RTL expander did.
* gcc.dg/pr81030.c: New test.
From-SVN: r250383
Richard Biener [Thu, 20 Jul 2017 11:17:21 +0000 (11:17 +0000)]
re PR tree-optimization/61171 (vectorization fails for a reduction in presence of subtraction)
2017-07-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/61171
* tree-vectorizer.h (slp_instance): Add reduc_phis member.
(vect_analyze_stmt): Add slp instance parameter.
(vectorizable_reduction): Likewise.
* tree-vect-loop.c (vect_analyze_loop_operations): Adjust.
(vect_is_simple_reduction): Deal with chains not detected
as SLP reduction chain, specifically not properly associated
chains containing a mix of plus/minus.
(get_reduction_op): Remove.
(get_initial_defs_for_reduction): Simplify, pass in whether
this is a reduction chain, pass in the SLP node for the PHIs.
(vect_create_epilog_for_reduction): Get the SLP instance as
arg and adjust.
(vectorizable_reduction): Get the SLP instance as arg.
During analysis remember the SLP node with the PHIs in the
instance. Simplify getting at the vectorized reduction PHIs.
* tree-vect-slp.c (vect_slp_analyze_node_operations): Pass
through SLP instance.
(vect_slp_analyze_operations): Likewise.
* tree-vect-stms.c (vect_analyze_stmt): Likewise.
(vect_transform_stmt): Likewise.
* g++.dg/vect/pr61171.cc: New testcase.
* gfortran.dg/vect/pr61171.f: Likewise.
* gcc.dg/vect/vect-reduc-11.c: Likewise.
From-SVN: r250382
Richard Biener [Thu, 20 Jul 2017 10:03:34 +0000 (10:03 +0000)]
slp-43.c: Increase loop count to enable vectorization with V64QImode.
2017-07-20 Richard Biener <rguenther@suse.de>
* gcc.dg/vect/slp-43.c: Increase loop count to enable vectorization
with V64QImode.
* gcc.dg/vect/slp-45.c: Likewise.
From-SVN: r250380
Tom de Vries [Thu, 20 Jul 2017 07:16:01 +0000 (07:16 +0000)]
Fix phi arg location in find_implicit_erroneous_behavior
2017-07-20 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/81489
* gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Move
read of phi arg location to before loop that modifies phi.
From-SVN: r250378
Naveen H.S [Thu, 20 Jul 2017 03:57:48 +0000 (03:57 +0000)]
match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0): New pattern.
gcc
* match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0):
New pattern.
gcc/testsuite
* gcc.dg/tree-ssa/vrp116.c: New Test.
From-SVN: r250377
GCC Administrator [Thu, 20 Jul 2017 00:16:24 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r250376
Jan Hubicka [Wed, 19 Jul 2017 21:06:55 +0000 (23:06 +0200)]
re PR regression/81331 (missed Eh delivery in partitioned function)
PR middle-end/81331
* except.c (execute): Fix ordering issue.
From-SVN: r250370
Gerald Pfeifer [Wed, 19 Jul 2017 19:53:58 +0000 (19:53 +0000)]
* math/powq.c (powq): Use uint32_t instead of u_int32_t.
From-SVN: r250367
Jonathan Wakely [Wed, 19 Jul 2017 19:32:15 +0000 (20:32 +0100)]
PR libstdc++/81476 Optimise vector insertion from input iterators
PR libstdc++/81476
* include/bits/vector.tcc (vector::_M_range_insert<_InputIterator>):
Only insert elements one-by-one when inserting at the end.
* testsuite/performance/23_containers/insert/81476.cc: New.
From-SVN: r250366
Segher Boessenkool [Wed, 19 Jul 2017 19:31:26 +0000 (21:31 +0200)]
combine: Fix for PR81423
We here have an AND of a SUBREG of an LSHIFTRT. If that SUBREG is
paradoxical, the extraction we form is the length of the size of the
inner mode, which includes some bits that should not be in the result.
Just give up in that case.
PR rtl-optimization/81423
* combine.c (make_compound_operation_int): Don't try to optimize
the AND of a SUBREG of an LSHIFTRT if that SUBREG is paradoxical.
From-SVN: r250365
Michael Meissner [Wed, 19 Jul 2017 19:29:16 +0000 (19:29 +0000)]
cpu-builtin-1.c: Change test to use #ifdef __BUILTIN_CPU_SUPPORTS to see if...
2017-07-19 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/cpu-builtin-1.c: Change test to use #ifdef
__BUILTIN_CPU_SUPPORTS to see if the GLIBC is new enough that
__builtin_cpu_is and __builtin_cpu_supports are supported.
From-SVN: r250364
Segher Boessenkool [Wed, 19 Jul 2017 19:28:41 +0000 (21:28 +0200)]
simplify-rtx: The truncation of an IOR can have all bits set (PR81423)
... if it is an IOR with a constant with all bits set in the mode
that is truncated to, for example. Handle that case.
PR rtl-optimization/81423
* simplify-rtx.c (simplify_truncation): Handle truncating an IOR
with a constant that is -1 in the truncated to mode.
From-SVN: r250363
Steven Munroe [Wed, 19 Jul 2017 19:04:50 +0000 (19:04 +0000)]
Fix up plafform testes in check headers.
Fix up plafform testes in check headers. After a resent GCC change
the previously submitted BMI/BMI2 intrinsic test started to fail
with a warning/error.
[gcc/testsuite]
2017-07-19 Steven Munroe <munroesj@gcc.gnu.org>
* gcc.target/powerpc/bmi-check.h (main): Skip unless
__BUILTIN_CPU_SUPPORTS__ defined.
* gcc.target/powerpc/bmi2-check.h (main): Skip unless
__BUILTIN_CPU_SUPPORTS__ defined.
From-SVN: r250362
Jan Hubicka [Wed, 19 Jul 2017 18:09:39 +0000 (18:09 +0000)]
predict.c (propagate_unlikely_bbs_forward): Break out from ...
* predict.c (propagate_unlikely_bbs_forward): Break out from ...
(determine_unlikely_bbs): ... here.
* predict.h (propagate_unlikely_bbs_forward): Declare.
* cfgexpand.c (pass_expand::execute): Use it.
* bb-reorder.c (sanitize_hot_paths): Do not consider known to be
unlikely edges.
(find_rarely_executed_basic_blocks_and_crossing_edges): Use
propagate_unlikely_bbs_forward.
From-SVN: r250360
Jan Hubicka [Wed, 19 Jul 2017 18:08:53 +0000 (20:08 +0200)]
predict.c (propagate_unlikely_bbs_forward): Break out from ...
* predict.c (propagate_unlikely_bbs_forward): Break out from ...
(determine_unlikely_bbs): ... here.
* predict.h (propagate_unlikely_bbs_forward): Declare.
* cfgexpand.c (pass_expand::execute): Use it.
* bb-reorder.c (sanitize_hot_paths): Do not consider known to be
unlikely edges.
(find_rarely_executed_basic_blocks_and_crossing_edges): Use
propagate_unlikely_bbs_forward.
From-SVN: r250359
Jan Hubicka [Wed, 19 Jul 2017 18:08:07 +0000 (20:08 +0200)]
re PR regression/81331 (missed Eh delivery in partitioned function)
PR middle-end/81331
* except.c (maybe_add_nop_after_section_switch): New function.
(execute): Use it.
From-SVN: r250358
Volker Reichelt [Wed, 19 Jul 2017 16:59:00 +0000 (16:59 +0000)]
new (bad_array_new_length): Remove redundant semicolon after in-class member function definition.
* libsupc++/new (bad_array_new_length): Remove redundant
semicolon after in-class member function definition.
* include/bits/locale_facets.h (ctype_byname, num_put): Likewise.
* include/bits/locale_facets_nonio.h (time_put_byname): Likewise.
* include/bits/random.h (mersenne_twister_engine): Likewise.
* include/tr1/random.h (mersenne_twister): Likewise
* include/ext/random (simd_fast_mersenne_twister_engine): Likewise.
* include/ext/rope (char_producer, _Rope_char_consumer,
_Rope_self_destruct_ptr, _Rope_const_iterator, _Rope_iterator):
Likewise.
* include/ext/ropeimpl.h (_Rope_flatten_char_consumer,
_Rope_insert_char_consumer): Likewise.
From-SVN: r250357
Jakub Jelinek [Wed, 19 Jul 2017 15:55:47 +0000 (17:55 +0200)]
ada-tree.h (TYPE_OBJECT_RECORD_TYPE, [...]): Use TYPE_MIN_VALUE_RAW instead of TYPE_MINVAL.
* gcc-interface/ada-tree.h (TYPE_OBJECT_RECORD_TYPE,
TYPE_GCC_MIN_VALUE): Use TYPE_MIN_VALUE_RAW instead of TYPE_MINVAL.
(TYPE_GCC_MAX_VALUE): Use TYPE_MAX_VALUE_RAW instead of TYPE_MAXVAL.
From-SVN: r250355
John Marino [Wed, 19 Jul 2017 15:55:11 +0000 (15:55 +0000)]
Fix Unwind support on DragonFly BSD after sigtramp move
2017-07-19 John Marino <gnugcc@marino.st>
* config/i386/dragonfly-unwind.h: Handle sigtramp relocation.
From-SVN: r250354
Jonathan Wakely [Wed, 19 Jul 2017 15:46:04 +0000 (16:46 +0100)]
Fix indentation in std::basic_filebuf member functions
* include/bits/fstream.tcc (basic_filebuf::xsgetn)
(basic_filebuf::xsputn, basic_filebuf::seekoff): Fix indentation.
From-SVN: r250353
Tom de Vries [Wed, 19 Jul 2017 15:33:50 +0000 (15:33 +0000)]
Fix assert in gimple_phi_set_arg
2017-07-19 Tom de Vries <tom@codesourcery.com>
* gimple.h (gimple_phi_set_arg): Make assert more strict.
From-SVN: r250352
Tom de Vries [Wed, 19 Jul 2017 15:33:40 +0000 (15:33 +0000)]
Fix assert in gimple_phi_arg
2017-07-19 Tom de Vries <tom@codesourcery.com>
* gimple.h (gimple_phi_arg): Make assert more strict.
From-SVN: r250351
Steven Munroe [Wed, 19 Jul 2017 15:24:42 +0000 (15:24 +0000)]
Now adding the mmintrin.h intrinsic headers. The DG tests will follow.
2017-07-19 Steven Munroe <munroesj@gcc.gnu.org>
* config.gcc (powerpc*-*-*): Add mmintrin.h.
* config/rs6000/mmintrin.h: New file.
* config/rs6000/x86intrin.h [__ALTIVEC__]: Include mmintrin.h.
From-SVN: r250350
Jonathan Wakely [Wed, 19 Jul 2017 14:49:00 +0000 (15:49 +0100)]
Fix indentation in libstdc++ testsuite utils
* testsuite/util/testsuite_iterators.h: Fix indentation.
From-SVN: r250349
Nathan Sidwell [Wed, 19 Jul 2017 13:28:21 +0000 (13:28 +0000)]
class.c (add_implicitly_declared_members): Use classtype_has_move_assign_or_move_ctor_p.
* class.c (add_implicitly_declared_members): Use
classtype_has_move_assign_or_move_ctor_p.
(classtype_has_move_assign_or_move_ctor,
classtype_has_user_move_assign_or_move_ctor_p): Merge into ...
(classtype_has_move_assign_or_move_ctor_p): ... this new function.
* cp-tree.h (classtype_has_user_move_assign_or_move_ctor_p):
Replace with ...
(classtype_has_move_assign_or_move_ctor_p): ... this.
* method.c (maybe_explain_implicit_delete, lazily_declare_fn): Adjust.
* tree.c (type_has_nontrivial_copy_init): Adjust.
From-SVN: r250344
Jakub Jelinek [Wed, 19 Jul 2017 13:12:58 +0000 (15:12 +0200)]
re PR libquadmath/65757 (gfortran gives incorrect result for anint with real*16 argument)
PR libquadmath/65757
* quadmath-imp.h (math_opt_barrier, math_force_eval,
math_narrow_eval, math_check_force_underflow,
math_check_force_underflow_nonneg): Define.
* math/ceilq.c: Backport changes from upstream glibc
between 2012-11-01 and 2017-07-13.
* math/remquoq.c: Likewise.
* math/expq.c: Likewise.
* math/llroundq.c: Likewise.
* math/logq.c: Likewise.
* math/atanq.c: Likewise.
* math/nearbyintq.c: Likewise.
* math/scalblnq.c: Likewise.
* math/finiteq.c: Likewise.
* math/atanhq.c: Likewise.
* math/expm1q.c: Likewise.
* math/sinhq.c: Likewise.
* math/log10q.c: Likewise.
* math/rintq.c: Likewise.
* math/roundq.c: Likewise.
* math/fmaq.c: Likewise.
* math/erfq.c: Likewise.
* math/log2q.c: Likewise.
* math/lroundq.c: Likewise.
* math/j1q.c: Likewise.
* math/scalbnq.c: Likewise.
* math/truncq.c: Likewise.
* math/frexpq.c: Likewise.
* math/sincosq.c: Likewise.
* math/tanhq.c: Likewise.
* math/asinq.c: Likewise.
* math/coshq.c: Likewise.
* math/j0q.c: Likewise.
* math/asinhq.c: Likewise.
* math/floorq.c: Likewise.
* math/sinq_kernel.c: Likewise.
* math/powq.c: Likewise.
* math/hypotq.c: Likewise.
* math/sincos_table.c: Likewise.
* math/rem_pio2q.c: Likewise.
* math/nextafterq.c: Likewise.
* math/log1pq.c: Likewise.
* math/sincosq_kernel.c: Likewise.
* math/tanq.c: Likewise.
* math/acosq.c: Likewise.
* math/lrintq.c: Likewise.
* math/llrintq.c: Likewise.
From-SVN: r250343
Jakub Jelinek [Wed, 19 Jul 2017 13:10:05 +0000 (15:10 +0200)]
re PR tree-optimization/81346 (Missed constant propagation into comparison)
PR tree-optimization/81346
* match.pd: Optimize (X - 1U) <= INT_MAX-1U into (int) X > 0.
* gcc.dg/tree-ssa/pr81346-5.c: New test.
From-SVN: r250342
Tom de Vries [Wed, 19 Jul 2017 13:05:35 +0000 (13:05 +0000)]
Add v2di support for nvptx
2017-07-19 Tom de Vries <tom@codesourcery.com>
* config/nvptx/nvptx-modes.def: Add V2DImode.
* config/nvptx/nvptx-protos.h (nvptx_data_alignment): Declare.
* config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2DImode.
(nvptx_output_mov_insn): Handle lack of mov.b128.
(nvptx_print_operand): Handle 'H' and 'L' codes.
(nvptx_vector_mode_supported): Allow V2DImode.
(nvptx_preferred_simd_mode): New function.
(nvptx_data_alignment): New function.
(TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Redefine to
nvptx_preferred_simd_mode.
* config/nvptx/nvptx.h (STACK_BOUNDARY, BIGGEST_ALIGNMENT): Change from
64 to 128 bits.
(DATA_ALIGNMENT): Define. Set to nvptx_data_alignment.
* config/nvptx/nvptx.md (VECIM): Add V2DI.
* gcc.target/nvptx/decl-init.c: Update alignment.
* gcc.target/nvptx/slp-2-run.c: New test.
* gcc.target/nvptx/slp-2.c: New test.
* gcc.target/nvptx/v2di.c: New test.
* testsuite/libgomp.oacc-c/vec.c: New test.
From-SVN: r250341
Tom de Vries [Wed, 19 Jul 2017 13:05:21 +0000 (13:05 +0000)]
Add v2si support for nvptx
2017-07-19 Tom de Vries <tom@codesourcery.com>
* config/nvptx/nvptx-modes.def: New file. Add V2SImode.
* config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2SImode.
(nvptx_vector_mode_supported): New function. Allow V2SImode.
(TARGET_VECTOR_MODE_SUPPORTED_P): Redefine to nvptx_vector_mode_supported.
* config/nvptx/nvptx.md (VECIM): New mode iterator. Add V2SI.
(mov<VECIM>_insn): New define_insn.
(define_expand "mov<VECIM>): New define_expand.
* gcc.target/nvptx/slp-run.c: New test.
* gcc.target/nvptx/slp.c: New test.
* gcc.target/nvptx/v2si-cvt.c: New test.
* gcc.target/nvptx/v2si-run.c: New test.
* gcc.target/nvptx/v2si.c: New test.
* gcc.target/nvptx/vec.inc: New test.
From-SVN: r250340
Tom de Vries [Wed, 19 Jul 2017 13:05:09 +0000 (13:05 +0000)]
Add generic v2 vector mode support for nvptx
2017-07-19 Tom de Vries <tom@codesourcery.com>
* config/nvptx/nvptx.c (nvptx_print_operand): Handle v2 vector mode.
From-SVN: r250339
Jakub Jelinek [Wed, 19 Jul 2017 12:31:59 +0000 (14:31 +0200)]
re PR tree-optimization/81346 (Missed constant propagation into comparison)
PR tree-optimization/81346
* fold-const.h (fold_div_compare, range_check_type): Declare.
* fold-const.c (range_check_type): New function.
(build_range_check): Use range_check_type.
(fold_div_compare): No longer static, rewritten into
a match.pd helper function.
(fold_comparison): Don't call fold_div_compare here.
* match.pd (X / C1 op C2): New optimization using fold_div_compare
as helper function.
* gcc.dg/tree-ssa/pr81346-1.c: New test.
* gcc.dg/tree-ssa/pr81346-2.c: New test.
* gcc.dg/tree-ssa/pr81346-3.c: New test.
* gcc.dg/tree-ssa/pr81346-4.c: New test.
* gcc.target/i386/umod-3.c: Hide comparison against 1 from the
compiler to avoid X / C1 op C2 optimization to trigger.
From-SVN: r250338
Nathan Sidwell [Wed, 19 Jul 2017 12:01:18 +0000 (12:01 +0000)]
tree.h (TYPE_MINVAL, [...]): Rename to ...
gcc/
* tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ...
(TYPE_MIN_VALUE_RAW, TYPE_MAX_VALUE_RAW): ... these.
* tree.c (find_decls_types_r, verify_type): Use
TYPE_{MIN,MAX}_VALUE_RAW.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Likewise.
(hash_tree): Likewise.
* tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
Likewise.
* tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
Likewise.
gcc/cp/
* cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS,
PACK_EXPANSION_EXTRA_ARGS): Use TYPE_{MIN,MAX}_VALUE_RAW.
gcc/lto/
* lto.c (mentions_vars_p_type): Use TYPE_{MIN,MAX}_VALUE_RAW.
(compare_tree_sccs_1, lto_fixup_prevailing_decls): Likewise.
gcc/objc/
* objc-act.h (CLASS_NST_METHODS, CLASS_CLS_METHODS): Use
TYPE_{MIN,MAX}_VALUE_RAW.
From-SVN: r250337
Martin Liska [Wed, 19 Jul 2017 06:50:34 +0000 (08:50 +0200)]
Fix an UBSAN test-case (PR sanitizer/63361).
2017-07-19 Martin Liska <mliska@suse.cz>
PR sanitizer/63361
* c-c++-common/ubsan/float-cast-overflow-1.c: Add either
-ffloat-store or -mieee for targets that need it.
From-SVN: r250336
Tom de Vries [Wed, 19 Jul 2017 06:25:40 +0000 (06:25 +0000)]
Handle equal-argument loop exit phi in expand_omp_for_static_chunk
2017-07-18 Tom de Vries <tom@codesourcery.com>
PR middle-end/81464
* omp-expand.c (expand_omp_for_static_chunk): Handle equal-argument loop
exit phi.
* gfortran.dg/pr81464.f90: New test.
From-SVN: r250335
Yury Gribov [Wed, 19 Jul 2017 05:25:47 +0000 (05:25 +0000)]
Add myself to MAINTAINERS.
From-SVN: r250334
Jonathan Wakely [Wed, 19 Jul 2017 00:23:00 +0000 (01:23 +0100)]
Use dg-require-fileio in new test
* testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: Add dg-require.
From-SVN: r250333
GCC Administrator [Wed, 19 Jul 2017 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r250332
Jonathan Wakely [Tue, 18 Jul 2017 23:39:34 +0000 (00:39 +0100)]
PR libstdc++/81395 fix crash when write follows large read
PR libstdc++/81395
* include/bits/fstream.tcc (basic_filebuf::xsgetn): Don't set buffer
pointers for write mode after reading.
* testsuite/27_io/basic_filebuf/sgetn/char/81395.cc: New.
From-SVN: r250328
Ian Lance Taylor [Tue, 18 Jul 2017 23:29:15 +0000 (23:29 +0000)]
compiler: insert backend type conversion for closure func ptr
In Func_expression::do_get_backend when creating the backend
representation for a closure, create a backend type conversion to
account for potential differences between the closure struct type
(where the number of fields is dependent on the number of values
referenced in the closure) and the generic function descriptor type
(struct with single function pointer field).
Reviewed-on: https://go-review.googlesource.com/49255
From-SVN: r250327
Ian Lance Taylor [Tue, 18 Jul 2017 23:14:29 +0000 (23:14 +0000)]
re PR go/81451 (missing futex check - libgo/runtime/thread-linux.c:12:0 futex.h:13:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘long’)
PR go/81451
runtime: inline runtime_osinit
We had two identical copies of runtime_osinit. They set runtime_ncpu,
a variable that is no longer used. Removing that leaves us with two lines.
Inline those two lines in the two places the function was called.
This fixes GCC PR 81451.
Reviewed-on: https://go-review.googlesource.com/48862
From-SVN: r250326
Ian Lance Taylor [Tue, 18 Jul 2017 22:31:00 +0000 (22:31 +0000)]
compiler: pass correct 'function' flag to circular_pointer_type
The code in Named_type::do_get_backend was not passing the correct
flag value for circular function types to Backend::circular_pointer_type
(it was always setting this flag to false). Pass a true value if the
type being converted is a function type.
Reviewed-on: https://go-review.googlesource.com/49330
From-SVN: r250325
Ian Lance Taylor [Tue, 18 Jul 2017 22:06:31 +0000 (22:06 +0000)]
re PR go/81324 (libgo does not build with glibc 2.18)
PR go/81324
sysinfo.c: ignore ptrace_peeksiginfo_args from <linux/ptrace.h>
With some versions of glibc and GNU/Linux ptrace_pseeksiginfo_args is
defined in both <sys/ptrace.h> and <linux/ptrace.h>. We don't actually
care about the struct, so use a #define to avoid a redefinition error.
This fixes https://gcc.gnu.org/PR81324.
Reviewed-on: https://go-review.googlesource.com/49290
From-SVN: r250324
Trevor Saunders [Tue, 18 Jul 2017 21:05:48 +0000 (21:05 +0000)]
update my entry in MAINTAINERS
/:
* MAINTAINERS: Update my email address.
From-SVN: r250321
François Dumont [Tue, 18 Jul 2017 20:26:08 +0000 (20:26 +0000)]
stl_list.h (struct _List_node_header): New.
2017-07-18 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_list.h
(struct _List_node_header): New.
(_List_impl()): Fix noexcept qualification.
(_List_impl(_List_impl&&)): New, default.
(_List_base()): Default.
(_List_base(_List_base&&)): Default.
(_List_base::_M_move_nodes): Adapt to use
_List_node_header._M_move_nodes.
(_List_base::_M_init): Likewise.
(list<>()): Default.
(list<>(list&&)): Default.
(list<>::_M_move_assign(list&&, true_type)): Use _M_move_nodes.
(__distance(_List_const_iterator<>, _List_const_iterator<>,
input_iterator_tag)): Adapt.
* testsuite/23_containers/list/allocator/default_init.cc: New.
From-SVN: r250320
Uros Bizjak [Tue, 18 Jul 2017 16:10:20 +0000 (18:10 +0200)]
re PR target/81471 (internal compiler error: in curr_insn_transform, at lra-constraints.c:3495)
PR target/81471
* config/i386/i386.md (rorx_immediate_operand): New mode attribute.
(*bmi2_rorx<mode>3_1): Use rorx_immediate_operand as
operand 2 predicate.
(*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as
operand 2 predicate.
(ror,rol -> rorx splitters): Use const_int_operand as
operand 2 predicate.
testsuite/ChangeLog:
PR target/81471
* gcc.target/i386/pr81471.c: New test.
From-SVN: r250315
Yury Gribov [Tue, 18 Jul 2017 15:39:39 +0000 (15:39 +0000)]
mklog: Fix extraction of changed file name.
2017-07-17 Yury Gribov <tetra2005@gmail.com>
* mklog: Fix extraction of changed file name.
From-SVN: r250314
Richard Biener [Tue, 18 Jul 2017 13:55:47 +0000 (13:55 +0000)]
re PR tree-optimization/81410 (-O3 breaks code)
2017-06-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/81410
* tree-vect-stmts.c (vectorizable_load): Properly adjust for
the gap in the ! slp_perm SLP case after each group.
* gcc.dg/vect/pr81410.c: New testcase.
From-SVN: r250312
Jan Hubicka [Tue, 18 Jul 2017 13:51:22 +0000 (15:51 +0200)]
re PR tree-optimization/81463 (ICE in scale_loop_profile at gcc/cfgloopmanip.c:603)
PR middle-end/81463
* cfgloopmanip.c (scale_loop_profile): Watch out for zero frequency
again.
From-SVN: r250311
Jan Hubicka [Tue, 18 Jul 2017 13:49:30 +0000 (15:49 +0200)]
re PR tree-optimization/81462 (ICE in estimate_bb_frequencies at gcc/predict.c:3546)
PR middle-end/81462
* predict.c (set_even_probabilities): Cleanup; do not affect
probabilities that are already known.
(combine_predictions_for_bb): Call even when count is set.
* g++.dg/torture/pr81462.C: New testcase.
From-SVN: r250310
Nathan Sidwell [Tue, 18 Jul 2017 13:22:50 +0000 (13:22 +0000)]
tree-parloops.c (try_transform_to_exit_first_loop_alt): Use TYPE_MAX_VALUE.
gcc/
* tree-parloops.c (try_transform_to_exit_first_loop_alt): Use
TYPE_MAX_VALUE.
gcc/c-family/
* c-warn.c (warn_for_memset): Use TYPE_{MIN,MAX}_VALUE.
gcc/c/
* c-parser.c (c_parser_array_notation): Use TYPE_{MIN,MAX}_VALUE.
gcc/cp/
* cp-array-notation.c (build_array_notation_ref): Use
TYPE_{MIN,MAX}_VALUE.
gcc/fortran/
* trans.c (gfc_build_array_ref): Use TYPE_MAX_VALUE.
From-SVN: r250309
Mike Frysinger [Tue, 18 Jul 2017 12:38:41 +0000 (12:38 +0000)]
gcc: ada: delete old $(P) reference
The P variable was deleted back in Nov 2015 (svn rev 231062),
but its expansion was missed. Delete those now too.
From-SVN: r250307
Nathan Sidwell [Tue, 18 Jul 2017 12:05:12 +0000 (12:05 +0000)]
class.c (classtype_has_move_assign_or_move_ctor): Declare.
* class.c (classtype_has_move_assign_or_move_ctor): Declare.
(add_implicitly_declared_members): Use it.
(type_has_move_constructor, type_has_move_assign): Merge into ...
(classtype_has_move_assign_or_move_ctor): ... this new function.
* cp-tree.h (type_has_move_constructor, type_has_move_assign): Delete.
From-SVN: r250305
Bin Cheng [Tue, 18 Jul 2017 11:40:38 +0000 (11:40 +0000)]
re PR middle-end/81408 (Lots of new -Wunsafe-loop-optimizations warnings with 7 compared to 6)
PR target/81408
* tree-ssa-loop-niter.c (number_of_iterations_exit): Dump missed
optimization for loop niter analysis.
gcc/testsuite
* g++.dg/tree-ssa/pr81408.C: New.
* gcc.dg/tree-ssa/pr19210-1.c: Check dump message rather than warning.
From-SVN: r250304
Georg-Johann Lay [Tue, 18 Jul 2017 09:36:21 +0000 (09:36 +0000)]
re PR target/81473 ([avr] build fails due to INT8_MIN and friends.)
gcc/
PR target/81473
* config/avr/avr.c (avr_optimize_casesi): Don't use
INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX.
From-SVN: r250301
Robin Dapp [Tue, 18 Jul 2017 09:23:35 +0000 (09:23 +0000)]
Fix PR81362: Vector peeling
npeel was erroneously overwritten by vect_peeling_hash_get_lowest_cost
although the corresponding dataref is not used afterwards. It should
be safe to get rid of the npeel parameter since we use the returned
peeling_info's npeel anyway. Also removed the body_cost_vec parameter
which is not used elsewhere.
gcc/ChangeLog:
2017-07-18 Robin Dapp <rdapp@linux.vnet.ibm.com>
* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Remove
body_cost_vec from _vect_peel_extended_info.
(vect_peeling_hash_get_lowest_cost): Do not set body_cost_vec.
(vect_peeling_hash_choose_best_peeling): Remove body_cost_vec and
npeel.
From-SVN: r250300
Bin Cheng [Tue, 18 Jul 2017 08:34:37 +0000 (08:34 +0000)]
* config/arm/arm.c (emit_unlikely_jump): Remove unused var.
From-SVN: r250299
Richard Biener [Tue, 18 Jul 2017 07:35:40 +0000 (07:35 +0000)]
re PR tree-optimization/80620 (gcc produces wrong code with -O3)
2017-07-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/80620
PR tree-optimization/81403
* tree-ssa-pre.c (phi_translate_1): Clear range and points-to
info when re-using a VN table entry.
* gcc.dg/torture/pr80620.c: New testcase.
* gcc.dg/torture/pr81403.c: Likewise.
From-SVN: r250297
Richard Biener [Tue, 18 Jul 2017 07:26:04 +0000 (07:26 +0000)]
re PR tree-optimization/81418 (ICE in vect_get_vec_def_for_stmt_copy)
2017-06-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/81418
* tree-vect-loop.c (vectorizable_reduction): Properly compute
vectype_in. Verify that with lane-reducing reduction operations
we have a single def-use cycle.
* gcc.dg/torture/pr81418.c: New testcase.
From-SVN: r250296
Carl Love [Tue, 18 Jul 2017 03:40:39 +0000 (03:40 +0000)]
Revert commit r249424 2017-06-20 Carl Love <cel@us.ibm.com>
gcc/ChangeLog:
2017-07-17 Carl Love <cel@us.ibm.com>
Revert commit r249424 2017-06-20 Carl Love <cel@us.ibm.com>
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
* config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
VMULOSW): New enum "unspec" values.
(vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
altivec_vmulosw): New patterns.
* config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
VMULOSW): Add definitions.
gcc/testsuite/ChangeLog:
2017-07-17 Carl Love <cel@us.ibm.com>
Revert commit r249572 2017-06-22 Carl Love <cel@us.ibm.com>
test case changes for commit 249424
* gcc.target/powerpc/builtins-2.c (vmulosh, vmulouh, vmulesh,
vmuleuh): Fix scan-assembler-times should check for word not half word
instructions.
From-SVN: r250295
GCC Administrator [Tue, 18 Jul 2017 00:16:34 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r250294
Uros Bizjak [Mon, 17 Jul 2017 20:54:31 +0000 (22:54 +0200)]
alpha.c: Include predict.h.
* config/alpha/alpha.c: Include predict.h.
From-SVN: r250290
Bill Schmidt [Mon, 17 Jul 2017 19:12:11 +0000 (19:12 +0000)]
re PR tree-optimization/81162 (UBSAN switch triggers incorrect optimization in SLSR)
2017-07-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/81162
* gcc.dg/pr81162.c: Move this to...
* gcc.dg/ubsan/pr81162.c: ...here.
From-SVN: r250284
Volker Reichelt [Mon, 17 Jul 2017 16:58:00 +0000 (16:58 +0000)]
parser.c (cp_parser_decl_specifier_seq): Add fix-it hints for friend outside class and obsolete auto as...
* parser.c (cp_parser_decl_specifier_seq): Add fix-it hints for
friend outside class and obsolete auto as storage-class-specifier.
* g++.dg/diagnostic/friend1.C: New test.
* g++.dg/cpp0x/auto1.C: Add check for fix-it hint.
From-SVN: r250282
Nathan Sidwell [Mon, 17 Jul 2017 16:52:31 +0000 (16:52 +0000)]
class.c (maybe_warn_about_overly_private_class): Ignore public copy ctors.
* class.c (maybe_warn_about_overly_private_class): Ignore public
copy ctors.
* g++.dg/warn/ctor-dtor-privacy-3.C: New.
From-SVN: r250281
Nathan Sidwell [Mon, 17 Jul 2017 15:57:59 +0000 (15:57 +0000)]
class.c (type_has_user_declared_move_constructor, [...]): Combine into ...
* class.c (type_has_user_declared_move_constructor,
type_has_user_declared_move_assign): Combine into ...
(classtype_has_user_move_assign_or_move_ctor_p): ... this new function.
* cp-tree.h (type_has_user_declared_move_constructor,
type_has_user_declared_move_assign): Combine into ...
(classtype_has_user_move_assign_or_move_ctor_p): ... this. Declare.
* method.c (maybe_explain_implicit_delete): Use it.
(lazily_declare_fn): Use it.
* tree.c (type_has_nontrivial_copy_init): Use it.
From-SVN: r250280
Bernd Edlinger [Mon, 17 Jul 2017 15:54:32 +0000 (15:54 +0000)]
gcc-dg.exp: Increase expect's match buffer size.
2017-07-17 Bernd Edlinger <bernd.edlinger@hotmail.de>
* lib/gcc-dg.exp: Increase expect's match buffer size.
From-SVN: r250279
Yury Gribov [Mon, 17 Jul 2017 14:58:00 +0000 (14:58 +0000)]
tree-vrp.c (compare_assert_loc): Fix comparison function to return predictable results.
2017-07-17 Yury Gribov <tetra2005@gmail.com>
gcc/
* tree-vrp.c (compare_assert_loc): Fix comparison function
to return predictable results.
From-SVN: r250278
Claudiu Zissulescu [Mon, 17 Jul 2017 12:59:56 +0000 (14:59 +0200)]
[ARC] Deprecate mexpand-adddi option.
Emitting subregs in the expand will result in broken code due to LRA handling of them. Issue observed while turning on mlra and mexpand-adddi options using dejagnu test suite. Deprecate this
option.
gcc/
2017-04-26 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.md (adddi3): Remove support for mexpand-adddi
option.
(subdi3): Likewise.
* config/arc/arc.opt (mexpand-adddi): Deprecate it.
* doc/invoke.texi (mexpand-adddi): Update text.
From-SVN: r250276
Claudiu Zissulescu [Mon, 17 Jul 2017 12:59:45 +0000 (14:59 +0200)]
[ARC] [LRA] Avoid emitting COND_EXEC during expand.
Emmitting COND_EXEC rtxes during expand does introduces errors due to LRA handling of them. Issue discovered while running dejagnu test suit with mlra option on.
gcc/
2017-07-17 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.md (clzsi2): Expand to an arc_clzsi2 instruction
that also clobbers the CC register. The old expand code is moved
to ...
(*arc_clzsi2): ... here.
(ctzsi2): Expand to an arc_ctzsi2 instruction that also clobbers
the CC register. The old expand code is moved to ...
(arc_ctzsi2): ... here.
From-SVN: r250275
Claudiu Zissulescu [Mon, 17 Jul 2017 12:32:02 +0000 (14:32 +0200)]
[ARC] Enable indexed loads for elf targers.
Enable indexed loads only for elf target, as the linux ones need more testing.
gcc/
2017-02-28 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.opt (mindexed-loads): Use initial value
TARGET_INDEXED_LOADS_DEFAULT.
(mauto-modify-reg): Use initial value
TARGET_AUTO_MODIFY_REG_DEFAULT.
* config/arc/elf.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
(TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
* config/arc/linux.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
(TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
From-SVN: r250274
Nathan Sidwell [Mon, 17 Jul 2017 11:54:03 +0000 (11:54 +0000)]
semantics.c (classtype_has_nothrow_assign_or_copy_p): Clarify semantics, simplify implementation.
* semantics.c (classtype_has_nothrow_assign_or_copy_p): Clarify
semantics, simplify implementation.
From-SVN: r250272
Martin Liska [Mon, 17 Jul 2017 11:44:54 +0000 (13:44 +0200)]
Do not allow -fgnu-tm w/ -fsanitize={kernel-,}address (PR sanitizer/81302).
2017-07-17 Martin Liska <mliska@suse.cz>
PR sanitizer/81302
* opts.c (finish_options): Do not allow -fgnu-tm
w/ -fsanitize={kernel-,}address. Say sorry.
From-SVN: r250271
Bin Cheng [Mon, 17 Jul 2017 11:40:54 +0000 (11:40 +0000)]
re PR tree-optimization/81369 (ICE in generate_code_for_partition)
PR target/81369
* tree-loop-distribution.c (classify_partition): Only assert on
numer of iterations.
(merge_dep_scc_partitions): Delete prameter. Update function call.
(distribute_loop): Remove code handling loop with unknown niters.
(pass_loop_distribution::execute): Skip loop with unknown niters.
From-SVN: r250270
Bin Cheng [Mon, 17 Jul 2017 11:38:15 +0000 (11:38 +0000)]
re PR tree-optimization/81369 (ICE in generate_code_for_partition)
PR target/81369
* tree-loop-distribution.c (merge_dep_scc_partitions): Sink call to
function sort_partitions_by_post_order.
gcc/testsuite
* gcc.dg/tree-ssa/pr81369.c: New.
From-SVN: r250269
Bin Cheng [Mon, 17 Jul 2017 11:34:30 +0000 (11:34 +0000)]
re PR tree-optimization/81374 (ICE in bb_top_order_cmp, at tree-loop-distribution.c:391)
PR tree-optimization/81374
* tree-loop-distribution.c (pass_loop_distribution::execute): Record
the max index of basic blocks, rather than number of basic blocks.
From-SVN: r250268
Claudiu Zissulescu [Mon, 17 Jul 2017 11:04:37 +0000 (13:04 +0200)]
[ARC] Consolidate PIC implementation.
This patch refactors a number of functions and compiler hooks into using a
single function which checks if a rtx is suited for pic or not. Removed
functions are arc_legitimate_pc_offset_p and arc_legitimate_pic_operand_p
beeing replaced by calls to arc_legitimate_pic_addr_p. Thus we have an
unitary way of checking a rtx beeing pic.
gcc/
2017-07-17 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc-protos.h (arc_legitimate_pc_offset_p): Remove
proto.
(arc_legitimate_pic_operand_p): Likewise.
* config/arc/arc.c (arc_legitimate_pic_operand_p): Remove
function.
(arc_needs_pcl_p): Likewise.
(arc_legitimate_pc_offset_p): Likewise.
(arc_legitimate_pic_addr_p): Remove LABEL_REF case, as this
function is also used in constrains.md.
(arc_legitimate_constant_p): Use arc_legitimate_pic_addr_p to
validate pic constants. Handle CONST_INT, CONST_DOUBLE, MINUS and
PLUS. Only return true/false in known cases, otherwise assert.
(arc_legitimate_address_p): Remove arc_legitimate_pic_addr_p as it
is already called in arc_legitimate_constant_p.
* config/arc/arc.h (CONSTANT_ADDRESS_P): Consider also LABEL for
pic addresses.
(LEGITIMATE_PIC_OPERAND_P): Use
arc_raw_symbolic_reference_mentioned_p function.
* config/arc/constraints.md (Cpc): Use arc_legitimate_pic_addr_p
function.
(Cal): Likewise.
(C32): Likewise.
gcc/testsuite
2017-07-17 Claudiu Zissulescu <claziss@synopsys.com>
* gcc.target/arc/pr9000674901.c: New file.
* gcc.target/arc/pic-1.c: Likewise.
* gcc.target/arc/pr9001191897.c: Likewise.
From-SVN: r250267
Claudiu Zissulescu [Mon, 17 Jul 2017 10:46:55 +0000 (12:46 +0200)]
[PATCH] [ARC] Add support for naked functions.
gcc/
2017-07-17 Claudiu Zissulescu <claziss@synopsys.com>
Andrew Burgess <andrew.burgess@embecosm.com>
* config/arc/arc-protos.h (arc_compute_function_type): Change prototype.
(arc_return_address_register): New function.
* config/arc/arc.c (arc_handle_fndecl_attribute): New function.
(arc_handle_fndecl_attribute): Add naked attribute.
(TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
(TARGET_WARN_FUNC_RETURN): Likewise.
(arc_allocate_stack_slots_for_args): New function.
(arc_warn_func_return): Likewise.
(machine_function): Change type fn_type.
(arc_compute_function_type): Consider new naked function type,
change function return type.
(arc_must_save_register): Adapt to handle new
arc_compute_function_type's return type.
(arc_expand_prologue): Likewise.
(arc_expand_epilogue): Likewise.
(arc_return_address_regs): Delete.
(arc_return_address_register): New function.
(arc_epilogue_uses): Use above function.
* config/arc/arc.h (arc_return_address_regs): Delete prototype.
(arc_function_type): Change encoding, add naked type.
(ARC_INTERRUPT_P): Change to handle the new encoding.
(ARC_FAST_INTERRUPT_P): Likewise.
(ARC_NORMAL_P): Define.
(ARC_NAKED_P): Likewise.
(arc_compute_function_type): Delete prototype.
* config/arc/arc.md (in_ret_delay_slot): Use
arc_return_address_register function.
(simple_return): Likewise.
(p_return_i): Likewise.
gcc/testsuite
2017-07-17 Claudiu Zissulescu <claziss@synopsys.com>
Andrew Burgess <andrew.burgess@embecosm.com>
* gcc.target/arc/naked-1.c: New file.
* gcc.target/arc/naked-2.c: Likewise.
Co-Authored-By: Andrew Burgess <andrew.burgess@embecosm.com>
From-SVN: r250266
Jakub Jelinek [Mon, 17 Jul 2017 10:20:41 +0000 (12:20 +0200)]
re PR tree-optimization/81428 (ICE: in build_one_cst, at tree.c:2079 with -O2. Fixed point division.)
PR tree-optimization/81428
* match.pd (X / X -> one): Don't optimize _Fract divisions, as 1
can't be built for those types.
* gcc.dg/fixed-point/pr81428.c: New test.
From-SVN: r250265
Georg-Johann Lay [Mon, 17 Jul 2017 09:32:42 +0000 (09:32 +0000)]
Remove stuff dead since r239246.
* config/avr/avr-arch.h (avr_inform_devices): Remove dead proto.
* config/avr/avr-devices.c (mcu_name, comparator, avr_mcus_str)
(avr_inform_devices): Remove dead stuff.
From-SVN: r250264
Georg-Johann Lay [Mon, 17 Jul 2017 09:13:36 +0000 (09:13 +0000)]
gcc_update (files_and_dependencies): Remove dead entry.
* gcc_update (files_and_dependencies)
[gcc/config/avr/avr-tables.opt]: Remove dead entry.
From-SVN: r250263
Tamar Christina [Mon, 17 Jul 2017 09:12:57 +0000 (09:12 +0000)]
arm_neon.h: Fix softp typo.
2017-07-17 Tamar Christina <tamar.christina@arm.com>
* config/arm/arm_neon.h: Fix softp typo.
From-SVN: r250262
Jakub Jelinek [Mon, 17 Jul 2017 09:10:23 +0000 (11:10 +0200)]
re PR tree-optimization/81365 (GCC miscompiles swap)
PR tree-optimization/81365
* tree-ssa-phiprop.c (propagate_with_phi): When considering hoisting
aggregate moves onto bb predecessor edges, make sure there are no
loads that could alias the lhs in between the start of bb and the
loads from *phi.
* g++.dg/torture/pr81365.C: New test.
From-SVN: r250261
Georg-Johann Lay [Mon, 17 Jul 2017 08:56:06 +0000 (08:56 +0000)]
re PR middle-end/80929 (Division with constant no more optimized to mult highpart)
PR 80929
* config/avr/avr.c (avr_mul_highpart_cost): New static function.
(avr_rtx_costs_1) [TRUNCATE]: Use it to compute mul_highpart cost.
[LSHIFTRT, outer_code = TRUNCATE]: Same.
From-SVN: r250258
Jakub Jelinek [Mon, 17 Jul 2017 08:14:16 +0000 (10:14 +0200)]
re PR tree-optimization/81396 (Optimization of reading Little-Endian 64-bit number with portable code has a regression)
PR tree-optimization/81396
* tree-ssa-math-opts.c (struct symbolic_number): Add n_ops field.
(init_symbolic_number): Initialize it to 1.
(perform_symbolic_merge): Add n_ops from both operands into the new
n_ops.
(find_bswap_or_nop): Don't consider n->n == cmpnop computations
without base_addr as useless if they need more than one operation.
(bswap_replace): Handle !bswap case for NULL base_addr.
* gcc.dg/tree-ssa/pr81396.c: New test.
From-SVN: r250257
Tom de Vries [Mon, 17 Jul 2017 07:49:22 +0000 (07:49 +0000)]
Insert diverging jump alap in nvptx_single
2017-07-17 Tom de Vries <tom@codesourcery.com>
PR target/81069
* config/nvptx/nvptx.c (nvptx_single): Insert diverging branch as late
as possible.
From-SVN: r250256
Sebastian Huber [Mon, 17 Jul 2017 05:27:13 +0000 (05:27 +0000)]
[SPARC/RTEMS] Add __FIX_LEON3FT_B2BST
In case the LEON3FT back-to-back store workaround is active
(sparc_fix_b2bst), then define the builtin define __FIX_LEON3FT_B2BST on
RTEMS. The intended use case for this is operating system code in
assembly language. See also:
https://lists.rtems.org/pipermail/devel/2017-July/018463.html
gcc/
* gcc/config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add
conditional builtin define __FIX_LEON3FT_B2BST.
From-SVN: r250254
Daniel Cederman [Mon, 17 Jul 2017 05:18:42 +0000 (05:18 +0000)]
[RTEMS] Add multilibs for LEON3FT back-to-back store workaround
Replace MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED for readability.
-mfix-gr712rc and -mfix-ut700 are currently equivalent.
gcc/
* config/sparc/t-rtems: Add mfix-gr712rc multilibs. Replace
MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED. Match -mfix-gr712rc
with -mfix-ut700.
From-SVN: r250252
GCC Administrator [Mon, 17 Jul 2017 00:16:33 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r250251