Commit graph

143100 commits

Author SHA1 Message Date
David Edelsohn
b44c0c0c7f pr48549.C: XFAIL AIX.
* g++.dg/opt/pr48549.C: XFAIL AIX.
        * g++.dg/abi/anon1.C: XFAIL AIX.
        * gcc.dg/graphite/pr42917.c: XFAIL AIX.

From-SVN: r231592
2015-12-12 20:55:02 -05:00
GCC Administrator
c6683011a8 Daily bump.
From-SVN: r231591
2015-12-13 00:16:12 +00:00
Jan Hubicka
b8e99d0330 tree.c (free_lang_data_in_type, [...]): Also free unnecesary type decls.
* tree.c (free_lang_data_in_type, find_decls_types_r): Also free
	unnecesary type decls.
	* tree.h (is_redundant_typedef): Declare.
	* dwarf2out.c (is_redundant_typedef): Export; booleanize

From-SVN: r231588
2015-12-12 21:41:31 +00:00
Eric Botcazou
425112c8e1 Fix date
From-SVN: r231587
2015-12-12 21:11:40 +00:00
Eric Botcazou
eaac029ff7 sparc.h (TARGET_SUPPORTS_WIDE_INT): Define to 1.
* config/sparc/sparc.h (TARGET_SUPPORTS_WIDE_INT): Define to 1.
	* config/sparc/sparc.c (sparc_emit_set_const64): Remove code
	conditionalized on HOST_BITS_PER_WIDE_INT == 32.
	(sparc_cannot_force_const_mem) <CONST_WIDE_INT>: New case.
	<CONST_DOUBLE>: Remove VOIDmode test.
	(epilogue_renumber) <CONST_WIDE_INT>: New case.
	(sparc_print_operand): Remove support for CONST_DOUBLE with VOIDmode.
	(sparc_assemble_integer): Likewise.
	(set_extends): Likewise.
	(sparc_rtx_costs) <CONST_INT>: Use SMALL_INT.
	<CONST_WIDE_INT>: New case.
	<CONST_DOUBLE>: Remove support for VOIDmode.
	<MULT>: Remove support for CONST_DOUBLE with VOIDmode.
	* config/sparc/predicates.md (const_zero_operand): Add const_wide_int.
	(const_all_ones_operand): Likewise.
	(uns_small_int_operand): Remove const_double and code conditionalized
	on HOST_BITS_PER_WIDE_INT == 32.
	(arith_double_operand): Likewise.
	(arith_double_add_operand): Likewise.
	(input_operand): Remove support for CONST_DOUBLE with DImode.
	* config/sparc/sparc.md (DImode CONST_INT splitter): Remove code
	conditionalized on HOST_BITS_PER_WIDE_INT == 32.
	(DFmode CONST_DOUBLE splitter): Likewise.
	(*adddi3_insn_sp32): Likewise.
	(*subdi3_insn_sp32): Likewise.
	(DImode logical splitter): Likewise.
	(DImode CONST_DOUBLE splitter): Delete.

From-SVN: r231586
2015-12-12 21:10:35 +00:00
Tobias Burnus
460263d0ef re PR fortran/45859 ([Coarray, F2008, IR] Rejects valid actuals to coarray dummies)
2014-12-12  Tobias Burnus  <burnus@net-b.de>

gcc/fortran
        PR fortran/45859
        * expr.c (gfc_is_simply_contiguous): Optionally permit array
        * elements.
        (gfc_check_pointer_assign): Update call.
        * interface.c (compare_parameter): Ditto.
        * trans-array.c (gfc_conv_array_parameter): Ditto.
        * trans-intrinsic.c (gfc_conv_intrinsic_transfer,
        conv_isocbinding_function): Ditto.
        * gfortran.h (gfc_is_simply_contiguous): Update prototype.

gcc/testsuite/
        PR fortran/45859
        * gcc/testsuite/gfortran.dg/coarray_args_2.f90: Remove dg-error.

From-SVN: r231585
2015-12-12 20:00:32 +01:00
Tobias Burnus
8d4227c89b re PR fortran/68815 (Error/warning diagnostic: '%s' should be converted to %qs-like or %<%s%>-like string strings)
2014-12-12  Tobias Burnus  <burnus@net-b.de>

gcc/c-family/
        PR fortran/68815
        * c-format.c (gcc_gfc_char_table): Add 'q' flag to remaining
        specifiers (%d, %i,%u and %c).

gcc/fortran/
        PR fortran/68815
        * check.c (gfc_check_reshape): Replace %<%d%> by %qd.
        * matchexp.c (gfc_match_defined_op_name): Use %qc.
        * symbol.c (gfc_add_new_implicit_range,
        gfc_merge_new_implicit): Ditto.

From-SVN: r231584
2015-12-12 19:55:25 +01:00
David Edelsohn
68f7e79ea7 pr67808.c: Add -mlong-double-128 option.
* gcc.target/powerpc/pr67808.c: Add -mlong-double-128 option.
        * g++.dg/cpp1y/pr58708.C: Test appropriate value for size of
        wchar_t.

From-SVN: r231583
2015-12-12 08:12:10 -05:00
Paolo Bonzini
b300764434 re PR sanitizer/68418 (ubsan complains about left shifts even with -fwrapv)
gcc:
	PR sanitizer/68418
	* c-family/c-ubsan.c (ubsan_instrument_shift): Disable
	sanitization of left shifts for wrapping signed types as well.

gcc/testsuite:
	PR sanitizer/68418
	* gcc.dg/ubsan/c99-wrapv-shift-1.c,
	gcc.dg/ubsan/c99-wrapv-shift-2.c: New testcases.

From-SVN: r231582
2015-12-12 08:29:27 +00:00
GCC Administrator
aa31006f5d Daily bump.
From-SVN: r231580
2015-12-12 00:16:12 +00:00
Jeff Law
55ccf4f91e [PATCH][PR tree-optimization/68844] Fix testcase expected output
PR tree-optimization/68844
	* gcc.dg/tree-ssa/ssa-dom-thread-4.c: Update expected output.

2015-12-11  Jan Beulich  <jbeulich@suse.com>

From-SVN: r231577
2015-12-11 16:18:22 -07:00
Eric Botcazou
1a2d7586b0 re PR middle-end/68215 (FAIL: c-c++-common/opaque-vector.c -std=c++11 (internal compiler error))
PR middle-end/68215
	* tree-vect-generic.c (tree_vec_extract): Remove GSI parameter.
	Do not gimplify the result.
	(do_unop): Adjust call to tree_vec_extract.
	(do_binop): Likewise.
	(do_compare): Likewise.
	(do_plus_minus): Likewise.
	(do_negate): Likewise.
	(expand_vector_condition): Likewise.
	(do_cond): Likewise.

From-SVN: r231575
2015-12-11 21:58:48 +00:00
Jonathan Wakely
f3d7dd52a6 Fix std::invoke support for reference_wrappers
PR libstdc++/59768
	* include/std/functional (_Unwrap, __invfwd): Define.
	(__invoke_impl): Remove reference_wrapper overloads and use __invfwd.
	* include/std/type_traits (__result_of_memobj, __result_of_memfun):
	Add partial specializations for const reference_wrappers and simplify.
	* testsuite/20_util/bind/ref_neg.cc: Use dg-excess-errors.
	* testsuite/20_util/function_objects/invoke/59768.cc: New.

From-SVN: r231574
2015-12-11 21:45:51 +00:00
Nathan Sidwell
b49e35a94a nvptx.h (RETURN_ADDR_REGNO): Delete.
* config/nvptx/nvptx.h (RETURN_ADDR_REGNO): Delete.
	(OUTGOING_ARG_POINTER_REGNUM): Delete.
	(ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Delete.
	(REGISTER_NAMES): Name static chain regs.
	* config/nvptx/nvptx.c (nvptx_function_arg): Add ARG_UNUSED, merge
	ifs.
	(nvptx_incoming_arg): Merge ifs.
	(nvptx_function_arg_boundary): Reimplement to avoid mixing units.
	(nvptx_function_value): Tail call nvptx_libcall_value.
	(nvptx_pass_by_reference): Add ARG_UNUSED.
	(nvptx_static_chain): Use conditional op.
	(nvptx_handle_kernel_attribute): Use VOID_TYPE_P.

From-SVN: r231572
2015-12-11 18:06:37 +00:00
Jan-Benedict Glaw
2515981da0 re PR target/26427 (with -fsection-anchors with zero sized structs)
2015-12-11  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
	    Dominique d'Humieres  <dominiq@lps.ens.fr>

	PR target/26427
	PR target/33120
	PR testsuite/35710

	* config/darwin.c (darwin_use_anchors_for_symbol_p): Fix indention and
	trailing whitespace.


Co-Authored-By: Dominique d'Humieres <dominiq@lps.ens.fr>

From-SVN: r231571
2015-12-11 17:39:49 +01:00
Nathan Sidwell
603853643f * gcc.dg/pr59605-1.c: Reduce iterations for nvptx.
From-SVN: r231570
2015-12-11 15:55:48 +00:00
Jan Beulich
9d7d644656 avoid alignment of static variables affecting stack's
Function (or more narrow) scope static variables (as well as others not
placed on the stack) should also not have any effect on the stack
alignment. I noticed the issue first with Linux'es dynamic_pr_debug()
construct using an 8-byte aligned sub-file-scope local variable.

According to my checking bad behavior started with 4.6.x (4.5.3 was
still okay), but generated code got quite a bit worse as of 4.9.0.

gcc/
2015-12-11  Jan Beulich  <jbeulich@suse.com>

	* cfgexpand.c (expand_one_var): Exit early for static and
	external variables when adjusting stack alignment related.

gcc/testsuite/
2015-12-11  Jan Beulich  <jbeulich@suse.com>

	* gcc.c-torture/execute/stkalign.c: New.

From-SVN: r231569
2015-12-11 15:53:24 +00:00
Uros Bizjak
34955216a7 * ChangeLog: Remove confusign PR marker.
From-SVN: r231567
2015-12-11 16:08:00 +01:00
Dominik Vogt
089b05b103 S/390: Wide int support.
gcc/ChangeLog

	* config/s390/s390.c (s390_rtx_costs)
	(s390_cannot_force_const_mem, legitimate_pic_operand_p)
	(s390_preferred_reload_class, s390_reload_symref_address)
	(legitimate_reload_constant_p, print_operand): Wide int support.
	* config/s390/predicates.md ("const0_operand", "constm1_operand")
	("consttable_operand"): Likewise.
	("larl_operand"): Add a comment.
	* config/s390/s390.h (TARGET_SUPPORTS_WIDE_INT): Enable wide int
	support.

From-SVN: r231566
2015-12-11 14:43:26 +00:00
Tsvetkova Alexandra
653b8b8d89 Makefile.am (libmpx_la_LDFLAGS): Add -version-info option.
libmpx/

2015-12-11  Tsvetkova Alexandra  <aleksandra.tsvetkova@intel.com>

	* mpxrt/Makefile.am (libmpx_la_LDFLAGS): Add -version-info
	option.
	* libmpxwrap/Makefile.am (libmpx_la_LDFLAGS): Likewise and
	fix include path.
	* libmpx/Makefile.in: Regenerate.
	* mpxrt/Makefile.in: Regenerate.
	* libmpxwrap/Makefile.in: Regenerate.
	* mpxrt/libtool-version: New version.
	* libmpxwrap/libtool-version: Likewise.
	* mpxrt/libmpx.map: Add new version and a new symbol.
	* mpxrt/mpxrt.h: New file.
	* mpxrt/mpxrt.c (NUM_L1_BITS): Moved to mpxrt.h.
	(REG_IP_IDX): Moved to mpxrt.h.
	(REX_PREFIX): Moved to mpxrt.h.
	(XSAVE_OFFSET_IN_FPMEM): Moved to mpxrt.h.
	(MPX_L1_SIZE): Moved to mpxrt.h.
	* libmpxwrap/mpx_wrappers.c (mpx_pointer): New type.
	(mpx_bt_entry): New type.
	(alloc_bt): New function.
	(get_bt): New function.
	(copy_if_possible): New function.
	(copy_if_possible_from_end): New function.
	(move_bounds): New function.
	(__mpx_wrapper_memmove): Use move_bounds to copy bounds.

gcc/testsuite/

2015-12-11  Tsvetkova Alexandra  <aleksandra.tsvetkova@intel.com>

	* gcc.target/i386/mpx/memmove-1.c: New test.
	* gcc.target/i386/mpx/memmove-2.c: New test.

From-SVN: r231565
2015-12-11 14:38:53 +00:00
Nathan Sidwell
a9000e1e2f nvptx.h (TARGET_SUPPORTS_WIDE_INT): Define.
gcc/
	* config/nvptx/nvptx.h (TARGET_SUPPORTS_WIDE_INT): Define.
	* config/nvptx/nvptx.c (nvptxx_assemble_integer): Return false for
	unrecognizable RTX.

	gcc/testsuite/
	* gcc.target/nvptx/ary-init.c: Repair dg_final syntax.
	* gcc.target/nvptx/decl-init.c: Likewise.  Add TI case.

From-SVN: r231564
2015-12-11 13:52:05 +00:00
Ville Voutilainen
e3fc446b9c re PR libstdc++/68139 (rethrow_if_nested should tolerate overloaded unary operator&)
PR libstdc++/68139

From-SVN: r231562
2015-12-11 14:04:23 +02:00
Tom de Vries
7d3015e850 Remove unpaired TERMINATE_PASS_LIST in passes.def
2015-12-11  Tom de Vries  <tom@codesourcery.com>

	* passes.def: Remove unpaired TERMINATE_PASS_LIST.

From-SVN: r231561
2015-12-11 11:33:44 +00:00
Michael Matz
f5c08287e2 hash-map.h (hash_map::hash_map): Gather statistics only when GATHER_STATISTICS is true.
* hash-map.h (hash_map::hash_map): Gather statistics only
	when GATHER_STATISTICS is true.
	* hash-set.h (hash_set::hash_set): Ditto.
	* hash-table.h (hash_table::hash_table): Ditto.
	(hash_table::create_ggc): Ditto.

From-SVN: r231560
2015-12-11 11:29:02 +00:00
Martin Jambor
9e64af1875 Add an asssert and testcase for PR 68064
2015-12-11  Martin Jambor  <mjambor@suse.cz>

	PR ipa/68064
	* ipa-prop.c (ipa_compute_jump_functions_for_edge): Add checking
	assert that align is nonzero.

testsuite/
	* g++.dg/torture/pr68064.C: New test.

From-SVN: r231559
2015-12-11 12:27:11 +01:00
Dominik Vogt
da0dcab184 S/390: Fix warnings in "*setmem_long..." patterns.
gcc/ChangeLog

	* config/s390/s390.c (s390_expand_setmem): Use new expanders.
	* config/s390/s390.md ("*setmem_long")
	("*setmem_long_and", "*setmem_long_31z"): Fix warnings.
	("*setmem_long_and_31z"): New define_insn.
	("setmem_long_<P:mode>"): New expanders.
	* (<modesize>): New mode attribute

gcc/testsuite/ChangeLog

	* gcc.target/s390/md/setmem_long-1.c: New test.

From-SVN: r231558
2015-12-11 11:16:13 +00:00
Dominik Vogt
4a7dec25ac S/390: Fix warnings in "*setmem_long..." patterns.
gcc/ChangeLog

	* config/s390/s390.md ("movstr", "*movstr"): Fix warning.
	("movstr<P:mode>"): New indirect expanders used by "movstr".

gcc/testsuite/ChangeLog

	* gcc.target/s390/md/movstr-1.c: New test.
	* gcc.target/s390/s390.exp: Add subdir md.
	Do not run hotpatch tests twice.

From-SVN: r231557
2015-12-11 11:03:21 +00:00
Martin Liska
11b9b5a445 re PR target/67484 (options-save.c sanitizer asan detects freed storage referenced heap-use-after-free)
Fix PR target/67484

	    Uros Bizjak  <ubizjak@gmail.com>

	PR target/67484
	* config/i386/i386.c (ix86_valid_target_attribute_tree):
	Use ggc_strdup to copy option_strings to opts->x_ix86_arch_string and
	opts->x_ix86_tune_string.

From-SVN: r231556
2015-12-11 10:59:29 +00:00
Richard Biener
9276b0f797 lto-streamer.h (lto_simple_header_with_strings): Remove main_size field already in lto_simple_header.
2015-12-11  Richard Biener  <rguenther@suse.de>

	* lto-streamer.h (lto_simple_header_with_strings): Remove
	main_size field already in lto_simple_header.

From-SVN: r231555
2015-12-11 10:53:53 +00:00
Ilya Enkovich
56e398205a tree-vect-stmts.c (vectorizable_mask_load_store): Check mask vectype.
gcc/

	* tree-vect-stmts.c (vectorizable_mask_load_store): Check
	mask vectype.

From-SVN: r231554
2015-12-11 10:51:04 +00:00
Ilya Enkovich
da33235f37 i386.c (ix86_get_mask_mode): Use scalar modes for 32 and 16 byte boolean vectors when possible.
gcc/

	* config/i386/i386.c (ix86_get_mask_mode): Use scalar
	modes for 32 and 16 byte boolean vectors when possible.

gcc/testsuite/

	* gcc.dg/vect/vect-32-chars.c: New test.

From-SVN: r231553
2015-12-11 09:43:52 +00:00
Segher Boessenkool
5d59ed6332 Fix shrink-wrapping bug (PR67778, PR68634)
After shrink-wrapping has found the "tightest fit" for where to place
the prologue, it tries move it earlier (so that frame saves are run
earlier) -- but without copying any more basic blocks.

Unfortunately a candidate block we select can be inside a loop, and we
will still allow it (because the loop always exits via our previously
chosen block).  We can do that just fine if we make a duplicate of the
block, but we do not want to here.

So we need to detect this situation.  We can place the prologue at a
previous block PRE only if PRE dominates every block reachable from
it, because then we will never need to duplicate that block (it will
always be executed with prologue).


2015-12-11  Segher Boessenkool  <segher@kernel.crashing.org>

	PR rtl-optimization/67778
	PR rtl-optimization/68634
	* shrink-wrap.c (try_shrink_wrapping): Add a comment about why we want
	to put the prologue earlier.  When determining if an earlier block is
	suitable, make sure it dominates every block reachable from it.

From-SVN: r231552
2015-12-11 01:27:14 +01:00
GCC Administrator
9c7163d0bf Daily bump.
From-SVN: r231551
2015-12-11 00:16:12 +00:00
Jan Hubicka
958a627f88 re PR lto/61886 (LTO breaks fread with _FORTIFY_SOURCE=2)
PR ipa/61886
	* lto-symtab.c (lto_symtab_merge_p): Avoid merging across different
	values of error and warning attributes.
	* gcc.dg/lto/pr61886_0.c: New testcase

From-SVN: r231548
2015-12-10 23:57:15 +00:00
Segher Boessenkool
0c91a1fb3c rtlanal: Fix bits/bytes confusion in set_noop_p (PR68814)
The meaning of ZERO_EXTRACT depends on BITS_BIG_ENDIAN, not on
BYTES_BIG_ENDIAN.  This caused PR68814.


2015-12-11  Segher Boessenkool  <segher@kernel.crashing.org>

	PR rtl-optimization/68814
	* rtlanal.c (set_noop_p): Use BITS_BIG_ENDIAN instead of
	BYTES_BIG_ENDIAN.

From-SVN: r231547
2015-12-11 00:47:31 +01:00
Nathan Sidwell
e74f7152e8 nvptx.c (nvptx_function_arg, [...]): Move earlier.
* config/nvptx/nvptx.c (nvptx_function_arg,
	nvptx_function_incoming_arg, nvptx_function_arg_advance,
	nvptx_strict_argument_naming, nvptx_function_arg_boundary,
	nvptx_libcall_value, nvptx_function_value,
	nvptx_function_value_regno_p, nvptx_pass_by_reference,
	nvptx_return_in_memory, nvptx_promote_function_mode,
	nvptx_static_chain): Move earlier.
	(write_one_arg): Break out as helper fn for ...
	(write_arg): ... this new function.  Adjust all callers.

From-SVN: r231543
2015-12-10 20:13:14 +00:00
Jan Hubicka
35bd8e8fb6 * lto-streamer-out.c (wrap_refs): Only wrap public decls.
From-SVN: r231541
2015-12-10 19:21:31 +00:00
Jan Hubicka
5af56ae8f8 ipa-cp.c (ipcp_cloning_candidate_p): Use node->optimize_for_size_p.
* ipa-cp.c (ipcp_cloning_candidate_p): Use node->optimize_for_size_p.
	(good_cloning_opportunity_p): Likewise.
	(gather_context_independent_values): Do not return true when
	polymorphic call context is known or when we have known aggregate
	value of unused parameter.
	(estimate_local_effects): Try to create clone for all context
	when either some params are substituted or devirtualization is possible
	or some params can be removed; use local flag instead of
	node->will_be_removed_from_program_if_no_direct_calls_p.
	(identify_dead_nodes): Likewise.

	* gcc.c-torture/execute/20010122-1.c: Disable cloning.

From-SVN: r231540
2015-12-10 19:20:14 +00:00
David Malcolm
f6069ccc2b Add -Wmisleading-indentation to -Wall
gcc/c-family/ChangeLog:
	* c.opt (Wmisleading-indentation): Add to -Wall for C and C++.

gcc/ChangeLog:
	* doc/invoke.texi (-Wall): Add -Wmisleading-indentation to the
	list.
	(-Wmisleading-indentation): Update documentation to reflect
	being enabled by -Wall in C/C++.

From-SVN: r231539
2015-12-10 18:21:00 +00:00
Vladimir Makarov
684ffdc9af re PR rtl-optimization/68691 (ICE at -O3 with -g enabled on x86_64-linux-gnu in alter_subregs, at lra-spills.c:610 (in 32-bit mode))
2015-12-10  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/68691
	* lra-spills.c (lra_final_code_change): Check pseudo occurrence
	number in non-debug insns and remove debug insns if necessary.

2015-12-10  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/68691
	* gcc.target/i386/pr68691.c: New.

From-SVN: r231538
2015-12-10 18:00:47 +00:00
Martin Sebor
0da4edf76d invoke.texi (Warning Options): Update -Wall options.
* invoke.texi (Warning Options): Update -Wall options.  Clarify
        when some -Wextra options are enabled.  Add -Wplacement-new example.

From-SVN: r231533
2015-12-10 10:16:32 -07:00
Uros Bizjak
3dec93d59c re PR tree-optimization/68619 (error: loop with header 6 not in loop tree)
PR tree-optimization/68619
	* graphite-scop-detection.c (gather_bbs::before_dom_children):
	Change return type to an edge.  Always return NULL.

From-SVN: r231532
2015-12-10 18:14:07 +01:00
David Malcolm
b5b44c62e6 testsuite/lib/multline.exp: show test name and line numbers
gcc/testsuite/ChangeLog:
	* lib/multiline.exp (_multiline_expected_outputs): Update comment.
	(dg-end-multiline-output): Capture line numbers within
	_multiline_expected_outputs.
	(handle-multiline-outputs): Access global $testname_with_flags
	and add it as a prefix to pass/fail results.  Extract line numbers
	from $_multiline_expected_outputs and print them within pass/fail
	results, replacing the printing of $index.  Consolidate the
	string prefix shared between pass/fail into a new local ($title).

From-SVN: r231530
2015-12-10 17:12:38 +00:00
Jeff Law
3daacdcd5f re PR tree-optimization/68619 (error: loop with header 6 not in loop tree)
2015-12-10  Jeff Law  <law@redhat.com>

	PR tree-optimization/68619
	* tree-ssa-dom.c (dom_opt_dom_walker::before_dom_children): Propgate
	return value from optimize_stmt.
	(dom_opt_dom_walker): Add new argument to dom_walker constructor.
	(pass_dominator:execute): If a block has an unreachable edge,
	remove all jump threads through any successor of the affected block.
	(record_equivalences_from_phis): Ignore alternative if the edge
	does not have EDGE_EXECUTABLE set.
	(single_incoming_edge_ignoring_loop_edges): Similarly.
	(optimize_stmt): If a gimple_code has a compile-time constant
	condition, return the edge taken for that constant value.  Also
	change the condition to true/false as necessary.
	* domwalk.h (dom_walker::dom_walker): Add new argument
	skip_unreachable_blocks.  Don't provide empty constructor body.
	(dom_walker::before_dom_children): Change return type.
	(dom_walker::bb_reachable): Declare new private method.
	(dom_walker::propagate_unreachable_to_edges): Likewise.
	(dom_walker::m_unreachable_dom): Declare new private data member.
	(dom_walker::m_skip_unreachable_blocks): Likewise.
	* domwalk.c: Include dumpfile.h.
	(dom_walker::dom_walker): New constructor.  Initialize private data
	members.  If needed, set EDGE_EXECUTABLE for all edges in the CFG,
	extracted from tree-ssa-sccvn.c.
	(dom_walker::bb_reachable): New method extracted from tree-ssa-sccvn.c
	(dom_walker::propagate_unreachable_to_edges): Likewise.
	(dom_walker::walk): Only call before_dom_children on reachable
	blocks.  If before_dom_children returns an edge, then clear
	EDGE_EXECUTABLE for all other outgoing edges from the same block.
	For unreachable blocks, call propagate_unreachable_to_edges.
	Similarly, only call after_dom_children on reachable blocks.  For
	unreachable blocks, conditionally clear m_unreachable_dom.
	* tree-ssa-sccvn.c (sccvn_dom_walker::unreachable_dom): Remove
	private data member.
	(sccvn_dom_walker::after_dom_children): Use methods from dom_walker
	class.
	(run_scc_vn): Likewise.
	(sccvn_dom_walker::before_dom_children): Likewise.  Return the taken
	outgoing edge if a COND, SWITCH, or GOTO are optimized.
	* compare-elim.c (find_comparison_dom_walker::before_dom_children):
	Change return type to an edge.  Always return NULL.
	* fwprop.c (single_def_use_dom_walker::before_dom_children): Likewise.
	* gimple-ssa-strength-reduction.c
	(find_candidates_dom_walker::before_dom_children): Likewise.
	* ipa-prop.c (analysis_dom_walker::before_dom_children): Likewise.
	(ipcp_modif_dom_walker::before_dom_children): Likewise.
	* tree-into-ssa.c (rewrite_dom_walker::before_dom_children): Likewise.
	(rewrite_update_dom_walker::before_dom_children): Likewise.
	(mark_def_dom_children::before_dom_children): Likewise.
	* tree-ssa-dse.c (dse_dom_walker::before_dom_children): Likewise.
	* tree-ssa-loop-im.c
	(invariantness_dom_walker::before_dom_children): Likewise.
	(move_computations_dom_walker::before_dom_walker): Likewise.
	* tree-ssa-phiopt.c
	(nontrapping_dom_walker::before_dom_children): Likewise.
	* tree-ssa-pre.c
	(eliminate_dom_walker::before_dom_children): Likewise.
	* tree-ssa-propagate.c
	(substitute_and_fold_dom_walker::before_dom_children): Likewise.
	* tree-ssa-strlen.c
	(strlen_dom_walker::before_dom_children): Likewise.
	* tree-ssa-uncprop.c
	(uncprop_dom_walker::before_dom_children): Likewise.

	PR tree-optimization/68619
	* gcc.dg/tree-ssa/pr68619-1.c: New test.
	* gcc.dg/tree-ssa/pr68619-2.c: New test.
	* gcc.dg/tree-ssa/pr68619-3.c: New test.
	* gcc.dg/tree-ssa/pr68619-4.c: New test.
	* gcc.dg/tree-ssa/pr68619-5.c: New test.

From-SVN: r231527
2015-12-10 09:34:43 -07:00
Jakub Jelinek
9dd920ab70 re PR rtl-optimization/68376 (wrong code at -O1 and above on x86_64-linux-gnu)
PR rtl-optimization/68376
	PR rtl-optimization/68670
	* ifcvt.c (noce_try_abs): For one_cmpl allow < 0, >= 0
	or > -1 conditions regardless of negate, and disallow
	all other conditions.

	* gcc.c-torture/execute/pr68376-2.c (f5, f6, f7, f8): New
	tests.
	(main): Call them.
	* gcc.dg/pr68670-1.c: New test.
	* gcc.dg/pr68670-2.c: New test.

From-SVN: r231526
2015-12-10 17:11:49 +01:00
Ilya Enkovich
64a948e9c2 tree-chkp.c (chkp_call_returns_bounds_p): Return true for VA_ARG call.
gcc/

	* tree-chkp.c (chkp_call_returns_bounds_p): Return true
	for VA_ARG call.
	(chkp_fixup_inlined_call): New.
	* tree-chkp.h (chkp_fixup_inlined_call): New.
	* tree-stdarg.c: Include tree-chkp.h.
	(expand_ifn_va_arg_1): Fixup bndret calls for removed
	VA_ARG calls.

From-SVN: r231525
2015-12-10 16:01:42 +00:00
Marek Polacek
da8006f341 re PR c++/68348 (ICE: segfault in cxx_eval_constant_expression at cp/constexpr.c:3172)
PR c++/68348
	* g++.dg/cpp0x/pr68348.C: New test.

From-SVN: r231524
2015-12-10 15:45:49 +00:00
Martin Jambor
f680334141 tree-inline.c (duplicate_remap_omp_clause_seq): New function.
2015-12-10  Martin Jambor  <mjambor@suse.cz>

	* tree-inline.c (duplicate_remap_omp_clause_seq): New function.
	(replace_locals_op): Duplicate gimple sequences in OMP clauses.

From-SVN: r231523
2015-12-10 16:40:57 +01:00
David Malcolm
4c1ca083ca Fix -Wmisleading-indentation warning in graphite-optimize-isl.c
../../../src/gcc/graphite-optimize-isl.c: In function ‘isl_union_set* scop_get_domains(scop_p)’:
../../../src/gcc/graphite-optimize-isl.c:362:5: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
     return res;
     ^~~~~~

In file included from ../../../src/gcc/hash-table.h:236:0,
                 from ../../../src/gcc/coretypes.h:348,
                 from ../../../src/gcc/graphite-optimize-isl.c:28:
../../../src/gcc/vec.h:1343:3: note: ...this ‘for’ clause, but it is not
   for (I = 0; (V).iterate ((I), &(P)); ++(I))
   ^

../../../src/gcc/graphite-optimize-isl.c:359:3: note: in expansion of macro ‘FOR_EACH_VEC_ELT’
   FOR_EACH_VEC_ELT (scop->pbbs, i, pbb)
   ^~~~~~~~~~~~~~~~

   351  static isl_union_set *
   352  scop_get_domains (scop_p scop ATTRIBUTE_UNUSED)
   353  {
   354    int i;
   355    poly_bb_p pbb;
   356    isl_space *space = isl_set_get_space (scop->param_context);
   357    isl_union_set *res = isl_union_set_empty (space);
   358
   359    FOR_EACH_VEC_ELT (scop->pbbs, i, pbb)
   360      res = isl_union_set_add_set (res, isl_set_copy (pbb->domain));
   361
   362      return res;
            ^ warning is here
   363  }

gcc/ChangeLog:
	* graphite-optimize-isl.c (scop_get_domains): Fix indentation.

From-SVN: r231522
2015-12-10 15:20:53 +00:00
David Malcolm
4d1b9fe067 Fix -Wmisleading-indentation warning in ifcvt.c
../../../src/gcc/ifcvt.c: In function ‘bool noce_try_inverse_constants(noce_if_info*)’:
../../../src/gcc/ifcvt.c:1233:2: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
  seq = end_ifcvt_sequence (if_info);
  ^~~

../../../src/gcc/ifcvt.c:1230:7: note: ...this ‘if’ clause, but it is not
       if (target != if_info->x)
       ^~

due to the lack of an outdent after the conditional at lines 1230-1:

  1220    if (target)
  1221      {
  1222        rtx_insn *seq = get_insns ();
  1223
  1224        if (!seq)
  1225          {
  1226            end_sequence ();
  1227            return false;
  1228          }
  1229
>>1230        if (target != if_info->x)
>>1231          noce_emit_move_insn (if_info->x, target);
  1232
>>1233          seq = end_ifcvt_sequence (if_info);
  1234
  1235          if (!seq)
  1236            return false;
  1237
  1238          emit_insn_before_setloc (seq, if_info->jump,
  1239                                   INSN_LOCATION (if_info->insn_a));
  1240          return true;
  1241      }

gcc/ChangeLog:
	* ifcvt.c (noce_try_inverse_constants): Fix indentation.

From-SVN: r231521
2015-12-10 15:18:26 +00:00