1. 29 Aug, 2018 2 commits
  2. 28 Aug, 2018 22 commits
    • * fold-const.c (fold_binary_loc): Remove recently added assert. · 78e93935
      From-SVN: r263936
      Jeff Law committed
    • genpreds.c (write_predicate_subfunction): Also add ATTRIBUTE_UNUSED to OP… · d0794d14
      genpreds.c (write_predicate_subfunction): Also add ATTRIBUTE_UNUSED to OP parmeter of generated function.
      
              * genpreds.c (write_predicate_subfunction): Also add ATTRIBUTE_UNUSED
              to OP parmeter of generated function.
      
      From-SVN: r263934
      Joern Rennecke committed
    • re PR middle-end/87009 (Can't find XOR pattern applying De Morgan sequentially) · fd8303a5
      	PR tree-optimization/87009
      	* match.pd: Add boolean optimizations.
      
      	PR tree-optimization/87009
      	* gcc.dg/pr87009.c: New test.
      
      From-SVN: r263931
      MCC CS committed
    • re PR middle-end/86631 (missing -Walloc-size-larger-than on ILP32 hosts) · 96c19db5
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/86631
      	* g++.dg/Walloca1.C: Adjust.
      
      From-SVN: r263930
      Martin Sebor committed
    • PR middle-end/86631 - missing -Walloc-size-larger-than on ILP32 hosts · 0aaafa5e
      gcc/ChangeLog:
      
      	PR middle-end/86631
      	* calls.c (alloc_max_size): Treat HOST_WIDE_INT special.
      	* gimple-ssa-warn-alloca.c (adjusted_warn_limit): New function.
      	(pass_walloca::gate): Use it.
      	(alloca_call_type): Same.
      	(pass_walloca::execute): Same.
      	* stor-layout.c (layout_decl): Treat HOST_WIDE_INT special.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/86631
      	* g++.dg/Walloca1.C: Adjust.
      
      From-SVN: r263928
      Martin Sebor committed
    • PR libstdc++/87116 fix path::lexically_normal() handling of dot-dot · dd35da2c
      Previously the logic that turned "a/b/c/../.." into "a/" failed to
      preserve an empty path at the end of the iteration sequence, as required
      by the trailing slash. That meant the result didn't meet the class
      invariants, and that "a/b/c/d/../../.." would remove four components
      instead of the three that "../../.." should remove.
      
      	PR libstdc++/87116
      	* src/filesystem/std-path.cc (path::lexically_normal): When handling
      	a dot-dot filename, preserve an empty final component in the iteration
      	sequence.
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use preferred-separator for
      	root-directory.
      	* testsuite/27_io/filesystem/path/generation/normal.cc: Add new tests
      	for more than two adjacent dot-dot filenames.
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Replace slashes with
      	preferred-separator in expected normalized strings.
      
      From-SVN: r263922
      Jonathan Wakely committed
    • re PR c++/86546 (ICE on invalid: tree_class_check_failed()) · f30bafb7
      /cp
      2018-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/86546
      	* decl.c (finish_case_label): If the type is erroneous early
      	return error_mark_node.
      
      /testsuite
      2018-08-28  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/86546
      	* g++.dg/other/switch4.C: New.
      
      From-SVN: r263921
      Paolo Carlini committed
    • Fix version check for ATTRIBUTE_GCC_DUMP_PRINTF · 19784080
      gcc/ChangeLog:
      	* dumpfile.h (ATTRIBUTE_GCC_DUMP_PRINTF): Change version check on
      	GCC_VERSION for usage of "__gcc_dump_printf__" format from
      	>= 3005 to >= 9000.
      
      From-SVN: r263920
      David Malcolm committed
    • re PR tree-optimization/87124 (ICE have integer_cst in SSA_VAL, at… · 49aecbeb
      re PR tree-optimization/87124 (ICE have integer_cst in SSA_VAL, at tree-ssa-sccvn.c:462 while building 541.leela_r from SPEC2017)
      
      2018-08-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87124
      	* tree-ssa-sccvn.c (vn_lookup_simplify_result): Guard against
      	constants before looking up avail.
      
      	* g++.dg/torture/pr87124.C: New testcase.
      
      From-SVN: r263918
      Richard Biener committed
    • re PR fortran/80477 ([OOP] Polymorphic function result generates memory leak) · 1312bb90
      2017-08-28  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/80477
      	* trans-expr.c (gfc_conv_procedure_call): Allocatable class
      	scalar results being passed to a derived type formal argument
      	are finalized if possible. Otherwise, rely on existing code for
      	deallocation. Make the deallocation of allocatable result
      	components conditional on finalization not taking place. Make
      	the freeing of data components after finalization conditional
      	on the data being NULL.
      	(gfc_trans_arrayfunc_assign): Change the gcc_assert to a
      	condition to return NULL_TREE.
      	(gfc_trans_assignment_1): If the assignment is class to class
      	and the rhs expression must be finalized but the assignment
      	is not marked as a polymorphic assignment, use the vptr copy
      	function instead of gfc_trans_scalar_assign.
      
      	PR fortran/86481
      	* trans-expr.c (gfc_conv_expr_reference): Do not add the post
      	block to the pre block if the expression is to be finalized.
      	* trans-stmt.c (gfc_trans_allocate): If the expr3 must be
      	finalized, load the post block into a finalization block and
      	add it right at the end of the allocation block.
      
      2017-08-28  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/80477
      	* gfortran.dg/class_result_7.f90: New test.
      	* gfortran.dg/class_result_8.f90: New test.
      	* gfortran.dg/class_result_9.f90: New test.
      
      	PR fortran/86481
      	* gfortran.dg/allocate_with_source_25.f90: New test.
      
      From-SVN: r263916
      Paul Thomas committed
    • re PR middle-end/87099 (internal compiler error: segmentation fault) · 2c8861b7
      	PR middle-end/87099
      	* calls.c (maybe_warn_nonstring_arg): Punt early if
      	warn_stringop_overflow is zero.  Don't call get_range_strlen
      	on 3rd argument, keep iterating until lenrng[1] is INTEGER_CST.
      	Swap comparison operands to have constants on rhs.  Only use
      	lenrng[1] if non-NULL and INTEGER_CST.  Don't uselessly
      	increment lenrng[0].
      
      	* gcc.dg/pr87099.c: New test.
      
      From-SVN: r263915
      Jakub Jelinek committed
    • Fix unguarded use of tree_to_shwi in tree-ssa-sccvn.c · 4ec4324d
      Fixes many testsuite failures for SVE.
      
      2018-08-28  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Fix unguarded
      	use of tree_to_shwi.  Remove duplicated test for the size being
      	a whole number of bytes.
      
      From-SVN: r263914
      Richard Sandiford committed
    • Add target selectors to slp-37.c (PR87078) · 463a9e0d
      This test was failing for Power 7 due to the lack of hw support
      for unaligned accesses.
      
      2018-08-28  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/testsuite/
      	PR testsuite/87078
      	* gcc.dg/vect/slp-37.c: Restrict scan tests to vect_hw_misalign.
      
      From-SVN: r263913
      Richard Sandiford committed
    • re PR tree-optimization/87117 (ICE in… · 8e8bf292
      re PR tree-optimization/87117 (ICE in eliminate_dom_walker::eliminate_cleanup(bool) at gcc/gcc/tree-ssa-sccvn.c:5431 since r263875)
      
      2018-08-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87117
      	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_cleanup):
      	Handle removed stmt without LHS (GIMPLE_NOP).
      
      From-SVN: r263912
      Richard Biener committed
    • re PR tree-optimization/87117 (ICE in… · f2b0062c
      re PR tree-optimization/87117 (ICE in eliminate_dom_walker::eliminate_cleanup(bool) at gcc/gcc/tree-ssa-sccvn.c:5431 since r263875)
      
      2018-08-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87117
      	* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Exclude
      	void which is is_gimple_reg_type by checking for COMPLETE_TYPE_P.
      
      	* gcc.dg/pr87117-1.c: New testcase.
      
      From-SVN: r263911
      Richard Biener committed
    • re PR tree-optimization/87117 (ICE in… · 7b3ca244
      re PR tree-optimization/87117 (ICE in eliminate_dom_walker::eliminate_cleanup(bool) at gcc/gcc/tree-ssa-sccvn.c:5431 since r263875)
      
      2018-08-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87117
      	* tree-ssa-pre.c (compute_avail): Do not make expressions
      	with predicated values available.
      	(get_expr_value_id): Assert we do not run into predicated value
      	expressions.
      
      	* gcc.dg/pr87117-2.c: New testcase.
      
      From-SVN: r263910
      Richard Biener committed
    • re PR tree-optimization/87117 (ICE in… · 6df46f59
      re PR tree-optimization/87117 (ICE in eliminate_dom_walker::eliminate_cleanup(bool) at gcc/gcc/tree-ssa-sccvn.c:5431 since r263875)
      
      2018-08-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87117
      	* tree-ssa-operands.c (add_stmt_operand): STRING_CST may
      	get virtual operands.
      	(get_expr_operands): Handle STRING_CST like other decls.
      
      	* gcc.dg/lvalue-5.c: New testcase.
      
      From-SVN: r263908
      Richard Biener committed
    • Update documentation of fndecl_built_in_p. · 36066262
      2018-08-28  Martin Liska  <mliska@suse.cz>
      
      	* tree.h: Update documentation of fndecl_built_in_p
      	functions.
      
      From-SVN: r263907
      Martin Liska committed
    • re PR tree-optimization/87110 ([9 Regresssion] tree check fail in to_wide, at tree.h:5523) · a1ae0cbd
      	PR tree-optimization/87110
      	* tree-ssa-dse.c (compute_trims): Handle non-constant
      	TYPE_SIZE_UNIT.
      
      	PR tree-optimization/87110
      	* gcc.c-torture/compile/pr87110.c: New test.
      
      From-SVN: r263906
      Jeff Law committed
    • PR tree-optimization/86914 - wrong code with strlen() of poor-man's flexible… · d1af2f66
      PR tree-optimization/86914 - wrong code with strlen() of poor-man's flexible array member plus offset
      
      gcc/ChangeLog:
      
      	PR tree-optimization/86914
      	* tree-ssa-strlen.c (maybe_set_strlen_range): Avoid MEM_REF.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/86914
      	* gcc.dg/strlenopt-57.c: New test.
      
      From-SVN: r263905
      Martin Sebor committed
    • Daily bump. · 37223543
      From-SVN: r263904
      GCC Administrator committed
    • PR tree-optimization/87112 - ICE in fold_binary_loc on strnlen of mixed integer types · 1583124e
      gcc/ChangeLog:
      
      	PR tree-optimization/87112
      	* builtins.c (expand_builtin_strnlen): Convert c_strlen result to
      	the type of the bound argument.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/87112
      	* gcc.dg/pr87112.c: New test.
      
      From-SVN: r263900
      Martin Sebor committed
  3. 27 Aug, 2018 16 commits
    • C++: fix-it hint for missing "typename" (PR c++/63392) · bdd03984
      This patch adds a fix-it hint to missing "typename" errors in the C++
      frontend, suggesting the insertion of "typename ".
      
      This addresses part of PR c++/63392; however it does not improve the
      error-recovery for such cases.
      
      gcc/cp/ChangeLog:
      	PR c++/63392
      	* parser.c (cp_parser_diagnose_invalid_type_name): Add fix-it
      	hint.
      
      gcc/testsuite/ChangeLog:
      	PR c++/63392
      	* g++.dg/diagnostic/missing-typename.C: New test.
      
      From-SVN: r263899
      David Malcolm committed
    • tree-ssa-dse.c (compute_trims): Handle case where the reference's type does not… · 6a2a6928
      tree-ssa-dse.c (compute_trims): Handle case where the reference's type does not have a TYPE_SIZE_UNIT.
      
      	* tree-ssa-dse.c (compute_trims): Handle case where the reference's
      	type does not have a TYPE_SIZE_UNIT.
      
      	* gcc.c-torture/compile/dse.c: New test.
      
      From-SVN: r263896
      Jeff Law committed
    • re PR c++/86993 (assignment of read-only variable error reported at wrong location) · d4714a1b
      	PR c++/86993
      	* cp-tree.h (cxx_readonly_error): Add location_t argument.
      	* typeck2.c (cxx_readonly_error): Add LOC argument, pass it to
      	ERROR_FOR_ASSIGNMENT macro and readonly_error.  Add LOC argument
      	to ERROR_FOR_ASSIGNMENT macro, use error_at instead of error and
      	pass LOC to it.  Formatting fixes.
      	* typeck.c (cp_build_unary_op): Pass location to cxx_readonly_error.
      	(cp_build_modify_expr): Pass loc to cxx_readonly_error.
      	* semantics.c (finish_asm_stmt): Pass input_location to
      	cxx_readonly_error.
      
      	* g++.dg/diagnostic/pr86993.C: New test.
      
      From-SVN: r263891
      Jakub Jelinek committed
    • aarch64-speculation.cc: Replace include of cfg.h with include of backend.h. · a9cf35bf
      2018-08-27  Steve Ellcey  <sellcey@cavium.com>
      
      	* config/aarch64/aarch64-speculation.cc: Replace include of cfg.h
      	with include of backend.h.
      
      From-SVN: r263890
      Steve Ellcey committed
    • re PR tree-optimization/86927 (Gcc miscompiles at -O3 on valid code) · efc3a1a1
      2018-08-27  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/86927
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): Properly
      	use const cond reduction code.
      
      	* gcc.dg/vect/pr86927.c: New testcase.
      
      From-SVN: r263888
      Richard Biener committed
    • match.pd: add single-use check for (x & y) ^ y -> ~x & y (PR 85758) · de5b5228
      	PR tree-optimization/85758
      	* match.pd ((X & Y) ^ Y): Add :s qualifier to inner expression.
      
      From-SVN: r263887
      Alexander Monakov committed
    • Replace 8 spaces with a tabular in ChangeLog files. · 92a285c1
      From-SVN: r263886
      Martin Liska committed
    • Less verbose fix-it hints for missing header files (PR 87091) · 85204e23
      This patch tweaks maybe_add_include_fixit so that if we're emitting a note
      about adding the header file, the note's primary location will be replaced
      by that of the fix-it hint, to avoid repeating a location we've already
      emitted (or one close to it).
      
      For example, this simplifies:
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:27: error: msg 1
        87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
           |                           ^~~~~~
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: msg 2
         73 | # include <debug/vector>
        +++ |+#include <vector>
         74 | #endif
        ....
         87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
            |                      ^~~
      
      to:
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:27: error: msg 1
        87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
           |                           ^~~~~~
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:74:1: note: msg 2
         73 | # include <debug/vector>
        +++ |+#include <vector>
         74 | #endif
      
      eliminating the repetition of line 87 in the note.
      
      Doing so requires converting show_caret_p to a tri-state, to avoid
      meaninglessly printing a caret for the first column in the next line
      (and colorizing it):
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:74:1: note: msg 2
         73 | # include <debug/vector>
        +++ |+#include <vector>
         74 | #endif
            | ^
      
      gcc/c-family/ChangeLog:
      	PR 87091
      	* c-common.c (c_cpp_error): Update for conversion of show_caret_p
      	to a tri-state.
      	(maybe_suggest_missing_token_insertion): Likewise.
      	(maybe_add_include_fixit): Add param "override_location".  If set,
      	and source-printing is enabled, then override the rich_location's
      	primary location with that of the insertion point for the fix-it
      	hint, marking it with SHOW_LINES_WITHOUT_RANGE.
      	* c-common.h (extern void maybe_add_include_fixit): Add bool
      	param.
      	* c-format.c (selftest::test_type_mismatch_range_labels): Update
      	for conversion of show_caret_p to a tri-state.
      	* c-warn.c (warn_for_restrict): Likewise.
      	* known-headers.cc
      	(suggest_missing_header::~suggest_missing_header): Update call to
      	maybe_add_include_fixit to suggest overriding the location, as it
      	is for a note.
      
      gcc/c/ChangeLog:
      	PR 87091
      	* c-decl.c (implicitly_declare): Update call to
      	maybe_add_include_fixit to suggest overriding the location, as it
      	is for a note.
      	* c-objc-common.c (c_tree_printer): Update for conversion of
      	show_caret_p to a tri-state.
      
      gcc/cp/ChangeLog:
      	PR 87091
      	* decl.c (grokdeclarator): Update for conversion of show_caret_p
      	to a tri-state.
      	* error.c (cp_printer): Likewise.
      	* name-lookup.c (maybe_suggest_missing_std_header): Update call to
      	maybe_add_include_fixit to suggest overriding the location, as it
      	is for a note.
      	* parser.c (cp_parser_string_literal): Update for conversion of
      	show_caret_p to a tri-state.
      	(cp_parser_elaborated_type_specifier): Likewise.
      	(set_and_check_decl_spec_loc): Likewise.
      	* pt.c (listify): Update call to maybe_add_include_fixit to not
      	override the location, as it is for an error.
      	* rtti.c (typeid_ok_p): Likewise.
      
      gcc/ChangeLog:
      	PR 87091
      	* diagnostic-show-locus.c (class layout_range): Update for
      	conversion of show_caret_p to a tri-state.
      	(layout_range::layout_range): Likewise.
      	(make_range): Likewise.
      	(layout::maybe_add_location_range): Likewise.
      	(layout::should_print_annotation_line_p): Don't show annotation
      	lines for ranges that are SHOW_LINES_WITHOUT_RANGE.
      	(layout::get_state_at_point): Update for conversion of
      	show_caret_p to a tri-state.  Bail out early for
      	SHOW_LINES_WITHOUT_RANGE, so that such ranges don't affect
      	underlining or source colorization.
      	(gcc_rich_location::add_location_if_nearby): Update for conversion
      	of show_caret_p to a tri-state.
      	(selftest::test_one_liner_multiple_carets_and_ranges): Likewise.
      	(selftest::test_one_liner_fixit_replace_equal_secondary_range):
      	Likewise.
      	(selftest::test_one_liner_labels): Likewise.
      	* gcc-rich-location.c (gcc_rich_location::add_expr): Update for
      	conversion of show_caret_p to a tri-state.
      	* pretty-print.c (text_info::set_location): Likewise.
      	* pretty-print.h (text_info::set_location): Likewise.
      	* substring-locations.c (format_warning_n_va): Likewise.
      	* tree-diagnostic.c (default_tree_printer): Likewise.
      	* tree-pretty-print.c (newline_and_indent): Likewise.
      
      gcc/fortran/ChangeLog:
      	PR 87091
      	* error.c (gfc_format_decoder): Update for conversion of
      	show_caret_p to a tri-state.
      
      gcc/testsuite/ChangeLog:
      	PR 87091
      	* gcc.dg/empty.h: New file.
      	* gcc.dg/fixits-pr84852-1.c: Update for move of fix-it hint to
      	top of file and removal of redundant second printing of warning
      	location.
      	* gcc.dg/fixits-pr84852-2.c: Likewise.
      	* gcc.dg/missing-header-fixit-3.c: Likewise.
      	* gcc.dg/missing-header-fixit-4.c: New test.
      	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c: Update for
      	conversion of show_caret_p to a tri-state.
      
      libcpp/ChangeLog:
      	PR 87091
      	* include/line-map.h (enum range_display_kind): New enum.
      	(struct location_range): Replace field "m_show_caret_p" with
      	"m_range_display_kind", converting from bool to the new enum.
      	(class rich_location): Add example of line insertion fix-it hint.
      	(rich_location::add_range): Convert param "show_caret_p" from bool
      	to enum range_display_kind and rename to "range_display_kind",
      	giving it a default of SHOW_RANGE_WITHOUT_CARET.
      	(rich_location::set_range): Likewise, albeit without a default.
      	* line-map.c (rich_location::rich_location): Update for conversion
      	of show_caret_p to tri-state enum.
      	(rich_location::add_range): Likewise.
      	(rich_location::set_range): Likewise.
      
      From-SVN: r263885
      David Malcolm committed
    • diagnostics: show an extra line of context in line-insertion fix-it hints (PR 87091) · df308f81
      This patch tweaks how we print line-insertion fix-it hints, so that
      the line before the insertion point is also printed, to give the user
      more context on the proposed change.
      
      For example, it changes:
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: message
        +++ |+#include <vector>
         74 | #endif
        ....
         87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
            |                      ^~~
      
      to:
      
        ../x86_64-pc-linux-gnu/libstdc++-v3/include/vector:87:22: note: message
         73 | # include <debug/vector>
        +++ |+#include <vector>
         74 | #endif
        ....
         87 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
            |                      ^~~
      
      gcc/ChangeLog:
      	PR 87091
      	* diagnostic-show-locus.c (get_line_span_for_fixit_hint): Show the
      	line above for line-insertion fix-it hints.
      	(selftest::test_fixit_insert_containing_newline): Update the
      	expected results, and add a test with line-numbering enabled.
      
      gcc/testsuite/ChangeLog:
      	PR 87091
      	* g++.dg/pr85523.C: Extend expected output to show line
      	before line-insertion fix-it hint.
      	* gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers.c
      	(test_fixit_insert_newline): Add previous line to expected output.
      	* gcc.dg/plugin/diagnostic-test-show-locus-bw.c: Likewise.
      	* gcc.dg/plugin/diagnostic-test-show-locus-color.c: Likewise.
      
      From-SVN: r263884
      David Malcolm committed
    • Sanopt: ignore params with DECL_HAS_VALUE_EXPR_P (PR sanitizer/86962). · 47c3496b
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR sanitizer/86962
      	* sanopt.c (sanitize_rewrite_addressable_params): Ignore
              params with DECL_HAS_VALUE_EXPR_P.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR sanitizer/86962
      	* gcc.dg/asan/pr86962.c: New test.
      
      From-SVN: r263882
      Martin Liska committed
    • Add test for memcpy expansion with hint. · 6b60ee20
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* config/i386/i386.c (ix86_expand_set_or_movmem): Dump
              selected expansion strategy.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/tree-prof/val-prof-10.c: New test.
      
      From-SVN: r263881
      Martin Liska committed
    • Come up with fndecl_built_in_p. · 3d78e008
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* builtins.h (is_builtin_fn): Remove and fndecl_built_in_p.
      	* builtins.c (is_builtin_fn): Likewise.
      	* attribs.c (diag_attr_exclusions): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	(builtin_mathfn_code): Likewise.
      	(fold_builtin_expect): Likewise.
      	(fold_call_expr): Likewise.
      	(fold_builtin_call_array): Likewise.
      	(fold_call_stmt): Likewise.
      	(set_builtin_user_assembler_name): Likewise.
      	(is_simple_builtin): Likewise.
      	* calls.c (gimple_alloca_call_p): Likewise.
      	(maybe_warn_nonstring_arg): Likewise.
      	* cfgexpand.c (expand_call_stmt): Likewise.
      	* cgraph.c (cgraph_update_edges_for_call_stmt_node): Likewise.
      	(cgraph_edge::verify_corresponds_to_fndecl): Likewise.
      	(cgraph_node::verify_node): Likewise.
      	* cgraphclones.c (build_function_decl_skip_args): Likewise.
      	(cgraph_node::create_clone): Likewise.
      	* config/arm/arm.c (arm_insert_attributes): Likewise.
      	* config/i386/i386.c (ix86_gimple_fold_builtin): Likewise.
      	* dse.c (scan_insn): Likewise.
      	* expr.c (expand_expr_real_1): Likewise.
      	* fold-const.c (operand_equal_p): Likewise.
      	(fold_binary_loc): Likewise.
      	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
      	* gimple-low.c (lower_stmt): Likewise.
      	* gimple-pretty-print.c (dump_gimple_call): Likewise.
      	* gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Likewise.
      	* gimple.c (gimple_build_call_from_tree): Likewise.
      	(gimple_call_builtin_p): Likewise.
      	(gimple_call_combined_fn): Likewise.
      	* gimplify.c (gimplify_call_expr): Likewise.
      	(gimple_boolify): Likewise.
      	(gimplify_modify_expr): Likewise.
      	(gimplify_addr_expr): Likewise.
      	* hsa-gen.c (gen_hsa_insns_for_call): Likewise.
      	* ipa-cp.c (determine_versionability): Likewise.
      	* ipa-fnsummary.c (compute_fn_summary): Likewise.
      	* ipa-param-manipulation.c (ipa_modify_formal_parameters): Likewise.
      	* ipa-split.c (visit_bb): Likewise.
      	(split_function): Likewise.
      	* ipa-visibility.c (cgraph_externally_visible_p): Likewise.
      	* lto-cgraph.c (input_node): Likewise.
      	* lto-streamer-out.c (write_symbol): Likewise.
      	* omp-low.c (setjmp_or_longjmp_p): Likewise.
      	(lower_omp_1): Likewise.
      	* predict.c (strip_predict_hints): Likewise.
      	* print-tree.c (print_node): Likewise.
      	* symtab.c (symtab_node::output_to_lto_symbol_table_p): Likewise.
      	* trans-mem.c (is_tm_irrevocable): Likewise.
      	(is_tm_load): Likewise.
      	(is_tm_simple_load): Likewise.
      	(is_tm_store): Likewise.
      	(is_tm_simple_store): Likewise.
      	(is_tm_abort): Likewise.
      	(tm_region_init_1): Likewise.
      	* tree-call-cdce.c (gen_shrink_wrap_conditions): Likewise.
      	* tree-cfg.c (verify_gimple_call): Likewise.
      	(move_stmt_r): Likewise.
      	(stmt_can_terminate_bb_p): Likewise.
      	* tree-eh.c (lower_eh_constructs_2): Likewise.
      	* tree-if-conv.c (if_convertible_stmt_p): Likewise.
      	* tree-inline.c (remap_gimple_stmt): Likewise.
      	(copy_bb): Likewise.
      	(estimate_num_insns): Likewise.
      	(fold_marked_statements): Likewise.
      	* tree-sra.c (scan_function): Likewise.
      	* tree-ssa-ccp.c (surely_varying_stmt_p): Likewise.
      	(optimize_stack_restore): Likewise.
      	(pass_fold_builtins::execute): Likewise.
      	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
      	(mark_all_reaching_defs_necessary_1): Likewise.
      	* tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Likewise.
      	* tree-ssa-forwprop.c (simplify_builtin_call): Likewise.
      	(pass_forwprop::execute): Likewise.
      	* tree-ssa-loop-im.c (stmt_cost): Likewise.
      	* tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
      	* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise.
      	* tree-ssa-strlen.c (get_string_length): Likewise.
      	* tree-ssa-structalias.c (handle_lhs_call): Likewise.
      	(find_func_aliases_for_call): Likewise.
      	* tree-ssa-ter.c (find_replaceable_in_bb): Likewise.
      	* tree-stdarg.c (optimize_va_list_gpr_fpr_size): Likewise.
      	* tree-tailcall.c (find_tail_calls): Likewise.
      	* tree.c (need_assembler_name_p): Likewise.
      	(free_lang_data_in_decl): Likewise.
      	(get_call_combined_fn): Likewise.
      	* ubsan.c (is_ubsan_builtin_p): Likewise.
      	* varasm.c (incorporeal_function_p): Likewise.
      	* tree.h (DECL_BUILT_IN): Remove and replace with
              fndecl_built_in_p.
      	(DECL_BUILT_IN_P): Transfort to fndecl_built_in_p.
      	(fndecl_built_in_p): New.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* gcc-interface/decl.c (update_profile): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	* gcc-interface/gigi.h (call_is_atomic_load): Likewise.
      	* gcc-interface/utils.c (gnat_pushdecl): Likewise.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* c-common.c (check_function_restrict): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	(check_builtin_function_arguments): Likewise.
      	(reject_gcc_builtin): Likewise.
      	* c-warn.c (sizeof_pointer_memaccess_warning): Likewise.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* c-decl.c (locate_old_decl): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	(diagnose_mismatched_decls): Likewise.
      	(merge_decls): Likewise.
      	(warn_if_shadowing): Likewise.
      	(pushdecl): Likewise.
      	(implicitly_declare): Likewise.
      	* c-parser.c (c_parser_postfix_expression_after_primary): Likewise.
      	* c-tree.h (C_DECL_ISNT_PROTOTYPE): Likewise.
      	* c-typeck.c (build_function_call_vec): Likewise.
      	(convert_arguments): Likewise.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* call.c (build_call_a): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	(build_cxx_call): Likewise.
      	* constexpr.c (constexpr_fn_retval): Likewise.
      	(cxx_eval_builtin_function_call): Likewise.
      	(cxx_eval_call_expression): Likewise.
      	(potential_constant_expression_1): Likewise.
      	* cp-gimplify.c (cp_gimplify_expr): Likewise.
      	(cp_fold): Likewise.
      	* decl.c (decls_match): Likewise.
      	(validate_constexpr_redeclaration): Likewise.
      	(duplicate_decls): Likewise.
      	(make_rtl_for_nonlocal_decl): Likewise.
      	* name-lookup.c (consider_binding_level): Likewise.
      	(cp_emit_debug_info_for_using): Likewise.
      	* semantics.c (finish_call_expr): Likewise.
      	* tree.c (builtin_valid_in_constant_expr_p): Likewise.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* go-gcc.cc (Gcc_backend::call_expression): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* lto-lang.c (handle_const_attribute): Use new function
              fndecl_built_in_p and remove check for FUNCTION_DECL if
              possible.
      	* lto-symtab.c (lto_symtab_merge_p): Likewise.
      	(lto_symtab_merge_decls_1): Likewise.
      	(lto_symtab_merge_symbols): Likewise.
      	* lto.c (lto_maybe_register_decl): Likewise.
      	(read_cgraph_and_symbols): Likewise.
      
      From-SVN: r263880
      Martin Liska committed
    • Improve switch code emission for a balanced tree (PR tree-optimization/86847). · bb79aba4
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR tree-optimization/86847
      	* tree-switch-conversion.c (switch_decision_tree::dump_case_nodes):
              Dump also subtree probability.
      	(switch_decision_tree::do_jump_if_equal): New function.
      	(switch_decision_tree::emit_case_nodes): Handle special
              situations in balanced tree that can be emitted much simpler.
              Fix calculation of probabilities that happen in tree expansion.
      	* tree-switch-conversion.h (struct cluster): Add
              is_single_value_p.
      	(struct simple_cluster): Likewise.
      	(struct case_tree_node): Add new function has_child.
      	(do_jump_if_equal): New.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR tree-optimization/86847
      	* gcc.dg/tree-ssa/switch-3.c: New test.
      	* gcc.dg/tree-ssa/vrp105.c: Remove.
      
      From-SVN: r263879
      Martin Liska committed
    • Fix probability for bit-tests. · 377afcd5
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* tree-switch-conversion.c (bit_test_cluster::find_bit_tests):
              Add new argument to bit_test_cluster constructor.
      	(bit_test_cluster::emit): Set bits really number of values
              handlel by a test.
      	(bit_test_cluster::hoist_edge_and_branch_if_true): Add
              probability argument.
      	* tree-switch-conversion.h (struct bit_test_cluster):
              Add m_handles_entire_switch.
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/tree-ssa/switch-2.c: New test.
      
      From-SVN: r263878
      Martin Liska committed
    • Fix probabilities for jump table (PR tree-optimization/86702). · dbdfaaba
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
              PR tree-optimization/86702
      	* tree-switch-conversion.c (jump_table_cluster::emit):
              Make probabilities even for values in jump table
              according to number of cases handled.
      	(switch_decision_tree::compute_cases_per_edge): Pass
              argument to reset_out_edges_aux function.
      	(switch_decision_tree::analyze_switch_statement): Likewise.
      	* tree-switch-conversion.h (switch_decision_tree::reset_out_edges_aux):
              Make it static.
      
      From-SVN: r263877
      Martin Liska committed
    • Add new gswitch related functions into tree-cfg.c. · 61ff5d6f
      2018-08-27  Martin Liska  <mliska@suse.cz>
      
      	* cfgexpand.c (expand_asm_stmt): Use label_to_block and pass
              cfun argument explicitly.
      	* gimple-pretty-print.c (dump_gimple_switch): Likewise.
      	* hsa-gen.c (gen_hsa_insns_for_switch_stmt): Use new
              function gimple_switch_default_bb.
      	(convert_switch_statements):
      	(expand_builtins):
      	* ipa-fnsummary.c (set_switch_stmt_execution_predicate):
      	* stmt.c (label_to_block_fn): Use label_to_block and pass
              cfun argument explicitly and use gimple_switch_label_bb.
      	(expand_case): Likewise.
      	* tree-cfg.c (lower_phi_internal_fn): Use label_to_block and pass
              cfun argument explicitly. Likewise.
      	(make_edges_bb): Likewise.
      	(make_cond_expr_edges): Likewise.
      	(get_cases_for_edge): Likewise.
      	(make_gimple_switch_edges): Likewise.
      	(label_to_block_fn): Likewise.
      	(label_to_block): Likewise.
      	(make_goto_expr_edges): Likewise.
      	(make_gimple_asm_edges): Likewise.
      	(main_block_label): Likewise.
      	(group_case_labels_stmt): Likewise.
      	(find_taken_edge_computed_goto): Likewise.
      	(find_taken_edge_switch_expr): Likewise.
      	(gimple_verify_flow_info): Likewise.
      	(gimple_redirect_edge_and_branch): Likewise.
      	(gimple_switch_label_bb): New function.
      	(gimple_switch_default_bb): Likewise.
      	(gimple_switch_edge): Likewise.
      	(gimple_switch_default_edge): Likewise.
      	* tree-cfg.h (label_to_block_fn): Remove and replace ...
      	(label_to_block): ... with this.
      	(gimple_switch_label_bb): New.
      	(gimple_switch_default_bb): Likewise.
      	(gimple_switch_edge): Likewise.
      	(gimple_switch_default_edge): Likewise.
      	* tree-cfgcleanup.c (convert_single_case_switch): Use
              new gimple functions and pass new argument to label_to_block.
      	(cleanup_control_flow_bb):
      	* tree-eh.c (make_eh_dispatch_edges): Use label_to_block and pass
              cfun argument explicitly.
      	(make_eh_edges): Likewise.
      	(redirect_eh_dispatch_edge): Likewise.
      	(lower_resx): Likewise.
      	(lower_eh_dispatch): Likewise.
      	(maybe_remove_unreachable_handlers): Likewise.
      	(unsplit_eh): Likewise.
      	(cleanup_empty_eh): Likewise.
      	(verify_eh_edges): Likewise.
      	(verify_eh_dispatch_edge): Likewise.
      	* tree-ssa-dom.c (record_edge_info): Likewise.
      	* tree-ssa-forwprop.c (simplify_gimple_switch_label_vec): Likewise.
      	* tree-ssa-threadedge.c (thread_around_empty_blocks): Likewise.
      	(thread_through_normal_block): Likewise.
      	* tree-ssa-uncprop.c (associate_equivalences_with_edges): Likewise.
      	* tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
      	* tree-switch-conversion.c (switch_conversion::collect): Use new
              gimple functions.
      	(switch_conversion::check_final_bb): Likewise.
      	(switch_conversion::gather_default_values): Pass new argument
              to label_to_block.
      	(switch_conversion::build_constructors): Likewise.
      	(switch_decision_tree::compute_cases_per_edge): Use new
              gimple_switch_edge function.
      	(switch_decision_tree::analyze_switch_statement): Pass new argument
              to label_to_block.
      	(switch_decision_tree::try_switch_expansion): Use
              gimple_switch_default_edge.
      	* tree-vrp.c (find_switch_asserts): Pass new argument
              to label_to_block.
      	* vr-values.c (vr_values::vrp_visit_switch_stmt): Likewise.
      	(vr_values::simplify_switch_using_ranges): Likewise.
      
      From-SVN: r263876
      Martin Liska committed