Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uber 8.0 #10

Open
wants to merge 3,783 commits into
base: uber-8.0
Choose a base branch
from
Open

Uber 8.0 #10

wants to merge 3,783 commits into from

Conversation

kondors1995
Copy link

No description provided.

ebotcazou and others added 30 commits February 28, 2018 14:14
	(is_char_array): Take a type instead of a declaration.
	(dump_ada_array_type): Likewise.
	(is_simple_enum): Minor tweak.
	(dump_ada_enum_type): New function extracted from...
	(dump_ada_node) <ENUMERAL_TYPE>: ...here.  Invoke it.
	<INTEGER_TYPE>: Remove unreachable code.
	<RECORD_TYPE>: Likewise.  Minor tweaks.
	(dump_nested_type) <ARRAY_TYPE>: Adjust to above changes.
	<ENUMERAL_TYPE>: New case.
	<RECORD_TYPE>: Factor out common code.
	(dump_ada_declaration) <ARRAY_TYPE>: Adjust to above changes.
	Minor tweaks.  Deal with enumeral types.
	(dump_ada_structure): Minor tweaks.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258067 138bc75d-0d04-0410-961f-82ee72b054a4
	* libgnat/i-cexten.ads (Float_128): New type.
c-family/
	* c-ada-spec.c (dump_ada_node) <NULLPTR_TYPE>: New case.
	<REAL_TYPE>: Deal specifically with _Float128/__float128.


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

gcc/testsuite:

	PR preprocessor/84517
	* g++.dg/cpp0x/udlit-macros.C: Expect a warning for ""__FILE__.

libcpp:

	PR preprocessor/84517
	* lex.c (is_macro_not_literal_suffix): New function.
	(lex_raw_string, lex_string): Use is_macro_not_literal_suffix to
	decide when to issue -Wliteral-suffix warnings.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258069 138bc75d-0d04-0410-961f-82ee72b054a4
	PR tree-optimization/84584
	* graphite-scop-detection.c (scop_detection::add_scop): Discard
	SCoPs with fake exit edge.

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


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258070 138bc75d-0d04-0410-961f-82ee72b054a4
	* gcc.target/powerpc/pr83399.c: Only run on Linux.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258071 138bc75d-0d04-0410-961f-82ee72b054a4
Revision 258001 doesn't change config/i386/i386.opt.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258073 138bc75d-0d04-0410-961f-82ee72b054a4
	superfluous parentheses and trailing spaces.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258074 138bc75d-0d04-0410-961f-82ee72b054a4
	* stor-layout.c (update_alignment_for_field): For
	targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
	&& !DECL_PACKED (field), do the alignment update, just use
	only desired_align instead of MAX (type_align, desired_align)
	as the alignment.
	(place_field): Don't do known_align < desired_align handling
	early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
	is non-NULL, instead do it after rli->prev_field handling and
	only if not within a bitfield word.  For DECL_PACKED (field)
	use type_align of BITS_PER_UNIT.

	* gcc.dg/bf-ms-layout.c: Revert 2012-04-26 changes.
	* gcc.dg/bf-ms-layout-2.c: Revert 2012-02-23 changes.
	* gcc.dg/bf-ms-layout-4.c: New test.
	* gcc.dg/bf-ms-layout-5.c: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258075 138bc75d-0d04-0410-961f-82ee72b054a4
	PR fortran/83901
	* trans-stmt.c (trans_associate_var): Make sure that the se
	expression is a pointer type before converting it to the symbol
	backend_decl type.

2018-02-28  Paul Thomas  <[email protected]>

	PR fortran/83901
	* gfortran.dg/associate_37.f90: New test.

	PR fortran/83344
	* gfortran.dg/associate_36.f90: Add Steve Kargl as contributer.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258076 138bc75d-0d04-0410-961f-82ee72b054a4
…g/ext/attr-pure.C fail

gcc/cp/ChangeLog:

	* decl.c (duplicate_decls): Fully merge attributes const, pure,
	and malloc.

gcc/testsuite/ChangeLog:

	* g++.dg/ext/attr-malloc-3.C: New test.
	* g++.dg/ext/attr-const.C: Adjust.  Xfail assertions failing due
	to pre-existing problems.
	* g++.dg/ext/attr-pure.C: Same.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258077 138bc75d-0d04-0410-961f-82ee72b054a4
	instead of warning_at with conditional singular and plural messages
	where possible.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258078 138bc75d-0d04-0410-961f-82ee72b054a4
	PR c++/83503
	* pt.c (INCLUDE_STRING): Remove define.
	(warn_spec_missing_attributes): Use pretty_printer instead of
	std::string.  Fix up inform call so that the list of attributes
	is in %s argument.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258079 138bc75d-0d04-0410-961f-82ee72b054a4
	* parser.c (cp_parser_attributes_opt): Formatting fix.
	(cp_parser_skip_balanced_tokens, cp_parser_skip_gnu_attributes_opt,
	cp_parser_skip_std_attribute_spec_seq, cp_parser_skip_attributes_opt):
	New functions.
	(cp_parser_member_declaration): Use cp_parser_skip_attributes_opt
	instead of tentative parse to peek over optional attribute tokens
	to check for CPP_COLON after them.

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


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258080 138bc75d-0d04-0410-961f-82ee72b054a4
        * gcc.target/powerpc/pr84014.c: Use ilp32, not -m32 option.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258081 138bc75d-0d04-0410-961f-82ee72b054a4
(powerpc-ibm-aix[789]*): Default to AIX 7.2.
* config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
* config/rs6000/aix72.h: New file.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258082 138bc75d-0d04-0410-961f-82ee72b054a4
	* pt.c (determine_specialization): Check ref-qualifier.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258085 138bc75d-0d04-0410-961f-82ee72b054a4
	* c-c++-common/Warray-bounds-2.c: Declare helper static to avoid
	-fpic test failures.
	* c-c++-common/Wrestrict-2.c: Same.
	* c-c++-common/Wstringop-truncation.c: Same.
	* gcc.dg/Warray-bounds-22.c: Same.
	* gcc.dg/Wstringop-overflow.c: Same.
	* gcc.dg/attr-alloc_size-3.c (unsigned_range): Same.
	(signed_range): Same.
	(unsigned_anti_range): Same.
	* gcc.dg/attr-alloc_size-4.c (unsigned_range): Same.
	(signed_range): Same.
	(unsigned_anti_range): Same.
	* gcc.dg/attr-alloc_size-7.c: Same.
	* gcc.dg/attr-alloc_size-8.c: Same.
	* gcc.dg/builtin-alloc-size.c: Same.
	* gcc.dg/builtin-stpncpy.c: Same.
	* gcc.dg/builtins-nonnull.c: Same.
	* gcc.dg/nonnull-4.c (g16_1_3_5_7_11_13): Same.
	* gcc.dg/pr79214.c: Same.
	* gcc.dg/tree-ssa/builtin-snprintf-warn-1.c: Same.
	* gcc.dg/tree-ssa/builtin-snprintf-warn-2.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-5.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-11.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-12.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-13.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-14.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-15.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-19.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-9.c: Same.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258089 138bc75d-0d04-0410-961f-82ee72b054a4
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258092 138bc75d-0d04-0410-961f-82ee72b054a4
2018-03-01  Tom de Vries  <[email protected]>

	PR rtl-optimization/83327
	* lra-int.h (hard_regs_spilled_into): Declare.
	* lra.c (hard_regs_spilled_into): Define.
	(init_reg_info): Init hard_regs_spilled_into.
	* lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
	* lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
	(process_bb_lives): Handle hard_regs_spilled_into.
	(lra_create_live_ranges_1): Before doing liveness propagation, clear
	regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258093 138bc75d-0d04-0410-961f-82ee72b054a4
RTL code needs to be consistent about whether it uses the stack
pointer, the frame pointer or the argument pointer to access a
given part of the frame.  alias.c used this to divide accesses
into three independent areas.

The problem in the PR is that we did this for HARD_FRAME_POINTER_REGNUM
even when the register wasn't being used as a frame pointer.  We can't
do that because the frame pointer is then just any old allocatable
register and could certainly point to info accessed through the
argument pointer or stack pointer.

2018-03-01  Richard Sandiford  <[email protected]>

gcc/
	PR rtl-optimization/84538
	* alias.c (init_alias_target): Add commentary.
	(init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
	a unique base value if the frame pointer is not eliminated
	to the stack pointer.

gcc/testsuite/
	PR rtl-optimization/84538
	* gcc.dg/torture/pr84538.c: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258094 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/testsuite/
	PR rtl-optimization/84528
	* gcc.dg/torture/pr84538.c: Rename to...
	* gcc.dg/torture/pr84528.c: ...this.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258095 138bc75d-0d04-0410-961f-82ee72b054a4
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258096 138bc75d-0d04-0410-961f-82ee72b054a4
	PR fortran/84538
	* class.c (class_array_ref_detected): Remove the condition that
	there be no reference after the array reference.
	(find_intrinsic_vtab): Remove excess whitespace.
	* trans-array.c (gfc_conv_scalarized_array_ref): Rename 'tmp'
	as 'base and call build_class_array_ref earlier.

2018-03-01  Paul Thomas  <[email protected]>

	PR fortran/84538
	* gfortran.dg/class_array_23.f03: New test.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258097 138bc75d-0d04-0410-961f-82ee72b054a4
	PR fortran/84219
	* target-memory.c (gfc_interpret_derived): Assert that BT_VOID
	components are caf tokens.
	(gfc_target_interpret_expr): Treat BT_VOID expressions as
	integers.

2018-03-01  Paul Thomas  <[email protected]>

	PR fortran/84219
	* gfortran.dg/coarray_47.f90: New test.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258098 138bc75d-0d04-0410-961f-82ee72b054a4
This issue was caught with assert checking enabled but is not a
functional bug as XINT(x, 0) happens to overlay INTVAL(x) anyway.

gcc/
	* config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
	XINT with INTVAL.
	(mips_final_postscan_insn): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258099 138bc75d-0d04-0410-961f-82ee72b054a4
	PR debug/84645
	* dwarf2out.c (gen_variable_die): Properly handle late VLA
	type annotation with LTO when debug was disabled at compile-time.

	* gfortran.dg/lto/pr84645_0.f90: New testcase.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258100 138bc75d-0d04-0410-961f-82ee72b054a4
2018-03-01  Martin Liska  <[email protected]>

	PR sanitizer/82484
	* sanopt.c (sanitize_rewrite_addressable_params): Do not handle
	volatile arguments.
2018-03-01  Martin Liska  <[email protected]>

	PR sanitizer/82484
	* gcc.dg/asan/pr82484.c: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258101 138bc75d-0d04-0410-961f-82ee72b054a4
	* decl.c (start_decl): Handle partial specialization of member
	variable template.
	* pt.c (determine_specialization): Allow partial specialization
	of member variable template without specializing enclosing class.
	(process_partial_specialization): Improve error message.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258102 138bc75d-0d04-0410-961f-82ee72b054a4
	PR c++/79410
	* g++.dg/torture/pr79410.C: New.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258106 138bc75d-0d04-0410-961f-82ee72b054a4
	* constexpr.c (require_rvalue_constant_expression): New function.
	* cp-tree.h: Declare it.
	* semantics.c (finish_static_assert): Use it instead of
	require_potential_rvalue_constant_expression.

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


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258107 138bc75d-0d04-0410-961f-82ee72b054a4
jakub and others added 30 commits March 12, 2018 23:39
	* tree.c (stabilize_reference_1): Return save_expr (e) for
	STATEMENT_LIST even if it doesn't have side-effects.

	* g++.dg/debug/pr84704.C: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258470 138bc75d-0d04-0410-961f-82ee72b054a4
	* constexpr.c (find_array_ctor_elt): Don't use elt reference after
	first potential CONSTRUCTOR_ELTS reallocation.  Convert dindex to
	sizetype.  Formatting fixes.

	* g++.dg/cpp1y/constexpr-84808.C: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258471 138bc75d-0d04-0410-961f-82ee72b054a4
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258474 138bc75d-0d04-0410-961f-82ee72b054a4
	* config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
	on the last operand.

	* gcc.target/i386/avx512f-pr84786-1.c: New test.
	* gcc.target/i386/avx512f-pr84786-2.c: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258475 138bc75d-0d04-0410-961f-82ee72b054a4
	* reg-stack.c (change_stack): Change update_end var from int to
	rtx_insn *, if non-NULL don't update just BB_END (current_block), but
	also call set_block_for_insn on the newly added insns and rescan.

	* g++.dg/ext/pr84828.C: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258476 138bc75d-0d04-0410-961f-82ee72b054a4
	* config/i386/i386.md (round<mode>2): For 387 fancy math, disable
	pattern if -ftrapping-math -fno-fp-int-builtin-inexact.

	* gcc.target/i386/pr84827.c: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258477 138bc75d-0d04-0410-961f-82ee72b054a4
	* stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
	characters starting at p contain '\0' character, don't look beyond
	that.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258478 138bc75d-0d04-0410-961f-82ee72b054a4
	* match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
	integer_pow2p@2 and test integer_pow2p in condition.
	(A < 0 ? C : 0): Similarly for @1.

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


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258479 138bc75d-0d04-0410-961f-82ee72b054a4
2018-03-13  Martin Liska  <[email protected]>

	PR ipa/84658.
	* (sem_item_optimizer::sem_item_optimizer): Initialize new
	vector.
	(sem_item_optimizer::~sem_item_optimizer): Release it.
	(sem_item_optimizer::merge_classes): Register variable aliases.
	(sem_item_optimizer::fixup_pt_set): New function.
	(sem_item_optimizer::fixup_points_to_sets): Likewise.
	* ipa-icf.h: Declare new variables and functions.
2018-03-13  Martin Liska  <[email protected]>

	PR ipa/84658.
	* g++.dg/ipa/pr84658.C: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258480 138bc75d-0d04-0410-961f-82ee72b054a4
	* ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
	incomplete types.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258481 138bc75d-0d04-0410-961f-82ee72b054a4
	* MAINTAINERS: Add entry for SVE maintainership.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258486 138bc75d-0d04-0410-961f-82ee72b054a4
One advantage of the new permute handling compared to the old way is
that we can now easily take advantage of the vectoriser's divmod patterns
for SVE.

2018-03-13  Richard Sandiford  <[email protected]>

gcc/
	* config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
	(UNSPEC_UMUL_HIGHPART): New constants.
	(MUL_HIGHPART): New int iteraor.
	(su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
	* config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
	define_expand.
	(*<su>mul<mode>3_highpart): New define_insn.

gcc/testsuite/
	* gcc.target/aarch64/sve/mul_highpart_1.c: New test.
	* gcc.target/aarch64/sve/mul_highpart_1_run.c: Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258487 138bc75d-0d04-0410-961f-82ee72b054a4
tlsdesc calls are guaranteed to preserve all Advanced SIMD registers,
but are not guaranteed to preserve the SVE extension of them.
The calls also don't preserve the SVE predicate registers.

The long-term plan for handling the SVE vector registers is CLOBBER_HIGH,
which adds a clobber equivalent of TARGET_HARD_REGNO_CALL_PART_CLOBBERED.
The pattern can then directly model the fact that the low 128 bits are
preserved and the upper bits are clobbered.

However, it's too late now for that to be included in GCC 8, so this
patch conservatively treats the whole vector register as being clobbered.
This has the obvious disadvantage that compiling for SVE can make NEON
code worse, but I don't think there's much we can do about that until
CLOBBER_HIGH is in.

2018-03-13  Richard Sandiford  <[email protected]>

gcc/
	* config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
	(V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
	(P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
	(P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
	(tlsdesc_small_<mode>): Turn a define_expand and use
	tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
	(tlsdesc_small_advsimd_<mode>): ...this.
	(tlsdesc_small_sve_<mode>): New pattern.

gcc/testsuite/
	* gcc.target/aarch64/sve/tls_1.c: New test.
	* gcc.target/aarch64/sve/tls_2.C: Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258488 138bc75d-0d04-0410-961f-82ee72b054a4
I hadn't realised that on big-endian targets, VEC_UNPACK*HI_EXPR unpacks
the low-numbered lanes and VEC_UNPACK*LO_EXPR unpacks the high-numbered
lanes.  This meant that both the SVE patterns and the handling of
fully-masked loops were wrong.

The patch deals with that by making sure that all vec_unpack* optabs
are define_expands, using BYTES_BIG_ENDIAN to choose the appropriate
define_insn.  This in turn meant that we can get rid of the duplication
between the signed and unsigned patterns for predicates.  (We provide
implementations of both the signed and unsigned optabs because the sign
doesn't matter for predicates: every element contains only one
significant bit.)

Also, the float unpacks need to unpack one half of the input vector,
but the unpacked upper bits are "don't care".  There are two obvious
ways of handling that: use an unpack (filling with zeros) or use a ZIP
(filling with a duplicate of the low bits).  The code previously used
unpacks, but the sequence involved a subreg that is semantically an
element reverse on big-endian targets.  Using the ZIP patterns avoids
that, and at the moment there's no reason to prefer one over the other
for performance reasons, so the patch switches to ZIP unconditionally.
As the comment says, it would be easy to optimise this later if UUNPK
turns out to be better for some implementations.

2018-03-13  Richard Sandiford  <[email protected]>

gcc/
	* tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
	Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
	for big-endian.
	* config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
	* config/aarch64/aarch64-sve.md
	(*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
	(aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
	(*extend<mode><Vwide>2): Rename to...
	(aarch64_sve_extend<mode><Vwide>2): ...this.
	(vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
	renaming the old pattern to...
	(aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
	unsigned packs.
	(vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
	define_expand, renaming the old pattern to...
	(aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
	(*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
	(vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
	account when deciding which SVE instruction the optab should use.
	(vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.

gcc/testsuite/
	* gcc.target/aarch64/sve/unpack_fcvt_signed_1.c: Expect zips rather
	than unpacks.
	* gcc.target/aarch64/sve/unpack_fcvt_unsigned_1.c: Likewise.
	* gcc.target/aarch64/sve/unpack_float_1.c: Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258489 138bc75d-0d04-0410-961f-82ee72b054a4
…w character types

gcc/c-family/ChangeLog:

	PR tree-optimization/84725
	* c-attribs.c (handle_nonstring_attribute): Allow attribute nonstring
	with all three narrow character types, including their qualified forms.

gcc/testsuite/ChangeLog:

	PR tree-optimization/84725
	* c-c++-common/Wstringop-truncation-4.c: New test.
	* c-c++-common/attr-nonstring-5.c: New test.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258492 138bc75d-0d04-0410-961f-82ee72b054a4
	* parser.c (cp_parser_parameter_declaration_clause): Check
	parser->default_arg_ok_p.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258493 138bc75d-0d04-0410-961f-82ee72b054a4
	* parser.c (cp_parser_simple_type_specifier): Pedwarn about auto
	parameter even without -Wpedantic.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258494 138bc75d-0d04-0410-961f-82ee72b054a4
	PR target/84743
	* config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
	reassociation for int modes.




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

This patch fixes improper handling of comma operator expression in a
struct field initializer as described in:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46921

Currently, function output_init_element () does not evaluate the left
hand expression in a comma operator that's used for a struct
initializer field if the right hand side is zero-sized. However, the
left hand expression must be evaluated if it's found to have side
effects (for example, a function call).

Patch was successfully bootstrapped and tested on x86_64-linux.

gcc/c:
2018-03-13  David Pagan  <[email protected]>

	PR c/46921
	* c-typeck.c (output_init_element): Ensure field initializer
	expression is always evaluated if there are side effects.

gcc/testsuite:
2018-03-13  David Pagan  <[email protected]>

	PR c/46921
	* gcc.dg/pr46921.c: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258497 138bc75d-0d04-0410-961f-82ee72b054a4
RISC-V relies on aggressive linker relaxation to get good code size.  As
a result no text symbol addresses can be known until link time, which
means that alignment must be handled during the link.  This alignment
pass is essentially just another linker relaxation, so this has the
unfortunate side effect that linker relaxation is required for
correctness on many RISC-V targets.

The RISC-V assembler has supported an ".option norelax" for a long time
because there are situations in which linker relaxation is a bad idea --
the canonical example is when trying to materialize the initial value of
the global pointer into a register, which would otherwise be relaxed to
a NOP.  We've been relying on users who want to disable relaxation for
an entire link to pass "-Wl,--no-relax", but that still relies on the
linker relaxing R_RISCV_ALIGN to handle alignment despite it not being
strictly necessary.

This patch adds a GCC option, "-mno-relax", that disable linker
relaxation by adding ".option norelax" to the top of every generated
assembly file.  The assembler is smart enough to handle alignment at
assemble time for files that have never emitted a relaxable relocation,
so this is sufficient to really disable all relaxations in the linker,
which results in significantly faster link times for large objects.

This also has the side effect of allowing toolchains that don't support
linker relaxation (LLVM and the Linux module loader) to function
correctly.  Toolchains that don't support linker relaxation should
default to "-mno-relax" and error when presented with any R_RISCV_ALIGN
relocation as those need to be handled for correctness.

gcc/ChangeLog

2018-03-13  Palmer Dabbelt  <[email protected]>

        * config/riscv/riscv.opt (mrelax): New option.
        * config/riscv/riscv.c (riscv_file_start): Emit ".option
        "norelax" when riscv_mrelax is disabled.
        * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258499 138bc75d-0d04-0410-961f-82ee72b054a4
	* pt.c (tsubst_pack_expansion): Set cp_unevaluated_operand while
	instantiating dummy parms.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258500 138bc75d-0d04-0410-961f-82ee72b054a4
	* pt.c (convert_nontype_argument): Handle rvalue references.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258501 138bc75d-0d04-0410-961f-82ee72b054a4
	* pt.c (instantiate_decl): Clear fn_context for lambdas.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258502 138bc75d-0d04-0410-961f-82ee72b054a4
	* decl.c (duplicate_decls): For redefinition of built-in, use error
	and return error_mark_node.  For redeclaration, return error_mark_node
	rather than olddecl if !flag_permissive.

	* g++.dg/ext/pr84843-1.C: New test.
	* g++.dg/ext/pr84843-2.C: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258503 138bc75d-0d04-0410-961f-82ee72b054a4
	PR target/83712
	* lra-assigns.c (find_all_spills_for): Ignore uninteresting
	pseudos.
	(assign_by_spills): Return a flag of reload assignment failure.
	Do not process the reload assignment failures.  Do not spill other
	reload pseudos if they has the same reg class.  Update n if
	necessary.
	(lra_assign): Add a return arg.  Set up from the result of
	assign_by_spills call.
	(find_reload_regno_insns, lra_split_hard_reg_for): New functions.
	* lra-constraints.c (split_reg): Add a new arg.  Use it instead of
	usage_insns if it is not NULL.
	(spill_hard_reg_in_range): New function.
	(split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
	* lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
	function prototypes.
	(lra_assign): Change prototype.
	* lra.c (lra): Add code to deal with fails by splitting hard reg
	live ranges.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258504 138bc75d-0d04-0410-961f-82ee72b054a4
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258508 138bc75d-0d04-0410-961f-82ee72b054a4
	PR fortran/61775
	* gfortran.dg/pr61775.f90: New test.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258509 138bc75d-0d04-0410-961f-82ee72b054a4
	* check.c (gfc_check_kill_sub):  Remove check for INTEGER(4) or (8).
	* intrinsic.c (add_functions): Remove reference to gfc_resolve_kill.
	(add_subroutines): Remove reference to gfc_resolve_kill_sub.
	* intrinsic.texi: Update documentation.
	* iresolve.c (gfc_resolve_kill, gfc_resolve_kill_sub): Remove.
	* trans-decl.c (gfc_build_intrinsic_function_decls):  Add
	gfor_fndecl_kill and gfor_fndecl_kill_sub
	* trans-intrinsic.c (conv_intrinsic_kill, conv_intrinsic_kill_sub): new
	functions.
	(gfc_conv_intrinsic_function): Use conv_intrinsic_kill.
        (gfc_conv_intrinsic_subroutine): Use conv_intrinsic_kill_sub.
	* trans.h: Declare gfor_fndecl_kill and gfor_fndecl_kill_sub.
 
2018-03-13  Steven G. Kargl  <[email protected]>

	* libgfortran/gfortran.map: Remove _gfortran_kill_i4,
	_gfortran_kill_i4_sub, _gfortran_kill_i8, and _gfortran_kill_i8_sub.
	Add _gfortran_kill and _gfortran_kill_sub.
	* libgfortran/intrinsics/kill.c: Eliminate _gfortran_kill_i4,
	_gfortran_kill_i4_sub, _gfortran_kill_i8, and _gfortran_kill_i8_sub.
	Add _gfortran_kill and _gfortran_kill_sub.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258511 138bc75d-0d04-0410-961f-82ee72b054a4
	* decl.c (check_default_argument): Unshare an initializer list.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258512 138bc75d-0d04-0410-961f-82ee72b054a4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant