Ian Lance Taylor [Tue, 29 Aug 2017 18:59:04 +0000 (18:59 +0000)]
runtime: fix lfstack for 64-bit AIX
Reviewed-on: https://go-review.googlesource.com/57550
From-SVN: r251420
Uros Bizjak [Tue, 29 Aug 2017 18:28:32 +0000 (20:28 +0200)]
*.c: Remove excess braces from target selectors.
* gcc.target/i386/*.c: Remove excess braces from target selectors.
From-SVN: r251419
Alexander Monakov [Tue, 29 Aug 2017 17:34:21 +0000 (20:34 +0300)]
ira-costs: avoid missing base registers in record_address_regs
* ira-costs.c (record_address_regs): Handle both operands of PLUS for
MAX_REGS_PER_ADDRESS == 1.
From-SVN: r251418
Uros Bizjak [Tue, 29 Aug 2017 17:21:21 +0000 (19:21 +0200)]
20030926-1.c: Add dg-additional-options.
* gcc.target/i386/
20030926-1.c: Add dg-additional-options.
* gcc.target/i386/abi-2.c: Ditto.
* gcc.target/i386/interrupt-sibcall-2.c: Ditto.
* gcc.target/i386/pr22076.c: Ditto.
* gcc.target/i386/pr37216.c: Ditto.
* gcc.target/i386/pr39431.c: Ditto.
* gcc.target/i386/pr40906-1.c: Ditto.
* gcc.target/i386/pr40906-2.c: Ditto.
* gcc.target/i386/pr43766.c: Ditto.
* gcc.target/i386/pr46226.c: Ditto.
* gcc.target/i386/pr46470.c: Ditto.
* gcc.target/i386/pr59929.c: Ditto.
* gcc.target/i386/sse-10.c: Ditto.
* gcc.target/i386/vararg-1.c: Ditto.
* gcc.target/i386/vararg-1.c: Ditto.
* gcc.target/i386/asm-6.c: Compile for fpic target only.
* gcc.target/i386/pr44223.c: Ditto.
* gcc.target/i386/bitfield1.c (dg-options): Remove target selector.
* gcc.target/i386/bitfield2.c (dg-options): Ditto.
* gcc.target/i386/pr67480.c (dg-options): Ditto.
* gcc.target/i386/vect-cond-1.c (dg-options): Ditto.
* gcc.target/i386/bittest.c (scan-assembler-times): Ditto.
* gcc.target/i386/darwin-fpmath.c (dg-do): Simplify target selector.
* gcc.target/i386/mvc9.c: Compile for lto target only.
* gcc.target/i386/pr45234.c: Compile for ia32 target only.
* gcc.target/i386/pr49866.c: Compile for lp64 target only.
* gcc.target/i386/pr57091.c: Ditto.
* gcc.target/i386/pr61599-2.c: Ditto.
From-SVN: r251417
Uros Bizjak [Tue, 29 Aug 2017 16:56:57 +0000 (18:56 +0200)]
i386.opt (flag_fentry): Do not init to -1.
* config/i386/i386.opt (flag_fentry): Do not init to -1.
* config/i386/i386.c (ix86_option_override_internal): Simplify
setting of opts->x_flag_entry.
From-SVN: r251416
Bill Schmidt [Tue, 29 Aug 2017 14:41:53 +0000 (14:41 +0000)]
re PR tree-optimization/81503 (Wrong code at -O2)
[gcc]
2017-08-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Jakub Jelinek <jakub@redhat.com>
Richard Biener <rguenther@suse.de>
PR tree-optimization/81503
* gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure
folded constant fits in the target type; reorder tests for clarity.
[gcc/testsuite]
2017-08-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/81503
* gcc.c-torture/execute/pr81503.c: New file.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
Co-Authored-By: Richard Biener <rguenther@suse.de>
From-SVN: r251414
Martin Liska [Tue, 29 Aug 2017 14:12:44 +0000 (16:12 +0200)]
Make expansion of balanced binary trees of switches on tree level.
2017-08-29 Martin Liska <mliska@suse.cz>
* passes.def: Include pass_lower_switch.
* stmt.c (dump_case_nodes): Remove and move to
tree-switch-conversion.
(case_values_threshold): Likewise.
(expand_switch_as_decision_tree_p): Likewise.
(emit_case_decision_tree): Likewise.
(expand_case): Likewise.
(balance_case_nodes): Likewise.
(node_has_low_bound): Likewise.
(node_has_high_bound): Likewise.
(node_is_bounded): Likewise.
(emit_case_nodes): Likewise.
(struct simple_case_node): New struct.
(add_case_node): Remove.
(emit_case_dispatch_table): Use vector instead of case_list.
(reset_out_edges_aux): Remove.
(compute_cases_per_edge): Likewise.
(expand_case): Build list of simple_case_node.
(expand_sjlj_dispatch_table): Use it.
* tree-switch-conversion.c (struct case_node): Moved from
stmt.c and adjusted.
(emit_case_nodes): Likewise.
(node_has_low_bound): Likewise.
(node_has_high_bound): Likewise.
(node_is_bounded): Likewise.
(case_values_threshold): Likewise.
(reset_out_edges_aux): Likewise.
(compute_cases_per_edge): Likewise.
(add_case_node): Likewise.
(dump_case_nodes): Likewise.
(balance_case_nodes): Likewise.
(expand_switch_as_decision_tree_p): Likewise.
(emit_jump): Likewise.
(emit_case_decision_tree): Likewise.
(try_switch_expansion): Likewise.
(do_jump_if_equal): Likewise.
(emit_cmp_and_jump_insns): Likewise.
(fix_phi_operands_for_edge): New function.
(record_phi_operand_mapping): Likewise.
(class pass_lower_switch): New pass.
(pass_lower_switch::execute): New function.
(make_pass_lower_switch): Likewise.
(conditional_probability):
* timevar.def: Add TV_TREE_SWITCH_LOWERING.
* tree-pass.h: Add make_pass_lower_switch.
2017-08-29 Martin Liska <mliska@suse.cz>
* gcc.dg/tree-prof/update-loopch.c: Scan patterns in
switchlower.
* gcc.dg/tree-ssa/vrp104.c: Likewise.
From-SVN: r251412
Jozef Lawrynowicz [Tue, 29 Aug 2017 13:20:54 +0000 (13:20 +0000)]
re PR target/80993 ([msp430] __attribute__((interrupt)) should imply __attribute__((used)))
PR target/80993
* gcc/config/msp430/msp430.c (msp430_attr): Mark interrupt
handlers as used.
From-SVN: r251410
Richard Biener [Tue, 29 Aug 2017 12:15:57 +0000 (12:15 +0000)]
dwarf2out.c (add_dwarf_attr): When checking is enabled verify we do not add a DW_AT_inline attribute twice.
2017-08-29 Richard Biener <rguenther@suse.de>
* dwarf2out.c (add_dwarf_attr): When checking is enabled verify
we do not add a DW_AT_inline attribute twice.
(gen_subprogram_die): Remove code setting DW_AT_inline on
DECL_ABSTRACT_P nodes.
From-SVN: r251409
Martin Liska [Tue, 29 Aug 2017 08:35:46 +0000 (10:35 +0200)]
Fix --help=target (Ada) (PR other/39851)
2017-08-29 Martin Liska <mliska@suse.cz>
PR other/39851
* gcc-interface/trans.c (Pragma_to_gnu): Set argument to NULL.
From-SVN: r251406
Richard Sandiford [Tue, 29 Aug 2017 07:47:05 +0000 (07:47 +0000)]
Set the call nothrow flag more often
This patch sets the nothrow flag for various calls to internal functions
that are not inherently NOTHROW (and so can't be declared that way in
internal-fn.def) but that are used in contexts that can guarantee
NOTHROWness.
2017-08-29 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* gimplify.c (gimplify_call_expr): Copy the nothrow flag to
calls to internal functions.
(gimplify_modify_expr): Likewise.
* tree-call-cdce.c (use_internal_fn): Likewise.
* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
(convert_to_divmod): Set the nothrow flag.
* tree-if-conv.c (predicate_mem_writes): Likewise.
* tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
(vectorizable_call): Likewise.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
* tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
(vect_recog_mask_conversion_pattern): Likewise.
From-SVN: r251401
Martin Liska [Tue, 29 Aug 2017 07:46:10 +0000 (09:46 +0200)]
Fix --help=target (PR other/39851).
2017-08-29 Martin Liska <mliska@suse.cz>
PR other/39851
* gcc.c (driver_handle_option): Add new argument.
* opts-common.c (handle_option): Pass
target_option_override_hook.
* opts-global.c (lang_handle_option): Add new option.
(set_default_handlers): Add new argument.
(decode_options): Likewise.
* opts.c (target_handle_option): Likewise.
(common_handle_option): Call target_option_override_hook.
* opts.h (struct cl_option_handler_func): Add hook for
target option override.
(struct cl_option_handlers): Likewise.
(set_default_handlers): Add new argument.
(decode_options): Likewise.
(common_handle_option): Likewise.
(target_handle_option): Likewise.
* toplev.c (toplev::main): Pass targetm.target_option.override
hook.
2017-08-29 Martin Liska <mliska@suse.cz>
PR other/39851
* c-common.c (parse_optimize_options): Add argument to function
call.
* c-pragma.c (handle_pragma_diagnostic): Likewise.
From-SVN: r251400
Richard Biener [Tue, 29 Aug 2017 07:04:31 +0000 (07:04 +0000)]
tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine life to the active subtree.
2017-08-29 Richard Biener <rguenther@suse.de>
Dominik Infuehr <dominik.infuehr@theobroma-systems.com>
* tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine
life to the active subtree.
* gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c: New testcase.
Co-Authored-By: Dominik Infuehr <dominik.infuehr@theobroma-systems.com>
From-SVN: r251398
Jeff Law [Tue, 29 Aug 2017 05:03:36 +0000 (23:03 -0600)]
tree-ssa-dom.c (edge_info::record_simple_equiv): Call derive_equivalences.
* tree-ssa-dom.c (edge_info::record_simple_equiv): Call
derive_equivalences.
(derive_equivalences_from_bit_ior, record_temporary_equivalences):
Code moved into....
(edge_info::derive_equivalences): New private member function
* gcc.dg/torture/pr57214.c: Fix type of loop counter.
* gcc.dg/tree-ssa/ssa-sink-16.c: Disable DOM.
* gcc.dg/tree-ssa/ssa-dom-thread-11.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-12.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-13.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-14.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-15.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-16.c: New test.
* gcc.dg/tree-ssa/ssa-dom-thread-17.c: New test.
From-SVN: r251397
Jeff Law [Tue, 29 Aug 2017 05:03:22 +0000 (23:03 -0600)]
tree-ssa-dom.c (class edge_info): Changed from a struct to a class.
* tree-ssa-dom.c (class edge_info): Changed from a struct
to a class. Add ctor/dtor, methods and data members.
(edge_info::edge_info): Renamed from allocate_edge_info.
Initialize additional members.
(edge_info::~edge_info): New.
(free_dom_edge_info): Delete the edge info.
(record_edge_info): Use new class & associated member functions.
Tighten forms for testing for edge equivalences.
(record_temporary_equivalences): Iterate over the simple
equivalences rather than assuming there's only one per edge.
(cprop_into_successor_phis): Iterate over the simple
equivalences rather than assuming there's only one per edge.
(optimize_stmt): Use operand_equal_p rather than pointer
equality for mini-DSE code.
From-SVN: r251396
GCC Administrator [Tue, 29 Aug 2017 00:16:39 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r251395
Janus Weil [Mon, 28 Aug 2017 18:46:28 +0000 (20:46 +0200)]
re PR fortran/81770 (Bogus warning: Pointer in pointer assignment might outlive the pointer target)
2017-08-28 Janus Weil <janus@gcc.gnu.org>
PR fortran/81770
* expr.c (gfc_check_pointer_assign): Improve the check whether pointer
may outlive pointer target.
2017-08-28 Janus Weil <janus@gcc.gnu.org>
PR fortran/81770
* gfortran.dg/warn_target_lifetime_3.f90: Fix a typo.
* gfortran.dg/warn_target_lifetime_4.f90: New testcase.
From-SVN: r251390
Steve Ellcey [Mon, 28 Aug 2017 16:55:46 +0000 (16:55 +0000)]
dec_init_1.f90 (dummy): Use ichar in print statement.
2017-08-25 Steve Ellcey <sellcey@cavium.com>
* gfortran.dg/dec_init_1.f90 (dummy): Use ichar in print statement.
* gfortran.dg/dec_init_2.f90 (dummy): Ditto.
* gfortran.dg/dec_init_3.f90 (dummy): Ditto.
From-SVN: r251389
Nathan Sidwell [Mon, 28 Aug 2017 16:25:44 +0000 (16:25 +0000)]
cp-tree.h (lang_type): Replace sorted_fields vector with bindings map.
* cp-tree.h (lang_type): Replace sorted_fields vector with
bindings map.
(CLASSTYPE_SORTED_FIELDS): Delete.
(CLASSTYPE_BINDINGS): New.
* decl.c (finish_enum_value_list): Swap args of
insert_late_enum_def_bindings.
* name-lookup.c (lookup_field_1): Replace binary search of sorted
fields with map->get.
(sorted_fields_type_new, count_fields,
add_fields_to_record_type, add_enum_fields_to_record_type): Delete.
(add_class_member, add_class_members): New.
(set_class_bindings): Create map and insert.
(insert_late_enum_def_binding): Swap parms. Use add_clasS_member.
* ptree.c (cxx_print_type): Delete sorted fields printing.
From-SVN: r251388
Nathan Sidwell [Mon, 28 Aug 2017 14:51:45 +0000 (14:51 +0000)]
cp-tree.h (insert_late_enum_def_into_classtype_sorted_fields): Delete.
* cp-tree.h (insert_late_enum_def_into_classtype_sorted_fields):
Delete.
* name-lookup.h (set_class_bindings,
insert_late_enum_def_bindings): Declare.
* decl.c (finish_enum_value_list): Adjust for
insert_late_enum_def_bindings name change.
* class.c (finish_struct_1): Call set_class_bindings.
(count_fields, add_fields_to_record_type,
add_enum_fields_to_record_type, sorted_fields_type_new,
insert_into_classtype_sorted_fields,
insert_late_enum_def_into_classtype_sorted_fields): Move to ...
* name-lookup.h (count_fields, add_fields_to_record_type,
add_enum_fields_to_record_type, sorted_fields_type_new,
set_class_bindings, insert_late_enum_def_bindings): ... here.
From-SVN: r251387
Nathan Sidwell [Mon, 28 Aug 2017 13:44:39 +0000 (13:44 +0000)]
gcc.c (execute): Fold SIGPIPE handling into switch statement.
* gcc.c (execute): Fold SIGPIPE handling into switch
statement. Adjust internal error message.
From-SVN: r251385
Richard Biener [Mon, 28 Aug 2017 13:14:28 +0000 (13:14 +0000)]
re PR lto/81968 (early lto debug objects make Solaris ld SEGV)
2017-08-28 Richard Biener <rguenther@suse.de>
PR lto/81968
* simple-object-elf.c (simple_object_elf_copy_lto_debug_section):
Adjust field with for sh_type write, set SHF_EXCLUDE only for
removed sections.
From-SVN: r251384
Richard Biener [Mon, 28 Aug 2017 13:13:23 +0000 (13:13 +0000)]
re PR debug/81993 (-gsplit-dwarf removes some symbols, causing some undefined references)
2017-08-28 Richard Biener <rguenther@suse.de>
PR debug/81993
* dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes):
Do nothing for removed DIEs.
From-SVN: r251382
Richard Biener [Mon, 28 Aug 2017 11:42:23 +0000 (11:42 +0000)]
re PR tree-optimization/81977 (Issue with inline memcpy with optimizations enabled)
2017-08-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/81977
* tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through
memcpy.
* g++.dg/torture/pr81977.C: New testcase.
From-SVN: r251378
Alexander Monakov [Mon, 28 Aug 2017 10:58:45 +0000 (13:58 +0300)]
optabs: ensure mem_thread_fence is a compiler barrier
PR target/80640
* doc/md.texi (mem_thread_fence): Remove mention of mode. Rewrite.
* optabs.c (expand_mem_thread_fence): Emit a compiler barrier when
using targetm.gen_mem_thread_fence.
testsuite/
* gcc.dg/atomic/pr80640.c: New testcase.
From-SVN: r251377
Jerry DeLisle [Mon, 28 Aug 2017 03:42:47 +0000 (03:42 +0000)]
re PR fortran/78387 (OpenMP segfault/stack size exceeded writing to internal file)
2017-08-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/78387
* io/list_read.c (nml_read_obj): Remove use of stash.
* io/transfer.c (st_read_done, st_write_done): Likewise.
* io/unit.c (stash_internal_unit): Delete function.
(get_unit): Remove use of stash.
(init_units): Likewise.
(close_units): Likewise.
* io/write.c (nml_write_obj): Likewise:
From-SVN: r251374
GCC Administrator [Mon, 28 Aug 2017 00:16:28 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r251373
Uros Bizjak [Sun, 27 Aug 2017 18:01:46 +0000 (20:01 +0200)]
re PR target/81995 (gcc/reg-stack.c:2073:1: error: unrecognizable insn:)
PR target/81995
* config/i386/i386.md (*<btsc><mode>): Change operand 2
predicate to register_operand. Reorder operands.
(*btr<mode>): Ditto.
(*<btsc><mode>_mask): Change operand 3 predicate to register_operand.
(*btr<mode>_mask): Ditto.
testsuite/ChangeLog:
PR target/81995
* gcc.target/i386/pr46091-4.c: Add -mregparm=2 for 32bit targets.
* gcc.target/i386/pr46091-4a.c: Ditto.
From-SVN: r251369
Thomas Koenig [Sun, 27 Aug 2017 08:01:25 +0000 (08:01 +0000)]
re PR fortran/81974 (ICE verify_gimple failed type mismatch in binary expression)
2017-08-27 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/81974
* frontend-passes (inline_matumul_assign): Explicity
set typespec for call to CONJG.
2017-08-27 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/81974
* gfortran.dg/inline_matmul_19.f90: New test.
From-SVN: r251368
GCC Administrator [Sun, 27 Aug 2017 00:16:41 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r251367
GCC Administrator [Sat, 26 Aug 2017 00:16:46 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r251362
Steven Munroe [Fri, 25 Aug 2017 15:23:27 +0000 (15:23 +0000)]
Part 3/3 for contributing PPC64LE support for X86 SSE instrisics.
This patch includes testsuite/gcc.target tests for the intrinsics
in xmmintrin.h. For these tests I added -Wno-psabi to dg-options
to suppress warnings associated with the vector ABI change in GCC5.
From-SVN: r251357
Steven Munroe [Fri, 25 Aug 2017 15:11:50 +0000 (15:11 +0000)]
Part 2/3 for contributing PPC64LE support for X86 SSE instrisics.
Part 2/3 for contributing PPC64LE support for X86 SSE
instrisics. This patch includes the new (for PPC) xmmintrin.h,
changes x86intrin.h to include xmmintrin.h and associated
config.gcc changes.
From-SVN: r251356
William Schmidt [Fri, 25 Aug 2017 15:08:30 +0000 (15:08 +0000)]
re PR target/81504 (gcc-7 regression: vec_st in loop misoptimized)
2017-08-25 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/81504
* config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference
parameter and_insn and return it.
(recombine_lvx_pattern): Insert a copy to ensure availability of
the base register of the copied masking operation at the point of
the instruction replacement.
(recombine_stvx_pattern): Likewise.
From-SVN: r251355
Michael Meissner [Fri, 25 Aug 2017 13:07:10 +0000 (13:07 +0000)]
rs6000.opt (-mpower9-dform-scalar): Delete undocumented switches.
[gcc]
2017-08-24 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
undocumented switches.
(-mpower9-dform-vector): Likewise.
(-mpower9-dform): Likewise.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
comments to delete references to -mpower9-dform* switches.
* config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
Delete reference to -mpower9-dform* switches, test for
-mpower9-vector instead.
* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
(OTHER_P9_VECTOR_MASKS): Likewise.
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
tests against -mpower9-dform* to -mpower9-vector. Delete code
that checked for -mpower9-dform* consistancy with other options.
Add test for -mpower9-misc to enable other power9 switches.
(rs6000_init_hard_regno_mode_ok): Likewise.
(rs6000_option_override_internal): Likewise.
(rs6000_emit_prologue): Likewise.
(rs6000_emit_epilogue): Likewise.
(rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
(rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
(emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
-mpower9-vector.
(emit_fusion_p9_store): Likewise.
* config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
resetting these macros if the assembler does not support ISA 3.0
instructions.
(TARGET_P9_DFORM_VECTOR): Likewise.
* config/rs6000/rs6000.md (peepholes to optimize altivec memory):
Change to use -mpower9-vector instead of -mpower9-dform-scalar.
[gcc/testsuite]
2017-08-24 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/dform-1.c: Delete -mpower9-dform*
options.
* gcc.target/powerpc/dform-2.c: Likewise.
* gcc.target/powerpc/dform-3.c: Likewise.
* gcc.target/powerpc/pr71656-1.c: Likewise.
* gcc.target/powerpc/pr71656-2.c: Likewise.
* gcc.target/powerpc/pr80103-1.c: Likewise.
* gcc.target/powerpc/pr80098-1.c: Likewise.
From-SVN: r251352
Nathan Sidwell [Fri, 25 Aug 2017 12:32:54 +0000 (12:32 +0000)]
re PR target/81921 (Fails to always-inline intrinsics with -flto)
Retabify 2017-08-24 Richard Biener <rguenther@suse.de>
PR target/81921
From-SVN: r251351
Nathan Sidwell [Fri, 25 Aug 2017 12:27:48 +0000 (12:27 +0000)]
class.c (method_name_cmp, [...]): Method names can never be NULL.
* class.c (method_name_cmp, resort_method_name_cmp): Method names
can never be NULL.
From-SVN: r251350
Alan Modra [Fri, 25 Aug 2017 12:21:00 +0000 (21:51 +0930)]
PR81747, ICE in operator[]
PR rtl-optimization/81747
* cse.c (cse_extended_basic_block): Don't attempt to record
equivalences for degenerate conditional branches that branch
to their fall-through.
From-SVN: r251349
Nathan Sidwell [Fri, 25 Aug 2017 11:37:10 +0000 (11:37 +0000)]
Conversion operators have a special name
Conversion operators have a special name
* cp-tree.h (CPTI_CONV_OP_MARKER, CPTI_CONV_OP_IDENTIFIER): New.
(conv_op_marker, conv_op_identifier): New.
(CLASSTYPE_FIRST_CONVERSION_SLOT): Delete.
* decl.c (initialize_predefined_identifiers): Add
conv_op_identifier.
(cxx_init_decl_processing): Create conv_op_marker.
* decl2.c (check_classfn): Lookup conv-ops by name.
* class.c (add_method): Use conv_op_identifier & conv_op_marker.
(resort_type_method_vec): Don't skip conv-ops.
(finish_struct_methods, warn_hidden): Likewise.
* name-lookup.h (lookup_all_conversions): Delete.
* name-lookup.c (lookup_conversion_operator): Replace with ...
(extract_conversion_operator): ... this.
(lookup_fnfields_slot_nolazy): Find conv-ops by name.
(lookup_all_conversions): Delete.
* pt.c (check_explicit_specialization): Find conv-ops by name.
* search.c (lookup_conversions_r): Likewise.
From-SVN: r251348
Martin Sebor [Fri, 25 Aug 2017 00:25:57 +0000 (00:25 +0000)]
PR middle-end/81908 - FAIL: gfortran.dg/alloc_comp_auto_array_2.f90 -O3 -g -m32
gcc/ChangeLog:
PR middle-end/81908
* gimple-fold.c (size_must_be_zero_p): New function.
(gimple_fold_builtin_memory_op): Call it.
gcc/testsuite/ChangeLog:
PR middle-end/81908
* gcc.dg/tree-ssa/builtins-folding-gimple-2.c: New test.
* gcc.dg/tree-ssa/builtins-folding-gimple-3.c: New test.
* gcc.dg/tree-ssa/pr81908.c: New test.
From-SVN: r251347
GCC Administrator [Fri, 25 Aug 2017 00:16:43 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r251346
François Dumont [Thu, 24 Aug 2017 20:31:53 +0000 (20:31 +0000)]
stl_list.h [!_GLIBCXX_INLINE_VERSION](_List_base<>::_S_distance): Remove.
2017-08-24 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_list.h
[!_GLIBCXX_INLINE_VERSION](_List_base<>::_S_distance): Remove.
(_List_impl(_Node_alloc_type&&, _List_impl&&)): New.
(_List_base(_Node_alloc_type&&, _List_base&&)): New, use latter.
[!_GLIBCXX_INLINE_VERSION](_List_base(_Node_alloc_type&&,_List_base&&)):
Remove.
(_List_base(_Node_alloc_type&&)): New.
[!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_distance): Remove.
[!_GLIBCXX_INLINE_VERSION](_List_base<>::_M_node_count): Remove.
(list<>::_M_node_count): New.
(list<>::size()): Adapt to call latter.
(list<>::_S_distance(const_iterator, const_iterator)): New.
(list<>::splice(iterator, list&, const_iterator, const_iterator)):
Adapt to call latter.
(list(list&&, const allocator_type&, true_type)): New.
(list(list&&, const allocator_type&, false_type)): New.
(list(list&&, const allocator_type&)): Adapt to call latters.
From-SVN: r251342
Michael Meissner [Thu, 24 Aug 2017 19:28:07 +0000 (19:28 +0000)]
rs6000.opt (-mpower9-dform-scalar): Delete undocumented switches.
[gcc]
2017-08-24 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
undocumented switches.
(-mpower9-dform-vector): Likewise.
(-mpower9-dform): Likewise.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
comments to delete references to -mpower9-dform* switches.
* config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
Delete reference to -mpower9-dform* switches, test for
-mpower9-vector instead.
* config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
(OTHER_P9_VECTOR_MASKS): Likewise.
(POWERPC_MASKS): Likewise.
* config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
tests against -mpower9-dform* to -mpower9-vector. Delete code
that checked for -mpower9-dform* consistancy with other options.
Add test for -mpower9-misc to enable other power9 switches.
(rs6000_init_hard_regno_mode_ok): Likewise.
(rs6000_option_override_internal): Likewise.
(rs6000_emit_prologue): Likewise.
(rs6000_emit_epilogue): Likewise.
(rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
(rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
(emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
-mpower9-vector.
(emit_fusion_p9_store): Likewise.
* config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
resetting these macros if the assembler does not support ISA 3.0
instructions.
(TARGET_P9_DFORM_VECTOR): Likewise.
* config/rs6000/rs6000.md (peepholes to optimize altivec memory):
Change to use -mpower9-vector instead of -mpower9-dform-scalar.
[gcc/testsuite]
2017-08-24 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/dform-1.c: Delete -mpower9-dform*
options.
* gcc.target/powerpc/dform-2.c: Likewise.
* gcc.target/powerpc/dform-3.c: Likewise.
* gcc.target/powerpc/pr71656-1.c: Likewise.
* gcc.target/powerpc/pr71656-2.c: Likewise.
* gcc.target/powerpc/pr80103-1.c: Likewise.
* gcc.target/powerpc/pr80098-1.c: Likewise.
From-SVN: r251341
Nathan Sidwell [Thu, 24 Aug 2017 18:39:41 +0000 (18:39 +0000)]
Conversion operators kept on single overload set
Conversion operators kept on single overload set
* class.c (add_method): Keep all conv-ops on one slot.
* name-lookup.c (lookup_conversion_operator): Pull the desired
conv op out of overload set.
* search.c (lookup_conversions_r): Lose template/non-template
distinction.
(lookup_conversions): Likewise.
From-SVN: r251340
Steven Munroe [Thu, 24 Aug 2017 17:46:01 +0000 (17:46 +0000)]
Adds the powerpc equivalent mm_malloc.h header which is needed by xmmintrin.h...
Adds the powerpc equivalent mm_malloc.h header which is needed by
xmmintrin.h and cleans up some noisy warnings from the previous MMX
commit.
From-SVN: r251339
Uros Bizjak [Thu, 24 Aug 2017 17:19:50 +0000 (19:19 +0200)]
target-supports.exp: Group together target-dependant checks.
* lib/target-supports.exp: Group together target-dependant checks.
From-SVN: r251338
Bin Cheng [Thu, 24 Aug 2017 15:38:39 +0000 (15:38 +0000)]
re PR tree-optimization/81913 (wrong code at -O1)
PR tree-optimization/81913
* tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter
analysis when either IVs in condition can wrap.
gcc/testsuite
* gcc.c-torture/execute/pr81913.c: New test.
* gcc.dg/tree-ssa/loop-niter-1.c: New test.
* gcc.dg/tree-ssa/loop-niter-2.c: New test.
From-SVN: r251337
David Malcolm [Thu, 24 Aug 2017 14:28:16 +0000 (14:28 +0000)]
C: fix logic within c_expr::get_location
In r251239 I added a c_expr::get_location method for use by
c_parser_expr_list for building the vec<location_t> for
an expression list, rather than using the location of the first token.
When determining whether to use the location within the tree node,
or fall back to the range in the c_expr, I used EXPR_CAN_HAVE_LOCATION,
rather than EXPR_HAS_LOCATION. This meant that any tree nodes of kinds
that *can* have a location but which erroneously had
EXPR_LOCATION (value) == UNKNOWN_LOCATION
had that value added to the vec<location_t>, leading to missing
location information when reporting on the issue
(seen with gcc.dg/Wtraditional-conversion-2.c for m68k).
This patch addresses this in two ways:
(a) it fixes the specific issue in this failing test case, by
setting up the location properly on the EXCESS_PRECISION_EXPR.
(b) updating c_expr::get_location by only using the EXPR_LOCATION
if it's sane. Arguably this is papering over bugs, but they are
pre-existing ones exposed by r251239, and I'd rather have this
fix in place than play whack-a-mole on any other such "missing
location" bugs that are lurking in the codebase.
gcc/c/ChangeLog:
* c-tree.h (c_expr::get_location) Use EXPR_HAS_LOCATION rather
than CAN_HAVE_LOCATION_P when determining whether to use the
location_t value within "value".
gcc/c-family/ChangeLog:
* c-lex.c (interpret_float): Use token location
when building an EXCESS_PRECISION_EXPR.
From-SVN: r251335
Uros Bizjak [Thu, 24 Aug 2017 14:18:57 +0000 (16:18 +0200)]
dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
* dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
* dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove.
From-SVN: r251334
Richard Biener [Thu, 24 Aug 2017 13:44:35 +0000 (13:44 +0000)]
re PR target/81921 (Fails to always-inline intrinsics with -flto)
2017-08-23 Richard Biener <rguenther@suse.de>
PR target/81921
* targhooks.c (default_target_can_inline_p): Properly
use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET
is present and always compare.
* config/i386/i386.c (ix86_valid_target_attribute_tree): Do not
imply -mfpmath=sse from TARGET_SSE_P.
(ix86_can_inline_p): Properly use target_option_default_node when
no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare.
* gcc.target/i386/pr81921.c: New testcase.
From-SVN: r251333
Richard Biener [Thu, 24 Aug 2017 13:41:51 +0000 (13:41 +0000)]
re PR debug/81936 (ICE in dwarf2out_die_ref_for_decl, at dwarf2out.c:5543)
2017-08-24 Richard Biener <rguenther@suse.de>
PR debug/81936
* dwarf2out.c (output_die): Handle flag_generate_offload like
flag_generate_lto.
(output_comp_unit): Likewise.
(gen_array_type_die): Likewise.
(dwarf2out_early_finish): Likewise.
(note_variable_value_in_expr): Likewise.
(dwarf2out_finish): Likewise. Adjust assert.
* cgraphunit.c (symbol_table::compile): Move setting of
flag_generate_offload earlier ...
(symbol_table::finalize_compilation_unit): ... here, before
early debug finalization.
From-SVN: r251332
Richard Biener [Thu, 24 Aug 2017 12:22:30 +0000 (12:22 +0000)]
i386.c: Include symbol-summary.h, ipa-prop.h and ipa-fnsummary.h.
2017-08-24 Richard Biener <rguenther@suse.de>
* config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
and ipa-fnsummary.h.
(ix86_can_inline_p): When ix86_fpmath flags do not match
check whether the callee uses FP math at all.
From-SVN: r251330
Aldy Hernandez [Thu, 24 Aug 2017 11:40:55 +0000 (11:40 +0000)]
re PR middle-end/81931 (r251260 breaks many tests on powerpc64)
PR middle-end/81931
* tree-ssanames.c (get_nonzero_bits): Use element_precision
instead of TYPE_PRECISION.
From-SVN: r251328
Richard Sandiford [Thu, 24 Aug 2017 07:47:13 +0000 (07:47 +0000)]
Make more use of subreg_offset_from_lsb
This patch makes use of the subreg_offset_from_lsb function
added by an earlier patch in the SVE series.
2017-08-24 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* combine.c (make_extraction): Use subreg_offset_from_lsb.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251326
GCC Administrator [Thu, 24 Aug 2017 00:16:27 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r251325
Daniel Santos [Wed, 23 Aug 2017 21:46:14 +0000 (21:46 +0000)]
PR target/80969 - Fix ICE with -mabi=ms -mavx512f, reduce wasted space when realigning stack.
2017-08-23 Daniel Santos <daniel.santos@pobox.com>
* config/i386/i386.h (ix86_frame::stack_realign_allocate_offset):
Remove field.
(ix86_frame::stack_realign_allocate): New field.
(struct machine_frame_state): Modify comments.
(machine_frame_state::sp_realigned_fp_end): New field.
* config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame
layout calculation.
(sp_valid_at): Add assertion to assure no attempt to access invalid
offset of a realigned stack.
(fp_valid_at): Likewise.
(choose_baseaddr): Modify comments.
(ix86_emit_outlined_ms2sysv_save): Adjust to changes in
ix86_expand_prologue.
(ix86_expand_prologue): Modify stack realignment and allocation.
(ix86_expand_epilogue): Modify comments.
* doc/sourcebuild.texi: Add documentation for target selectors avx2,
avx2_runtime, avx512f, and avx512f_runtime.
2017-08-23 Daniel Santos <daniel.santos@pobox.com>
* gcc.target/i386/pr80969-1.c: New testcase.
* gcc.target/i386/pr80969-2a.c: Likewise.
* gcc.target/i386/pr80969-2.c: Likewise.
* gcc.target/i386/pr80969-3.c: Likewise.
* gcc.target/i386/pr80969-4a.c: Likewise.
* gcc.target/i386/pr80969-4b.c: Likewise.
* gcc.target/i386/pr80969-4.c: Likewise.
* gcc.target/i386/pr80969-4.h: New header common to pr80969-4*.c
* lib/target-supports.exp (check_avx512_os_support_available,
check_avx512f_hw_available, check_effective_target_avx512f_runtime):
New proceedures for target avx512f and avx512f_runtime selectors.
(check_avx2_hw_available): Fix breakage due NULL being undefined.
From-SVN: r251321
Nathan Sidwell [Wed, 23 Aug 2017 21:09:03 +0000 (21:09 +0000)]
cp-tree.h (lookup_field_1, [...]): Move declatations to ...
* cp-tree.h (lookup_field_1, lookup_fnfields_slot,
lookup_fnfields_slot_nolazy, lookup_all_conversions): Move
declatations to ...
* name-lookup.h (lookup_field_1, lookup_fnfields_slot,
lookup_fnfields_slot_nolazy, lookup_all_conversions): ... here.
* search.c (lookup_conversion_operator,
lookup_fnfields_slot_nolazy, lookup_field_1, lookup_fnfields_slot,
lookup_all_conversions): Move to ...
* name-lookup.c (lookup_conversion_operator,
lookup_fnfields_slot_nolazy, lookup_field_1, lookup_fnfields_slot,
lookup_all_conversions): ... here.
From-SVN: r251319
Nathan Sidwell [Wed, 23 Aug 2017 19:43:38 +0000 (19:43 +0000)]
semantics.c (finish_member_declaration): Move USING_DECL check earlier.
* semantics.c (finish_member_declaration): Move USING_DECL check
earlier. Always set C++ linkage. Commonize TYPE_FIELD and
template decl list insertion.
From-SVN: r251317
Nathan Sidwell [Wed, 23 Aug 2017 19:37:53 +0000 (19:37 +0000)]
cp-tree.h (maybe_version_functions): Declare.
* cp-tree.h (maybe_version_functions): Declare.
* decl.c (decls_match): Break function versioning check to
separate function. Call it.
(maybe_version_functions): Broken out of decls_match.
* class.c (add_method): Use maybe_version_functions.
From-SVN: r251316
Nathan Sidwell [Wed, 23 Aug 2017 19:33:08 +0000 (19:33 +0000)]
cp-tree.h (print_search_statistics, [...]): Don't declare.
* cp-tree.h (print_search_statistics,
reinit_search_statistics): Don't declare.
* search.c (n_fields_searched, n_calls_lookup_field,
n_calls_lookup_field_1, n_calls_lookup_fnfields,
n_calls_lookup_fnfields_1, n_calls_get_base_type,
n_outer_fields_searched, n_contexts_saved): Delete.
(lookup_field_1, lookup_member,
lookup_fnfields_slot_nolazy): Remove stat gathering.
(print_search_statistics, reinit_search_statistics): Delete.
* tree.c (cxx_print_statistics): Don't print search stats.
From-SVN: r251315
David Malcolm [Wed, 23 Aug 2017 15:53:41 +0000 (15:53 +0000)]
testsuite: add param-type-mismatch.c/C testcases as a baseline
gcc/testsuite/ChangeLog:
* g++.dg/diagnostic/param-type-mismatch.C: New test acse.
* gcc.dg/param-type-mismatch.c: New test case.
From-SVN: r251312
Uros Bizjak [Wed, 23 Aug 2017 14:45:30 +0000 (16:45 +0200)]
i386.opt: Remove unneeded Init(0) initializations.
* config/i386/i386.opt: Remove unneeded Init(0) initializations.
(mstackrealign): Do not init to -1.
* config/i386/i386.c (ix86_option_override_internal):
Check opts_set, not opts when setting default value of
opts->x_ix86_force_align_arg_pointer.
From-SVN: r251311
Will Schmidt [Wed, 23 Aug 2017 14:06:55 +0000 (14:06 +0000)]
fold-vec-perm-char.c: New.
[gcc/testsuite]
2017-08-23 Will Schmidt <will_schmidt@vnet.ibm.com>
* gcc.target/powerpc/fold-vec-perm-char.c: New.
* gcc.target/powerpc/fold-vec-perm-double.c: New.
* gcc.target/powerpc/fold-vec-perm-float.c: New.
* gcc.target/powerpc/fold-vec-perm-int.c: New.
* gcc.target/powerpc/fold-vec-perm-longlong.c: New.
* gcc.target/powerpc/fold-vec-perm-pixel.c: New.
* gcc.target/powerpc/fold-vec-perm-short.c: New.
From-SVN: r251310
Richard Biener [Wed, 23 Aug 2017 13:50:02 +0000 (13:50 +0000)]
ChangeLog: Fix last entry.
2017-08-23 Richard Biener <rguenther@suse.de>
* testsuite/ChangeLog: Fix last entry.
From-SVN: r251309
Richard Biener [Wed, 23 Aug 2017 13:44:20 +0000 (13:44 +0000)]
function.c (fndecl_name): Use verbosity 1 (no arguments) for lang_hooks.decl_printable_name.
2017-08-23 Richard Biener <rguenther@suse.de>
* function.c (fndecl_name): Use verbosity 1 (no arguments) for
lang_hooks.decl_printable_name.
* print-rtl-function.c (print_rtx_function): Likewise.
* tree-pretty-print.c (dump_function_header): Likewise.
* g++.dg/cpp1y/constexpr-instantiate.C: Adjust.
* g++.dg/tree-ssa/pr45605.C: Likewise.
* gnat.dg/noinline2.ad: Likewise.b
* gnat.dg/renaming6.ad: Likewise.b
* gnat.dg/renaming6.ad: Likewise.s
* gnat.dg/specs/noinline3.ad: Likewise.s
From-SVN: r251308
Richard Biener [Wed, 23 Aug 2017 12:11:03 +0000 (12:11 +0000)]
re PR lto/81940 (internal compiler error: in dwarf2out_abstract_function, at dwarf2out.c:21613)
2017-08-23 Richard Biener <rguenther@suse.de>
PR lto/81940
* dwarf2out.c (dwarf2out_abstract_function): Handle LTO with
-g0 at compile-time.
* g++.dg/lto/pr81940_0.C: New testcase.
From-SVN: r251306
Tamar Christina [Wed, 23 Aug 2017 11:34:59 +0000 (11:34 +0000)]
re PR middle-end/19706 (Recognize common Fortran usages of copysign.)
2017-08-23 Tamar Christina <tamar.christina@arm.com>
PR middle-end/19706
* doc/sourcebuild.texi (Other hardware attributes):
Document xorsign.
gcc/testsuite
2017-08-23 Tamar Christina <tamar.christina@arm.com>
PR middle-end/19706
* gcc.dg/tree-ssa/pr19706.c: New.
* lib/target-supports.exp (check_effective_target_xorsign): New.
From-SVN: r251304
Tamar Christina [Wed, 23 Aug 2017 11:32:47 +0000 (11:32 +0000)]
re PR middle-end/19706 (Recognize common Fortran usages of copysign.)
2017-08-23 Tamar Christina <tamar.christina@arm.com>
PR middle-end/19706
* tree-ssa-math-opts.c (convert_expand_mult_copysign):
Fix single-use check.
From-SVN: r251303
Thomas Preud'homme [Wed, 23 Aug 2017 10:43:36 +0000 (10:43 +0000)]
Fix broken MinGW build of gcc.c
2017-08-23 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
* gcc.c (execute): Only test for SIGKILL and SIGQUIT if available.
From-SVN: r251302
GCC Administrator [Wed, 23 Aug 2017 00:16:22 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r251300
Daniel Santos [Tue, 22 Aug 2017 22:08:19 +0000 (22:08 +0000)]
Move entry to correct ChangeLog.
From-SVN: r251294
Daniel Santos [Tue, 22 Aug 2017 18:54:49 +0000 (18:54 +0000)]
Add missing ChangeLog entry for previous commit
From-SVN: r251290
Daniel Santos [Tue, 22 Aug 2017 18:52:10 +0000 (18:52 +0000)]
docs: Explain how to use multiple file-name patterns in RUNTESTFLAGS
* doc/install.texi: Modify to add more details on running
selected tests.
From-SVN: r251289
Daniel Santos [Tue, 22 Aug 2017 17:59:24 +0000 (17:59 +0000)]
PR target/71958: Error on -mx32 with -mabi=ms
gcc/ChangeLog:
2017-08-11 Daniel Santos <daniel.santos@pobox.com>
* config/i386/i386.c (ix86_option_override_internal): Error when
-mx32 is combined with -mabi=ms.
(ix86_function_type_abi): Limit errors for mixing -mx32 with
attribute ms_abi.
gcc/testsuite/ChangeLog:
2017-08-11 Daniel Santos <daniel.santos@pobox.com>
* gcc.target/i386/pr71958.c: New test to verify error on -mx32
and -mabi=ms
* gcc.target/i386/pr64409.c: Modify to only run on x32.
* gcc.target/i386/pr46470.c: Modify to skip x32 target.
* gcc.target/i386/pr66275.c: Likewise.
* gcc.target/i386/pr68018.c: Likewise.
From-SVN: r251287
Bill Schmidt [Tue, 22 Aug 2017 17:32:26 +0000 (17:32 +0000)]
re PR tree-optimization/81488 (gcc goes off the limits allocating memory in gimple-ssa-strength-reduction.c)
2017-08-22 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR tree-optimization/81488
* gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited
and cached_basis fields.
(MAX_SPREAD): New constant.
(alloc_cand_and_find_basis): Initialize new fields.
(clear_visited): New function.
(create_phi_basis_1): Rename from create_phi_basis, set visited
and cached_basis fields.
(create_phi_basis): New wrapper function.
(phi_add_costs_1): Rename from phi_add_costs, add spread
parameter, set visited field, short-circuit when limits reached.
(phi_add_costs): New wrapper function.
(record_phi_increments_1): Rename from record_phi_increments, set
visited field.
(record_phi_increments): New wrapper function.
(phi_incr_cost_1): Rename from phi_incr_cost, set visited field.
(phi_incr_cost): New wrapper function.
(all_phi_incrs_profitable_1): Rename from
all_phi_incrs_profitable, set visited field.
(all_phi_incrs_profitable): New wrapper function.
From-SVN: r251286
Richard Sandiford [Tue, 22 Aug 2017 16:14:48 +0000 (16:14 +0000)]
Make more use of paradoxical_subreg_p
This patch makes more use of the existing paradoxical_subreg_p
predicate and also adds a version that operates on outer and
inner modes.
Some of the affected tests were based on GET_MODE_SIZE rather than
GET_MODE_PRECISION and so the patch could change the result for modes
that have the same size but different precisions. I think in each
case the change should be a no-op or more correct, since a mode with
precision N bits can't be expected to hold all of a mode with precision
M>N bits.
The patch changes the branch taken in simplify_subreg for modes with
equal precision, but the new form matches the commentary more closely.
Both branches should be equally good in that situation.
2017-08-22 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* rtl.h (paradoxical_subreg_p): Define inline, and add a version
that takes the outer and inner modes.
* doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE
comparison as the canonical test for a paradoxical subreg.
* combine.c (simplify_set): Use paradoxical_subreg_p.
(make_extraction): Likewise.
(force_to_mode): Likewise.
(rtx_equal_for_field_assignment_p): Likewise.
(gen_lowpart_for_combine): Likewise.
(simplify_comparison): Likewise.
* cse.c (equiv_constant): Likewise.
* expmed.c (store_bit_field_1): Likewise.
* final.c (alter_subreg): Likewise.
* fwprop.c (propagate_rtx): Likewise.
(forward_propagate_subreg): Likewise.
* ira-conflicts.c (ira_build_conflicts): Likewise.
* lower-subreg.c (simplify_gen_subreg_concatn): Likewise.
* lra-constraints.c (curr_insn_transform): Likewise.
(split_reg): Likewise.
* lra-eliminations.c (move_plus_up): Likewise.
(lra_eliminate_regs_1): Likewise.
* recog.c (general_operand): Likewise.
* ree.c (combine_reaching_defs): Likewise.
* reload.c (push_reload): Likewise.
(find_reloads): Likewise.
* reload1.c (elimination_effects): Likewise.
(compute_reload_subreg_offset): Likewise.
(choose_reload_regs): Likewise.
* rtlanal.c (subreg_lsb_1): Likewise.
* simplify-rtx.c (simplify_unary_operation_1): Likewise.
(simplify_subreg): Likewise.
* var-tracking.c (track_loc_p): Likewise.
* emit-rtl.c (byte_lowpart_offset): Likewise.
(paradoxical_subreg_p): Delete out-of-line definition.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251282
Will Schmidt [Tue, 22 Aug 2017 15:40:23 +0000 (15:40 +0000)]
fold-vec-sums-int.c: New.
[gcc/testsuite]
2017-08-22 Will Schmidt <will_schmidt@vnet.ibm.com>
* gcc.target/powerpc/fold-vec-sums-int.c: New.
From-SVN: r251281
Jeff Law [Tue, 22 Aug 2017 15:13:09 +0000 (09:13 -0600)]
re PR tree-optimization/81741 (Misoptimisation : replacing a constant field read access by a function call)
PR tree-optimization/81741
PR tree-optimization/71947
* tree-ssa-dom.c: Include tree-inline.h.
(record_temporary_equivalences): Only record SSA_NAME = SSA_NAME
equivalences if one is more expensive to compute than the other.
* tree-ssa-scopedtables.h (class const_or_copies): Make
record_const_or_copy_raw method private.
(class avail_exprs_stack): New method simplify_binary_operation.
* tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call
avail_exprs_stack::simplify_binary_operation as needed.
(avail_exprs_stack::simplify_binary_operation): New function.
PR tree-optimization/81741
PR tree-optimization/71947
* gcc.dg/tree-ssa/pr81741.c: New test.
* gcc.dg/tree-ssa/pr71947-7.c: New test.
* gcc.dg/tree-ssa/pr71947-8.c: New test.
* gcc.dg/tree-ssa/pr71947-9.c: New test.
* gcc.dg/tree-ssa/pr71941-1.c: Tweak expected output.
* gcc.dg/tree-ssa/pr71941-2.c: Tweak expected output.
* gcc.dg/tree-ssa/pr71941-3.c: Tweak expected output.
* gcc.dg/tree-ssa/
20030922-2.c: xfail.
From-SVN: r251279
Richard Biener [Tue, 22 Aug 2017 13:54:01 +0000 (13:54 +0000)]
re PR lto/81925 (early lto debug link failure on aarch64_be)
2017-08-22 Richard Biener <rguenther@suse.de>
PR lto/81925
* simple-object-elf.c (simple_object_elf_write_shdr): Adjust
type of sh_addralign and sh_entsize and properly write
sh_entsize as Elf_Addr.
(simple_object_elf_write_to_file): Read sh_entsize as Elf_Addr.
From-SVN: r251276
Sebastian Huber [Tue, 22 Aug 2017 13:43:27 +0000 (13:43 +0000)]
[PowerPC/RTEMS] Enable -mcmodel option
gcc/
* config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt.
* config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define.
(DOT_SYMBOLS): Likewise.
(MINIMAL_TOC_SECTION_ASM_OP): Likewise.
(RELOCATABLE_NEEDS_FIXUP): Likewise.
(RS6000_ABI_NAME): Likewise.
(TARGET_CMODEL): Likewise.
(TOC_SECTION_ASM_OP): Likewise.
(SET_CMODEL): New macro.
(SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options.
From-SVN: r251275
Richard Biener [Tue, 22 Aug 2017 11:10:28 +0000 (11:10 +0000)]
tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT] to allow for free-lang-data replacements...
2017-08-22 Richard Biener <rguenther@suse.de>
* tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT]
to allow for free-lang-data replacements similar to verify_type_variant.
From-SVN: r251274
Yvan Roux [Tue, 22 Aug 2017 09:32:38 +0000 (09:32 +0000)]
re PR c++/80287 (C++ crash with __attribute((may_alias)))
2017-08-22 Yvan Roux <yvan.roux@linaro.org>
PR c++/80287
* g++.dg/pr80287.C: New test.
From-SVN: r251268
Richard Sandiford [Tue, 22 Aug 2017 09:17:16 +0000 (09:17 +0000)]
[AArch64] Fix label mode
This patch fixes a case where we tried to force a VOIDmode label
into a DImode register, which led to invalid rtl that was previously
undiagnosed.
2017-08-22 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* config/aarch64/aarch64.md (casesi): Use DImode rather than
VOIDmode for the LABEL_REF.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251266
Richard Biener [Tue, 22 Aug 2017 09:11:40 +0000 (09:11 +0000)]
revert: asan.exp: Switch on *.cc tests.
2017-08-22 Richard Biener <rguenther@suse.de>
Revert
2017-08-09 Slava Barinov <v.barinov@samsung.com>
* g++.dg/asan/asan.exp: Switch on *.cc tests.
From-SVN: r251265
Richard Biener [Tue, 22 Aug 2017 09:04:28 +0000 (09:04 +0000)]
tree-cfg.c (gimple_split_edge): Avoid reallocating target PHI nodes.
2017-08-22 Richard Biener <rguenther@suse.de>
* tree-cfg.c (gimple_split_edge): Avoid reallocating target
PHI nodes.
From-SVN: r251264
Richard Biener [Tue, 22 Aug 2017 08:50:37 +0000 (08:50 +0000)]
common.opt (feliminate-dwarf2-dups): Ignore.
2017-08-22 Richard Biener <rguenther@suse.de>
* common.opt (feliminate-dwarf2-dups): Ignore.
* doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation.
* dwarf2out.c (push_new_compile_unit, pop_compile_unit,
same_die_p_wrap, compute_section_prefix,
is_symbol_die, assign_symbol_names, break_out_includes): Remove.
(comdat_symbol_id, comdat_symbol_number): Likewise.
(cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type):
Likewise.
(check_duplicate_cu, record_comdat_symbol_number): Likewise.
(output_die): Mark unreachable path unreachable.
(dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL.
(dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL.
(dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups.
(dwarf2out_early_finish): Likewise.
* g++.dg/debug/dwarf2/dwarf2-1.C: Remove -feliminate-dwarf2-dups.
* g++.dg/debug/dwarf2/dwarf2-2.C: Likewise.
* g++.dg/debug/dwarf2/pr46123-2.C: Likewise.
* g++.dg/debug/dwarf2/typedef5.C: Likewise.
* gcc.dg/debug/dwarf2/dwarf2-3.c: Likewise.
* gcc.dg/debug/dwarf2/dwarf2-3.h: Likewise.
* gcc.dg/debug/dwarf2/dups-types.c: Remove.
* gcc.dg/debug/dwarf2/dups-types.h: Likewise.
From-SVN: r251262
Aldy Hernandez [Tue, 22 Aug 2017 08:25:24 +0000 (08:25 +0000)]
* wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend.
From-SVN: r251260
Georg-Johann Lay [Tue, 22 Aug 2017 07:52:42 +0000 (07:52 +0000)]
re PR target/81910 ([avr] ICE with "address" attribute on type)
gcc/
PR target/81910
* config/avr/avr.c (avr_handle_addr_attribute): Early return if
not VAR_P. Filter attribute warnings with OPT_Wattributes.
(avr_attribute_table) <io, io_low, address>: Initialize
.decl_required with true.
From-SVN: r251256
Jerry DeLisle [Tue, 22 Aug 2017 01:02:15 +0000 (01:02 +0000)]
re PR fortran/81296 (derived type I/o problem)
2017-08-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/81296
* trans-io.c (get_dtio_proc): Add check for format label and set
formatted flag accordingly. Reorganize the code a little.
* gfortran.dg/dtio_12.f90: Update test.
From-SVN: r251254
GCC Administrator [Tue, 22 Aug 2017 00:16:29 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r251253
Michael Meissner [Mon, 21 Aug 2017 20:33:55 +0000 (20:33 +0000)]
rs6000-cpus.def (-mvsx-scalar-float): Delete undocumented debugging options.
2017-08-21 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete
undocumented debugging options.
(-mvsx-scalar-double): Likewise.
(-mallow-df-permute): Likewise.
(-mvectorize-builtins): Likewise.
* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok):
Likewise.
(rs6000_builtin_vectorized_function): Likewise.
(rs6000_builtin_md_vectorized_function): Likewise.
(rs6000_opt_vars): Likewise.
From-SVN: r251248
Nathan Sidwell [Mon, 21 Aug 2017 18:57:06 +0000 (18:57 +0000)]
search.c (lookup_field_r): Remove obsolete code for type-named field in PoD.
* search.c (lookup_field_r): Remove obsolete code for type-named
field in PoD.
From-SVN: r251243
Nathan Sidwell [Mon, 21 Aug 2017 17:11:49 +0000 (17:11 +0000)]
search.c (lookup_field_1): Assert TYPE is a class and VFIELD isn't special.
* search.c (lookup_field_1): Assert TYPE is a class and VFIELD
isn't special.
(lookup_field_fuzzy_info::fuzzy_lookup_fnfields): Delete.
(lookup_field_fuzzy_r): Adjust.
From-SVN: r251241
Nathan Sidwell [Mon, 21 Aug 2017 17:06:26 +0000 (17:06 +0000)]
pr81899.C: Fix c++03.
* g++.dg/template/pr81899.C: Fix c++03.
* g++.dg/debug/debug9.C: Add -fno-reorder-blocks-and-partition"
From-SVN: r251240
David Malcolm [Mon, 21 Aug 2017 17:03:15 +0000 (17:03 +0000)]
C: use full locations within c_parser_expr_list's vec<location_t>
The previous patch uncovered a bug in how c_parser_expr_list builds the
vec<location_t>: it was only using the location of the first token
within each assignment-expression in the expr-list.
This shows up in e.g. this -Wformat warning, where only part of the
2nd param is underlined:
printf("hello %i", (long)0);
~^ ~
%li
This patch fixes c_parser_expr_list to use the full range of
each assignment-expression in the list for the vec<location_t>, so
that for the above we print:
printf("hello %i", (long)0);
~^ ~~~~~~~
%li
gcc/c/ChangeLog:
* c-parser.c (c_parser_expr_list): Use c_expr::get_location ()
rather than peeking the location of the first token.
* c-tree.h (c_expr::get_location): New method.
gcc/testsuite/ChangeLog:
* gcc.dg/format/diagnostic-ranges.c (test_mismatching_types):
Update expected result to show all of "(long)0" being underlined.
* gcc.dg/plugin/diagnostic-test-string-literals-1.c
(test_multitoken_macro): Update expected underlining.
From-SVN: r251239
David Malcolm [Mon, 21 Aug 2017 16:53:10 +0000 (16:53 +0000)]
c-family/c/c++: pass optional vec<location_t> to c-format.c
This patch passes along the vec<location_t> of argument locations
at a callsite from the C frontend to check_function_arguments and
from there to c-format.c, so that we can underline the pertinent
argument to mismatched format codes even for tree codes like decls
and constants which lack a location_t for their usage sites.
This takes e.g.:
printf("hello %i %i %i ", foo, bar, baz);
~^
%s
to:
printf("hello %i %i %i ", foo, bar, baz);
~^ ~~~
%s
which is useful for cases where there's more than one variadic argument.
gcc/c-family/ChangeLog:
* c-common.c (check_function_arguments): Add "arglogs" param; pass
it to check_function_format.
* c-common.h (check_function_arguments): Add vec<location_t> *
param.
(check_function_format): Likewise.
* c-format.c (struct format_check_context): Add field "arglocs".
(check_function_format): Add param "arglocs"; pass it to
check_format_info.
(check_format_info): Add param "arglocs"; use it to initialize
new field of format_ctx.
(check_format_arg): Pass format_ctx->arglocs to new param of
check_format_info_main.
(class argument_parser): New field "arglocs".
(argument_parser::argument_parser): Add "arglocs_" param and use
it to initialize new field.
(argument_parser::check_argument_type): Pass new arglocs field to
check_format_types.
(check_format_info_main): Add param "arglocs", and use it when
constructing arg_parser.
(check_format_types): Add param "arglocs"; use it if non-NULL when
!EXPR_HAS_LOCATION (cur_param) to get at location information.
gcc/c/ChangeLog:
* c-typeck.c (build_function_call_vec): Pass arg_loc to call
to check_function_arguments.
gcc/cp/ChangeLog:
* call.c (build_over_call): Pass NULL for new parameter to
check_function_arguments.
* typeck.c (cp_build_function_call_vec): Likewise.
gcc/testsuite/ChangeLog:
* gcc.dg/format/diagnostic-ranges.c: Update expected results
to show underlining of all pertinent params.
* gcc.dg/format/pr72858.c: Likewise.
From-SVN: r251238
Uros Bizjak [Mon, 21 Aug 2017 15:15:07 +0000 (17:15 +0200)]
re PR target/46091 (missed optimization: x86 bt/btc/bts instructions)
PR target/46091
* config/i386/i386.md (*btsq_imm): Rename from *btsq.
(*btrq_imm): Rename from *btrq.
(*btcq_imm): Rename from *btcq.
(btsc): New code attribute.
(*<btsc><mode>): New insn pattern.
(*btr<mode>): Ditto.
(*<btsc><mode>_mask): New insn_and_split pattern.
(*btr<mode>_mask): Ditto.
testsuite/ChangeLog:
PR target/46091
* gcc.target/i386/pr46091-4.c: New test.
* gcc.target/i386/pr46091-4a.c: Ditto.
* gcc.target/i386/pr46091-5.c: Ditto.
* gcc.target/i386/pr46091-5a.c: Ditto.
From-SVN: r251235
Jonathan Wakely [Mon, 21 Aug 2017 15:14:27 +0000 (16:14 +0100)]
PR libstdc++/81912 make std::__iterator_category constexpr
PR libstdc++/81912
* include/bits/stl_iterator_base_types.h (__iterator_category): Add
constexpr for C++11 and later.
* testsuite/24_iterators/container_access.cc: Add target selector.
* testsuite/24_iterators/range_access.cc: Fix clause number in
comment.
* testsuite/24_iterators/range_access_cpp14.cc: Likewise.
* testsuite/24_iterators/range_access_cpp17.cc: New.
From-SVN: r251234
Richard Sandiford [Mon, 21 Aug 2017 14:52:43 +0000 (14:52 +0000)]
Simplify pad_below implementation
This patch simplifies the alignment calculations in pad_below.
The first arm of the "if" was:
- taking GET_MODE_BITSIZE (always equal to GET_MODE_SIZE * BITS_PER_UNIT),
- rounding up to the next multiple of PARM_BOUNDARY
- converting bits to bytes and
- subtracting the GET_MODE_SIZE
so was in effect calculating the number of bytes needed to round
GET_MODE_SIZE up to (PARM_BOUNDARY / BITS_PER_UNIT). That can be
done more directly as -size & (align - 1), which is easier to
convert to variable-sized modes.
2017-08-21 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* function.c (pad_below): Simplify padding calculation.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251233
Richard Sandiford [Mon, 21 Aug 2017 14:51:52 +0000 (14:51 +0000)]
Remove the frame size argument from function_prologue/epilogue
Later patches will add support for frame sizes that are a run-time
invariant but not a compile-time constant. This then raised the
question of whether the frame size argument to the function_prologue/
epilogue hooks should be updated accordingly.
It turned out that only two targets actually used this argument, and
even they got other frame-related information from the cached machine
structure. This patch therefore removes the argument and makes the two
targets use get_frame_size () instead.
2017-08-21 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* target.def (function_prologue): Remove frame size argument.
(function_epilogue): Likewise.
* doc/tm.texi: Regenerate.
* final.c (final_start_function): Update call to function_prologue.
(final_end_function): Update call to function_epilogue.
(default_function_pro_epilogue): Remove frame size argument.
* output.h (default_function_pro_epilogue): Likewise.
* config/arm/arm.c (arm_output_function_epilogue): Likewise.
(arm_output_function_prologue): Likewise.
* config/frv/frv.c (frv_function_prologue): Likewise.
(frv_function_epilogue): Likewise.
* config/i386/i386.c (ix86_output_function_epilogue): Likewise.
* config/ia64/ia64.c (ia64_output_function_prologue): Likewise.
(ia64_output_function_epilogue): Likewise.
* config/m32r/m32r.c (m32r_output_function_prologue): Likewise.
(m32r_output_function_epilogue): Likewise.
* config/microblaze/microblaze.c (microblaze_function_prologue)
(microblaze_function_epilogue): Likewise.
* config/mips/mips.c (mips_output_function_prologue): Likewise.
(mips_output_function_epilogue): Likewise.
* config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise.
(mmix_target_asm_function_epilogue): Likewise.
* config/msp430/msp430.c (msp430_start_function): Likewise.
* config/nds32/nds32.c (nds32_asm_function_prologue): Likewise.
(nds32_asm_function_epilogue): Likewise.
* config/nios2/nios2.c (nios2_asm_function_prologue): Likewise.
* config/pa/pa.c (pa_output_function_prologue): Likewise.
(pa_output_function_epilogue): Likewise.
* config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue)
(rs6000_output_function_epilogue): Likewise.
* config/rl78/rl78.c (rl78_start_function): Likewise.
* config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise.
(rs6000_output_function_epilogue): Likewise.
* config/rx/rx.c (rx_output_function_prologue): Likewise.
* config/sh/sh.c (sh_output_function_epilogue): Likewise.
* config/sparc/sparc.c (sparc_asm_function_prologue): Likewise.
(sparc_asm_function_epilogue): Likewise.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251232