]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
7 years agoi386: Don't use frame pointer without stack access
hjl [Thu, 10 Aug 2017 15:29:05 +0000 (15:29 +0000)] 
i386: Don't use frame pointer without stack access

When there is no stack access, there is no need to use frame pointer
even if -fno-omit-frame-pointer is used and caller's frame pointer is
unchanged.

gcc/

PR target/81736
* config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
to ...
(ix86_finalize_stack_frame_flags): This.  Also clear
frame_pointer_needed if -fno-omit-frame-pointer is used without
stack access.
(ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
with ix86_finalize_stack_frame_flags.
(ix86_expand_epilogue): Likewise.
(ix86_expand_split_stack_prologue): Likewise.
* doc/invoke.texi: Add a note for -fno-omit-frame-pointer.

gcc/testsuite/

PR target/81736
* gcc.target/i386/pr81736-1.c: New test.
* gcc.target/i386/pr81736-2.c: Likewise.
* gcc.target/i386/pr81736-3.c: Likewise.
* gcc.target/i386/pr81736-4.c: Likewise.
* gcc.target/i386/pr81736-5.c: Likewise.
* gcc.target/i386/pr81736-6.c: Likewise.
* gcc.target/i386/pr81736-7.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251028 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[gcc/testsuite]
willschm [Thu, 10 Aug 2017 14:05:26 +0000 (14:05 +0000)] 
[gcc/testsuite]

2017-08-10  Will Schmidt  <will_schmidt@vnet.ibm.com>

        * gcc.target/powerpc/fold-vec-msum-short.c: Fix typo.
        * gcc.target/powerpc/fold-vec/pack-longlong.c: Mark for 64-bit only.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251027 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoC/C++: show pertinent open token when missing a close token
dmalcolm [Thu, 10 Aug 2017 13:22:27 +0000 (13:22 +0000)] 
C/C++: show pertinent open token when missing a close token

gcc/c/ChangeLog:
* c-parser.c (c_parser_error): Rename to...
(c_parser_error_richloc): ...this, making static, and adding
"richloc" parameter, passing it to the c_parse_error call,
rather than calling c_parser_set_source_position_from_token.
(c_parser_error): Reintroduce, reimplementing in terms of the
above, converting return type from void to bool.
(class token_pair): New class.
(struct matching_paren_traits): New struct.
(matching_parens): New typedef.
(struct matching_brace_traits): New struct.
(matching_braces): New typedef.
(get_matching_symbol): New function.
(c_parser_require): Add param MATCHING_LOCATION, using it to
highlight matching "opening" tokens for missing "closing" tokens.
(c_parser_skip_until_found): Likewise.
(c_parser_static_assert_declaration_no_semi): Convert explicit
parsing of CPP_OPEN_PAREN and CPP_CLOSE_PAREN to use of
class matching_parens, so that the pertinent open parenthesis is
highlighted when there are problems locating the close
parenthesis.
(c_parser_struct_or_union_specifier): Likewise.
(c_parser_typeof_specifier): Likewise.
(c_parser_alignas_specifier): Likewise.
(c_parser_simple_asm_expr): Likewise.
(c_parser_braced_init): Likewise, for matching_braces.
(c_parser_paren_condition): Likewise, for matching_parens.
(c_parser_switch_statement): Likewise.
(c_parser_for_statement): Likewise.
(c_parser_asm_statement): Likewise.
(c_parser_asm_operands): Likewise.
(c_parser_cast_expression): Likewise.
(c_parser_sizeof_expression): Likewise.
(c_parser_alignof_expression): Likewise.
(c_parser_generic_selection): Likewise.
(c_parser_postfix_expression): Likewise for cases RID_VA_ARG,
RID_OFFSETOF, RID_TYPES_COMPATIBLE_P, RID_AT_SELECTOR,
RID_AT_PROTOCOL, RID_AT_ENCODE, reindenting as necessary.
In case CPP_OPEN_PAREN, pass loc_open_paren to the
c_parser_skip_until_found call.
(c_parser_objc_class_definition): Use class matching_parens as
above.
(c_parser_objc_method_decl): Likewise.
(c_parser_objc_try_catch_finally_statement): Likewise.
(c_parser_objc_synchronized_statement): Likewise.
(c_parser_objc_at_property_declaration): Likewise.
(c_parser_oacc_wait_list): Likewise.
(c_parser_omp_var_list_parens): Likewise.
(c_parser_omp_clause_collapse): Likewise.
(c_parser_omp_clause_default): Likewise.
(c_parser_omp_clause_if): Likewise.
(c_parser_omp_clause_num_threads): Likewise.
(c_parser_omp_clause_num_tasks): Likewise.
(c_parser_omp_clause_grainsize): Likewise.
(c_parser_omp_clause_priority): Likewise.
(c_parser_omp_clause_hint): Likewise.
(c_parser_omp_clause_defaultmap): Likewise.
(c_parser_oacc_single_int_clause): Likewise.
(c_parser_omp_clause_ordered): Likewise.
(c_parser_omp_clause_reduction): Likewise.
(c_parser_omp_clause_schedule): Likewise.
(c_parser_omp_clause_num_teams): Likewise.
(c_parser_omp_clause_thread_limit): Likewise.
(c_parser_omp_clause_aligned): Likewise.
(c_parser_omp_clause_linear): Likewise.
(c_parser_omp_clause_safelen): Likewise.
(c_parser_omp_clause_simdlen): Likewise.
(c_parser_omp_clause_depend): Likewise.
(c_parser_omp_clause_map): Likewise.
(c_parser_omp_clause_device): Likewise.
(c_parser_omp_clause_dist_schedule): Likewise.
(c_parser_omp_clause_proc_bind): Likewise.
(c_parser_omp_clause_uniform): Likewise.
(c_parser_omp_for_loop): Likewise.
(c_parser_cilk_clause_vectorlength): Likewise.
(c_parser_cilk_clause_linear): Likewise.
(c_parser_transaction_expression): Likewise.
* c-parser.h (c_parser_require): Add param matching_location with
default UNKNOWN_LOCATION.
(c_parser_error): Convert return type from void to bool.
(c_parser_skip_until_found): Add param matching_location with
default UNKNOWN_LOCATION.

gcc/c-family/ChangeLog:
* c-common.c (c_parse_error): Add rich_location * param, using it
rather implicitly using input_location.
* c-common.h (c_parse_error): Add rich_location * param.

gcc/cp/ChangeLog:
* parser.c (cp_parser_error): Update for new param to
c_parse_error.
(class token_pair): New class.
(struct matching_paren_traits): New struct.
(matching_parens): New typedef.
(struct matching_brace_traits): New struct.
(matching_braces): New typedef.
(cp_parser_statement_expr): Convert explicit parsing of
CPP_OPEN_PAREN and CPP_CLOSE_PAREN to use of
class matching_parens, so that the pertinent open parenthesis is
highlighted when there are problems locating the close
parenthesis.
(cp_parser_primary_expression): Likewise.
(cp_parser_compound_literal_p): Remove consumption of opening
paren.
(cp_parser_postfix_expression): Convert explicit parsing of
CPP_OPEN_PAREN and CPP_CLOSE_PAREN to use matching parens, as
above.  Use it to consume the opening paren previously consumed by
cp_parser_compound_literal_p.
(cp_parser_parenthesized_expression_list): Likewise.
(cp_parser_unary_expression): Likewise.
(cp_parser_new_expression): Likewise.
(cp_parser_cast_expression): Likewise.
(cp_parser_builtin_offsetof): Likewise.
(cp_parser_trait_expr): Likewise.
(cp_parser_lambda_declarator_opt): Likewise.
(cp_parser_lambda_body): Likewise, for matching_braces.
(cp_parser_compound_statement): Likewise.
(cp_parser_selection_statement): Likewise, for matching_parens.
(cp_parser_iteration_statement): Likewise.
(cp_parser_already_scoped_statement): Likewise, for
matching_braces.
(cp_parser_linkage_specification): Likewise.
(cp_parser_static_assert): Likewise, for matching_parens.
(cp_parser_decltype): Likewise.
(cp_parser_operator): Likewise.
(cp_parser_enum_specifier): Likewise.
(cp_parser_namespace_definition): Likewise.
(cp_parser_direct_declarator): Likewise.
(cp_parser_braced_list): Likewise.
(cp_parser_class_specifier_1): Likewise, for matching_braces.
(cp_parser_constant_initializer): Likewise.
(cp_parser_noexcept_specification_opt): Likewise, for
matching_parens.
(cp_parser_exception_specification_opt): Likewise.
(cp_parser_handler): Likewise.
(cp_parser_asm_specification_opt): Likewise.
(cp_parser_asm_operand_list): Likewise.
(cp_parser_gnu_attributes_opt): Likewise.
(cp_parser_std_attribute_spec): Likewise.
(cp_parser_requirement_parameter_list): Likewise.
(cp_parser_requirement_body): Likewise, for matching_braces.
(cp_parser_compound_requirement): Likewise.
(cp_parser_template_introduction): Likewise.
(cp_parser_sizeof_pack): Likewise, for matching_parens.
(cp_parser_sizeof_operand): Likewise; use it to consume the
opening paren previously consumed by cp_parser_compound_literal_p.
(get_matching_symbol): New function.
(cp_parser_required_error): Add param "matching_location".  Remove
calls to cp_parser_error, instead setting a non-NULL gmsgid, and
handling it if set by calling c_parse_error, potentially with a
secondary location if matching_location was set.
(cp_parser_require): Add param "matching_location", with a default
value of UNKNOWN_LOCATION.
(cp_parser_require_keyword): Update for new param of
cp_parser_required_error.
(cp_parser_objc_encode_expression): Update to class matching_parens
as above.
(cp_parser_objc_defs_expression): Likewise.
(cp_parser_objc_protocol_expression): Likewise.
(cp_parser_objc_selector_expression): Likewise.
(cp_parser_objc_typename): Likewise.
(cp_parser_objc_superclass_or_category): Likewise.
(cp_parser_objc_try_catch_finally_statement): Likewise.
(cp_parser_objc_synchronized_statement): Likewise.
(cp_parser_objc_at_property_declaration): Likewise.
(cp_parser_oacc_single_int_clause): Likewise.
(cp_parser_oacc_shape_clause): Likewise.
(cp_parser_omp_clause_collapse): Likewise.
(cp_parser_omp_clause_default): Likewise.
(cp_parser_omp_clause_final): Likewise.
(cp_parser_omp_clause_if): Likewise.
(cp_parser_omp_clause_num_threads): Likewise.
(cp_parser_omp_clause_num_tasks): Likewise.
(cp_parser_omp_clause_grainsize): Likewise.
(cp_parser_omp_clause_priority): Likewise.
(cp_parser_omp_clause_hint): Likewise.
(cp_parser_omp_clause_defaultmap): Likewise.
(cp_parser_omp_clause_ordered): Likewise.
(cp_parser_omp_clause_schedule): Likewise.
(cp_parser_omp_clause_num_teams): Likewise.
(cp_parser_omp_clause_thread_limit): Likewise.
(cp_parser_omp_clause_aligned): Likewise.
(cp_parser_omp_clause_linear): Likewise.
(cp_parser_omp_clause_safelen): Likewise.
(cp_parser_omp_clause_simdlen): Likewise.
(cp_parser_omp_clause_depend): Likewise.
(cp_parser_omp_clause_device): Likewise.
(cp_parser_omp_clause_dist_schedule): Likewise.
(cp_parser_oacc_clause_async): Likewise.
(cp_parser_omp_critical): Likewise.
(cp_parser_omp_for_loop): Likewise.
(cp_parser_omp_sections_scope): Likewise.
(cp_parser_omp_declare_reduction_exprs): Likewise.
Update for new param to cp_parser_required_error.
(cp_parser_oacc_routine): Likewise.
(cp_parser_transaction_expression): Likewise.
(cp_parser_cilk_simd_vectorlength): Likewise.

gcc/testsuite/ChangeLog:
* c-c++-common/missing-close-symbol.c: New test case.
* c-c++-common/missing-symbol.c: New test case.
* gcc.dg/unclosed-init.c: New test case.
* g++.dg/diagnostic/unclosed-extern-c.C: New test case.
* g++.dg/diagnostic/unclosed-function.C: New test case.
* g++.dg/diagnostic/unclosed-namespace.C: New test case.
* g++.dg/diagnostic/unclosed-struct.C: New test case.
* g++.dg/parse/pragma2.C: Update to reflect movement of the
"expected identifier" error.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251026 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2017-08-10 Fritz Reese <fritzoreese@gmail.com>
foreese [Thu, 10 Aug 2017 12:52:01 +0000 (12:52 +0000)] 
2017-08-10  Fritz Reese <fritzoreese@gmail.com>

    gcc/fortran/ChangeLog:

* options.c (set_dec_flags): Only set legacy standards when value
is not zero.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251025 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2017-08-10 Fritz Reese <Reese-Fritz@zai.com>
foreese [Thu, 10 Aug 2017 12:36:44 +0000 (12:36 +0000)] 
2017-08-10  Fritz Reese <Reese-Fritz@zai.com>

    gcc/fortran/ChangeLog:

* options.c (set_dec_flags, gfc_post_options): Only set flag_d_lines
with -fdec when not set by user.

    gcc/testsuite/ChangeLog:

    gfortran.dg/
* dec_d_lines_1.f, dec_d_lines_2.f: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251024 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2017-08-10 Fritz Reese <Reese-Fritz@zai.com>
foreese [Thu, 10 Aug 2017 12:19:13 +0000 (12:19 +0000)] 
2017-08-10  Fritz Reese <Reese-Fritz@zai.com>

    gcc/fortran/ChangeLog:

* decl.c (attr_seen): New static variable.
* decl.c (variable_decl): Match %FILL in STRUCTURE body.
* gfortran.texi: Update documentation.

    gcc/testsuite/ChangeLog:

    gfortran.dg/
* dec_structure_18.f90, dec_structure_19.f90, dec_structure_20.f90,
dec_structure_21.f90: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251023 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * objc.dg/proto-lossage-4.m: Accept int/long int as intptr_t.
mpolacek [Thu, 10 Aug 2017 09:26:14 +0000 (09:26 +0000)] 
* objc.dg/proto-lossage-4.m: Accept int/long int as intptr_t.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251022 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR testsuite/81784
mpolacek [Thu, 10 Aug 2017 08:54:04 +0000 (08:54 +0000)] 
PR testsuite/81784
* gcc.dg/compare2.c: Update dg-bogus and dg-warning.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251021 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix target attribute handling (PR c++/81355).
marxin [Thu, 10 Aug 2017 07:43:49 +0000 (07:43 +0000)] 
Fix target attribute handling (PR c++/81355).

2017-08-10  Martin Liska  <mliska@suse.cz>

PR c++/81355
* c-attribs.c (handle_target_attribute):
Report warning for an empty string argument of target attribute.
2017-08-10  Martin Liska  <mliska@suse.cz>

PR c++/81355
* g++.dg/other/pr81355.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251020 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c/81687
jakub [Thu, 10 Aug 2017 00:33:20 +0000 (00:33 +0000)] 
PR c/81687
* omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL
LABEL_DECLs.
* tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL
or DECL_NONLOCAL labels.
(move_stmt_r) <case GIMPLE_LABEL>: Adjust DECL_CONTEXT of FORCED_LABEL
or DECL_NONLOCAL labels here.

* testsuite/libgomp.c/pr81687-1.c: New test.
* testsuite/libgomp.c/pr81687-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251019 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agojit: add gcc_jit_type_get_vector
dmalcolm [Thu, 10 Aug 2017 00:18:19 +0000 (00:18 +0000)] 
jit: add gcc_jit_type_get_vector

gcc/jit/ChangeLog:
* docs/cp/topics/types.rst (Vector types): New section.
* docs/topics/compatibility.rst (LIBGCCJIT_ABI_8): New tag.
* docs/topics/types.rst (gcc_jit_context_get_type): Fix typo in
example.
(Vector types): New section.
* docs/_build/texinfo/libgccjit.texi: Regenerate.
* jit-playback.c (gcc::jit::playback::type::get_vector): New
method.
* jit-playback.h (gcc::jit::playback::type::get_vector): New
method.
* jit-recording.c: In namespace gcc::jit::recording::
(type::get_vector): New method.
(memento_of_get_aligned::write_reproducer): Fix typo
in leading comment.
(memento_of_get_vector::replay_into): New method.
(memento_of_get_vector::make_debug_string): New method.
(memento_of_get_vector::write_reproducer): New method.
* jit-recording.h: In namespace gcc::jit::recording::
(type::get_vector): New
 method.
(class memento_of_get_vector): New class.
* libgccjit++.h (gccjit::type::get_vector): New method.
* libgccjit.c (gcc_jit_type_get_vector): New public entrypoint.
* libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_type_get_vector): New
define.
(gcc_jit_type_get_vector): New decl.
* libgccjit.map (LIBGCCJIT_ABI_8): New ABI tag.

gcc/testsuite/ChangeLog:
* jit.dg/all-non-failing-tests.h: Add note about
test-vector-types.cc.
* jit.dg/test-error-gcc_jit_type_get_vector-bad-type.c: New test
case.
* jit.dg/test-error-gcc_jit_type_get_vector-non-power-of-two.c:
New test case.
* jit.dg/test-vector-types.cc: New test case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251018 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Thu, 10 Aug 2017 00:16:18 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251017 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2017-08-09 Andrew Pinski <apinski@cavium.com>
pinskia [Thu, 10 Aug 2017 00:05:30 +0000 (00:05 +0000)] 
2017-08-09  Andrew Pinski  <apinski@cavium.com>

        * gcc.target/aarch64/vect-xorsign_exec.c: Add
        --save-temps to the options passed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251013 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoThis time with the file added.
segher [Wed, 9 Aug 2017 21:52:30 +0000 (21:52 +0000)] 
This time with the file added.

Testcase for PR81423

gcc/testsuite/
PR rtl-optimization/81423
* gcc.c-torture/execute/pr81423.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251011 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2017-08-09 Michael Collison <michael.collison@arm.com>
collison [Wed, 9 Aug 2017 21:46:10 +0000 (21:46 +0000)] 
2017-08-09  Michael Collison  <michael.collison@arm.com>

* testsuite/g++.dg/ext/packed8.C: Remove -mstructure-size-
boundary option and fix comment.
* testsuite/g++.dg/init/array16.C: Remove -mstructure-size-
boundary option and fix comment.
* testsuite/g++.dg/other/crash-4.C: Remove -mstructure-size-
boundary option and fix comment.
* testsuite/gcc.dg/builtin-stringop-chk-1.c: Remove
-mstructure-size boundary option.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251010 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix test for __has_unique_object_representations support in Clang
redi [Wed, 9 Aug 2017 21:38:05 +0000 (21:38 +0000)] 
Fix test for __has_unique_object_representations support in Clang

* include/std/type_traits (_GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP):
Replace with _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP and use
__is_identifier to set it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251009 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix test for __is_aggregate support in Clang
redi [Wed, 9 Aug 2017 21:37:52 +0000 (21:37 +0000)] 
Fix test for __is_aggregate support in Clang

2017-08-09  Katsuhiko Nishimra  <ktns.87@gmail.com>

* include/std/type_traits (_GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE): Use
__is_identifier instead of __has_builtin.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251008 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[gcc]
willschm [Wed, 9 Aug 2017 21:28:39 +0000 (21:28 +0000)] 
[gcc]

        2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>

        * config/rs6000/rs6000.c (rs6000_option_override_internal): Add blurb
        to indicate when early gimple folding has been disabled.
        (rs6000_gimple_fold_builtin): Add debug content.
        (rs6000_invalid_builtin): Fix whitespace.
        (rs6000_expand_builtin): Fix whitespace.
        * config/rs6000/rs6000.opt: Add option for -mfold-gimple.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251007 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago compiler: fix buglet in lshift type determination
ian [Wed, 9 Aug 2017 21:24:00 +0000 (21:24 +0000)] 
compiler: fix buglet in lshift type determination

    It's possible to construct an lshift expression using unsafe.Sizeof
    that is technically a compile-time constant but can't be evaluated
    without going through backend methods. In this case, insure that
    Type::make_non_abstract_type is called on the numeric operand of the
    shift (as opposed to leaving as abstract), to avoid an assert later on
    in the compiler flow.

    Fixes golang/go#21372.

    Reviewed-on: https://go-review.googlesource.com/54370

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251006 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agors6000: Use SAVE_MULTIPLE only if we restore what it saves (PR80938)
segher [Wed, 9 Aug 2017 21:08:33 +0000 (21:08 +0000)] 
rs6000: Use SAVE_MULTIPLE only if we restore what it saves (PR80938)

We can have SAVE_MULTIPLE while we do not have REST_MULTIPLE.  If the
inline restore does not restore all registers, the CFI for the save
and restore can conflict if things are shrink-wrapped.

We could restore all registers that are saved (not ideal), or emit
the CFI notes to say we did (which will work fine, but is also not
so great); instead, let's not save the registers that are unused.

PR target/80938
* config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use
SAVE_MULTIPLE if not all the registers that saves, should be saved.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251005 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoTestcase for PR81423
segher [Wed, 9 Aug 2017 21:05:45 +0000 (21:05 +0000)] 
Testcase for PR81423

gcc/testsuite/
PR rtl-optimization/81423
* gcc.c-torture/execute/pr81423.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251004 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd falkor pipeline description.
wilson [Wed, 9 Aug 2017 20:58:35 +0000 (20:58 +0000)] 
Add falkor pipeline description.

gcc/
* config/aarch64/aarch64-cores.def (falkor): Use falkor pipeline.
(qdf24xx): Likewise.
* config/aarch64/aarch64.md: Include falkor.md.
* config/aarch64/falkor.md: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251003 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c++/81525 - wrong constant value with generic lambda
jason [Wed, 9 Aug 2017 19:21:49 +0000 (19:21 +0000)] 
PR c++/81525 - wrong constant value with generic lambda

* pt.c (tsubst_decl) [VAR_DECL]: Avoid clobbering auto.
(tsubst_copy) [VAR_DECL]: Handle auto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250999 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[gcc/testsuite]
willschm [Wed, 9 Aug 2017 19:11:03 +0000 (19:11 +0000)] 
[gcc/testsuite]

2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-pack-double.c: New.
* gcc.target/powerpc/fold-vec-pack-int.c: New.
* gcc.target/powerpc/fold-vec-pack-longlong.c: New.
* gcc.target/powerpc/fold-vec-pack-short.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250998 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[gcc/testsuite]
willschm [Wed, 9 Aug 2017 19:06:35 +0000 (19:06 +0000)] 
[gcc/testsuite]

2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-msum-char.c: New.
* gcc.target/powerpc/fold-vec-msum-short.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250997 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[gcc/testsuite]
willschm [Wed, 9 Aug 2017 19:02:41 +0000 (19:02 +0000)] 
[gcc/testsuite]

2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-madd-double.c: New.
* gcc.target/powerpc/fold-vec-madd-float.c: New.
* gcc.target/powerpc/fold-vec-madd-short.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250996 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago 2017-08-09 Will Schmidt <will_schmidt@vnet.ibm.com>
willschm [Wed, 9 Aug 2017 18:58:37 +0000 (18:58 +0000)] 
2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-cntlz-int.c: New.
* gcc.target/powerpc/fold-vec-cntlz-char.c: New.
* gcc.target/powerpc/fold-vec-cntlz-short.c: New.
* gcc.target/powerpc/fold-vec-cntlz-longlong.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250995 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c++/81359 - Unparsed NSDMI error from SFINAE context.
jason [Wed, 9 Aug 2017 18:32:02 +0000 (18:32 +0000)] 
PR c++/81359 - Unparsed NSDMI error from SFINAE context.

* init.c (get_nsdmi): Add complain parm.
* typeck2.c (digest_nsdmi_init): Add complain parm.
(process_init_constructor_record): Pass complain to get_nsdmi.
* pt.c (maybe_instantiate_noexcept): Add complain parm, return bool.
* method.c (get_defaulted_eh_spec): Add complain parm.  Pass it into
synthesized_method_walk.
(synthesized_method_walk): Adjust.
(walk_field_subobs): Pass complain to get_nsdmi.
(defaulted_late_check): Skip other checks if deleted.
* decl2.c (mark_used): Pass complain to maybe_instantiate_noexcept.
* call.c (build_aggr_conv): Pass complain to get_nsdmi.
* parser.c (defarg_location): New.
* error.c (location_of): Use it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250994 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/81751 don't call fflush(NULL)
redi [Wed, 9 Aug 2017 17:52:10 +0000 (17:52 +0000)] 
PR libstdc++/81751 don't call fflush(NULL)

PR libstdc++/79820
PR libstdc++/81751
* config/io/basic_file_stdio.cc (sys_open(FILE*, ios_base::openmode)):
Call fflush on the stream instead of calling sync() while _M_cfile is
null. Restore original value of errno.
* testsuite/ext/stdio_filebuf/char/79820.cc: New.
* testsuite/ext/stdio_filebuf/char/81751.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250993 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago compiler: handle >32bit exponent in Ldexp
ian [Wed, 9 Aug 2017 17:15:02 +0000 (17:15 +0000)] 
compiler: handle >32bit exponent in Ldexp

    Libgo's implementation of math.Ldexp declared the libc "ldexp" as
    taking an 'int' exponent argument, which is not quite right for 64-bit
    platforms (exp arg is always int32); this could yield incorrect
    results for exponent values outside the range of Minint32/Maxint32.
    Fix by upating the type for the libc version of ldexp, and adding
    guards to screen for out-of-range exponents.

    Fixes #21323.

    Reviewed-on: https://go-review.googlesource.com/54250

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250992 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * g++.dg/asan/asan.exp: Switch on *.cc tests.
law [Wed, 9 Aug 2017 16:26:58 +0000 (16:26 +0000)] 
* g++.dg/asan/asan.exp: Switch on *.cc tests.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250991 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoBoolify some parameters.
mpolacek [Wed, 9 Aug 2017 12:34:36 +0000 (12:34 +0000)] 
Boolify some parameters.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250986 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c/81233
mpolacek [Wed, 9 Aug 2017 11:28:22 +0000 (11:28 +0000)] 
PR c/81233
* c-typeck.c (pedwarn_init): Make the function take a variable list.
Call emit_diagnostic_valist instead of pedwarn.
(convert_for_assignment): Unroll the PEDWARN_FOR_ASSIGNMENT macro.
Print the relevant types in diagnostics.

* diagnostic-core.h (emit_diagnostic_valist): Add declaration.
* diagnostic.c (emit_diagnostic): Add a comment.
(emit_diagnostic_valist): New function.

* gcc.dg/diagnostic-types-1.c: New test.
* gcc.dg/assign-warn-1.c: Update warning messages.
* gcc.dg/assign-warn-2.c: Likewise.
* gcc.dg/c90-const-expr-5.c: Likewise.
* gcc.dg/c99-const-expr-5.c: Likewise.
* gcc.dg/conv-2.c: Likewise.
* gcc.dg/init-bad-7.c: Likewise.
* gcc.dg/overflow-warn-1.c: Likewise.
* gcc.dg/overflow-warn-2.c: Likewise.
* gcc.dg/overflow-warn-3.c: Likewise.
* gcc.dg/overflow-warn-4.c: Likewise.
* gcc.dg/pointer-array-atomic.c: Likewise.
* gcc.dg/pr26865.c: Likewise.
* gcc.dg/pr61162-2.c: Likewise.
* gcc.dg/pr61162.c: Likewise.
* gcc.dg/pr67730-2.c: Likewise.
* gcc.dg/pr69156.c: Likewise.
* gcc.dg/pr70174.c: Likewise.
* objc.dg/proto-lossage-4.m: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250985 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c/81417
mpolacek [Wed, 9 Aug 2017 08:51:20 +0000 (08:51 +0000)] 
PR c/81417
* c-array-notation.c (fix_builtin_array_notation_fn): Update calls to
build_conditional_expr.
* c-parser.c (c_parser_conditional_expression): Create locations for
EXP1 and EXP2 from their source ranges.  Pass the locations down to
build_conditional_expr.
* c-tree.h (build_conditional_expr): Update declaration.
* c-typeck.c (build_conditional_expr): Add location_t parameters.
For -Wsign-compare, also print the types.

* input.c (make_location): New overload.
* input.h (make_location): Declare.

* objc-next-runtime-abi-02.c (build_v2_build_objc_method_call): Update
a call to build_conditional_expr.

* Wsign-compare-1.c: New test.
* gcc.dg/compare1.c: Adjust dg-bogus.
* gcc.dg/compare2.c: Likewise.
* gcc.dg/compare3.c: Likewise.
* gcc.dg/compare7.c: Likewise.
* gcc.dg/compare8.c: Likewise.
* gcc.dg/compare9.c: Likewise.
* gcc.dg/pr11492.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250984 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoDaily bump.
gccadmin [Wed, 9 Aug 2017 00:16:27 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250983 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoPR driver/81523: Make -static override -pie
hjl [Tue, 8 Aug 2017 22:06:21 +0000 (22:06 +0000)] 
PR driver/81523: Make -static override -pie

-static and -pie together behave differently depending on whether GCC is
configured with --enable-default-pie.  On x86, "-static -pie" fails to
create executable when --enable-default-pie isn't used, but creates a
static executable when --enable-default-pie is used.  This patch makes
-static completely override -pie to create a static executable, regardless
if --enable-default-pie is used to configure GCC.

gcc/

PR driver/81523
* gcc.c (NO_PIE_SPEC): Delete.
(PIE_SPEC): Define as !no-pie/pie.  Move static|shared|r
exclusion..
(LINK_PIE_SPEC): ..to here.
(LINK_COMMAND_SPEC): Support -no-pie.
* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct
chain of crtbegin*.o selection, update for PIE_SPEC changes and
format.
(GNU_USER_TARGET_ENDFILE_SPEC): Similarly.
* config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly.
(ENDFILE_CRTEND_SPEC): Similarly.

gcc/testsuite/

PR driver/81523
* gcc.dg/pie-7.c: New test.
* gcc.dg/pie-static-1.c: Likewise.
* gcc.dg/pie-static-2.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250974 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR target/81708
uros [Tue, 8 Aug 2017 16:48:46 +0000 (16:48 +0000)] 
PR target/81708
* config/i386/i386.opt (mstack-protector-guard-reg=): New option
(mstack-protector-guard-offset=): Ditto.
* config/i386/i386.c (ix86_option_override): Handle
-mstack-protector-guard-reg= and -mstack-protector-guard-offset=
options.
(ix86_stack_protect_guard): Use ix86_stack_protect_guard_reg and
ix86_stack_protect_guard_offset variables.
(TARGET_STACK_PROTECT_GUARD): Always define.
* doc/invoke.texi (x86 Options): Document -mstack-protector-guard-reg=
and -mstack-protector-guard-offset= options.

testsuite/ChangeLog:

PR target/81708
* gcc.target/i386/stack-prot-guard.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250965 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle
amker [Tue, 8 Aug 2017 14:52:25 +0000 (14:52 +0000)] 
* tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle
boundary case for the last candidate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250960 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * doc/invoke.texi: Document -ftree-loop-distribution for O3.
amker [Tue, 8 Aug 2017 14:09:10 +0000 (14:09 +0000)] 
* doc/invoke.texi: Document -ftree-loop-distribution for O3.
* opts.c (default_options_table): Add OPT_ftree_loop_distribution.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250959 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-08 Tamar Christina <tamar.christina@arm.com>
tnfchris [Tue, 8 Aug 2017 13:17:41 +0000 (13:17 +0000)] 
2017-08-08  Tamar Christina  <tamar.christina@arm.com>

PR middle-end/19706
* config/aarch64/aarch64.md (xorsign<mode>3): New optabs.
* config/aarch64/aarch64-builtins.c
(aarch64_builtin_vectorized_function): Added CASE_CFN_XORSIGN.
* config/aarch64/aarch64-simd-builtins.def: Added xorsign BINOP.
* config/aarch64/aarch64-simd.md: Added xorsign<mode>3.

gcc/testsuite/
2017-08-08  Tamar Christina  <tamar.christina@arm.com>

* gcc.target/aarch64/xorsign.c: New.
* gcc.target/aarch64/xorsign_exec.c: New.
* gcc.target/aarch64/vect-xorsign_exec.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250957 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-08 Tamar Christina <tamar.christina@arm.com>
tnfchris [Tue, 8 Aug 2017 13:15:44 +0000 (13:15 +0000)] 
2017-08-08  Tamar Christina  <tamar.christina@arm.com>
    Andrew Pinski <pinskia@gmail.com>

PR middle-end/19706
* internal-fn.def (XORSIGN): New.
* optabs.def (xorsign_optab): New.
* tree-ssa-math-opts.c (is_copysign_call_with_1): New.
(convert_expand_mult_copysign): New.
(pass_optimize_widening_mul::execute): Call convert_expand_mult_copysign.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250956 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago[gcc]
wschmidt [Tue, 8 Aug 2017 12:52:22 +0000 (12:52 +0000)] 
[gcc]

2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR tree-optimization/81354
* gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
Insert on edges rather than explicitly creating landing pads.
(analyze_candidates_and_replace): Commit edge inserts.

[gcc/testsuite]

2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

PR tree-optimization/81354
* g++.dg/torture/pr81354.C: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250955 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-08 Richard Biener <rguenther@suse.de>
rguenth [Tue, 8 Aug 2017 12:51:20 +0000 (12:51 +0000)] 
2017-08-08  Richard Biener  <rguenther@suse.de>

PR middle-end/81719
* tree-ssa-loop-niter.c: Include tree-dfa.h.
(expand_simple_operations): Also look through ADDR_EXPRs with
MEM_REF bases treating them as POINTER_PLUS_EXPR.

* g++.dg/tree-ssa/pr81719.C: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250954 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-08 Richard Biener <rguenther@suse.de>
rguenth [Tue, 8 Aug 2017 12:49:39 +0000 (12:49 +0000)] 
2017-08-08  Richard Biener  <rguenther@suse.de>

PR tree-optimization/81723
* tree-vect-slp.c (struct bst_traits): New hash traits.
(bst_fail): New global.
(vect_build_slp_tree_2): New worker, split out from ...
(vect_build_slp_tree): ... this now wrapping it with using
bst_fail set to cache SLP tree build fails.  Properly handle
max_tree_size.
(vect_analyze_slp_instance): Allocate and free bst_fail.

* gfortran.dg/pr81723.f: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250953 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
wschmidt [Tue, 8 Aug 2017 12:46:08 +0000 (12:46 +0000)] 
2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gcc.target/powerpc/bfp/scalar-extract-exp-2.c: Adjust diagnostic
string.
* gcc.target/powerpc/bfp/scalar-extract-exp-5.c: Likewise.
* gcc.target/powerpc/bfp/scalar-extract-sig-2.c: Likewise.
* gcc.target/powerpc/bfp/scalar-extract-sig-5.c: Likewise.
* gcc.target/powerpc/bfp/scalar-insert-exp-11.c: Likewise.
* gcc.target/powerpc/bfp/scalar-insert-exp-2.c: Likewise.
* gcc.target/powerpc/bfp/scalar-insert-exp-5.c: Likewise.
* gcc.target/powerpc/bfp/scalar-insert-exp-8.c: Likewise.
* gcc.target/powerpc/byte-in-set-2.c: Likewise.
* gcc.target/powerpc/cmpb-3.c: Likewise.
* gcc.target/powerpc/vsu/vec-xl-len-13.c: Likewise.
* gcc.target/powerpc/vsu/vec-xst-len-13.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250952 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoICF: properly handle LABEL_DECLs (PR tree-opt/81696).
marxin [Tue, 8 Aug 2017 11:59:23 +0000 (11:59 +0000)] 
ICF: properly handle LABEL_DECLs (PR tree-opt/81696).

2017-08-08  Martin Liska  <mliska@suse.cz>

PR tree-opt/81696
* ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider
LABEL_DECLs that can be from a different function.
2017-08-08  Martin Liska  <mliska@suse.cz>

PR tree-opt/81696
* gcc.dg/ipa/pr81696.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250951 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR tree-optimization/81744
amker [Tue, 8 Aug 2017 11:32:05 +0000 (11:32 +0000)] 
PR tree-optimization/81744
* tree-predcom.c (prepare_finalizers_chain): Deep copy expr of
loop's number of iterations.

gcc/testsuite
* gcc.dg/tree-ssa/pr81744.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250950 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd missing include of attribs.h in lto.c
vries [Tue, 8 Aug 2017 10:40:42 +0000 (10:40 +0000)] 
Add missing include of attribs.h in lto.c

2017-08-08  Tom de Vries  <tom@codesourcery.com>

* lto.c: Include attribs.h.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250949 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR c++/81607
mpolacek [Tue, 8 Aug 2017 08:55:43 +0000 (08:55 +0000)] 
PR c++/81607
* cp-gimplify.c (cp_fold): If folding exposed a branch of
a COND_EXPR, convert it to the original type of the COND_EXPR, if
they differ.

* g++.dg/other/bitfield6.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250948 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago.
marxin [Tue, 8 Aug 2017 04:46:51 +0000 (04:46 +0000)] 
.

2017-08-08  Martin Liska  <mliska@suse.cz>

* gcc-interface/trans.c: Include header files.
2017-08-08  Martin Liska  <mliska@suse.cz>

* objc-gnu-runtime-abi-01.c: Include header files.
* objc-next-runtime-abi-01.c: Likewise.
* objc-next-runtime-abi-02.c: Likewise.
2017-08-08  Martin Liska  <mliska@suse.cz>

* asan.c: Include header files.
* attribs.c (build_decl_attribute_variant): New function moved
from tree.[ch].
(build_type_attribute_qual_variant): Likewise.
(cmp_attrib_identifiers): Likewise.
(simple_cst_list_equal): Likewise.
(omp_declare_simd_clauses_equal): Likewise.
(attribute_value_equal): Likewise.
(comp_type_attributes): Likewise.
(build_type_attribute_variant): Likewise.
(lookup_ident_attribute): Likewise.
(remove_attribute): Likewise.
(merge_attributes): Likewise.
(merge_type_attributes): Likewise.
(merge_decl_attributes): Likewise.
(merge_dllimport_decl_attributes): Likewise.
(handle_dll_attribute): Likewise.
(attribute_list_equal): Likewise.
(attribute_list_contained): Likewise.
* attribs.h (lookup_attribute): New function moved from tree.[ch].
(lookup_attribute_by_prefix): Likewise.
* bb-reorder.c: Include header files.
* builtins.c: Likewise.
* calls.c: Likewise.
* cfgexpand.c: Likewise.
* cgraph.c: Likewise.
* cgraphunit.c: Likewise.
* convert.c: Likewise.
* dwarf2out.c: Likewise.
* final.c: Likewise.
* fold-const.c: Likewise.
* function.c: Likewise.
* gimple-expr.c: Likewise.
* gimple-fold.c: Likewise.
* gimple-pretty-print.c: Likewise.
* gimple.c: Likewise.
* gimplify.c: Likewise.
* hsa-common.c: Likewise.
* hsa-gen.c: Likewise.
* internal-fn.c: Likewise.
* ipa-chkp.c: Likewise.
* ipa-cp.c: Likewise.
* ipa-devirt.c: Likewise.
* ipa-fnsummary.c: Likewise.
* ipa-inline.c: Likewise.
* ipa-visibility.c: Likewise.
* ipa.c: Likewise.
* lto-cgraph.c: Likewise.
* omp-expand.c: Likewise.
* omp-general.c: Likewise.
* omp-low.c: Likewise.
* omp-offload.c: Likewise.
* omp-simd-clone.c: Likewise.
* opts-global.c: Likewise.
* passes.c: Likewise.
* predict.c: Likewise.
* sancov.c: Likewise.
* sanopt.c: Likewise.
* symtab.c: Likewise.
* toplev.c: Likewise.
* trans-mem.c: Likewise.
* tree-chkp.c: Likewise.
* tree-eh.c: Likewise.
* tree-into-ssa.c: Likewise.
* tree-object-size.c: Likewise.
* tree-parloops.c: Likewise.
* tree-profile.c: Likewise.
* tree-ssa-ccp.c: Likewise.
* tree-ssa-live.c: Likewise.
* tree-ssa-loop.c: Likewise.
* tree-ssa-sccvn.c: Likewise.
* tree-ssa-structalias.c: Likewise.
* tree-ssa.c: Likewise.
* tree-streamer-in.c: Likewise.
* tree-vectorizer.c: Likewise.
* tree-vrp.c: Likewise.
* tsan.c: Likewise.
* ubsan.c: Likewise.
* varasm.c: Likewise.
* varpool.c: Likewise.
* tree.c: Remove functions moved to attribs.[ch].
* tree.h: Likewise.
* config/aarch64/aarch64.c: Add attrs.h header file.
* config/alpha/alpha.c: Likewise.
* config/arc/arc.c: Likewise.
* config/arm/arm.c: Likewise.
* config/avr/avr.c: Likewise.
* config/bfin/bfin.c: Likewise.
* config/c6x/c6x.c: Likewise.
* config/cr16/cr16.c: Likewise.
* config/cris/cris.c: Likewise.
* config/darwin.c: Likewise.
* config/epiphany/epiphany.c: Likewise.
* config/fr30/fr30.c: Likewise.
* config/frv/frv.c: Likewise.
* config/ft32/ft32.c: Likewise.
* config/h8300/h8300.c: Likewise.
* config/i386/winnt.c: Likewise.
* config/ia64/ia64.c: Likewise.
* config/iq2000/iq2000.c: Likewise.
* config/lm32/lm32.c: Likewise.
* config/m32c/m32c.c: Likewise.
* config/m32r/m32r.c: Likewise.
* config/m68k/m68k.c: Likewise.
* config/mcore/mcore.c: Likewise.
* config/microblaze/microblaze.c: Likewise.
* config/mips/mips.c: Likewise.
* config/mmix/mmix.c: Likewise.
* config/mn10300/mn10300.c: Likewise.
* config/moxie/moxie.c: Likewise.
* config/msp430/msp430.c: Likewise.
* config/nds32/nds32-isr.c: Likewise.
* config/nds32/nds32.c: Likewise.
* config/nios2/nios2.c: Likewise.
* config/nvptx/nvptx.c: Likewise.
* config/pa/pa.c: Likewise.
* config/pdp11/pdp11.c: Likewise.
* config/powerpcspe/powerpcspe.c: Likewise.
* config/riscv/riscv.c: Likewise.
* config/rl78/rl78.c: Likewise.
* config/rx/rx.c: Likewise.
* config/s390/s390.c: Likewise.
* config/sh/sh.c: Likewise.
* config/sol2.c: Likewise.
* config/sparc/sparc.c: Likewise.
* config/spu/spu.c: Likewise.
* config/stormy16/stormy16.c: Likewise.
* config/tilegx/tilegx.c: Likewise.
* config/tilepro/tilepro.c: Likewise.
* config/v850/v850.c: Likewise.
* config/vax/vax.c: Likewise.
* config/visium/visium.c: Likewise.
* config/xtensa/xtensa.c: Likewise.
2017-08-08  Martin Liska  <mliska@suse.cz>

* call.c: Include header files.
* cp-gimplify.c: Likewise.
* cp-ubsan.c: Likewise.
* cvt.c: Likewise.
* init.c: Likewise.
* search.c: Likewise.
* semantics.c: Likewise.
* typeck.c: Likewise.
2017-08-08  Martin Liska  <mliska@suse.cz>

* lto-lang.c: Include header files.
* lto-symtab.c: Likewise.
2017-08-08  Martin Liska  <mliska@suse.cz>

* c-convert.c: Include header files.
* c-typeck.c: Likewise.
2017-08-08  Martin Liska  <mliska@suse.cz>

* c-ada-spec.c: Include header files.
* c-ubsan.c: Likewise.
* c-warn.c: Likewise.
2017-08-08  Martin Liska  <mliska@suse.cz>

* trans-types.c: Include header files.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250946 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoDaily bump.
gccadmin [Tue, 8 Aug 2017 00:16:19 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250940 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago[gcc]
meissner [Mon, 7 Aug 2017 23:51:27 +0000 (23:51 +0000)] 
[gcc]
2017-08-07  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/81593
* config/rs6000/vsx.md (vsx_concat_<mode>, VSX_D): Cleanup
constraints since the -mupper-regs-* switches have been
eliminated.
(vsx_concat_<mode>_1): New combiner insns to recognize inserting
into a vector from a double word element that was extracted from
another vector, and eliminate extra XXPERMDI instructions.
(vsx_concat_<mode>_2): Likewise.
(vsx_concat_<mode>_3): Likewise.
(vsx_set_<mode>, VSX_D): Rewrite vector set in terms of vector
concat to allow optimizing inserts from previous extracts.

[gcc/testsuite]
2017-08-07  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/81593
* gcc.target/powerpc/vec-setup.h: New tests to test various
combinations of setting up vectors of 2 double word elements.
* gcc.target/powerpc/vec-setup-long.c: Likewise.
* gcc.target/powerpc/vec-setup-double.c: Likewise.
* gcc.target/powerpc/vec-setup-be-long.c: Likewise.
* gcc.target/powerpc/vec-setup-be-double.c: Likewise.
* gcc.target/powerpc/vsx-extract-6.c: New tests for optimzing
vector inserts from vector extracts.
* gcc.target/powerpc/vsx-extract-7.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250936 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * config/i386/i386.c (ix86_stack_protect_guard): Generate
uros [Mon, 7 Aug 2017 20:35:00 +0000 (20:35 +0000)] 
* config/i386/i386.c (ix86_stack_protect_guard): Generate
memory reference to a SSP offset in TLS address space.
(ix86_print_operand) <case '@'>: Remove.
(ix86_print_operand_punct_valid_p): Remove '@' code.
* config/i386/i386.md (unspec): Remove UNSPEC_SP_TLS_SET and
UNSPEC_SP_TLS_TEST.
(stack_tls_protect_set_<mode>): Remove.
(stack_protect_set): Do not call gen_stack_tls_protect_set_<mode>.
(stack_tls_protect_test_<mode>): Remove.
(stack_protect_test): Do not call gen_stack_tls_protect_test_<mode>.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250932 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoOlivier Hainque <hainque@adacore.com>
hainque [Mon, 7 Aug 2017 20:13:53 +0000 (20:13 +0000)] 
Olivier Hainque  <hainque@adacore.com>

PR target/81755
* config/vxworksae.h (VXWORKS_HAVE_TLS): Define.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250931 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-07 Douglas Rupp <rupp@adacore.com>
hainque [Mon, 7 Aug 2017 19:55:55 +0000 (19:55 +0000)] 
2017-08-07  Douglas Rupp  <rupp@adacore.com>

* Makefile.in (install-mkheaders): Fix typo, where the multi_dir
variable was referenced as multidir in command.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250930 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR c/69389
jakub [Mon, 7 Aug 2017 18:34:29 +0000 (18:34 +0000)] 
PR c/69389
* gimplify.c (goa_stabilize_expr): Handle BIT_INSERT_EXPR and
BIT_FIELD_REF.

* c-omp.c (c_finish_omp_atomic): Handle atomics on bitfields.

* testsuite/libgomp.c/pr69389.c: New test.
* testsuite/libgomp.c++/pr69389.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250929 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd missing header file attribs.h to couple of targets.
marxin [Mon, 7 Aug 2017 17:12:52 +0000 (17:12 +0000)] 
Add missing header file attribs.h to couple of targets.

2017-08-07  Martin Liska  <mliska@suse.cz>

* config/m32c/m32c.c: Add include of stringpool.h and attribs.h.
* config/rl78/rl78.c: Add include of attribs.h.
* config/sh/sh.c: Likewise.
* config/v850/v850.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250926 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoFix diff_type in expand_oacc_for char iter_type
vries [Mon, 7 Aug 2017 17:06:11 +0000 (17:06 +0000)] 
Fix diff_type in expand_oacc_for char iter_type

2017-08-07  Tom de Vries  <tom@codesourcery.com>

PR middle-end/78266
* omp-expand.c (expand_oacc_for): Ensure diff_type is large enough.

* testsuite/libgomp.oacc-c-c++-common/vprop-2.c: New test.
* testsuite/libgomp.oacc-c-c++-common/vprop.c: Remove xfail.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250925 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoFix missing include of header file in mips.c.
marxin [Mon, 7 Aug 2017 16:47:56 +0000 (16:47 +0000)] 
Fix missing include of header file in mips.c.

2017-08-07  Martin Liska  <mliska@suse.cz>

* config/mips/mips.c: Include attribs.h.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250924 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-07 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Mon, 7 Aug 2017 16:43:05 +0000 (16:43 +0000)] 
2017-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/68829
* doc/invoke.texi: Document change in behvaior for -Ofast for
Fortran.

2017-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/68829
PR fortran/81701
* options.c: Make -Ofast honor -fmax-stack-var-size.
* invoke.texi: Document change.

2017-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/68829
PR fortran/81701
* gfortran.dg/o_fast_stacksize.90:  New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250923 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * es.po: Update.
jsm28 [Mon, 7 Aug 2017 15:56:00 +0000 (15:56 +0000)] 
* es.po: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250921 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * c-ada-spec.c (has_nontrivial_methods): Test for FUNCTION_DECL.
ebotcazou [Mon, 7 Aug 2017 15:09:07 +0000 (15:09 +0000)] 
* c-ada-spec.c (has_nontrivial_methods): Test for FUNCTION_DECL.
(print_ada_methods): Likewise.
(print_ada_declaration): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250920 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago[AArch64] Use gen_frame_mem for callee-saves
wilco [Mon, 7 Aug 2017 14:17:09 +0000 (14:17 +0000)] 
[AArch64] Use gen_frame_mem for callee-saves

The frame code uses a mixture of gen_rtx_MEM and gen_frame_mem for
callee-saves.  Callee-saves never alias with local variables, so using
gen_frame_mem is best.

    gcc/
* config/aarch64/aarch64.c (aarch64_pushwb_single_reg):
Use gen_frame_mem.
(aarch64_pop_regs): Likewise.
(aarch64_gen_load_pair): Likewise.
(aarch64_save_callee_saves): Likewise.
(aarch64_restore_callee_saves): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250919 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoFix unresolved in gcc.dg/pr46932.c
wilco [Mon, 7 Aug 2017 13:56:02 +0000 (13:56 +0000)] 
Fix unresolved in gcc.dg/pr46932.c

Build only if pre-increment is supported.  Given there is no config test,
add a list of targets which have HAVE_PRE_INCREMENT set.

    testsuite/
PR middle-end/46932
* gcc.dg/pr46932.c: Compile on targets with pre-increment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250918 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoRevert r250916
hjl [Mon, 7 Aug 2017 13:28:47 +0000 (13:28 +0000)] 
Revert r250916

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250917 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoi386: Don't use frame pointer without stack access
hjl [Mon, 7 Aug 2017 11:49:10 +0000 (11:49 +0000)] 
i386: Don't use frame pointer without stack access

When there is no stack access, there is no need to use frame pointer
even if -fno-omit-frame-pointer is used.

gcc/

PR target/81736
* config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
to ...
(ix86_finalize_stack_frame_flags): This.  Also clear
frame_pointer_needed if -fno-omit-frame-pointer is used without
stack access.
(ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
with ix86_finalize_stack_frame_flags.
(ix86_expand_epilogue): Likewise.
(ix86_expand_split_stack_prologue): Likewise.

gcc/testsuite/

PR target/81736
* gcc.target/i386/pr81736-1.c: New test.
* gcc.target/i386/pr81736-2.c: Likewise.
* gcc.target/i386/pr81736-3.c: Likewise.
* gcc.target/i386/pr81736-4.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250916 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoi386: Set priority to P_AES for Westmere
hjl [Mon, 7 Aug 2017 11:47:22 +0000 (11:47 +0000)] 
i386: Set priority to P_AES for Westmere

The difference between Nehalem and Westmere is AES.  We should set
priority to P_AES for Westmere, not P_PROC_SSE4_2 which is for Nehalem.
Otherwise, we will pick Nehalem implementation on Westmere.  Tested on
Westmere.

PR target/81743
* config/i386/i386.c (get_builtin_code_for_version): Set priority
to P_AES for Westmere.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250915 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoShare mingw fset-stack-executable with cygwin
jyong [Mon, 7 Aug 2017 11:40:08 +0000 (11:40 +0000)] 
Share mingw fset-stack-executable with cygwin

This patch is in use by Cygwin for years, upstream to GCC.

* gcc/config/i386/mingw.opt (fset-stack-executable): Removed.
* gcc/config/i386/cygming.opt (fset-stack-executable): Moved
from mingw.opt.
* gcc/config/i386/cygwin.h: Define CHECK_EXECUTE_STACK_ENABLED.
* ligcc/config.host (*-cygwin): Include file from mingw
config/i386/enable-execute-stack-mingw32.c

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250914 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoprint-rtl: NOT is ~, not !
segher [Mon, 7 Aug 2017 10:21:32 +0000 (10:21 +0000)] 
print-rtl: NOT is ~, not !

Slim RTL dumps print the RTL code NOT as !, but that is misleading:
its semantics are like the C operator ~.  This fixes it.

* print-rtl.c (print_exp): Print NOT as "~" instead of as "!".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250913 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR middle-end/81737
mpolacek [Mon, 7 Aug 2017 09:13:02 +0000 (09:13 +0000)] 
PR middle-end/81737
* fold-const.c (fold_indirect_ref_1): Check type_domain.

* gcc.dg/pr81737.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250912 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoCanonicalize names of attributes.
marxin [Mon, 7 Aug 2017 08:37:07 +0000 (08:37 +0000)] 
Canonicalize names of attributes.

2017-08-07  Martin Liska  <mliska@suse.cz>

* attribs.h (canonicalize_attr_name): New function.
(cmp_attribs): Move from c-format.c and adjusted.
(is_attribute_p): Moved from tree.h.
* tree-inline.c: Add new includes.
* tree.c (cmp_attrib_identifiers): Use cmp_attribs.
(private_is_attribute_p): Remove.
(private_lookup_attribute): Likewise.
(private_lookup_attribute_by_prefix): Simplify.
(remove_attribute): Use is_attribute_p.
* tree.h: Remove removed declarations.
2017-08-07  Martin Liska  <mliska@suse.cz>

* array-notation-common.c: Add new includes.
* c-format.c( handle_format_attribute): Canonicalize a format
function name.
* c-lex.c (c_common_has_attribute): Canonicalize name of an
attribute.
* c-pretty-print.c: Add new include.
2017-08-07  Martin Liska  <mliska@suse.cz>

* parser.c (cp_parser_gnu_attribute_list): Canonicalize name of an
attribute.
(cp_parser_std_attribute): Likewise.
* tree.c: Add new include.
2017-08-07  Martin Liska  <mliska@suse.cz>

* c-parser.c (c_parser_attributes): Canonicalize name of an
attribute.
2017-08-07  Martin Liska  <mliska@suse.cz>

* go-gcc.cc (Gcc_backend::function): Look up for no_split_stack
and not __no_split_stack__.
2017-08-07  Martin Liska  <mliska@suse.cz>

* g++.dg/cpp0x/pr65558.C: Update scanned pattern.
* gcc.dg/parm-impl-decl-1.c: Likewise.
* gcc.dg/parm-impl-decl-3.c: Likewise.
* gcc.dg/Wattributes-5.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250911 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * include/system/sys/ptrace.h: New file.
jakub [Mon, 7 Aug 2017 08:32:47 +0000 (08:32 +0000)] 
* include/system/sys/ptrace.h: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250910 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR middle-end/81698
jakub [Mon, 7 Aug 2017 08:29:21 +0000 (08:29 +0000)] 
PR middle-end/81698
* stmt.c (emit_case_dispatch_table): Add DEFAULT_EDGE argument,
instead of computing it in the function.  Formatting fix.
(expand_case): Don't rely on default_edge being the first edge,
clear it if removing it, pass default_edge to
emit_case_dispatch_table.
(expand_sjlj_dispatch_table): Pass NULL as DEFAULT_EDGE, formatting
fix.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250909 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoDaily bump.
gccadmin [Mon, 7 Aug 2017 00:16:37 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250908 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-06 Andrew Pinski <apinski@cavium.com>
pinskia [Sun, 6 Aug 2017 19:04:57 +0000 (19:04 +0000)] 
2017-08-06  Andrew Pinski  <apinski@cavium.com>

        * gcc.target/aarch64/target_attr_10.c: Add -mcpu=generic.
        * gcc.target/aarch64/target_attr_13.c: LIkewise.
        * gcc.target/aarch64/target_attr_15.c: LIkewise.
        * gcc.target/aarch64/target_attr_4.c: Likewise.
        * gcc.target/aarch64/target_attr_1.c: Add -march=armv8-a.
        * gcc.target/aarch64/target_attr_2.c: Likewise.
        * gcc.target/aarch64/target_attr_7.c: Likewise.
        * gcc.target/aarch64/target_attr_crypto_ice_1.c: Likewise.
        * gcc.target/aarch64/target_attr_crypto_ice_2.c: Likewise.
        * gcc.target/aarch64/target_attr_3.c: Add -mcpu=generic -march=armv8-a.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250904 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-06 Andrew Pinski <apinski@cavium.com>
pinskia [Sun, 6 Aug 2017 18:10:58 +0000 (18:10 +0000)] 
2017-08-06  Andrew Pinski  <apinski@cavium.com>

        * gcc.target/aarch64/atomic_cmp_exchange_zero_reg_1.c: Pass
        -march=armv8-a+nolse, skip if -mcpu= is passed.
        * gcc.target/aarch64/atomic_cmp_exchange_zero_strong_1.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250903 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-06 Andrew Pinski <apinski@cavium.com>
pinskia [Sun, 6 Aug 2017 17:47:03 +0000 (17:47 +0000)] 
2017-08-06  Andrew Pinski  <apinski@cavium.com>

        * gcc.target/aarch64/_Float16_1.c: Skip if supplied a -mcpu= option.
        * gcc.target/aarch64/_Float16_2.c: Likewise.
        * gcc.target/aarch64/_Float16_3.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250902 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * config/alpha/alpha.c (alpha_reorg): If trap is the last active
uros [Sun, 6 Aug 2017 15:48:37 +0000 (15:48 +0000)] 
* config/alpha/alpha.c (alpha_reorg): If trap is the last active
insn in the function, emit NOP after the insn.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250901 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd missing edge probabilities in expand_oacc_for, tile case
vries [Sun, 6 Aug 2017 09:56:38 +0000 (09:56 +0000)] 
Add missing edge probabilities in expand_oacc_for, tile case

 ;;   basic block 11, loop depth 2, freq 0, maybe hot
 ;;    prev block 22, next block 23, flags: (NEW, REACHABLE)
 ;;    pred:       22 (TRUE_VALUE)
 ;;                24 (TRUE_VALUE)
   ...
   if (.e_offset.15D.1971 < .e_bound.14D.1972)
-    goto <bb 23>; [100.00%] [count: INV]
+    goto <bb 23>; [80.01%] [count: INV]
   else
-    goto <bb 24>; [INV] [count: INV]
+    goto <bb 24>; [19.99%] [count: INV]

 ;;   basic block 23, loop depth 3, freq 0, maybe hot
 ;;    prev block 11, next block 24, flags: (NEW)
 ;;    pred:       11 [always]  (TRUE_VALUE)
 ;;                23 (TRUE_VALUE)
   ixD.1974 = .outer.4D.1967 + .e_offset.15D.1971;
   .e_offset.15D.1971 = .e_offset.15D.1971 + .e_step.16D.1973;
   if (.e_offset.15D.1971 < .e_bound.14D.1972)
-    goto <bb 23>; [INV] [count: INV]
+    goto <bb 23>; [80.01%] [count: INV]
   else
-    goto <bb 24>; [100.00%] [count: INV]
+    goto <bb 24>; [19.99%] [count: INV]

2017-08-06  Tom de Vries  <tom@codesourcery.com>

* omp-expand.c (expand_oacc_for): Add missing edge probability for tile
and element loops.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250900 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoAdd missing edge probability in expand_oacc_for
vries [Sun, 6 Aug 2017 09:56:25 +0000 (09:56 +0000)] 
Add missing edge probability in expand_oacc_for

 ;;   basic block 10, loop depth 1, freq 0, maybe hot
 ;;    prev block 9, next block 19, flags: (NEW, REACHABLE)
 ;;    pred:       18 (FALSE_VALUE)
 ;;                9 (FALSE_VALUE)
   GIMPLE_NOP
   .chunk_no.7D.1948 = .chunk_no.7D.1948 + 1;
   if (.chunk_no.7D.1948 < .chunk_max.6D.1949)
-    goto <bb 18>; [INV] [count: INV]
+    goto <bb 18>; [80.01%] [count: INV]
   else
-    goto <bb 19>; [100.00%] [count: INV]
+    goto <bb 19>; [19.99%] [count: INV]

2017-08-06  Tom de Vries  <tom@codesourcery.com>

* omp-expand.c (expand_oacc_for): Add missing edge probability for chunk
loop.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250899 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoRequire nonlocal_goto for gcc.dg/pr78582.c
vries [Sun, 6 Aug 2017 08:26:24 +0000 (08:26 +0000)] 
Require nonlocal_goto for gcc.dg/pr78582.c

2017-08-06  Tom de Vries  <tom@codesourcery.com>

* gcc.dg/pr78582.c: Require effective target nonlocal_goto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250898 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoFix my_memmove in gcc.c-torture/execute/builtins/memops-asm-lib.c
vries [Sun, 6 Aug 2017 08:26:12 +0000 (08:26 +0000)] 
Fix my_memmove in gcc.c-torture/execute/builtins/memops-asm-lib.c

2017-08-06  Tom de Vries  <tom@codesourcery.com>

* gcc.c-torture/execute/builtins/memops-asm-lib.c (my_memmove):  Fix return
type.  Add missing return.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250897 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoFix call arguments mismatch in gcc.dg/torture/pr78218.c
vries [Sun, 6 Aug 2017 07:54:29 +0000 (07:54 +0000)] 
Fix call arguments mismatch in gcc.dg/torture/pr78218.c

2017-08-06  Tom de Vries  <tom@codesourcery.com>

PR testsuite/81731
* gcc.dg/torture/pr78218.c (struct v): New type, factored type out of
variable 'a' definition.
(b): Remove unused variable.
(gp): New variable.
(check): Add parameter corresponding to call in main, and handle.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250896 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoDaily bump.
gccadmin [Sun, 6 Aug 2017 00:16:54 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250894 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago * c-ada-spec.c (has_static_fields): Look only into variables.
ebotcazou [Sat, 5 Aug 2017 22:00:41 +0000 (22:00 +0000)] 
* c-ada-spec.c (has_static_fields): Look only into variables.
(print_constructor): Add TYPE parameter and use it for the name.
(print_destructor): Likewise.
(print_ada_declaration): Adjust to new constructor/destructor names.
Adjust calls to print_constructor and print_destructor.
(print_ada_struct_decl): Do not test TREE_STATIC on FIELD_DECL.
Look only into variables in the final loop.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250890 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoDaily bump.
gccadmin [Sat, 5 Aug 2017 00:16:30 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250889 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoRegenerate .pot files.
jsm28 [Fri, 4 Aug 2017 22:21:23 +0000 (22:21 +0000)] 
Regenerate .pot files.

gcc/po:
* gcc.pot: Regenerate.

libcpp/po:
* cpplib.pot: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250885 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago/cp
paolo [Fri, 4 Aug 2017 22:15:48 +0000 (22:15 +0000)] 
/cp
2017-08-04  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/79790
* pt.c (do_class_deduction): Handle the case of no viable implicit
deduction guides; simplify the code generating implicit deduction
guides.

/testsuite
2017-08-04  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/79790
* g++.dg/cpp1z/class-deduction42.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250883 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago/cp
paolo [Fri, 4 Aug 2017 22:13:46 +0000 (22:13 +0000)] 
/cp
2017-08-04  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/79790
* pt.c (do_class_deduction): Handle the case of no viable implicit
deduction guides; simplify the code generating implicit deduction
guides.

/testsuite
2017-08-04  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/79790
* g++.dg/cpp1z/class-deduction42.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250882 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoRemove useless floating point casts in comparisons.
ygribov [Fri, 4 Aug 2017 20:29:12 +0000 (20:29 +0000)] 
Remove useless floating point casts in comparisons.

2017-08-04  Yury Gribov  <tetra2005@gmail.com>

PR tree-optimization/57371

gcc/
* match.pd: New pattern.

gcc/testsuite/
* c-c++-common/pr57371-1.c: New test.
* c-c++-common/pr57371-2.c: New test.
* c-c++-common/pr57371-3.c: New test.
* c-c++-common/pr57371-4.c: New test.
* gcc.dg/pr57371-5.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250877 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agogcc/testsuite/ChangeLog:
carll [Fri, 4 Aug 2017 18:39:30 +0000 (18:39 +0000)] 
gcc/testsuite/ChangeLog:

2017-08-04  Carl Love  <cel@us.ibm.com>

* gcc.target/powerpc/builtins-3.c: Remove ISA 3.0 word variant
builtin test cases for vec_mule, and vec_mulo.
* gcc.target/powerpc/builtins-3-p8.c: Add  ISA 3.0 word variant
builtin test cases for vec_mule, and vec_mulo.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250876 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoi386: Rewrite check for AVX512 features
hjl [Fri, 4 Aug 2017 17:48:57 +0000 (17:48 +0000)] 
i386: Rewrite check for AVX512 features

Add a new file, avx512-check.h, to check all AVX512 features.  The test
is skipped if any requested AVX512 features are unavailable.

PR target/81590
* gcc.target/i386/avx512-check.h: New file.
* gcc.target/i386/avx5124fmaps-check.h: Removed.
* gcc.target/i386/avx5124vnniw-check.h: Likewise.
* gcc.target/i386/avx512cd-check.h: Likewise.
* gcc.target/i386/avx512ifma-check.h: Likewise.
* gcc.target/i386/avx512vbmi-check.h: Likewise.
* gcc.target/i386/avx512vpopcntdq-check.h: Likewise.
* gcc.target/i386/avx512bw-check.h: Rewrite.
* gcc.target/i386/avx512dq-check.h: Likewise.
* gcc.target/i386/avx512er-check.h: Likewise.
* gcc.target/i386/avx512f-check.h: Likewise.
* gcc.target/i386/avx512vl-check.h: Likewise.
* gcc.target/i386/avx512f-helper.h: Include "avx512-check.h"
only.
(test_512): Removed.
(avx512*_test): Likewise.
* gcc.target/i386/avx512f-pr71559.c (TEST): Undef.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250875 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoFix PR 81713
visit0r [Fri, 4 Aug 2017 15:50:14 +0000 (15:50 +0000)] 
Fix PR 81713
 * brigfrontend/brig-basic-inst-handler.cc: replace build_int_cst with
   bitsize_int in building BIT_FIELD_REF.
 * brigfrontend/brig-code-entry-handler.cc: likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250874 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago runtime: dump registers for Alpha
ian [Fri, 4 Aug 2017 13:46:39 +0000 (13:46 +0000)] 
runtime: dump registers for Alpha

    Patch from Uros Bizjak.

    Reviewed-on: https://go-review.googlesource.com/53350

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250873 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago PR middle-end/81695
mpolacek [Fri, 4 Aug 2017 11:28:04 +0000 (11:28 +0000)] 
PR middle-end/81695
* fold-const.c (fold_indirect_ref_1): For ((int *)&a + 4 -> a[1],
perform the computation in offset_int.

* gcc.dg/pr81695.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250871 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoPool alignment information for common bases
rsandifo [Fri, 4 Aug 2017 10:42:53 +0000 (10:42 +0000)] 
Pool alignment information for common bases

This patch is a follow-on to the fix for PR81136.  The testcase for that
PR shows that we can (correctly) calculate different base alignments
for two data_references but still tell that their misalignments wrt the
vector size are equal.  This is because we calculate the base alignments
for each dr individually, without looking at the other drs, and in
general the alignment we calculate is only guaranteed if the dr's DR_REF
actually occurs.

This is working as designed, but it does expose a missed opportunity.
We know that if a vectorised loop is reached, all statements in that
loop execute at least once, so it should be safe to pool the alignment
information for all the statements we're vectorising.  The only catch is
that DR_REFs for masked loads and stores only occur if the mask value is
nonzero.  For example, in:

    struct s __attribute__((aligned(32))) {
      int misaligner;
      int array[N];
    };

    int *ptr;
    for (int i = 0; i < n; ++i)
      ptr[i] = c[i] ? ((struct s *) (ptr - 1))->array[i] : 0;

we can only guarantee that ptr points to a "struct s" if at least
one c[i] is true.

This patch adds a DR_IS_CONDITIONAL_IN_STMT flag to record whether
the DR_REF is guaranteed to occur every time that the statement
executes to completion.  It then pools the alignment information
for references that aren't conditional in this sense.

2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
PR tree-optimization/81136
* tree-vectorizer.h: Include tree-hash-traits.h.
(vec_base_alignments): New typedef.
(vec_info): Add a base_alignments field.
(vect_record_base_alignments): Declare.
* tree-data-ref.h (data_reference): Add an is_conditional_in_stmt
field.
(DR_IS_CONDITIONAL_IN_STMT): New macro.
(create_data_ref): Add an is_conditional_in_stmt argument.
* tree-data-ref.c (create_data_ref): Likewise.  Use it to initialize
the is_conditional_in_stmt field.
(data_ref_loc): Add an is_conditional_in_stmt field.
(get_references_in_stmt): Set the is_conditional_in_stmt field.
(find_data_references_in_stmt): Update call to create_data_ref.
(graphite_find_data_references_in_stmt): Likewise.
* tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
* tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
(vect_record_base_alignment): New function.
(vect_record_base_alignments): Likewise.
(vect_compute_data_ref_alignment): Adjust base_addr and aligned_to
for nested statements even if we fail to compute a misalignment.
Use pooled base alignments for unconditional references.
(vect_find_same_alignment_drs): Compare base addresses instead
of base objects.
(vect_analyze_data_refs_alignment): Call vect_record_base_alignments.
* tree-vect-slp.c (vect_slp_analyze_bb_1): Likewise.

gcc/testsuite/
PR tree-optimization/81136
* gcc.dg/vect/pr81136.c: Add scan test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250870 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoC++-ify vec_info structures
rsandifo [Fri, 4 Aug 2017 10:41:12 +0000 (10:41 +0000)] 
C++-ify vec_info structures

This patch uses new, delete, constructors and desctructors to manage
vec_info.  This includes making ~vec_info free all the data shared
by bb_vec_info and loop_vec_info, whereas previously the code was
duplicated in destroy_bb_vec_info and destroy_loop_vec_info.  This
in turn meant changing the order of:

  FOR_EACH_VEC_ELT (slp_instances, i, instance)
    vect_free_slp_instance (instance);

and:

  gimple_set_uid (stmt, -1);

in destroy_bb_vec_info/~_bb_vec_info, so that now vect_free_slp_instance
could see a uid of -1 as well as 0.  The patch updates vinfo_for_stmt
so that it returns NULL for a uid of -1.

2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* tree-vectorizer.h (vec_info): Add a constructor and destructor.
Add an explicit name for the enum.  Use auto_vec for slp_instances
and grouped_stores.
(_loop_vec_info): Add a constructor and destructor.  Use auto_vec
for all vectors.
(_bb_vec_info): Add a constructor and destructor.
(vinfo_for_stmt): Return NULL for uids of -1 as well.
(destroy_loop_vec_info): Delete.
(vect_destroy_datarefs): Likewise.
* tree-vectorizer.c (vect_destroy_datarefs): Delete.
(vec_info::vec_info): New function.
(vec_info::~vec_info): Likewise.
(vectorize_loops): Use delete instead of destroy_loop_vec_info.
* tree-parloops.c (gather_scalar_reductions): Use delete instead of
destroy_loop_vec_info.
* tree-vect-loop.c (new_loop_vec_info): Replace with...
(_loop_vec_info::_loop_vec_info): ...this.
(destroy_loop_vec_info): Replace with...
(_loop_vec_info::~_loop_vec_info): ...this.  Unconditionally delete
the stmt_vec_infos.  Leave handling of vec_info information to its
destructor.  Remove explicit vector releases.
(vect_analyze_loop_form): Use new instead of new_loop_vec_info.
(vect_analyze_loop): Use delete instead of destroy_loop_vec_info.
* tree-vect-slp.c (new_bb_vec_info): Replace with...
(_bb_vec_info::_bb_vec_info): ...this.  Don't reserve space in
BB_VINFO_GROUPED_STORES or BB_VINFO_SLP_INSTANCES.
(destroy_bb_vec_info): Replace with...
(_bb_vec_info::~_bb_vec_info): ...this.  Leave handling of vec_info
information to its destructor.
(vect_slp_analyze_bb_1): Use new and delete instead of
new_bb_vec_info and destroy_bb_vec_info.
(vect_slp_bb): Replace 2 calls to destroy_bb_vec_info with a
single delete.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250869 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoUse base inequality for some vector alias checks
rsandifo [Fri, 4 Aug 2017 10:40:35 +0000 (10:40 +0000)] 
Use base inequality for some vector alias checks

This patch checks whether two data references x and y cannot
partially overlap and so are independent whenever &x != &y.
We can then use this in the vectoriser to optimise alias checks.

gcc/
2016-08-04  Richard Sandiford  <richard.sandiford@linaro.org>

* hash-traits.h (pair_hash): New struct.
* tree-data-ref.h (data_dependence_relation): Add object_a and
object_b fields.
(DDR_OBJECT_A, DDR_OBJECT_B): New macros.
* tree-data-ref.c (initialize_data_dependence_relation): Initialize
DDR_OBJECT_A and DDR_OBJECT_B.
* tree-vectorizer.h (vec_object_pair): New type.
(_loop_vec_info): Add a check_unequal_addrs field.
(LOOP_VINFO_CHECK_UNEQUAL_ADDRS): New macro.
(LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Return true if there is an
entry in check_unequal_addrs.  Check comp_alias_ddrs instead of
may_alias_ddrs.
* tree-vect-loop.c (destroy_loop_vec_info): Release
LOOP_VINFO_CHECK_UNEQUAL_ADDRS.
(vect_analyze_loop_2): Likewise, when restarting.
(vect_estimate_min_profitable_iters): Estimate the cost of
LOOP_VINFO_CHECK_UNEQUAL_ADDRS.
* tree-vect-data-refs.c: Include tree-hash-traits.h.
(vect_prune_runtime_alias_test_list): Try to handle conflicts
using LOOP_VINFO_CHECK_UNEQUAL_ADDRS, if the data dependence allows.
Count such tests in the final summary.
* tree-vect-loop-manip.c (chain_cond_expr): New function.
(vect_create_cond_for_align_checks): Use it.
(vect_create_cond_for_unequal_addrs): New function.
(vect_loop_versioning): Call it.

gcc/testsuite/
* gcc.dg/vect/vect-alias-check-6.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250868 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoHandle data dependence relations with different bases
rsandifo [Fri, 4 Aug 2017 10:39:44 +0000 (10:39 +0000)] 
Handle data dependence relations with different bases

This patch tries to calculate conservatively-correct distance
vectors for two references whose base addresses are not the same.
It sets a new flag DDR_COULD_BE_INDEPENDENT_P if the dependence
isn't guaranteed to occur.

The motivating example is:

  struct s { int x[8]; };
  void
  f (struct s *a, struct s *b)
  {
    for (int i = 0; i < 8; ++i)
      a->x[i] += b->x[i];
  }

in which the "a" and "b" accesses are either independent or have a
dependence distance of 0 (assuming -fstrict-aliasing).  Neither case
prevents vectorisation, so we can vectorise without an alias check.

I'd originally wanted to do the same thing for arrays as well, e.g.:

  void
  f (int a[][8], struct b[][8])
  {
    for (int i = 0; i < 8; ++i)
      a[0][i] += b[0][i];
  }

I think this is valid because C11 6.7.6.2/6 says:

  For two array types to be compatible, both shall have compatible
  element types, and if both size specifiers are present, and are
  integer constant expressions, then both size specifiers shall have
  the same constant value.

So if we access an array through an int (*)[8], it must have type X[8]
or X[], where X is compatible with int.  It doesn't seem possible in
either case for "a[0]" and "b[0]" to overlap when "a != b".

However, as the comment above "if (same_base_p)" explains, GCC is more
forgiving: it supports arbitrary overlap of arrays and allows arrays to
be accessed with different dimensionality.  There are examples of this
in PR50067.  The patch therefore only handles references that end in a
structure field access.

There are two ways of handling these dependences in the vectoriser:
use them to limit VF, or check at runtime as before.  I've gone for
the approach of checking at runtime if we can, to avoid limiting VF
unnecessarily, but falling back to a VF cap when runtime checks aren't
allowed.

The patch tests whether we queued an alias check with a dependence
distance of X and then picked a VF <= X, in which case it's safe to
drop the alias check.  Since vect_prune_runtime_alias_check_list
can be called twice with different VF for the same loop, it's no
longer safe to clear may_alias_ddrs on exit.  Instead we should use
comp_alias_ddrs to check whether versioning is necessary.

2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* tree-data-ref.h (subscript): Add access_fn field.
(data_dependence_relation): Add could_be_independent_p.
(SUB_ACCESS_FN, DDR_COULD_BE_INDEPENDENT_P): New macros.
(same_access_functions): Move to tree-data-ref.c.
* tree-data-ref.c (ref_contains_union_access_p): New function.
(access_fn_component_p): Likewise.
(access_fn_components_comparable_p): Likewise.
(dr_analyze_indices): Add a reference to access_fn_component_p.
(dump_data_dependence_relation): Use SUB_ACCESS_FN instead of
DR_ACCESS_FN.
(constant_access_functions): Likewise.
(add_other_self_distances): Likewise.
(same_access_functions): Likewise.  (Moved from tree-data-ref.h.)
(initialize_data_dependence_relation): Use XCNEW and remove
explicit zeroing of DDR_REVERSED_P.  Look for a subsequence
of access functions that have the same type.  Allow the
subsequence to end with different bases in some circumstances.
Record the chosen access functions in SUB_ACCESS_FN.
(build_classic_dist_vector_1): Replace ddr_a and ddr_b with
a_index and b_index.  Use SUB_ACCESS_FN instead of DR_ACCESS_FN.
(subscript_dependence_tester_1): Likewise dra and drb.
(build_classic_dist_vector): Update calls accordingly.
(subscript_dependence_tester): Likewise.
* tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Check
DDR_COULD_BE_INDEPENDENT_P.
* tree-vectorizer.h (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Test
comp_alias_ddrs instead of may_alias_ddrs.
* tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
New function.
(vect_analyze_data_ref_dependence): Use it if
DDR_COULD_BE_INDEPENDENT_P, but fall back to using the recorded
distance vectors if that fails.
(dependence_distance_ge_vf): New function.
(vect_prune_runtime_alias_test_list): Use it.  Don't clear
LOOP_VINFO_MAY_ALIAS_DDRS.

gcc/testsuite/
* gcc.dg/vect/vect-alias-check-3.c: New test.
* gcc.dg/vect/vect-alias-check-4.c: Likewise.
* gcc.dg/vect/vect-alias-check-5.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250867 138bc75d-0d04-0410-961f-82ee72b054a4

8 years ago2017-08-04 Richard Biener <rguenther@suse.de>
rguenth [Fri, 4 Aug 2017 10:33:39 +0000 (10:33 +0000)] 
2017-08-04  Richard Biener  <rguenther@suse.de>

PR middle-end/81705
* fold-const.c (fold_binary_loc): Properly restrict
minus_var0 && minus_var1 case when associating undefined overflow
entities.

* c-c++-common/ubsan/pr81705.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250866 138bc75d-0d04-0410-961f-82ee72b054a4