Commit Graph

153991 Commits

Author SHA1 Message Date
Ville Voutilainen
e257141f07 re PR c++/80812 (ICE: in build_value_init_noctor, at cp/init.c:483)
PR c++/80812

cp/

PR c++/80812
* method.c (constructible_expr): Strip array types before calling
build_value_init.

libstdc++/

PR c++/80812
* testsuite/20_util/is_constructible/80812.cc: New.

From-SVN: r248788
2017-06-01 14:09:41 +03:00
Eric Botcazou
2d16708fa1 re PR ada/80921 (cross compiling fails to build Ada shared libraries)
PR ada/80921
	* configure.ac (default_gnatlib_target): Remove bogus condition.
	(have_getipinfo): Tweak.
	* configure: Regenerate.

From-SVN: r248785
2017-06-01 10:51:15 +00:00
Paolo Carlini
ac853c9071 re PR c++/80896 ([[nodiscard]] is ignored for functions returning references)
/cp
2017-06-01  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80896
	* cvt.c (convert_to_void): Possibly call maybe_warn_nodiscard
	for case INDIRECT_REF too in the main switch.

/testsuite
2017-06-01  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80896
	* g++.dg/cpp1z/nodiscard5.C: New.

From-SVN: r248784
2017-06-01 10:20:27 +00:00
Claudiu Zissulescu
7841f13c80 [ARC] Fix tst_movb pattern.
The tst_movb pattern is missing guarding when spitting.

gcc/
2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (tst_movb): Add guard when splitting.

testsuite/
2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>

	* gcc.target/arc/pr9001195952.c: New test.

From-SVN: r248783
2017-06-01 11:43:10 +02:00
Claudiu Zissulescu
19dc47524f [ARC] Test against frame_pointer_needed in arc_can_eliminate.
arc_can_eliminate is using arc_frmae_pointer_required() which is wrong
as the frame_pointer_needed can be set on different conditions. Fix it
by calling arc_frame_pointer_needed().

gcc/
2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (arc_can_eliminate): Test against
	arc_frame_pointer_needed.

From-SVN: r248782
2017-06-01 11:42:59 +02:00
Claudiu Zissulescu
2daad50b02 [ARC] Prevent moving stores to the frame before the stack adjustment.
If the stack pointer is needed, emit a special barrier that will prevent
the scheduler from moving stores to the frame before the stack adjustment.

For example:

[snip]
	mov_s	fp,sp 	; frame pointer is set here
[snip]
	st	r1,[fp,-24]	; frame pointer is used here
[snip]
	sub_s	sp,sp,0x20	; stack pointer adjusted

So we can easily see that any interrupt between the `st` and `sub`
instruction will lead to faulty code as the interrupt routine will use
a faulty sp register, and, potentially, overwriting the value stored
by 'st' instruction. Thus, adding a scheduler barrier will force the
compiler to emit the `sub` instruction before the store one.

2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (arc_expand_prologue): Emit a special barrier
	to prevent store reordering.
	* config/arc/arc.md (UNSPEC_ARC_STKTIE): Define.
	(type): Add block type.
	(stack_tie): Define special instruction to be used in
	expand_prologue.

From-SVN: r248781
2017-06-01 11:42:49 +02:00
Claudiu Zissulescu
6f70ebc3d1 [ARC] Update (non)commutative_binary_comparison patterns.
gcc/
2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (commutative_binary_comparison): Remove 'I'
	constraint. It is not valid for the pattern.
	(noncommutative_binary_comparison): Likewise.

From-SVN: r248780
2017-06-01 11:42:39 +02:00
Claudiu Zissulescu
30c0df2aa3 [ARC] Change predicate movv2hi to avoid scaled addresses.
2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/simdext.md (movv2hi_insn): Change predicate to avoid
	scaled addresses.

From-SVN: r248779
2017-06-01 11:42:27 +02:00
Claudiu Zissulescu
23c98523af [ARC] Allow r30 to be used by the reg-alloc.
gcc/
2018-06-01  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.c (arc_conditional_register_usage): Allow r30 to
	be used by the reg-alloc.

From-SVN: r248778
2017-06-01 11:42:06 +02:00
Claudiu Zissulescu
0f75b66845 [ARC] Avoid use of hard registers before reg-alloc.
gcc/
2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (mulsi3): Avoid use of hard registers before
	reg-alloc when having mul64 or mul32x16 instructions.
	(mulsidi3): Likewise.
	(umulsidi3): Likewise.
	(mulsi32x16): New pattern.
	(mulsi64): Likewise.
	(mulsidi64): Likewise.
	(umulsidi64): Likewise.
	(MUL32x16_REG): Define.
	(mul64_600): Use MUL32x16_REG.
	(mac64_600): Likewise.
	(umul64_600): Likewise.
	(umac64_600): Likewise.

From-SVN: r248777
2017-06-01 11:41:46 +02:00
Claudiu Zissulescu
f533fdf6cc [ARC] Make mulsi for A700 pattern commutative.
gcc/
2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (mulsi3_700): Make it commutative.

From-SVN: r248776
2017-06-01 11:41:13 +02:00
Tom de Vries
f525e390d5 Require label_values for some test-cases
2017-06-01  Tom de Vries  <tom@codesourcery.com>

	* c-c++-common/pr43395.c: Add dg-require-effective-target label_values.
	* gcc.c-torture/compile/asmgoto-1.c: Same.
	* gcc.dg/20000707-1.c: Same.
	* gcc.dg/pr38700.c: Same.
	* gcc.dg/pr70169.c: Same.
	* gcc.dg/pr80112.c: Same.
	* gcc.dg/torture/pr51071-2.c: Same.
	* gcc.dg/torture/pr51071.c: Same.
	* gcc.dg/tree-ssa/alias-34.c: Same.

From-SVN: r248775
2017-06-01 09:13:09 +00:00
Jose E. Marchesi
96e1c37da7 sparc.md (*zero_extendsidi2_insn_sp64): Set insn type for movstouw.
gcc/ChangeLog:
	* config/sparc/sparc.md (*zero_extendsidi2_insn_sp64): Set insn
	type for movstouw.
	(*sign_extendsidi2_insn): Likewise for movstosw.

From-SVN: r248774
2017-06-01 10:43:22 +02:00
Pierre-Marie de Rodat
9285616cbd DWARF: for variants, produce unsigned discr. when debug type is unsigned
In Ada, the Character type is supposed to be unsigned.  However,
depending on the sign of C char types, GNAT can materialize it as a
signed type for code generation purposes.  When this is the case, GNAT
also attach a debug type to it so it is represented as an unsigned base
type in the debug information.

This change adapts record variant parts processing in the DWARF back-end
so that when the debug type of discriminant is unsigned while
discriminant values are signed themselves, we output unsigned
discriminant values in DWARF.

gcc/

	* dwarf2out.c (get_discr_value): Call the get_debug_type hook on
	the type of the input discriminant value.  Convert the
	discriminant value of signedness vary.

gcc/testsuite/

	* gnat.dg/debug11.adb: New testcase.

From-SVN: r248773
2017-06-01 08:36:57 +00:00
Volker Reichelt
3fa4634c92 c.opt (Wcatch-value): New shortcut for Wcatch-value=1.
* c.opt (Wcatch-value): New shortcut for Wcatch-value=1.
        (Wcatch-value=1): Enable by -Wall.

        * doc/invoke.texi (-Wcatch-value): Document new shortcut.
        Add to -Wall section.

From-SVN: r248772
2017-06-01 08:10:24 +00:00
Richard Biener
48932682a5 re PR middle-end/66313 (Unsafe factorization of a*b+a*c)
2017-06-01  Richard Biener  <rguenther@suse.de>

	PR middle-end/66313
	* fold-const.c (fold_plusminus_mult_expr): If the factored
	factor may be zero use a wrapping type for the inner operation.
	* tree-tailcall.c (independent_of_stmt_p): Pass in to_move bitmap
	and handle moved defs.
	(process_assignment): Properly guard the unary op case.  Return a
	tri-state indicating that moving the stmt before the call may allow
	to continue.  Pass through to_move.
	(find_tail_calls): Handle moving unrelated defs before
	the call.

	* c-c++-common/ubsan/pr66313.c: New testcase.
	* gcc.dg/tree-ssa/loop-15.c: Adjust.

From-SVN: r248771
2017-06-01 08:05:24 +00:00
GCC Administrator
58cdd35b95 Daily bump.
From-SVN: r248770
2017-06-01 00:16:19 +00:00
Steven Munroe
fcb9912403 Fix up dg options to resolve make check failures Bill Seurer found
when compiling --with-cpu=power6.

2017-05-31  Steven Munroe  <munroesj@gcc.gnu.org>

	* gcc.target/powerpc/bmi2-pdep32-1.c: Add -mcpu=power7 to
        dg-options.  Change dg-require-effective-target powerpc_vsx_ok
        to vsx_hw.  Add dg-skip-if directive to disable this test if
	-mcpu overridden.
	* gcc.target/powerpc/bmi2-pdep64-1.c: Likewise.
	* gcc.target/powerpc/bmi2-pext32-1.c: Likewise.
	* gcc.target/powerpc/bmi2-pext64-1.c: Likewise.
	* gcc.target/powerpc/bmi2-pext64-1a.c: Add -mcpu=power7
	to dg-option.  Add dg-skip-if directive to disable this test
	for darwin.  Add dg-skip-if directive to disable this test if
	-mcpu overridden.

From-SVN: r248766
2017-06-01 00:15:51 +00:00
Ian Lance Taylor
30bc05cfcb libgo: support for sparc64 GNU/Linux
Fix lfstack code to work with sparc64 GNU/Linux address map.
    
    Force alignment of epollevent.  To make this work reliably, pass
    GOARCH explicitly to mkrsysinfo.sh.
    
    Patch by Vladimir Mezentsev.
    
    Reviewed-on: https://go-review.googlesource.com/44494

From-SVN: r248765
2017-05-31 21:36:42 +00:00
Segher Boessenkool
4f14911c80 Fix changelog of previous commit, the correct version is:
PR target/80618
	* config/rs6000/vector.md (*vector_uneq<mode>): Write the nor in the
	splitter result in the canonical way.

From-SVN: r248764
2017-05-31 23:09:41 +02:00
Segher Boessenkool
ba0ece3922 rs6000: Don't write "nor" as (not (ior () ())) (PR80618)
The canonical RTL for "nor" is (and (not ()) (not ())), and that is
indeed what we use in boolccv2df3_internal1.  So, the splitter for
*vector_uneq<mode> should use that form, not (not (ior () ())), which
does not match any pattern.


	PR target/80618
	* config/rs6000/rs6000.md (*vector_uneq<mode>): Write the nor in the
	splitter result in the canonical way.

From-SVN: r248763
2017-05-31 22:58:59 +02:00
Uros Bizjak
49fe486726 i386.md (*zero_extendsidi2): Enable alternative (?r, *Yj) also for 32bit target.
* config/i386/i386.md (*zero_extendsidi2): Enable alternative (?r, *Yj)
	also for 32bit target.  Update insn attributes.
	(zero-extendsidi2 splitter): Allow all registers for operand 1.

From-SVN: r248757
2017-05-31 20:33:30 +02:00
Sebastian Peryt
dc7401c0c6 * config/i386/avx512fintrin.h (_mm_mask_max_sd)
(_mm_maskz_max_sd, _mm_mask_max_ss, _mm_maskz_max_ss)
        (_mm_mask_min_sd, _mm_maskz_min_sd, _mm_mask_min_ss)
        (_mm_maskz_min_ss): New intrinsics.

testsuite/ChangeLog:

	* gcc.target/i386/avx512f-vmaxsd-1.c (_mm_mask_max_sd)
	(_mm_maskz_max_sd): Test new intrinsics.
	* gcc.target/i386/avx512f-vmaxsd-2.c (_mm_mask_max_sd)
	(_mm_maskz_max_sd): Test new intrinsics.
	* gcc.target/i386/avx512f-vmaxss-1.c (_mm_mask_max_ss)
	(_mm_maskz_max_ss): Test new intrinsics.
	* gcc.target/i386/avx512f-vmaxss-2.c (_mm_mask_max_ss)
	(_mm_maskz_max_ss): Test new intrinsics.
	* gcc.target/i386/avx512f-vminsd-1.c (_mm_mask_min_sd)
	(_mm_maskz_min_sd): Test new intrinsics.
	* gcc.target/i386/avx512f-vminsd-2.c (_mm_mask_min_sd)
	(_mm_maskz_min_sd): Test new intrinsics.
	* gcc.target/i386/avx512f-vminss-1.c (_mm_mask_min_ss)
	(_mm_maskz_min_ss): Test new intrinsics.
	* gcc.target/i386/avx512f-vminss-2.c (_mm_mask_min_ss)
	(_mm_maskz_min_ss): Test new intrinsics.

From-SVN: r248756
2017-05-31 20:26:44 +02:00
Jason Merrill
049a5d31b9 PR c++/80840 - ICE with constexpr and reference
* pt.c (convert_nontype_argument): Don't test whether a decl is
	value-dependent when binding to a reference.

From-SVN: r248749
2017-05-31 13:11:17 -04:00
Nathan Sidwell
91e920c939 cp-tree.h (lang_decl_slector): New enum.
* cp-tree.h (lang_decl_slector): New enum.
	(lang_decl_base): Make selector an enum.  Drop decomposition_p
	field.
	(lang_decl): Use enum for discrimination.
	(LANG_DECL_FN_CHECK, LANG_DECL_NS_CHECK, LANG_DECL_PARM_CHECK,
	LANG_DECL_DEOMP_CHECK): Use enum.
	(DECL_DECOMPOSITION_P): Use selector value.
	(SET_DECL_DECOMPOSITION_P): Delete.
	(retrofit_lang_decl): Lose SEL parm.
	(fit_decomposition_lang_decl): Declare.
	* decl.c (cp_finish_decomp, grokdeclarator): Use
	fit_decomposition_lang_decl.
	* lex.c (maybe_add_lang_decl_raw): New. Broken out of
	retrofit_lang_decl.
	(set_decl_linkage): New.  Broken out of retrofit_lang_decl.  Use
	enum.
	(fit_decomposition_lang_decl): Likewise.
	(retrofit_lang_decl): Use worker functions.
	(cxx_dup_lang_specific_decl): Use selector enum.
	(maybe_add_lang_type_raw): New.  Broken out of ...
	(cxx_make_type_name): ... here.  Call it.

From-SVN: r248748
2017-05-31 16:46:58 +00:00
Nathan Sidwell
3909991c7b * g++.dg/lookup/lambda1.C New.
From-SVN: r248747
2017-05-31 16:38:28 +00:00
Bin Cheng
0e510edb0d ivopt_mult_4.c: Explicitly check comparison on pointer should not be replaced.
gcc/testsuite
	* gcc.dg/tree-ssa/ivopt_mult_4.c: Explicitly check comparison
	on pointer should not be replaced.

From-SVN: r248746
2017-05-31 16:20:32 +00:00
Martin Liska
7f1b5019a5 Doxygen: transform ENUM_BITFIELD and comments starting with '/**'.
2017-05-31  Martin Liska  <mliska@suse.cz>

	* filter_params.py:
	Transform ENUM_BITFIELD and comments starting with '/**'

From-SVN: r248741
2017-05-31 14:08:36 +00:00
Martin Liska
67b8dbacf6 Change comment style to one we normally use.
2017-05-31  Martin Liska  <mliska@suse.cz>

	* tree-vect-loop.c (vect_create_epilog_for_reduction):
	Change comment style to one we normally use.
	(vectorizable_reduction): Likewise.
	(vectorizable_induction): Likewise.
	* tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
	(vectorizable_call): Likewise.
	(vectorizable_simd_clone_call): Likewise.
	(vectorizable_conversion): Likewise.
	(vectorizable_assignment): Likewise.
	(vectorizable_shift): Likewise.
	(vectorizable_operation): Likewise.
	(vectorizable_store): Likewise.
	(vectorizable_load): Likewise.
	* tree-vectorizer.h: Likewise.

From-SVN: r248740
2017-05-31 14:07:59 +00:00
David Malcolm
892c1fcec6 Port Doxygen support script from Perl to Python; add unittests
2017-05-31  David Malcolm  <dmalcolm@redhat.com>
	    Martin Liska  <mliska@suse.cz>

	* filter_params.py: New, porting the perl script to python,
	adding a test suite.
	* filter_gcc_for_doxygen_new: New file.

Co-Authored-By: Martin Liska <mliska@suse.cz>

From-SVN: r248739
2017-05-31 14:07:30 +00:00
Mikhail Maltsev
9fc5e7a443 GIMPLEFE: Handle missing labels in goto statements
gcc/c/

	PR testsuite/80580
	* gimple-parser.c (c_parser_gimple_if_stmt): Check for empty labels.

gcc/testsuite/

	PR testsuite/80580
	* gcc.dg/gimplefe-error-7.c: New test.

From-SVN: r248738
2017-05-31 13:47:51 +00:00
Martin Liska
afd88efc05 Fix configure.ac to respect --{enable,disable}-werror option.
2017-05-31  Martin Liska  <mliska@suse.cz>

	* configure.ac: Add handling of stage2_werror_flags to
	action-if-given and to action-if-not-given.
	* configure: Regenerate.

From-SVN: r248737
2017-05-31 13:35:41 +00:00
Alexander Monakov
a02d1ad2b2 passes.c: implement pre-ICE emergency dumping
* passes.c (emergency_dump_function): New.
	* tree-pass.h (emergency_dump_function): Declare.
	* plugin.c (plugins_internal_error_function): Remove.
	* plugin.h (plugins_internal_error_function): Remove declaration.
	* toplev.c (internal_error_function): New static function.  Use it...
	(general_init): ...here.

From-SVN: r248736
2017-05-31 16:26:54 +03:00
Graham Markall
1e466f0496 [ARC] Recognise add_n and sub_n in combine again
Since the combine pass canonicalises shift-add insns using plus and
ashift (as opposed to plus and mult which it previously used to do), it
no longer creates *add_n or *sub_n insns, as the patterns match plus and
mult only. The outcome of this is that some opportunities to generate
add{1,2,3} and sub{1,2,3} instructions are missed.

This change adds additional *add_n and *sub_n insns that match the
plus-ashift pattern. The original *add_n and *sub_n insns are still left
in, as they are sometimes generated later on by constant propagation.
The idea of adding these insns is modelled on the changes in:

  https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01882.html

which addresses a similar issue for the PA target.

For the small test cases that are added, even if the combine pass misses
the opportunity to generate addN or subN, constant propagation manages
to do so, so the rtl of the combine pass is checked.

gcc/ChangeLog:

        * config/arc/arc.c (arc_print_operand): Handle constant operands.
        (arc_rtx_costs): Add costs for new patterns.
        * config/arc/arc.md: Additional *add_n and *sub_n patterns.
        * config/arc/predicates.md: Add _1_2_3_operand predicate.

gcc/testsuite/ChangeLog:

        * gcc.target/arc/add_n-combine.c: New test.
        * gcc.target/arc/sub_n-combine.c: New test.

From-SVN: r248735
2017-05-31 14:15:33 +01:00
Jonathan Wakely
046a84762b PR libstdc++/80893 Fix null dereference in vector<bool>
PR libstdc++/80893
	* include/bits/stl_bvector.h (vector<bool>::_M_initialize): Avoid
	null pointer dereference when size is zero.
	* testsuite/23_containers/vector/bool/80893.cc: New.
	* testsuite/util/testsuite_allocator.h (PointerBase::PointerBase):
	Add non-explicit constructor from nullptr.
	(PointerBase::derived() const): Add const-qualified overload.

From-SVN: r248734
2017-05-31 13:41:45 +01:00
Richard Sandiford
bde63fdea4 [1/2] Add get_next_strinfo helper function
This patch just adds a helper function for getting the next strinfo
in a chain, since part 2 adds another place where we do that.

2017-05-16  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* tree-ssa-strlen.c (get_next_strinfo): New function.
	(get_stridx_plus_constant): Use it.
	(zero_length_string): Likewise.
	(adjust_related_strinfos): Likewise.
	(adjust_last_stmt): Likewise.

From-SVN: r248732
2017-05-31 12:26:03 +00:00
Richard Biener
89c88990a8 re PR target/80880 (internal compiler error: in ix86_expand_builtin)
2017-05-31  Richard Biener  <rguenther@suse.de>

	PR target/80880
	* config/i386/i386.c (ix86_expand_builtin): Remove assert
	for arg being an SSA name when expanding IX86_BUILTIN_BNDRET.

	* gcc.target/i386/pr80880.c: New testcase.

From-SVN: r248731
2017-05-31 12:09:51 +00:00
Richard Sandiford
748bbe7202 Alternative check for vector refs with same alignment
vect_find_same_alignment_drs uses the ddr dependence distance
to tell whether two references have the same alignment.  Although
that's safe with the current code, there's no particular reason
why a dependence distance of 0 should mean that the accesses start
on the same byte.  E.g. a reference to a full complex value could
in principle depend on a reference to the imaginary component.
A later patch adds support for this kind of dependence.

On the other side, checking modulo vf is pessimistic when the step
divided by the element size is a factor of 2.

This patch instead looks for cases in which the drs have the same
base, offset and step, and for which the difference in their constant
initial values is a multiple of the alignment.

2017-05-03  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* tree-vect-data-refs.c (vect_find_same_alignment_drs): Remove
	loop_vinfo argument and use of dependence distance vectors.
	Check instead whether the two references differ only in their
	initial value and assume that they have the same alignment if the
	difference is a multiple of the vector alignment.
	(vect_analyze_data_refs_alignment): Update call accordingly.

gcc/testsuite/
	* gcc.dg/vect/vect-103.c: Update wording of dump message.

From-SVN: r248730
2017-05-31 12:05:10 +00:00
Martin Liska
c9f1615102 Fix typo in a comment in cpuid.h (PR target/79155).
2017-05-31  Martin Liska  <mliska@suse.cz>

	PR target/79155
	* config/i386/cpuid.h: Fix typo in a comment in cpuid.h.

From-SVN: r248729
2017-05-31 11:40:13 +00:00
Bin Cheng
9cbd2d979c * tree-vect-loop-manip.c (create_intersect_range_checks_index)
(create_intersect_range_checks): Move from ...
	* tree-data-ref.c (create_intersect_range_checks_index)
	(create_intersect_range_checks): ... to here.
	(create_runtime_alias_checks): New function factored from ...
	* tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): ...
	here.  Call above function.
	* tree-data-ref.h (create_runtime_alias_checks): New function.

From-SVN: r248726
2017-05-31 09:03:27 +00:00
Bin Cheng
c7d7e2227f tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal segment length for dr_b and compute it in wide_int.
* tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal
	segment length for dr_b and compute it in wide_int.

	gcc/testsuite
	* gcc.dg/vect/pr80815-3.c: New test.

From-SVN: r248725
2017-05-31 09:01:36 +00:00
Prakhar Bahuguna
945bafd67a MAINTAINERS: Add self to Write After Approval
2017-05-31  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>

	* MAINTAINERS: Add self to Write After Approval

From-SVN: r248723
2017-05-31 08:25:25 +00:00
Richard Biener
ee1379be56 re PR tree-optimization/80906 (ICE in copy_loop_close_phi_args, at graphite-isl-ast-to-gimple.c:2094)
2017-05-31  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/80906
	* graphite-isl-ast-to-gimple.c (copy_loop_close_phi_nodes): Get
	and pass through iv_map.
	(copy_bb_and_scalar_dependences): Adjust.
	(translate_pending_phi_nodes): Likewise.
	(copy_loop_close_phi_args): Handle code-generating IVs instead
	of ICEing.

	* gcc.dg/graphite/pr80906.c: New testcase.

From-SVN: r248722
2017-05-31 07:09:21 +00:00
DJ Delorie
63d9caf904 configure.ac (strnlen): Add to AC_CHECK_DECLS.
* configure.ac (strnlen): Add to AC_CHECK_DECLS.
* configure: Likewise.
* config.in: Add HACE_DECL_STRNLEN.

From-SVN: r248721
2017-05-31 00:16:45 -04:00
GCC Administrator
96cbc38bfe Daily bump.
From-SVN: r248719
2017-05-31 00:16:25 +00:00
Tom de Vries
bcce980ef4 Test if host compiler supports -std=c++11 in ms-sysv.exp
2017-05-30  Tom de Vries  <tom@codesourcery.com>

	PR testsuite/80910
	* gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp: Exit with status
	unsupported if host compiler does not support c++11.
	(host_supports_c++11): New proc.

From-SVN: r248701
2017-05-30 22:00:57 +00:00
Martin Sebor
ef9200aa35 re PR c/80731 (poor -Woverflow warnings, missing detail)
gcc/testsuite/ChangeLog:
	PR c/80731
	* g++.dg/ext/utf16-4.C: Relax test.
	* gcc.dg/fixed-point/int-warning.c: Adjust.

From-SVN: r248700
2017-05-30 15:27:35 -06:00
Jason Merrill
3c1f5a3a6d PR c++/80856 - ICE with local extern in template
* semantics.c (finish_call_expr): Replace a local extern overload
	set in a template with the IDENTIFIER_NODE.

From-SVN: r248699
2017-05-30 17:13:27 -04:00
David Malcolm
f012c8ef4b C++ template type diff printing
gcc/ChangeLog:
	* diagnostic-color.c (color_dict): Add "type-diff".
	(parse_gcc_colors): Update comment.
	* doc/invoke.texi (Diagnostic Message Formatting Options): Add
	-fdiagnostics-show-template-tree and -fno-elide-type.
	(GCC_COLORS): Add type-diff to example.
	(type-diff=): New.
	(-fdiagnostics-show-template-tree): New.
	(-fno-elide-type): New.
	* pretty-print.c (pp_format): Pass quote and formatters[argno] to
	the pp_format_decoder callback.  Call any m_format_postprocessor's
	"handle" method.
	(pretty_printer::pretty_printer): Initialize
	m_format_postprocessor.
	(pretty_printer::~pretty_printer): Delete any
	m_format_postprocessor.
	* pretty-print.h (printer_fn): Add bool and const char **
	parameters.
	(class format_postprocessor): New class.
	(struct pretty_printer::format_decoder): Document the new
	parameters.
	(struct pretty_printer::m_format_postprocessor): New field.
	* tree-diagnostic.c (default_tree_printer): Update for new
	bool and const char ** params.
	* tree-diagnostic.h (default_tree_printer): Likewise.

gcc/c/ChangeLog:
	* c-objc-common.c (c_tree_printer): Gain bool and const char **
	parameters.

gcc/c-family/ChangeLog:
	* c-format.c (gcc_cxxdiag_char_table): Add 'H' and 'I' to
	format_chars.
	* c.opt (fdiagnostics-show-template-tree): New option.
	(felide-type): New option.

gcc/cp/ChangeLog:
	* call.c (perform_implicit_conversion_flags): Convert
	"from %qT to %qT" to "from %qH to %qI" in diagnostic.
	(print_conversion_rejection): Replace pairs of %qT with
	%qH and %qI in various places.
	(build_user_type_conversion_1): Likewise.
	(build_integral_nontype_arg_conv): Likewise.
	(build_conditional_expr_1): Likewise.
	(convert_like_real): Likewise.
	(convert_arg_to_ellipsis): Likewise.
	(joust): Likewise.
	(initialize_reference): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	(cp_convert_to_pointer): Likewise.
	(convert_to_reference): Likewise.
	(ocp_convert): Likewise.
	* error.c (cp_printer): Gain bool and const char ** parameters.
	(struct deferred_printed_type): New struct.
	(class cxx_format_postprocessor): New class.
	(cxx_initialize_diagnostics): Wire up a cxx_format_postprocessor
	to pp->m_format_postprocessor.
	(comparable_template_types_p): New function.
	(newline_and_indent): New function.
	(arg_to_string): New function.
	(print_nonequal_arg): New function.
	(print_template_differences): New function.
	(type_to_string_with_compare): New function.
	(print_template_tree_comparison): New function.
	(append_formatted_chunk): New function.
	(add_quotes): New function.
	(cxx_format_postprocessor::handle): New function.
	(defer_phase_2_of_type_diff): New function.
	(cp_printer): Add "quoted" and "buffer_ptr" params.  Implement
	%H and %I.
	* typeck.c (cp_build_binary_op): Replace pairs of %qT with
	%qH and %qI in various places.
	(convert_member_func_to_ptr): Likewise.
	(build_reinterpret_cast_1): Likewise.
	(convert_for_assignment): Likewise.
	* typeck2.c (check_narrowing): Likewise.

gcc/fortran/ChangeLog:
	* error.c (gfc_format_decoder): Update for new bool and
	const char ** params.

gcc/testsuite/ChangeLog:
	* g++.dg/plugin/plugin.exp (plugin_test_list): Add...
	* g++.dg/plugin/show-template-tree-color-no-elide-type.C: New
	test case.
	* g++.dg/plugin/show-template-tree-color.C: New test case.
	* g++.dg/plugin/show_template_tree_color_plugin.c: New plugin.
	* g++.dg/template/show-template-tree-2.C: New test case.
	* g++.dg/template/show-template-tree-3.C: New test case.
	* g++.dg/template/show-template-tree-4.C: New test case.
	* g++.dg/template/show-template-tree-no-elide-type.C: New test case.
	* g++.dg/template/show-template-tree.C: New test case.

From-SVN: r248698
2017-05-30 20:38:14 +00:00
Segher Boessenkool
3f8efe25d6 Remove gen_cell_microcode, warn_cell_microcode
-mno-gen-cell-microcode is a pain to handle correctly: it causes
different code generation for some very basic patterns, even patterns
specific to that option.  It also requires marking up many patterns,
which is a pain when adding new patterns or modifying existing ones
(first non-trivial step is finding the Cell BE manual!)

-mwarn-cell-microcode is very expensive, even more so after my recent
fix for PR43763; and it used to ICE for seven years before that fix.

This patch removes both these command line options (it leaves the
positive form of -mgen-cell-microcode, doing nothing, for
compatibility).

Where cc_reg_not_micro_cr0_operand was used, we now get the regular
cc_reg_not_cr0_operand.

One testcase used -mgen-cell-microcode and one its negation; both
are adjusted.


	* config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete.
	(lwa_operand): Delete rs6000_gen_cell_microcode test.
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
	rs6000_gen_cell_microcode code.
	(rs6000_final_prescan_insn): Delete.
	(rs6000_opt_vars): Delete the "gen-cell-microcode" and
	"warn-cell-microcode" entries.
	* config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete.
	* config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests
	throughout.  Change cc_reg_not_micro_cr0_operand to
	cc_reg_not_cr0_operand throughout.
	(*extendhi<mode>2_noload): Delete.
	* config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub.
	(mwarn-cell-microcode): Delete.
	* doc/invoke.texi (RS/6000 and PowerPC Options): Delete
	-mgen-cell-microcode and -mwarn-cell-microcode.

gcc/testsuite/
	* gcc.target/powerpc/shift-dot.c: Delete -mgen-cell-microcode from
	dg-options.
	* gfortran.dg/pr80107.f: Delete testcase.

From-SVN: r248695
2017-05-30 21:34:36 +02:00