platform/upstream/gcc.git
7 years agoarm_neon.h (vget_lane_p64): New.
Tamar Christina [Mon, 28 Nov 2016 12:36:07 +0000 (12:36 +0000)]
arm_neon.h (vget_lane_p64): New.

* config/arm/arm_neon.h (vget_lane_p64): New.

From-SVN: r242914

7 years agore PR tree-optimization/78343 (Loop is not eliminated)
Richard Biener [Mon, 28 Nov 2016 10:49:12 +0000 (10:49 +0000)]
re PR tree-optimization/78343 (Loop is not eliminated)

2016-11-28  Richard Biener  <rguenther@suse.de>

PR tree-optimization/78343
* gcc.dg/tree-ssa/20030808-1.c: Fix dump to generate.
* gcc.dg/tree-ssa/20040305-1.c: Likewise.

From-SVN: r242913

7 years ago[Darwin, config] Fix version number extraction to portable method
Iain Sandoe [Mon, 28 Nov 2016 10:29:19 +0000 (10:29 +0000)]
[Darwin, config] Fix version number extraction to portable method

The method used in the applied patch caused configuration errors on freeBSD and hppa.

2016-11-28  Iain Sandoe  <iain@codesourcery.com>

PR target/71767
* configure.ac (with_ld64): Use portable method to extract the
major part of the version number.
* configure: Regenerated.

From-SVN: r242912

7 years agogimple-ssa-sprintf.c (build_intmax_type_nodes): Look at UINTMAX_TYPE rather than...
Jakub Jelinek [Mon, 28 Nov 2016 10:01:30 +0000 (11:01 +0100)]
gimple-ssa-sprintf.c (build_intmax_type_nodes): Look at UINTMAX_TYPE rather than SIZE_TYPE.

* gimple-ssa-sprintf.c (build_intmax_type_nodes): Look at
UINTMAX_TYPE rather than SIZE_TYPE.  Add gcc_unreachable if
intmax_t couldn't be determined.
(format_integer): Make {,u}intmax_type_node no longer static,
initialize them only when needed.  For z and t use
signed_or_unsigned_type_for instead of assuming size_t and
ptrdiff_t have the same precision.

From-SVN: r242911

7 years agore PR lto/78211 (-fcompare-debug failure with -flto -fno-use-linker-plugin)
Jakub Jelinek [Mon, 28 Nov 2016 10:00:43 +0000 (11:00 +0100)]
re PR lto/78211 (-fcompare-debug failure with -flto -fno-use-linker-plugin)

PR lto/78211
* ipa-icf.h (sem_item_optimizer): Add m_classes_vec member.
* ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Initialize
it.
(sem_item_optimizer::~sem_item_optimizer): Traverse m_classes_vec
vector instead of traversing m_classes hash table.  Release
m_classes_vec.
(sem_item_optimizer::read_section, sem_item_optimizer::add_class):
Formatting fixes.
(sem_item_optimizer::get_group_by_hash): When inserting a new group,
add it also to m_classes_vec vector.
(sem_item_optimizer::remove_symtab_node,
sem_item_optimizer::build_hash_based_classes,
sem_item_optimizer::parse_nonsingleton_classes): Formatting fixes.
(sem_item_optimizer::subdivide_classes_by_equality,
sem_item_optimizer::subdivide_classes_by_sensitive_refs,
sem_item_optimizer::verify_classes): Traverse m_classes_vec vector
instead of traversing m_classes hash table.  Formatting fixes.
(sem_item_optimizer::traverse_congruence_split,
sem_item_optimizer::do_congruence_step_for_index,
sem_item_optimizer::do_congruence_step): Formatting fixes.
(sem_item_optimizer::process_cong_reduction): Traverse m_classes_vec
vector instead of traversing m_classes hash table.
(sem_item_optimizer::dump_cong_classes): Likewise.  Formatting fixes.
(sem_item_optimizer::merge_classes): Traverse m_classes_vec vector
instead of traversing m_classes hash table.

* g++.dg/ipa/pr78211.C: New test.

From-SVN: r242910

7 years agoavr.c (out_movhi_r_mr): Only SBIW if X is not unused after.
Georg-Johann Lay [Mon, 28 Nov 2016 09:28:45 +0000 (09:28 +0000)]
avr.c (out_movhi_r_mr): Only SBIW if X is not unused after.

* config/avr/avr.c (out_movhi_r_mr) [REG_X + PLUS]: Only SBIW if
X is not unused after.

From-SVN: r242909

7 years agore PR rtl-optimization/78120 (If conversion no longer performed)
Bernd Schmidt [Mon, 28 Nov 2016 08:59:01 +0000 (08:59 +0000)]
re PR rtl-optimization/78120 (If conversion no longer performed)

PR rtl-optimization/78120
* rtlanal.c (insn_rtx_cost): Revert previous change.

From-SVN: r242908

7 years agore PR target/41076 ([avr] pessimal code for logical OR of 8-bit fields)
Georg-Johann Lay [Mon, 28 Nov 2016 08:40:11 +0000 (08:40 +0000)]
re PR target/41076 ([avr] pessimal code for logical OR of 8-bit fields)

PR 41076
* config/avr/avr.md (SPLIT34): New mode iterator.
(bitop): New code iterator.
(*iorhi3.ashift8-*). New insn-and-split patterns.
(*movhi): Post-reload split reg = 0.
[!MOVW]: Post-reload split reg = reg.
(*mov<mode>) [SI,SF,PSI,SQ,USQ,SA,USA]: Post-reload split reg = reg.
(andhi3, andpsi3, andsi3): Post-reload split reg-reg operations.
(iorhi3, iorpsi3, iorsi3): Same.
(xorhi3, xorpsi3, xorsi3): Same.
* config/avr/avr.c (avr_rtx_costs_1) [IOR && HImode]: Adjust rtx
costs to *iorhi3.ashift8-* patterns.

From-SVN: r242907

7 years agoPR c++/77907 - static init and PMF
Jason Merrill [Mon, 28 Nov 2016 04:00:36 +0000 (23:00 -0500)]
PR c++/77907 - static init and PMF

* constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert.

From-SVN: r242906

7 years agoDaily bump.
GCC Administrator [Mon, 28 Nov 2016 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242905

7 years agore PR ada/78524 (failure of ACATS c41104a at -O0)
Eric Botcazou [Sun, 27 Nov 2016 22:04:13 +0000 (22:04 +0000)]
re PR ada/78524 (failure of ACATS c41104a at -O0)

PR ada/78524
* gcc-interface/utils.c (max_size) <tcc_reference>: Add missing
conversion to original type in the PLACEHOLDER_EXPR case.

From-SVN: r242902

7 years agore PR ada/78531 (bootstrap broken with _FORTIFY_SOURCE enabled)
Eric Botcazou [Sun, 27 Nov 2016 20:23:31 +0000 (20:23 +0000)]
re PR ada/78531 (bootstrap broken with _FORTIFY_SOURCE enabled)

PR ada/78531
* namet.h (Max_Line_Length): Define.
(struct Bounded_String): Declare Chars with exact size.
(namet__get_decoded_name_string): Delete.
(Get_Decoded_Name_String): Likewise.
(casing__set_all_upper_case): Likewise.

From-SVN: r242901

7 years agore PR fortran/78474 ([F08] gfortran accepts invalid submodule syntax)
Paul Thomas [Sun, 27 Nov 2016 19:00:00 +0000 (19:00 +0000)]
re PR fortran/78474 ([F08] gfortran accepts invalid submodule syntax)

2016-11-27  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/78474
* module.c (gfc_match_submodule): If there is more than one
colon, it is a syntax error.

PR fortran/78331
* module.c (gfc_use_module): If an smod file does not exist it
is either because the module does not have a module procedure
interface or there is an error in the module.

2016-11-27  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/78474
* gfortran.dg/submodule_22.f08: New test.

PR fortran/78331
* gfortran.dg/submodule_21.f08: New test.

From-SVN: r242900

7 years agopr65655.C: Use dg-timeout-factor 2.
John David Anglin [Sun, 27 Nov 2016 17:40:53 +0000 (17:40 +0000)]
pr65655.C: Use dg-timeout-factor 2.

* g++.dg/torture/pr65655.C: Use dg-timeout-factor 2.

From-SVN: r242899

7 years ago[Darwin] fix PR67710 by updating 'as' specs to handle newer assembler versions.
Iain Sandoe [Sun, 27 Nov 2016 15:07:22 +0000 (15:07 +0000)]
[Darwin] fix PR67710 by updating 'as' specs to handle newer assembler versions.

A/ Newer versions of ld64 check the min_version command, and newer versions of
   the system assembler inserts this in response to "-mmacosx-version-min=" on
   the assembler line. Unless one makes sensible versions, some object is bound
   to conflict.

B/ Additionally, there's a difference in behaviour between "as" and "ld" when
   presented with xx.yy.zz (ld truncates to xx.yy, as doesn't); net result is
   that one needs to pass a truncated version to "as".

So (if the assembler supports minversion commands)
(a) provide a truncated minversion (as asm_macosx_version_min, which is a
    driver-only var).
(b) pass this to "as"
(c) Update tests to determine 'HAVE_AS_MMACOSX_VERSION_MIN_OPTION'
    (Rainer's patch)
(d) For some reason the testcases are "run" (it's not obvious they need to be,
    they are checking compile-time issues)
  - anyway, to preserve the status quo, I've left them as exec.  However, the
    minimum version that can be code-gened for is target-dependent (there are no
    released x86 versions before 10.4, for example).  To avoid conflicts where
    the "as" is assuming some minimum, I've set the testversion to 10.5 (which
    is supported by all the archs we have)
(e) We need to ensure that libgcc and crts are generated with a sufficiently
    old minversion not to conflict.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>
    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

PR target/67710
* config.in: Regenerate
* config/darwin-driver.c (darwin_driver_init): Emit a version string
for the assembler.
* config/darwin.h(ASM_MMACOSX_VERSION_MIN_SPEC): New, new tests.
* config/darwin.opt(asm_macosx_version_min): New.
* config/i386/darwin.h: Handle ASM_MMACOSX_VERSION_MIN_SPEC.
* configure: Regenerate
* configure.ac: Check for mmacosx-version-min handling.

gcc/testsuite/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>
    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
    Dominique d'Humieres  <dominiq@lps.ens.fr>

PR target/67710
*  gcc.dg/darwin-minversion-1.c: Update min version check.
*  gcc.dg/darwin-minversion-2.c: Likewise.
*  gcc.dg/darwin-minversion-3.c: Likewise.

libgcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>
    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

PR target/67710
*  config/t-darwin: Default builds to 10.5 codegen.

Co-Authored-By: Dominique d'Humieres <dominiq@lps.ens.fr>
Co-Authored-By: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
From-SVN: r242898

7 years ago[Darwin] Fix PR57438 by avoiding empty function bodies and trailing labels.
Iain Sandoe [Sun, 27 Nov 2016 14:50:58 +0000 (14:50 +0000)]
[Darwin] Fix PR57438 by avoiding empty function bodies and trailing labels.

A.
Empty function bodies causes two problems for Darwin's linker (i) zero-length
FDEs and (ii) coincident label addresses that might point to items of
differing weakness.

B.
Trailing local labels can be problematic when they end a function because
similarly they might apparently point to a following weak function, leading
to the linker concluding that there's a pointer-diff to a weak symbol
(which is not allowed).

Both conditions arise from __builtin_unreachable() lowering to a barrier.

The solution for both is to emit some finite amount of code; in the case of A
a trap is emitted, in the case of B a nop.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

PR target/57438
* config/i386/i386.c (ix86_code_end): Note that we emitted code
where the function might otherwise appear empty for picbase thunks.
(ix86_output_function_epilogue): If we find a zero-sized function
assume that reaching it is UB and trap.  If we find a trailing label
append a nop.
* config/rs6000/rs6000.c (rs6000_output_function_epilogue): If we
find a zero-sized function assume that reaching it is UB and trap.
If we find a trailing label, append a nop.

gcc/testsuite/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

PR target/57438
* gcc.dg/pr57438-1.c: New Test.
* gcc.dg/pr57438-2.c: New Test.

From-SVN: r242897

7 years ago[Testsuite] pr71767 Changes.
Dominique d'Humieres [Sun, 27 Nov 2016 14:41:22 +0000 (15:41 +0100)]
[Testsuite] pr71767 Changes.

 Update Darwin tests to reflect the differences in symbol names and section
 usage.

gcc/testsuite/

2016-11-27  Dominique d'Humieres  <dominiq@lps.ens.fr>
    Iain Sandoe  <iain@codesourcery.com>

PR target/71767
* g++.dg/abi/key2.C: Adjust for changed Darwin sections and
linker-visible symbols.
* g++.dg/torture/darwin-cfstring-3.C: Likewise.
* gcc.dg/const-uniq-1.c: Likewise.
* gcc.dg/torture/darwin-cfstring-3.c: Likewise.
* gcc.target/i386/pr70799-1.c: Likewise.

Co-Authored-By: Iain Sandoe <iain@codesourcery.com>
From-SVN: r242896

7 years ago[Darwin] Fix PR71767 - adjust the sections used where necessary.
Iain Sandoe [Sun, 27 Nov 2016 14:34:54 +0000 (14:34 +0000)]
[Darwin] Fix PR71767 - adjust the sections used where necessary.

 (much) Older Darwin linkers needed separate sections marked "coalesce" to
 allow for weak symbol coalescing.  This has not been needed for some time
 and is now deprecated, newer assemblers warn if the old coalesced sections
 are used.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

PR target/71767
* config/darwin-sections.def (picbase_thunk_section): New.
* config/darwin.c (darwin_init_sections): Set up picbase thunk
section. (darwin_rodata_section, darwin_objc2_section,
machopic_select_section, darwin_asm_declare_constant_name,
darwin_emit_weak_or_comdat, darwin_function_section): Don’t use
coalesced with newer linkers.
(darwin_override_options): Decide on usage of coalesed sections
on the basis of the target linker version.
* config/darwin.h (MIN_LD64_NO_COAL_SECTS): New.
* config/darwin.opt  (mtarget-linker): New.
* config/i386/i386.c (ix86_code_end): Do not force the thunks into
a coalesced section, instead use a thunks section.

From-SVN: r242895

7 years ago[Darwin, config] Arrange for ld64 to be detected as Darwin's linker.
Iain Sandoe [Sun, 27 Nov 2016 14:29:36 +0000 (14:29 +0000)]
[Darwin, config] Arrange for ld64 to be detected as Darwin's linker.

 This is an initial patch in a series that converts Darwin's configury
 to detect ld64 features, rather than the current process of hard-coding
 them on target system version.

 A ld64-compatible linker is currently required and assumed by Darwin.
 If a DEFAULT_LINKER is set via --with-ld= then this will be tested to
 see if it is ld64.

 The ld64 version is determined for the chosen ld and this is exported for
 use in setting a default value for -mtarget-linker (needed for run-time
 code-gen changes to section choices).
 The support for -rdynamic is converted to be detected at config time, or
 by the ld64 version if that is found.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

PR target/71767
* configure.ac (with-ld64): New var, set for Darwin, set on
detection of ld64, gcc_cv_ld64_export_dynamic: New, New test.
* config/darwin.h: Use LD64_HAS_DYNAMIC export. DEF_LD64: New,
define.
* config/darwin10.h(DEF_LD64): Update for this target version.
* config/darwin12.h(LINK_GCC_C_SEQUENCE_SPEC): Remove rdynamic
test.  (DEF_LD64): Update for this target version.
* configure: Regenerated.
* config.in: Regenerated.

From-SVN: r242894

7 years ago[Darwin, ld64] Make PIC indirections and constant labels linker-visible.
Iain Sandoe [Sun, 27 Nov 2016 14:21:51 +0000 (14:21 +0000)]
[Darwin, ld64] Make PIC indirections and constant labels linker-visible.

Indirections:

  If we have a situation like:

global_weak_symbol:
  ....
Lnon_weak_local:
  ....

  ld64 will be unable to split this into two atoms (because the "L" makes
  the second symbol 'invisible').  This means that legitimate direct accesses
  to the second symbol will appear to be non-allowed direct accesses to an
  atom of type weak, global which are not allowed.

  To avoid this, we make the indirections have a leading 'l' (lower-case L)
  which has a special meaning: linker can see this and use it to determine
  atoms, but it is not placed into the final symbol table.

  The implementation here is somewhat heavy-handed in that it will also mark
  indirections to the __IMPORT,__pointers section the same way which is
  really unnecessary, since ld64 _can_ split those into atoms as they are
  fixed size.  FIXME: determine if this is a penalty worth extra code to
  fix.

Similarly, with:

  .const
weak_global_constant:
  ....

LCxx:
  ...

 ld64 can't split the second, causing a warning when it's directly
accessed.

gcc/

2016-11-27  Iain Sandoe  <iain@codesourcery.com>

PR target/71767
* config/darwin.c (imachopic_indirection_name): Make data
section indirections linker-visible.
* config/darwin.h (ASM_GENERATE_INTERNAL_LABEL): Make local
constant labels linker-visible.

From-SVN: r242893

7 years agore PR libstdc++/78441 ([variant] variant_alternative doesn't allow cv qualifiers)
Tim Shen [Sun, 27 Nov 2016 00:32:04 +0000 (00:32 +0000)]
re PR libstdc++/78441 ([variant] variant_alternative doesn't allow cv qualifiers)

PR libstdc++/78441
* include/std/variant: Propagate cv qualifications to types returned
by variant_alternative.
* testsuite/20_util/variant/compile.cc: Tests.

From-SVN: r242892

7 years agoDaily bump.
GCC Administrator [Sun, 27 Nov 2016 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242891

7 years agotree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.
Prathamesh Kulkarni [Sat, 26 Nov 2016 10:41:55 +0000 (10:41 +0000)]
tree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.

2016-11-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* tree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.
(free_lang_data): Remove assignment to ptrdiff_type_node.
c-family/
* c-common.c (c_common_nodes_and_builtins): Remove initialization of
ptrdiff_type_node.
lto/
* lto-lang.c (lto_init): Remove initialization of ptrdiff_type_node.

From-SVN: r242888

7 years agoDaily bump.
GCC Administrator [Sat, 26 Nov 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242887

7 years agoFor typo in documentation wrt. C_PTRDIFF_T constant
Janne Blomqvist [Fri, 25 Nov 2016 20:06:24 +0000 (22:06 +0200)]
For typo in documentation wrt. C_PTRDIFF_T constant

2016-11-25  Janne Blomqvist  <jb@gcc.gnu.org>

       * intrinsic.texi: Fix ptrdiff_t typo in ISO_C_BINDING constants
       table.

From-SVN: r242884

7 years agore PR rtl-optimization/78438 (incorrect comparison optimization)
Jakub Jelinek [Fri, 25 Nov 2016 19:24:22 +0000 (20:24 +0100)]
re PR rtl-optimization/78438 (incorrect comparison optimization)

PR rtl-optimization/78438
PR rtl-optimization/78477
* gcc.c-torture/execute/pr78438.c: New test.
* gcc.c-torture/execute/pr78477.c: New test.

From-SVN: r242883

7 years agore PR rtl-optimization/78526 (ICE: in decompose, at rtl.h:2117 with -g -mavx512bw)
Jakub Jelinek [Fri, 25 Nov 2016 18:56:50 +0000 (19:56 +0100)]
re PR rtl-optimization/78526 (ICE: in decompose, at rtl.h:2117 with -g -mavx512bw)

PR rtl-optimization/78526
* simplify-rtx.c (simplify_immed_subreg): Don't use wi::extract_uhwi
beyond val's precision.

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

From-SVN: r242882

7 years agore PR rtl-optimization/77541 (wrong code with 512bit vectors of int128 @ -O1)
Vladimir Makarov [Fri, 25 Nov 2016 17:42:21 +0000 (17:42 +0000)]
re PR rtl-optimization/77541 (wrong code with 512bit vectors of int128 @ -O1)

2016-11-25  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/77541
* gcc.target/i386/pr77541.c: Change target to int128.

From-SVN: r242881

7 years agore PR fortran/60853 ([OOP] Failure to disambiguate generic with unlimited polymorphic)
Janus Weil [Fri, 25 Nov 2016 17:22:37 +0000 (18:22 +0100)]
re PR fortran/60853 ([OOP] Failure to disambiguate generic with unlimited polymorphic)

2016-11-25  Janus Weil  <janus@gcc.gnu.org>

PR fortran/60853
* interface.c (gfc_compare_interfaces): Remove bad special case for
unlimited polymorphism. Refactor for loop.

2016-11-25  Janus Weil  <janus@gcc.gnu.org>

PR fortran/60853
* gfortran.dg/typebound_assignment_8.f90: New test case.

From-SVN: r242880

7 years agore PR rtl-optimization/78527 (ice on valid C code at -O3 in both 32-bit and 64-bit...
Jakub Jelinek [Fri, 25 Nov 2016 17:12:29 +0000 (18:12 +0100)]
re PR rtl-optimization/78527 (ice on valid C code at -O3 in both 32-bit and 64-bit modes on x86_64-linux-gnu (internal compiler error: in smallest_mode_for_size, at stor-layout.c:364))

PR rtl-optimization/78527
* combine.c (make_compound_operation_int): Ignore LSHIFTRT with
out of bounds shift count.

* gcc.c-torture/compile/pr78527.c: New test.

From-SVN: r242879

7 years agoFix documentation reference (PR web/71666)
Martin Liska [Fri, 25 Nov 2016 14:23:54 +0000 (15:23 +0100)]
Fix documentation reference (PR web/71666)

PR web/71666
* doc/invoke.texi (-fprofile-use): Fix reference to a section
where -fprofile-generate is documented.

From-SVN: r242878

7 years agoDon't use priority {cd}tors if not supported by a target (PR
Martin Liska [Fri, 25 Nov 2016 14:23:25 +0000 (15:23 +0100)]
Don't use priority {cd}tors if not supported by a target (PR

PR gcov-profile/78086
* g++.dg/gcov/pr16855.C: Clean up the test case.
* g++.dg/gcov/pr16855-priority.C: New test.
* coverage.c (build_init_ctor): Don't use priority {cd}tors if
not supported by a target.  Set priority to 100 if possible.
(build_gcov_exit_decl): Likewise.

From-SVN: r242877

7 years agore PR ipa/78515 (ICE: in fold_binary_loc, at fold-const.c:8999 with -Os -mavx512bw)
Richard Biener [Fri, 25 Nov 2016 14:05:04 +0000 (14:05 +0000)]
re PR ipa/78515 (ICE: in fold_binary_loc, at fold-const.c:8999 with -Os -mavx512bw)

2016-11-25  Richard Biener  <rguenther@suse.de>

PR ipa/78515
* ipa-prop.c (compute_complex_assign_jump_func): Properly identify
unary, binary and single RHSs.
* tree.def (BIT_INSERT_EXPR): Adjust tree code name.

* gcc.dg/torture/pr78515.c: New testcase.

From-SVN: r242876

7 years ago[multiple changes]
Paul Thomas [Fri, 25 Nov 2016 12:23:43 +0000 (12:23 +0000)]
[multiple changes]

2016-11-25  Andre Vehreschild  <vehre@gcc.gnu.org>
Paul Thomas  <pault@gcc.gnu.org>

PR fortran/78293
* trans-expr.c (gfc_conv_procedure_call): Prepend deallocation
of alloctable components to post, rather than adding to
se->post.
* trans-stmt.c (gfc_trans_allocate): Move deallocation of expr3
allocatable components so that all expr3s are visited.

2016-11-25  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/78293
* gfortran.dg/allocatable_function_10.f90: New test.
* gfortran.dg/class_array_15.f03: Increase builtin_free count
from 11 to 12.

From-SVN: r242875

7 years agore PR middle-end/78507 (ICE: tree check: expected integer_type or enumeral_type or...
Bin Cheng [Fri, 25 Nov 2016 11:45:43 +0000 (11:45 +0000)]
re PR middle-end/78507 (ICE: tree check: expected integer_type or enumeral_type or boolean_type or real_type or fixed_point_type, have pointer_type in int_fits_type_p, at tree.c:9153)

PR middle-end/78507
PR middle-end/78510
PR middle-end/78517
* match.pd ((cond (cmp (convert1? @1) @3) (convert2? @1) @2)): Use
cmp directly, rather than cmp_code.  Initialize code to ERROR_MARK
and set it to result code if transformation is valid.  Use code EQ
directly in last simplification case.

gcc/testsuite
PR middle-end/78507
PR middle-end/78510
PR middle-end/78517
* g++.dg/torture/pr78507.C: New test.
* gcc.dg/torture/pr78510.c: New test.
* gcc.dg/torture/pr78517.c: New test.

From-SVN: r242874

7 years agogimple-fold.c (fold_stmt_1): Check may_propagate_copy before valueizing return stmts.
Richard Biener [Fri, 25 Nov 2016 11:40:30 +0000 (11:40 +0000)]
gimple-fold.c (fold_stmt_1): Check may_propagate_copy before valueizing return stmts.

2016-11-25  Richard Biener  <rguenther@suse.de>

* gimple-fold.c (fold_stmt_1): Check may_propagate_copy
before valueizing return stmts.

From-SVN: r242873

7 years agore PR tree-optimization/78343 (Loop is not eliminated)
Richard Biener [Fri, 25 Nov 2016 10:22:57 +0000 (10:22 +0000)]
re PR tree-optimization/78343 (Loop is not eliminated)

2016-11-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/78343
* passes.def: Add CD-DCE pass after loop splitting.
* tree-ssa-dce.c (find_obviously_necessary_stmts): Move
SCEV init/finalize ...
(perform_tree_ssa_dce): ... here.  Deal with being
executed inside the loop pipeline in aggressive mode.

* gcc.dg/tree-ssa/sccp-2.c: New testcase.
* gcc.dg/autopar/uns-outer-6.c: Adjust.
* gcc.dg/tree-ssa/20030808-1.c: Likewise.
* gcc.dg/tree-ssa/20040305-1.c: Likewise.
* gcc.dg/vect/pr38529.c: Likewise.

From-SVN: r242872

7 years agoRemove conflict marker
Eric Botcazou [Fri, 25 Nov 2016 10:04:20 +0000 (10:04 +0000)]
Remove conflict marker

From-SVN: r242871

7 years agoImprove comment for struct symbolic_number in bswap pass
Thomas Preud'homme [Fri, 25 Nov 2016 10:03:46 +0000 (10:03 +0000)]
Improve comment for struct symbolic_number in bswap pass

2016-11-25  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * tree-ssa-math-opts.c (struct symbolic_number): Improve comment.

From-SVN: r242870

7 years agoFix PR77673: bswap loads passed end of object
Thomas Preud'homme [Fri, 25 Nov 2016 10:03:38 +0000 (10:03 +0000)]
Fix PR77673: bswap loads passed end of object

2016-11-25  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    PR tree-optimization/77673
    * tree-ssa-math-opts.c (struct symbolic_number): Add new src field.
    (init_symbolic_number): Initialize src field from src parameter.
    (perform_symbolic_merge): Select most dominated statement as the
    source statement.  Set src field of resulting n structure from the
    input src with the lowest address.
    (find_bswap_or_nop): Rename source_stmt into ins_stmt.
    (bswap_replace): Rename src_stmt into ins_stmt.  Initially get source
    of load from src field rather than insertion statement.  Cancel
    optimization if statement analyzed is not dominated by the insertion
    statement.
    (pass_optimize_bswap::execute): Rename src_stmt to ins_stmt.  Compute
    dominance information.

    gcc/testsuite/
    PR tree-optimization/77673
    * gcc.dg/pr77673.c: New test.

From-SVN: r242869

7 years agore PR ada/67205 (eliminate No_Implicit_Dynamic_Code restriction violations)
Eric Botcazou [Fri, 25 Nov 2016 09:59:45 +0000 (09:59 +0000)]
re PR ada/67205 (eliminate No_Implicit_Dynamic_Code restriction violations)

PR ada/67205
* config/mips/mips.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.

From-SVN: r242868

7 years ago[PR 70965] Schedule extra rebuild_cgraph_edges
Martin Jambor [Fri, 25 Nov 2016 09:49:19 +0000 (10:49 +0100)]
[PR 70965] Schedule extra rebuild_cgraph_edges

2016-11-25  Martin Jambor  <mjambor@suse.cz>

PR tree-optimization/70965
* passes.def (pass_build_ssa_passes): Add pass_rebuild_cgraph_edges.

gcc/testsuite/
* g++.dg/pr70965.C: New test.

From-SVN: r242867

7 years ago[Patch i386] PR78509 - TARGET_C_EXCESS_PRECISION should not return
James Greenhalgh [Fri, 25 Nov 2016 09:25:31 +0000 (09:25 +0000)]
[Patch i386] PR78509 - TARGET_C_EXCESS_PRECISION should not return
 "unpredictable" for EXCESS_PRECISION_TYPE_STANDARD

gcc/

PR target/78509
* config/i386/i386.c (i386_excess_precision): Do not return
FLT_EVAL_METHOD_UNPREDICTABLE when "type" is
EXCESS_PRECISION_TYPE_STANDARD.
* target.def (excess_precision): Document that targets should
not return FLT_EVAL_METHOD_UNPREDICTABLE when "type" is
EXCESS_PRECISION_TYPE_STANDARD or EXCESS_PRECISION_TYPE_FAST.
Fix typo in first sentence.
* doc/tm.texi: Regenerate.

From-SVN: r242866

7 years agore PR tree-optimization/78396 (gcc.dg/vect/bb-slp-cond-1.c FAILs after fix for PR77848)
Richard Biener [Fri, 25 Nov 2016 08:59:28 +0000 (08:59 +0000)]
re PR tree-optimization/78396 (gcc.dg/vect/bb-slp-cond-1.c FAILs after fix for PR77848)

2016-11-25  Richard Biener  <rguenther@suse.de>

PR tree-optimization/78396
* tree-vectorizer.c (vectorize_loops): When the if-converted
body contains masked loads or stores do not attempt to
basic-block-vectorize it.

From-SVN: r242865

7 years agore PR gcov-profile/78467 (gcc.dg/tree-prof/comp-goto-1.c FAILs)
Jakub Jelinek [Fri, 25 Nov 2016 08:51:38 +0000 (09:51 +0100)]
re PR gcov-profile/78467 (gcc.dg/tree-prof/comp-goto-1.c FAILs)

PR gcov-profile/78467
* gcc.dg/tree-prof/comp-goto-1.c (insn_t): Change offset to
signed int.

Co-Authored-By: Andreas Schwab <schwab@linux-m68k.org>
From-SVN: r242864

7 years agoTweak LRA handling of shared spill slots
Richard Sandiford [Fri, 25 Nov 2016 08:23:08 +0000 (08:23 +0000)]
Tweak LRA handling of shared spill slots

The previous code processed the users of a stack slot in order of
decreasing size and allocated the slot based on the first user.
This seems a bit dangerous, since the ordering is based on the
mode of the biggest reference while the allocation is based also
on the size of the register itself (which I think could be larger).

That scheme doesn't scale well to polynomial sizes, since there's
no guarantee that the order of the sizes is known at compile time.
This patch instead records an upper bound on the size required
by all users of a slot.  It also records the maximum alignment
requirement.

gcc/
2016-11-15  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* function.h (spill_slot_alignment): Declare.
* function.c (spill_slot_alignment): New function.
* lra-spills.c (slot): Add align and size fields.
(assign_mem_slot): Use them in the call to assign_stack_local.
(add_pseudo_to_slot): Update the fields.
(assign_stack_slot_num_and_sort_pseudos): Initialise the fields.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r242863

7 years agoSet mode of decimal floats before calling layout_type
Richard Sandiford [Fri, 25 Nov 2016 08:20:40 +0000 (08:20 +0000)]
Set mode of decimal floats before calling layout_type

Previously decimal floating-point types were created and laid
out as binary floating-point types, then the caller changed
the mode to a decimal mode later.  The problem with that
approach is that not all targets support an equivalent binary
floating-point mode.  When they didn't, we would give the
type BLKmode and lay it out as a zero-sized type.

This probably had no effect in practice.  If a target doesn't
support a binary mode then it's unlikely to support the decimal
equivalent either.  However, with the stricter mode checking
added by later patches, we would assert if a scalar floating-
point type didn't have a scalar floating-point mode.

gcc/
2016-11-16  Richard Sandiford  <richard.sandiford@arm.com>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

* stor-layout.c (layout_type): Allow the caller to set the mode of
a float type.  Only choose one here if the mode is still VOIDmode.
* tree.c (build_common_tree_nodes): Set the type mode of decimal
floats before calling layout_type.
* config/rs6000/rs6000.c (rs6000_init_builtins): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r242862

7 years agoAdd run tests for recent sibcall patches
Richard Sandiford [Fri, 25 Nov 2016 08:18:26 +0000 (08:18 +0000)]
Add run tests for recent sibcall patches

gcc/testsuite/
* gcc.dg/tree-ssa/tailcall-7-run.c: New test.
* gcc.dg/tree-ssa/tailcall-8-run.c: Likewise.

From-SVN: r242861

7 years agoTighten check for whether sibcall references local variables
Richard Sandiford [Fri, 25 Nov 2016 08:17:46 +0000 (08:17 +0000)]
Tighten check for whether sibcall references local variables

This loop:

      /* Make sure the tail invocation of this function does not refer
         to local variables.  */
      FOR_EACH_LOCAL_DECL (cfun, idx, var)
        {
          if (TREE_CODE (var) != PARM_DECL
              && auto_var_in_fn_p (var, cfun->decl)
              && (ref_maybe_used_by_stmt_p (call, var)
                  || call_may_clobber_ref_p (call, var)))
            return;
        }

triggered even for local variables that are passed by value.
This meant that we didn't allow local aggregates to be passed
to a sibling call but did (for example) allow global aggregates
to be passed.

I think the loop is really checking for indirect references,
so should be able to skip any variables that never have their
address taken.

gcc/
* tree-tailcall.c (find_tail_calls): Allow calls to reference
local variables if all references are known to be direct.

gcc/testsuite/
* gcc.dg/tree-ssa/tailcall-8.c: New test.

From-SVN: r242860

7 years agoFix bogus pr64277.c failure for avr
Senthil Kumar Selvaraj [Fri, 25 Nov 2016 08:15:42 +0000 (08:15 +0000)]
Fix bogus pr64277.c failure for avr

The smaller int size for the avr target breaks the test's
expectation on the number of iterations. The failure goes
away if 32 bit ints are used in place of a plain int.

Fix by conditionally typedef int32_t to __INT32_TYPE__ for targets
with int size < 4,  and then use int32_t everywhere.

gcc/testsuite
016-11-25  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

* gcc.dg/pr64277.c: Use __INT32_TYPE__ for targets
with sizeof(int) < 4.

From-SVN: r242859

7 years agore PR middle-end/78501 (SEGV in vrp_val_max)
Jakub Jelinek [Fri, 25 Nov 2016 08:03:51 +0000 (09:03 +0100)]
re PR middle-end/78501 (SEGV in vrp_val_max)

2016-11-25  Jakub Jelinek  <jakub@redhat.com>
    Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

PR middle-end/78501
* tree-vrp.c (extract_range_basic): Check for ptrdiff_type_node to be
non null and it's precision matches precision of lhs's type.

Co-Authored-By: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
From-SVN: r242858

7 years agoDaily bump.
GCC Administrator [Fri, 25 Nov 2016 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242857

7 years agoPR tree-optimization/78476 - snprintf(0, 0, ...) with known arguments not optimized...
Martin Sebor [Thu, 24 Nov 2016 22:45:18 +0000 (15:45 -0700)]
PR tree-optimization/78476 - snprintf(0, 0, ...) with known arguments not optimized away

gcc/testsuite/ChangeLog:

PR tree-optimization/78476
* gcc.dg/tree-ssa/builtin-sprintf-5.c: New test.

gcc/ChangeLog:

PR tree-optimization/78476
* gimple-ssa-sprintf.c (struct pass_sprintf_length::call_info):
Add a member.
(handle_gimple_call): Adjust signature.
(try_substitute_return_value): Remove calls to bounded functions
with zero buffer size whose result is known.
(pass_sprintf_length::execute): Adjust call to handle_gimple_call.

From-SVN: r242854

7 years agoFix bootstrap with !ASM_OUTPUT_MAX_SKIP_ALIGN
Rainer Orth [Thu, 24 Nov 2016 22:30:54 +0000 (22:30 +0000)]
Fix bootstrap with !ASM_OUTPUT_MAX_SKIP_ALIGN

* varasm.c (assemble_start_function): Wrap align_log definition in
ASM_OUTPUT_MAX_SKIP_ALIGN.

From-SVN: r242853

7 years agoi386.md (wide AND insn to QImode splitter): Use explicit mode macros.
Uros Bizjak [Thu, 24 Nov 2016 21:48:13 +0000 (22:48 +0100)]
i386.md (wide AND insn to QImode splitter): Use explicit mode macros.

* config/i386/i386.md (wide AND insn to QImode splitter): Use
explicit mode macros.
(wide OR insn to QImode splitter): Ditto.

From-SVN: r242852

7 years agoconfig.guess: Import latest version.
Ben Elliston [Thu, 24 Nov 2016 21:38:27 +0000 (08:38 +1100)]
config.guess: Import latest version.

* config.guess: Import latest version.
* config.sub: Likewise.

From-SVN: r242851

7 years ago* config/i386/i386.md: Move some more patterns around.
Uros Bizjak [Thu, 24 Nov 2016 21:12:19 +0000 (22:12 +0100)]
* config/i386/i386.md: Move some more patterns around.

From-SVN: r242850

7 years agore PR rtl-optimization/77541 (wrong code with 512bit vectors of int128 @ -O1)
Vladimir Makarov [Thu, 24 Nov 2016 19:54:27 +0000 (19:54 +0000)]
re PR rtl-optimization/77541 (wrong code with 512bit vectors of int128 @ -O1)

2016-11-24  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/77541
* lra-constraints.c (struct input_reload): Add field match_p.
(get_reload_reg): Check modes of input reloads to generate unique
value reload pseudo.
(match_reload): Add input reload pseudo for the current insn.

2016-11-24  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/77541
* gcc.target/i386/pr77541.c: New.

From-SVN: r242848

7 years agore PR fortran/78500 (ICE in gfc_check_vardef_context, at fortran/expr.c:5289)
Steven G. Kargl [Thu, 24 Nov 2016 18:27:58 +0000 (18:27 +0000)]
re PR fortran/78500 (ICE in gfc_check_vardef_context, at fortran/expr.c:5289)

2016-11-24  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/78500
* expr.c (gfc_check_vardef_contextm): Fix NULL pointer dereference.
* interface.c (matching_typebound_op): Ditto.

2016-11-24  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/78500
* gfortran.dg/class_result_4.f90: New test.

From-SVN: r242846

7 years ago[Patch AArch64 13/17] Enable _Float16 for AArch64
James Greenhalgh [Thu, 24 Nov 2016 18:19:29 +0000 (18:19 +0000)]
[Patch AArch64 13/17] Enable _Float16 for AArch64

gcc/

* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Update
__FLT_EVAL_METHOD__ and __FLT_EVAL_METHOD_C99__ when we switch
architecture levels.
* config/aarch64/aarch64.c (aarch64_promoted_type): Only promote
the aarch64_fp16_type_node, not all HFmode types.
(aarch64_libgcc_floating_mode_supported_p): Support HFmode.
(aarch64_scalar_mode_supported_p): Likewise.
(aarch64_excess_precision): New.
(TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P): Define.
(TARGET_SCALAR_MODE_SUPPORTED_P): Likewise.
(TARGET_C_EXCESS_PRECISION): Likewise.

gcc/testsuite/

* gcc.target/aarch64/_Float16_1.c: New.
* gcc.target/aarch64/_Float16_2.c: Likewise.
* gcc.target/aarch64/_Float16_3.c: Likewise.

From-SVN: r242845

7 years ago[Patch libgcc AArch64 12/17] Enable hfmode soft-float conversions and truncations
James Greenhalgh [Thu, 24 Nov 2016 18:16:55 +0000 (18:16 +0000)]
[Patch libgcc AArch64 12/17] Enable hfmode soft-float conversions and truncations

gcc/

* config/aarch64/aarch64-c.c (aarch64_scalar_mode_supported_p): New.
(TARGET_SCALAR_MODE_SUPPORTED_P): Define.

libgcc/

* config/aarch64/sfp-machine.h (_FP_NANFRAC_H): Define.
(_FP_NANSIGN_H): Likewise.
* config/aarch64/t-softfp (softfp_extensions): Add hftf.
(softfp_truncations): Add tfhf.
(softfp_extras): Add required conversion functions.

From-SVN: r242844

7 years ago[Patch AArch64 11/17] Add floatdihf2 and floatunsdihf2 patterns
James Greenhalgh [Thu, 24 Nov 2016 18:14:36 +0000 (18:14 +0000)]
[Patch AArch64 11/17] Add floatdihf2 and floatunsdihf2 patterns

gcc/

* config/aarch64/aarch64.md (<optab>sihf2): Convert to expand.
(<optab>dihf2): Likewise.
(aarch64_fp16_<optab><mode>hf2): New.

gcc/testsuite/

* gcc.target/aarch64/floatdihf2_1.c: New.

From-SVN: r242843

7 years agoAllow -fopenmp in NVPTX mkoffload
Alexander Monakov [Thu, 24 Nov 2016 18:10:42 +0000 (21:10 +0300)]
Allow -fopenmp in NVPTX mkoffload

PR target/67822
* config/nvptx/mkoffload.c (main): Allow -fopenmp.

From-SVN: r242842

7 years agosparc-common.c (sparc_option_optimization_table): Enable REE at -O2 and higher.
Eric Botcazou [Thu, 24 Nov 2016 15:30:17 +0000 (15:30 +0000)]
sparc-common.c (sparc_option_optimization_table): Enable REE at -O2 and higher.

* common/config/sparc/sparc-common.c (sparc_option_optimization_table):
Enable REE at -O2 and higher.
* config/sparc/sparc.c (sparc_option_override): Disable it by default
in 32-bit mode.

From-SVN: r242841

7 years ago[TER] PR target/48863 : Don't replace expressions across local register variable...
Kyrylo Tkachov [Thu, 24 Nov 2016 15:22:34 +0000 (15:22 +0000)]
[TER] PR target/48863 : Don't replace expressions across local register variable definitions

PR target/48863
PR inline-asm/70184
* tree-ssa-ter.c (temp_expr_table): Add reg_vars_cnt field.
(new_temp_expr_table): Initialise reg_vars_cnt.
(free_temp_expr_table): Release reg_vars_cnt.
(process_replaceable): Add reg_vars_cnt argument, set reg_vars_cnt
field of TAB.
(find_replaceable_in_bb): Use the above to record register variable
write occurrences and cancel replacement across them.

* gcc.target/arm/pr48863.c: New test.

From-SVN: r242840

7 years agore PR rtl-optimization/78437 (invalid sign-extend conversion in REE pass)
Eric Botcazou [Thu, 24 Nov 2016 15:01:32 +0000 (15:01 +0000)]
re PR rtl-optimization/78437 (invalid sign-extend conversion in REE pass)

PR rtl-optimization/78437
* ree.c (get_uses): New function.
(combine_reaching_defs): When a copy is needed, return false if any
reaching use of the source register reads it in a mode larger than
the mode it is set in and WORD_REGISTER_OPERATIONS is true.

From-SVN: r242839

7 years agoDump probability for edges a frequency for BBs
Martin Liska [Thu, 24 Nov 2016 12:58:45 +0000 (13:58 +0100)]
Dump probability for edges a frequency for BBs

* gimple-pretty-print.c (dump_edge_probability): New function.
(dump_gimple_switch): Dump label edge probabilities.
(dump_gimple_cond): Likewise.
(dump_gimple_label): Dump
(dump_gimple_bb_header): Dump basic block frequency.
(pp_cfg_jump): Replace e->dest argument with e.
(dump_implicit_edges): Likewise.
* tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at):
Use gimple_bb (at) instead of at->bb.
* gcc.dg/builtin-unreachable-6.c: Update test to not to scan
parts for frequencies/probabilities.
* gcc.dg/pr34027-1.c: Likewise.
* gcc.dg/strict-overflow-2.c: Likewise.
* gcc.dg/tree-ssa/20040703-1.c: Likewise.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: Likewise.
* gcc.dg/tree-ssa/pr32044.c: Likewise.
* gcc.dg/tree-ssa/vector-3.c: Likewise.
* gcc.dg/tree-ssa/vrp101.c: Likewise.
* gcc.dg/tree-ssa/dump-2.c: New test.

From-SVN: r242837

7 years agocommon.opt (flimit-function-alignment): New.
Bernd Schmidt [Thu, 24 Nov 2016 12:54:56 +0000 (12:54 +0000)]
common.opt (flimit-function-alignment): New.

gcc/
* common.opt (flimit-function-alignment): New.
* doc/invoke.texi (-flimit-function-alignment): Document.
* emit-rtl.h (struct rtl_data): Add max_insn_address field.
* final.c (shorten_branches): Set it.
* varasm.c (assemble_start_function): Limit alignment if
requested.

gcc/testsuite/
* gcc.target/i386/align-limit.c: New test.

From-SVN: r242836

7 years agore PR tree-optimization/71595 (ICE on valid code at -O2 and -O3 on x86_64-linux-gnu...
Richard Biener [Thu, 24 Nov 2016 12:25:22 +0000 (12:25 +0000)]
re PR tree-optimization/71595 (ICE on valid code at -O2 and -O3 on x86_64-linux-gnu: in check_loop_closed_ssa_use, at tree-ssa-loop-manip.c:704)

2016-11-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71595
* cfgloopmanip.h (remove_path): Add irred_invalidated and
loop_closed_ssa_invalidated parameters, defaulted to NULL.
* cfgloopmanip.c (remove_path): Likewise, pass them along to
called functions.  Only fix irred flags if the caller didn't
request state.
* tree-ssa-loop-ivcanon.c (unloop_loops): Use add_bb_to_loop.
(unloop_loops): Pass irred_invalidated and loop_closed_ssa_invalidated
to remove_path.

* gcc.dg/torture/pr71595.c: New testcase.

From-SVN: r242835

7 years agore PR rtl-optimization/78120 (If conversion no longer performed)
Bernd Schmidt [Thu, 24 Nov 2016 12:22:16 +0000 (12:22 +0000)]
re PR rtl-optimization/78120 (If conversion no longer performed)

PR rtl-optimization/78120
* ifcvt.c (noce_conversion_profitable_p): Check original cost in all
cases, and additionally test against max_seq_cost for speed
optimization.
(noce_process_if_block): Compute an estimate for the original cost when
optimizing for speed, using the minimum of then and else block costs.

testsuite/
PR rtl-optimization/78120
* gcc.target/i386/pr78120.c: New test.

From-SVN: r242834

7 years agore PR rtl-optimization/78120 (If conversion no longer performed)
Bernd Schmidt [Thu, 24 Nov 2016 12:17:52 +0000 (12:17 +0000)]
re PR rtl-optimization/78120 (If conversion no longer performed)

PR rtl-optimization/78120
* rtlanal.c (insn_rtx_cost): Use set_rtx_cost.

From-SVN: r242833

7 years agore PR rtl-optimization/78120 (If conversion no longer performed)
Bernd Schmidt [Thu, 24 Nov 2016 12:16:47 +0000 (12:16 +0000)]
re PR rtl-optimization/78120 (If conversion no longer performed)

PR rtl-optimization/78120
* config/i386/i386.c (ix86_rtx_costs): Fully handle SETs.

From-SVN: r242832

7 years agomatch.pd: Refine type conversion in result expr for below pattern: (cond (cmp (convert1?
Bin Cheng [Thu, 24 Nov 2016 12:09:19 +0000 (12:09 +0000)]
match.pd: Refine type conversion in result expr for below pattern: (cond (cmp (convert1?

* match.pd: Refine type conversion in result expr for below pattern:
(cond (cmp (convert1? x) c1) (convert2? x) c2) -> (minmax (x c)).

From-SVN: r242831

7 years agore PR middle-end/78429 (ICE in set_value_range, at tree-vrp.c on non-standard boolean)
Eric Botcazou [Thu, 24 Nov 2016 12:02:53 +0000 (12:02 +0000)]
re PR middle-end/78429 (ICE in set_value_range, at tree-vrp.c on non-standard boolean)

PR middle-end/78429
* tree.h (wi::fits_to_boolean_p): New predicate.
(wi::fits_to_tree_p): Use it for boolean types.
* tree.c (int_fits_type_p): Likewise.

From-SVN: r242829

7 years agocp_parser_range_for: use safe_push instead of quick_push (PR
Martin Liska [Thu, 24 Nov 2016 11:26:12 +0000 (11:26 +0000)]
cp_parser_range_for: use safe_push instead of quick_push (PR

PR bootstrap/78493
* parser.c (cp_parser_range_for): Use safe_push instead of quick_push.
PR bootstrap/78493
* g++.dg/cpp1z/decomp18.C: New test.

From-SVN: r242828

7 years agoldp_stp_1.c: Add -mcpu=generic.
Naveen H.S [Thu, 24 Nov 2016 10:24:15 +0000 (10:24 +0000)]
ldp_stp_1.c: Add -mcpu=generic.

2016-11-23  Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

* gcc.target/aarch64/ldp_stp_1.c : Add -mcpu=generic.
* gcc.target/aarch64/store-pair-1.c : Likewise.

From-SVN: r242827

7 years agore PR middle-end/71762 (~X & Y to X < Y doesn't work for uninitialized values)
Richard Biener [Thu, 24 Nov 2016 09:45:01 +0000 (09:45 +0000)]
re PR middle-end/71762 (~X & Y to X < Y doesn't work for uninitialized values)

2016-11-23  Richard Biener  <rguenther@suse.de>

PR middle-end/71762
* match.pd ((~X & Y) -> X < Y, (X & ~Y) -> Y < X,
(~X | Y) -> X <= Y, (X | ~Y) -> Y <= X): Remove.

* gcc.dg/torture/pr71762-1.c: New testcase.
* gcc.dg/torture/pr71762-2.c: Likewise.
* gcc.dg/torture/pr71762-3.c: Likewise.
* gcc.dg/tree-ssa/forwprop-28.c: XFAIL.

From-SVN: r242822

7 years agofmaxmin.c: Add -fno-vect-cost-model.
Naveen H.S [Thu, 24 Nov 2016 09:42:36 +0000 (09:42 +0000)]
fmaxmin.c: Add -fno-vect-cost-model.

2016-11-23  Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

* gcc.target/aarch64/fmaxmin.c : Add -fno-vect-cost-model.
* gcc.target/aarch64/fmul_fcvt_2.c : Likewise.
* gcc.target/aarch64/vect-abs-compile.c : Likewise.
* gcc.target/aarch64/vect-clz.c : Likewise.
* gcc.target/aarch64/vect-fcm-eq-d.c : Likewise.
* gcc.target/aarch64/vect-fcm-ge-d.c : Likewise.
* gcc.target/aarch64/vect-fcm-gt-d.c : Likewise.
* gcc.target/aarch64/vect-fmovd-zero.c : Likewise.
* gcc.target/aarch64/vect-fmovd.c : Likewise.
* gcc.target/aarch64/vect-fmovf-zero.c : Likewise.
* gcc.target/aarch64/vect-fmovf.c : Likewise.
* gcc.target/aarch64/vect_ctz_1.c : Likewise.

From-SVN: r242821

7 years agoFix print_node for CONSTRUCTORs
Martin Liska [Thu, 24 Nov 2016 09:42:18 +0000 (10:42 +0100)]
Fix print_node for CONSTRUCTORs

* print-tree.c (struct bucket): Remove.
(print_node): Add new argument which drives whether a tree node
is printed briefly or not.
(debug_tree): Replace a custom hash table with hash_set<T>.
* print-tree.h (print_node): Add the argument.

From-SVN: r242820

7 years agonios2.c (nios2_init_libfuncs): Add ATTRIBUTE_UNUSED.
Chung-Lin Tang [Thu, 24 Nov 2016 09:28:02 +0000 (09:28 +0000)]
nios2.c (nios2_init_libfuncs): Add ATTRIBUTE_UNUSED.

2016-11-24  Chung-Lin Tang  <cltang@codesourcery.com>

* config/nios2/nios2.c (nios2_init_libfuncs): Add ATTRIBUTE_UNUSED.

From-SVN: r242819

7 years agore PR target/78458 (LRA ICE building libgcc for powerpc-linux-gnuspe e500v2)
Peter Bergner [Thu, 24 Nov 2016 02:07:51 +0000 (20:07 -0600)]
re PR target/78458 (LRA ICE building libgcc for powerpc-linux-gnuspe e500v2)

gcc/
PR target/78458
* config/rs6000/rs6000.h (HARD_REGNO_CALLER_SAVE_MODE): Return MODE
if it is at least NREGS wide.

gcc/testsuite/
PR target/78458
* gcc.target/powerpc/pr78458.c: New.

From-SVN: r242818

7 years agoDaily bump.
GCC Administrator [Thu, 24 Nov 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242817

7 years agoFix e500 offset handling for TImode.
Joseph Myers [Wed, 23 Nov 2016 23:34:05 +0000 (23:34 +0000)]
Fix e500 offset handling for TImode.

Given my previous fix for a missing insn pattern for e500, building
glibc runs into an assembler error "Error: operand out of range (256
is not between 0 and 248)".  This comes from an insn:

(insn 115 1209 1210 (set (reg:DF 27 27 [orig:294 _129 ] [294])
        (subreg:DF (mem/c:TI (plus:SI (reg/f:SI 1 1)
                    (const_int 256 [0x100])) [14 %sfp+256 S16 A128]) 0)) 1909 {*frob_df_ti}
     (nil))

This patch adjusts the offset handling for TImode - and TDmode and
PTImode in case such subregs can arise for them - to be the same as
for TFmode, so that proper SPE offset checks are made in the
TARGET_E500_DOUBLE case.

This allows the glibc build to complete.  Testing shows 372 FAILs
across the gcc, g++ and libstdc++ testsuites; more cleanup is
certainly needed, but this gets to the point where the toolchain at
least builds so it's possible to compare test results when fixing
bugs.

* config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p): For
TARGET_E500_DOUBLE. handle TDmode, TImode and PTImode the same as
TFmode, IFmode and KFmode.

From-SVN: r242814

7 years agoAdd another e500 subreg pattern.
Joseph Myers [Wed, 23 Nov 2016 23:32:54 +0000 (23:32 +0000)]
Add another e500 subreg pattern.

Building glibc for powerpc-linux-gnuspe --enable-e500-double, given
the patch <https://gcc.gnu.org/ml/gcc-patches/2016-11/msg02404.html>
applied, fails with errors such as:

../sysdeps/ieee754/ldbl-128ibm/s_modfl.c: In function '__modfl':
../sysdeps/ieee754/ldbl-128ibm/s_modfl.c:91:1: error: unrecognizable insn:
 }
 ^
(insn 31 30 32 2 (set (reg:DF 203)
        (subreg:DF (reg:TI 202) 8)) "../sysdeps/ieee754/ldbl-128ibm/s_modfl.c":44 -1
     (nil))
../sysdeps/ieee754/ldbl-128ibm/s_modfl.c:91:1: internal compiler error: in extract_insn, at recog.c:2311

This patch adds an insn pattern similar to various patterns already
present to handle extracting such a subreg.  This allows the glibc
build to get further, until it runs into an assembler error for which
I have another patch.

gcc:
* config/rs6000/spe.md (*frob_<SPE64:mode>_ti_8): New insn
pattern.

gcc/testsuite:
* gcc.c-torture/compile/20161123-1.c: New test.

From-SVN: r242813

7 years agocombine: Query can_change_dest_mode before changing dest mode
Segher Boessenkool [Wed, 23 Nov 2016 23:30:38 +0000 (00:30 +0100)]
combine: Query can_change_dest_mode before changing dest mode

As reported in https://gcc.gnu.org/ml/gcc-patches/2016-11/msg02388.html .

Changing the mode of a hard register can lead to problems, or at least
it can make worse code if the result will need reloads.

* combine.c (change_zero_ext): Only change the mode of a hard register
destination if can_change_dest_mode holds for that.

From-SVN: r242812

7 years ago* varasm.c (assemble_name): Increase buffer size for name.
Jeff Law [Wed, 23 Nov 2016 22:48:45 +0000 (15:48 -0700)]
* varasm.c (assemble_name): Increase buffer size for name.

From-SVN: r242810

7 years ago* config/i386/i386.md: Move some insn patterns around.
Uros Bizjak [Wed, 23 Nov 2016 22:25:12 +0000 (23:25 +0100)]
* config/i386/i386.md: Move some insn patterns around.

From-SVN: r242809

7 years ago* config/spu/spu.md (floatunsdidf2): Remove unused local variable.
Jeff Law [Wed, 23 Nov 2016 22:17:29 +0000 (15:17 -0700)]
* config/spu/spu.md (floatunsdidf2): Remove unused local variable.

From-SVN: r242807

7 years ago* doc/extend.texi: Constify first argument to __builtin_object_size.
Jakub Kicinski [Wed, 23 Nov 2016 22:05:18 +0000 (22:05 +0000)]
* doc/extend.texi: Constify first argument to __builtin_object_size.

From-SVN: r242804

7 years agoopth-gen.awk: Use unsigned shifts for bit masks.
Bernd Edlinger [Wed, 23 Nov 2016 21:53:12 +0000 (21:53 +0000)]
opth-gen.awk: Use unsigned shifts for bit masks.

2016-11-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>

* opth-gen.awk: Use unsigned shifts for bit masks.  Allow all bits
to be used.  Add brackets around macro argument.

From-SVN: r242803

7 years agore PR fortran/78297 (ICE in finish_equivalences, at fortran/trans-common.c:1246)
Steven G. Kargl [Wed, 23 Nov 2016 21:44:05 +0000 (21:44 +0000)]
re PR fortran/78297 (ICE in finish_equivalences, at fortran/trans-common.c:1246)

2016-11-23  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/78297
* trans-common.c (finish_equivalences): Do not dereference a NULL pointer.

2016-11-23  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/78297
* gfortran.dg/pr78297.f90: New test.

From-SVN: r242802

7 years ago* gcc.target/powerpc/builtins-3.c: Add -maltivec and -mvsx options.
David Edelsohn [Wed, 23 Nov 2016 21:06:28 +0000 (21:06 +0000)]
* gcc.target/powerpc/builtins-3.c: Add -maltivec and -mvsx options.

From-SVN: r242800

7 years agoi386.md (*<any_or:code>hi_1): Fix operand 2 constraints.
Uros Bizjak [Wed, 23 Nov 2016 20:23:44 +0000 (21:23 +0100)]
i386.md (*<any_or:code>hi_1): Fix operand 2 constraints.

* config/i386/i386.md (*<any_or:code>hi_1): Fix operand 2 constraints.

From-SVN: r242796

7 years agore PR sanitizer/69278 (Confusion option handling for -sanitize-recovery=alll)
Jakub Jelinek [Wed, 23 Nov 2016 19:51:27 +0000 (20:51 +0100)]
re PR sanitizer/69278 (Confusion option handling for -sanitize-recovery=alll)

PR sanitizer/69278
* opts.c (parse_sanitizer_options): For -fsanitize=undefined,
restore enabling also SANITIZE_UNREACHABLE and SANITIZE_RETURN.

* g++.dg/ubsan/return-7.C: New test.
* c-c++-common/ubsan/unreachable-4.c: New test.

From-SVN: r242795

7 years agore PR tree-optimization/78482 (wrong code at -O3 in both 32-bit and 64-bit modes...
Jakub Jelinek [Wed, 23 Nov 2016 19:50:23 +0000 (20:50 +0100)]
re PR tree-optimization/78482 (wrong code at -O3 in both 32-bit and 64-bit modes on x86_64-linux-gnu)

PR tree-optimization/78482
* gcc.dg/torture/pr78482.c (c, d): Use signed char instead of char.
(bar): New function.
(main): Call bar instead of printf.

From-SVN: r242794

7 years agore PR middle-end/69183 (ICE when using OpenMP PRIVATE keyword in OMP DO loop not...
Jakub Jelinek [Wed, 23 Nov 2016 19:28:41 +0000 (20:28 +0100)]
re PR middle-end/69183 (ICE when using OpenMP PRIVATE keyword in OMP DO loop not explicitly encapsulated in OMP PARALLEL region)

PR middle-end/69183
* omp-low.c (build_outer_var_ref): Change lastprivate argument
to code, pass it recursively, adjust uses.  For OMP_CLAUSE_PRIVATE
on worksharing constructs, treat it like clauses on simd construct.
Formatting fix.
(lower_rec_input_clauses): For OMP_CLAUSE_PRIVATE_OUTER_REF pass
OMP_CLAUSE_PRIVATE as last argument to build_outer_var_ref.
(lower_lastprivate_clauses): Pass OMP_CLAUSE_LASTPRIVATE instead
of true as last argument to build_outer_var_ref.

* gfortran.dg/gomp/pr69183.f90: New test.

From-SVN: r242793

7 years agore PR target/78230 (Compile pr66178.c fail for mips64el-elf with N64 abi)
Kito Cheng [Wed, 23 Nov 2016 19:20:33 +0000 (19:20 +0000)]
re PR target/78230 (Compile pr66178.c fail for mips64el-elf with N64 abi)

PR target/78230
* gcc.dg/torture/pr66178.c (test): Use uintptr_t instead of int.
(test2) Ditto.

From-SVN: r242792

7 years agoi386.md (*movqi_internal): Calculate mode attribute of alternatives 7,8,9 depending...
Uros Bizjak [Wed, 23 Nov 2016 19:05:53 +0000 (20:05 +0100)]
i386.md (*movqi_internal): Calculate mode attribute of alternatives 7,8,9 depending on TARGET_AVX512DQ.

* gcc.target/config/i386.md (*movqi_internal): Calculate mode
attribute of alternatives 7,8,9 depending on TARGET_AVX512DQ.
<TYPE_MSKMOV>: Emit kmovw for MODE_HI insn mode attribute.
(*k<logic><mode>): Calculate mode attribute depending on
TARGET_AVX512DQ.  Emit k<logic>w for MODE_HI insn mode attribute.
(*andqi_1): Calculate mode attribute of alternative 3 depending
on TARGET_AVX512DQ.  Emit kandw for MODE_HI insn mode attribute.
(kandn<mode>): Calculate mode attribute of alternative 2 depending
on TARGET_AVX512DQ.  Emit kandnw for MODE_HI insn mode attribute.
(kxnor<mode>): Merge insn patterns using SWI1248_AVX512BW mode
iterator.  Calculate mode attribute of alternative 1 depending
on TARGET_AVX512DQ.  Emit kxnorw for MODE_HI insn mode attribute.
(*one_cmplqi2_1): Calculate mode attribute of alternative 2 depending
on TARGET_AVX512DQ.  Emit knotw for MODE_HI insn mode attribute.

From-SVN: r242791

7 years agore PR c++/77907 (Add "const" to argument of constexpr constructor causes the object...
Jakub Jelinek [Wed, 23 Nov 2016 18:45:27 +0000 (19:45 +0100)]
re PR c++/77907 (Add "const" to argument of constexpr constructor causes the object to be left in unconstructed state)

PR c++/77907
* cp-gimplify.c (cp_fold) <case CALL_EXPR>: When calling constructor
and maybe_constant_value returns non-CALL_EXPR, create INIT_EXPR
with the object on lhs and maybe_constant_value returned expr on rhs.

* g++.dg/cpp0x/pr77907.C: New test.

From-SVN: r242790

7 years agoOpenMP offloading to NVPTX: libgomp changes
Alexander Monakov [Wed, 23 Nov 2016 18:36:41 +0000 (21:36 +0300)]
OpenMP offloading to NVPTX: libgomp changes

* Makefile.am (libgomp_la_SOURCES): Add atomic.c, icv.c, icv-device.c.
* Makefile.in. Regenerate.
* configure.ac [nvptx*-*-*] (libgomp_use_pthreads): Set and use it...
(LIBGOMP_USE_PTHREADS): ...here; new define.
* configure: Regenerate.
* config.h.in: Likewise.
* config/posix/affinity.c: Move to...
* affinity.c: ...here (new file).  Guard use of Pthreads-specific
interface by LIBGOMP_USE_PTHREADS.
* critical.c: Split out GOMP_atomic_{start,end} into...
* atomic.c: ...here (new file).
* env.c: Split out ICV definitions into...
* icv.c: ...here (new file) and...
* icv-device.c: ...here. New file.
* config/linux/lock.c (gomp_init_lock_30): Move to generic lock.c.
(gomp_destroy_lock_30): Ditto.
(gomp_set_lock_30): Ditto.
(gomp_unset_lock_30): Ditto.
(gomp_test_lock_30): Ditto.
(gomp_init_nest_lock_30): Ditto.
(gomp_destroy_nest_lock_30): Ditto.
(gomp_set_nest_lock_30): Ditto.
(gomp_unset_nest_lock_30): Ditto.
(gomp_test_nest_lock_30): Ditto.
* lock.c: New.
* config/nvptx/lock.c: New.
* config/nvptx/bar.c: New.
* config/nvptx/bar.h: New.
* config/nvptx/doacross.h: New.
* config/nvptx/error.c: New.
* config/nvptx/icv-device.c: New.
* config/nvptx/mutex.h: New.
* config/nvptx/pool.h: New.
* config/nvptx/proc.c: New.
* config/nvptx/ptrlock.h: New.
* config/nvptx/sem.h: New.
* config/nvptx/simple-bar.h: New.
* config/nvptx/target.c: New.
* config/nvptx/task.c: New.
* config/nvptx/team.c: New.
* config/nvptx/time.c: New.
* config/posix/simple-bar.h: New.
* libgomp.h: Guard pthread.h inclusion.  Include simple-bar.h.
(gomp_num_teams_var): Declare.
(struct gomp_thread_pool): Change threads_dock member to
gomp_simple_barrier_t.
[__nvptx__] (gomp_thread): New implementation.
(gomp_thread_attr): Guard by LIBGOMP_USE_PTHREADS.
(gomp_thread_destructor): Ditto.
(gomp_init_thread_affinity): Ditto.
* team.c: Guard uses of Pthreads-specific interfaces by
LIBGOMP_USE_PTHREADS.  Adjust all uses of threads_dock.
(gomp_free_thread) [__nvptx__]: Do not call 'free'.

* config/nvptx/alloc.c: Delete.
* config/nvptx/barrier.c: Ditto.
* config/nvptx/fortran.c: Ditto.
* config/nvptx/iter.c: Ditto.
* config/nvptx/iter_ull.c: Ditto.
* config/nvptx/loop.c: Ditto.
* config/nvptx/loop_ull.c: Ditto.
* config/nvptx/ordered.c: Ditto.
* config/nvptx/parallel.c: Ditto.
* config/nvptx/priority_queue.c: Ditto.
* config/nvptx/sections.c: Ditto.
* config/nvptx/single.c: Ditto.
* config/nvptx/splay-tree.c: Ditto.
* config/nvptx/work.c: Ditto.

* testsuite/libgomp.fortran/fortran.exp (lang_link_flags): Pass
-foffload=-lgfortran in addition to -lgfortran.
* testsuite/libgomp.oacc-fortran/fortran.exp (lang_link_flags): Ditto.

* plugin/plugin-nvptx.c: Include <limits.h>.
(struct targ_fn_descriptor): Add new fields.
(struct ptx_device): Ditto.  Set them...
(nvptx_open_device): ...here.
(nvptx_adjust_launch_bounds): New.
(nvptx_host2dev): Allow NULL 'nvthd'.
(nvptx_dev2host): Ditto.
(GOMP_OFFLOAD_get_caps): Add GOMP_OFFLOAD_CAP_OPENMP_400.
(link_ptx): Adjust log sizes.
(nvptx_host2dev): Allow NULL 'nvthd'.
(nvptx_dev2host): Ditto.
(nvptx_set_clocktick): New.  Use it...
(GOMP_OFFLOAD_load_image): ...here.  Set new targ_fn_descriptor
fields.
(GOMP_OFFLOAD_dev2dev): New.
(nvptx_adjust_launch_bounds): New.
(nvptx_stacks_size): New.
(nvptx_stacks_alloc): New.
(nvptx_stacks_free): New.
(GOMP_OFFLOAD_run): New.
(GOMP_OFFLOAD_async_run): New (stub).

Co-Authored-By: Dmitry Melnik <dm@ispras.ru>
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r242789