Commit Graph

160234 Commits

Author SHA1 Message Date
Alexandre Oliva 23d63b459c [C++] [PR84231] overload on cond_expr in template
A non-type-dependent COND_EXPR within a template is reconstructed with
the original operands, after one with non-dependent proxies is built to
determine its result type.  This is problematic because the operands of
a COND_EXPR determined to be an rvalue may have been converted to denote
their rvalue nature.  The reconstructed one, however, won't have such
conversions, so lvalue_kind may not recognize it as an rvalue, which may
lead to e.g. incorrect overload resolution decisions.

If we mistake such a COND_EXPR for an lvalue, overload resolution might
regard a conversion sequence that binds it to a non-const reference as
viable, and then select that over one that binds it to a const
reference.  Only after template substitution would we rebuild the
COND_EXPR, realize it is an rvalue, and conclude the reference binding
is ill-formed, but at that point we'd have long discarded any alternate
candidates we could have used.

This patch modifies the logic that determines whether a
(non-type-dependent) COND_EXPR in a template is an lvalue, to rely on
its type, more specifically, on the presence of a REFERENCE_TYPE
wrapper.  In order to avoid a type bootstrapping problem, the
REFERENCE_TYPE that wraps the type of some such COND_EXPRs is
introduced earlier, so that we don't have to test for lvalueness of
the expression using the very code that we wish to change.


for  gcc/cp/ChangeLog

	PR c++/84231
	* tree.c (lvalue_kind): Use presence/absence of REFERENCE_TYPE
	only while processing template decls.
	* typeck.c (build_x_conditional_expr): Move wrapping of
	reference type around type...
	* call.c (build_conditional_expr_1): ... here.  Rename
	is_lvalue to is_glvalue.
	* parser.c (cp_parser_fold_expression): Catch REFERENCE_REF_P
	INDIRECT_REF of COND_EXPR too.

for  gcc/testsuite/ChangeLog

	PR c++/84231
	* g++.dg/pr84231.C: New.

From-SVN: r258271
2018-03-06 06:25:12 +00:00
Alexandre Oliva 2e1a7ecb2d [PR c++/84593] ice on braced init with uninit ref field
If an initializer expr is to be NULL in a ctor initializer list, we
ICE in picflag_from_initializer and elsewhere.

If we're missing an initializer for a reference field, we report the
error, but then build a zero initializer to avoid the ICE.

for  gcc/cp/ChangeLog

	PR c++/84593
	* init.c (build_zero_init_1): Zero-initialize references.

for  gcc/testsuite/ChangeLog

	PR c++/84593
	* g++.dg/cpp1y/pr84593.C: New.

From-SVN: r258270
2018-03-06 06:24:53 +00:00
Alexandre Oliva 1ea71a82f9 [PR c++/84492] stmt expr ending with overload
We ICEd when returning a stmt expr that ends with an overloaded
function, because instantiate_type did not know what to do with
STMT_EXPRs.  And it shouldn't have to: the expected type of a stmt
expr cannot be used to resolve its value: an unresolved overload
cannot supply the result of a stmt expr.  Catch that and report the
error in the stmt expr before we have a chance to instantiate it.

for  gcc/cp/ChangeLog

	PR c++/84492
	* semantics.c (finish_stmt_expr_expr): Reject unresolved
	overloads used as stmt expr values.

for  gcc/testsuite/ChangeLog

	PR c++/84492
	* g++.dg/pr84492.C: New.

From-SVN: r258269
2018-03-06 06:24:40 +00:00
Bill Schmidt 4900146ce0 rs6000-builtin.def (rs6000_speculation_barrier): Rename to ppc_speculation_barrier.
[gcc]

2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
	Rename to ppc_speculation_barrier.
	* config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
	__builtin_ppc_speculation_barrier.

[gcc/testsuite]

2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/spec-barr-1.c: Change called function name to
	__builtin_ppc_speculation_barrier.

From-SVN: r258268
2018-03-06 01:56:41 +00:00
GCC Administrator f75fbd29fb Daily bump.
From-SVN: r258267
2018-03-06 00:16:23 +00:00
Jason Merrill 91e534b0d4 PR c++/84708 - ICE with lambda in local class NSDMI.
* lambda.c (lambda_expr_this_capture): Handle local class NSDMI
	context.

From-SVN: r258264
2018-03-05 17:14:38 -05:00
Jakub Jelinek 9a25c5ce6e re PR target/84700 (ICE on 32-bit BE powerpc targets w/ -misel -O1)
PR target/84700
	* combine.c (combine_simplify_rtx): Don't try to simplify if
	if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
	are equal to x.

	* gcc.target/powerpc/pr84700.c: New test.

From-SVN: r258263
2018-03-05 23:13:58 +01:00
Jakub Jelinek 46cf7fa13b re PR c++/84684 (inserting random code / flags produces wrong code)
PR c++/84684
	* constexpr.c (constexpr_call_hasher::equal): Return false if
	lhs->hash != rhs->hash.  Change return 1 to return true and
	return 0 to return false.

From-SVN: r258262
2018-03-05 23:12:45 +01:00
Segher Boessenkool 34b01e681e rs6000: Don't align tiny loops to 32 bytes for POWER9
For POWER4..POWER8 we align loops of 5..8 instructions to 32 bytes
(instead of to 16 bytes) because that executes faster.  This is no
longer the case on POWER9, so we can just as well only align to 16
bytes.


	* config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
	to 32 bytes when compiling for POWER9.

From-SVN: r258260
2018-03-05 20:11:54 +01:00
Ian Lance Taylor 14710257c1 libgo: fix typo in mksysinfo.sh script
Fix a small typo in the mksysinfo.sh script (incorrect input
    file for a grep command).
    
    Reviewed-on: https://go-review.googlesource.com/98635

From-SVN: r258259
2018-03-05 18:44:44 +00:00
Nathan Sidwell f7af3ad637 [PR c++/84702] ICE with default tmpl arg of overload set
https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00227.html
	PR c++/84702
	* pt.c (process_template_arg): Mark lookup_keep on a default arg.

	PR c++/84702
	* g++.dg/lookup/pr84702.C: New.

From-SVN: r258258
2018-03-05 18:44:24 +00:00
Jakub Jelinek 537400180d re PR target/84564 (error: unable to find a register to spill with -mforce-indirect-call)
PR target/84564
	* config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
	regparm >= 3 with no arg reg available also for calls with
	flag_force_indirect_call.  Pass decl to ix86_function_regparm.

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

From-SVN: r258256
2018-03-05 17:24:43 +01:00
Marek Polacek a2460abb82 re PR c++/84707 (internal compiler error: Segmentation fault (tree_check()/duplicate_decls()))
PR c++/84707
	* decl.c (duplicate_decls): Check DECL_NAME before accessing
	UDLIT_OPER_P.

	* g++.dg/cpp0x/inline-ns10.C: New test.

From-SVN: r258255
2018-03-05 16:15:35 +00:00
Nathan Sidwell a5dccd4614 [PR c++/84694] ICE on template friend decl
https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00221.html
	PR c++/84694
	* friend.c (do_friend): Restore check for identifier_p inside
	TEMPLATE_ID_EXPR.

	PR c++/84694
	* g++.dg/template/pr84694.C: New.

From-SVN: r258254
2018-03-05 16:12:07 +00:00
Jakub Jelinek 8c6b5eb80f re PR target/84524 (-O3 causes behavior change)
PR target/84524
	* config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
	orig,vex.
	(*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.

	* gcc.c-torture/execute/pr84524.c: New test.
	* gcc.target/i386/avx512bw-pr84524.c: New test.

From-SVN: r258252
2018-03-05 17:01:03 +01:00
Peter Bergner 75a741e87b re PR target/84264 (ICE in rs6000_emit_le_vsx_store, at config/rs6000/rs6000.c:10367 starting with r256656)
gcc/
	PR target/84264
	* config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.

gcc/testsuite/
	PR target/84264
	* g++.dg/pr84264.C: New test.

From-SVN: r258251
2018-03-05 09:52:11 -06:00
Paolo Carlini 5625e74790 re PR c++/84618 (ICE in build_capture_proxy, at cp/lambda.c:460)
/cp
2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84618
	* parser.c (cp_parser_lambda_introducer): Reject any capture not
	involving a VAR_DECL or a PARM_DECL.

/testsuite
2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84618
	* g++.dg/cpp0x/lambda/lambda-ice29.C: New.
	* g++.dg/cpp0x/lambda/lambda-ice17.C: Adjust.
	* g++.dg/cpp0x/lambda/lambda-ice23.C: Likewise.

From-SVN: r258250
2018-03-05 15:40:15 +00:00
Richard Biener 800916ab50 re PR tree-optimization/84486 (code hoisting removes alignment assumption)
2018-03-05  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84486
	* tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
	When inserting a __builtin_assume_aligned call set the LHS
	SSA name alignment info accordingly.

From-SVN: r258249
2018-03-05 15:00:48 +00:00
Wilco Dijkstra b5b33e1134 [AArch64] PR84114: Avoid reassociating FMA
As discussed in the PR, the reassociation phase runs before FMAs are formed
and so can significantly reduce FMA opportunities.  Although reassociation
could be switched off, it helps in many cases, so a better alternative is to
only avoid reassociation of floating point additions.  This fixes the testcase
and gives 1% speedup on SPECFP2017, fixing the performance regression.

    gcc/
	PR tree-optimization/84114
	* config/aarch64/aarch64.c (aarch64_reassociation_width)
	Avoid reassociation of FLOAT_MODE addition.

From-SVN: r258248
2018-03-05 14:40:55 +00:00
Olga Makhotina 13b93d4b89 Enable WBOINVD and PCONFIG instructions.
2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>

Enable WBOINVD and PCONFIG instructions.

gcc/
	* common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
	OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
	OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
	(ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
	* config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
	* config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
	* config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
	and -mwbnoinvd.
	* config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
	__builtin_ia32_wbinvd): New builtins.
	(SPECIAL_ARGS2): New.
	* config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
	(SPECIAL_ARGS2): New.
	* config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
	(ix86_valid_target_attribute_inner_p): Ditto.
	(ix86_init_mmx_sse_builtins): Add special_args2.
	* config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
	TARGET_WBNOINVD_P): New.
	* config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
	(define_insn "wbinvd", define_insn "wbnoinvd"): New.
	* config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
	* config/i386/immintrin.h (_wbinvd): New intrinsic.
	* config/i386/pconfigintrin.h: New file.
	* config/i386/wbnoinvdintrin.h: Ditto.
	* config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
	* doc/invoke.texi (-mpconfig, -mwbnoinvd): New.

gcc/testsuite/
	* g++.dg/other/i386-2.C: Add -mpconfig and -mwbnoinvd.
	* g++.dg/other/i386-3.C: Ditto.
	* gcc.target/i386/sse-12.c: Ditto.
	* gcc.target/i386/sse-13.c: Ditto.
	* gcc.target/i386/sse-14.c: Ditto.
	* gcc.target/i386/sse-23.c: Add pconfig and wbnoinvd.
	* gcc.target/i386/wbinvd-1.c: New test.
	* gcc.target/i386/wbnoinvd-1.c: Ditto.
	* gcc.target/i386/pconfig-1.c: Ditto.

From-SVN: r258247
2018-03-05 15:37:54 +01:00
Pádraig Brady 35a313aaf2 [PR c++/84497] ref to undefined tls init
https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00209.html
	PR c++/84497
	* decl2.c (get_tls_init_fn): Check TYPE_HAS_TRIVIAL_DFLT too.

	PR c++/84497
	* g++.dg/cpp0x/pr84497.C: New.

Co-Authored-By: Jason Merrill <jason@redhat.com>
Co-Authored-By: Nathan Sidwell <nathan@acm.org>

From-SVN: r258244
2018-03-05 13:48:43 +00:00
Richard Biener 36a9f50ca9 re PR tree-optimization/84670 (ICE: in compute_antic_aux, at tree-ssa-pre.c:2148 with -O2 -fno-tree-dominator-opts)
2018-03-05  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84670
	* tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
	member.
	(BB_VISITED_WITH_VISITED_SUCCS): New define.
	(compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
	(compute_antic_aux): Only assert the number of values in ANTIC_IN
	doesn't grow if all successors (recursively) were visited at least
	once.

	* gcc.dg/pr84670-1.c: New testcase.
	* gcc.dg/pr84670-2.c: Likewise.
	* gcc.dg/pr84670-3.c: Likewise.
	* gcc.dg/pr84670-4.c: Likewise.

From-SVN: r258243
2018-03-05 13:18:12 +00:00
Richard Biener 144a822fec re PR tree-optimization/84650 ([graphite] ICE: Segmentation fault (in create_new_iv))
2018-03-05  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84650
	* tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
	if executed in the loop pipeline.

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

From-SVN: r258242
2018-03-05 12:49:07 +00:00
Paolo Carlini a0445a5fb1 re PR c++/82022 (constexpr lambda in template context: expression ‘<lambda>’ is not a constant expression)
2018-03-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/82022
	* g++.dg/cpp1z/constexpr-lambda20.C: New.

From-SVN: r258241
2018-03-05 10:19:11 +00:00
Sandra Loosemore e095eec19a configfiles.texi (Configuration Files): Move info about conditionalizing $target-protos.h to...
2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* doc/configfiles.texi (Configuration Files): Move info about
	conditionalizing $target-protos.h to...
	* doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
	differs from $target-protos.h.

From-SVN: r258240
2018-03-05 01:31:24 -05:00
Kito Cheng 142439c50c [NDS32] Implment setmem pattern.
gcc/
	* config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
	* config/nds32/nds32-multiple.md (setmemsi): Define.
	* config/nds32/nds32-memory-manipulation.c
	(nds32_gen_dup_4_byte_to_word_value): New.
	(emit_setmem_word_loop): New.
	(emit_setmem_byte_loop): New.
	(nds32_expand_setmem_loop): New.
	(nds32_expand_setmem_loop_v3m): New.
	(nds32_expand_setmem_unroll): New.
	(nds32_expand_setmem): New.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r258239
2018-03-05 02:27:30 +00:00
GCC Administrator 9322e1aa5c Daily bump.
From-SVN: r258238
2018-03-05 00:16:13 +00:00
Kito Cheng eab7aaedc7 [NDS32] Rename nds32_expand_movmemqi to nds32_expand_movmemsi and rewrite its implementation.
gcc/
	*config/nds32/nds32-memory-manipulation.c
	(nds32_emit_load_store): New.
	(nds32_emit_post_inc_load_store): New.
	(nds32_emit_mem_move): New.
	(nds32_emit_mem_move_block): New.
	(nds32_expand_movmemsi_loop_unknown_size): New.
	(nds32_expand_movmemsi_loop_known_size): New.
	(nds32_expand_movmemsi_loop): New.
	(nds32_expand_movmemsi_unroll): New.
	(nds32_expand_movmemqi): Rename ...
	(nds32_expand_movmemsi): ... to this.
	*config/nds32/nds32-multiple.md (movmemqi): Rename ...
	(movmemsi): ... to this.
	*config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
	(nds32_expand_movmemsi): ... to this.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r258235
2018-03-04 16:43:09 +00:00
Kito Cheng 32a6f4f488 [NDS32] Refine load_multiple and store_multiple.
gcc/
	* config/nds32/nds32-protos.h
	(nds32_expand_load_multiple): New arguments.
	(nds32_expand_store_multiple): Ditto.
	(nds32_valid_multiple_load_store): Rename ...
	(nds32_valid_multiple_load_store_p): ... to this.
	* config/nds32/nds32-memory-manipulation.c
	(nds32_expand_load_multiple): Refine implementation.
	(nds32_expand_store_multiple): Ditto.
	* config/nds32/nds32-multiple.md
	(load_multiple): Update nds32_expand_load_multiple interface.
	(store_multiple): Update nds32_expand_store_multiple interface.
	* config/nds32/nds32-predicates.c
	(nds32_valid_multiple_load_store): Rename ...
	(nds32_valid_multiple_load_store_p): ... to this and refine
	implementation.
	* config/nds32/predicates.md
	(nds32_load_multiple_and_update_address_operation): New predicate.
	(nds32_store_multiple_and_update_address_operation): New predicate.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
Co-Authored-By: Monk Chiang <sh.chiang04@gmail.com>

From-SVN: r258234
2018-03-04 16:27:34 +00:00
Kito Cheng 264159d28c [NDS32] Add load_multiple,store_multiple and new attribute combo.
gcc/
	* config/nds32/nds32.md (type): Add load_multiple and store_multiple.
	(combo): New attribute.
	* config/nds32/nds32-multiple.md: Refine patterns with new attributes.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r258232
2018-03-04 07:58:34 +00:00
Jason Merrill 38946ea192 PR c++/84686 - missing volatile loads.
* cvt.c (convert_to_void): Call maybe_undo_parenthesized_ref.

From-SVN: r258231
2018-03-04 00:32:39 -05:00
Harald Anlauf ac80378f4a re PR fortran/71085 (ICE with some intrinsic functions specifying array function result dimension)
2018-03-03  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/71085
	* trans-expr.c (gfc_apply_interface_mapping_to_expr): Do not
	dereference NULL pointer.


2018-03-03  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/71085
	* gfortran.dg/pr71085.f90: New test.

From-SVN: r258228
2018-03-04 01:37:13 +00:00
GCC Administrator 6979a6b3d1 Daily bump.
From-SVN: r258227
2018-03-04 00:16:17 +00:00
Steven G. Kargl 42ce31c577 re PR fortran/66128 (ICE for some intrinsics with zero sized array parameter)
2018-03-03  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66128
	* gfortran.dg/zero_sized_8.f90: Really commit new test.

From-SVN: r258224
2018-03-03 19:59:54 +00:00
Steven G. Kargl 94e6b5e5a6 re PR fortran/66128 (ICE for some intrinsics with zero sized array parameter)
2018-03-03  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66128
	* simplify.c (is_size_zero_array): New function to check for size
	zero array.
	(gfc_simplify_all, gfc_simplify_any, gfc_simplify_count, 
	 gfc_simplify_iall, gfc_simplify_iany, gfc_simplify_iparity,
	 gfc_simplify_minval, gfc_simplify_maxval, gfc_simplify_norm2,
	 gfc_simplify_product, gfc_simplify_sum): Use it, and implement
	requirements from F2018.

2018-03-03  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66128
	* gfortran.dg/zero_sized_8.f90: New test.

From-SVN: r258223
2018-03-03 19:49:20 +00:00
Joseph Myers 250540af39 * da.po: Update.
From-SVN: r258221
2018-03-03 18:55:20 +00:00
Steven G. Kargl a900a06092 re PR fortran/51434 (ICE with scalar init of an array parameter, used in DT default init with transfer)
2018-03-03  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/51434
	* simplify.c (gfc_simplify_transfer): Resolve mold.

2018-03-03  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/51434
	* gfortran.dg/pr51434.f90: New test.

From-SVN: r258220
2018-03-03 18:20:32 +00:00
Paolo Carlini 88aa59ff7e re PR c++/61358 (Bogus "duplicate label" error after label used within C++11 lambda)
2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/61358
	* g++.dg/cpp0x/lambda/lambda-61358.C: New.

From-SVN: r258219
2018-03-03 18:18:25 +00:00
Paolo Carlini 5a4dbaa824 re PR c++/67370 (Invalid "parameter packs not expanded" error in lambda capture)
2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/67370
	* g++.dg/cpp0x/lambda/lambda-67370.C: New.

From-SVN: r258218
2018-03-03 18:09:27 +00:00
Paolo Carlini c94a3f9f65 re PR c++/71464 (ICE on invalid code (with redeclared constructor) at -Os: Segmentation fault)
/cp
2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71464
	* optimize.c (maybe_thunk_body): Bail out immediately if either
	fns[0] or fns[1] is null.

/testsuite
2018-03-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71464
	* g++.dg/torture/pr71464.C: New.

From-SVN: r258216
2018-03-03 17:48:23 +00:00
Chung-Ju Wu 6855fa2131 [NDS32] Change to large model by default.
gcc/
	* config/nds32/nds32.opt: Change -mcmodel= default value.

From-SVN: r258215
2018-03-03 16:47:10 +00:00
Kito Cheng e576ddb5eb [NDS32] Add intrinsic functions for unalignment memory access.
gcc/
	* config/nds32/constants.md (unspec_element): New enum.
	* config/nds32/constraints.md (Umw): New constraint.
	* config/nds32/nds32-intrinsic.c: Add more builtin functions.
	* config/nds32/nds32-intrinsic.md: Likewise.
	* config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
	(nds32_valid_smw_lwm_base_p): New.
	(nds32_output_smw_single_word): New.
	(nds32_output_lmw_single_word): New.
	(nds32_expand_unaligned_load): New.
	(nds32_expand_unaligned_store): New.
	* config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
	(nds32_output_smw_single_word): Declare.
	(nds32_output_lmw_single_word): Declare.
	(nds32_expand_unaligned_load): Declare.
	(nds32_expand_unaligned_store): Declare.
	* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
	NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
	NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
	NDS32_BUILTIN_UASTORE_DW.
	* config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
	predicate.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
Co-Authored-By: Monk Chiang <sh.chiang04@gmail.com>

From-SVN: r258214
2018-03-03 16:38:14 +00:00
Monk Chiang 7a12ea32b2 [NDS32] Rewrite infrastructure for intrinsic.
gcc/
	* config/nds32/nds32-intrinsic.c
	(nds32_expand_builtin_null_ftype_reg): Delete.
	(nds32_expand_builtin_reg_ftype_imm): Ditto.
	(nds32_expand_builtin_null_ftype_reg_imm): Ditto.
	(nds32_read_argument): New.
	(nds32_legitimize_target): Ditto.
	(nds32_legitimize_argument): Ditto.
	(nds32_check_constant_argument): Ditto.
	(nds32_expand_unop_builtin): Ditto.
	(nds32_expand_unopimm_builtin): Ditto.
	(nds32_expand_binop_builtin): Ditto.
	(nds32_builtin_decl_impl): Ditto.
	(builtin_description): Ditto.
	(nds32_expand_builtin_impl): Rewrite with new infrastructure.
	(nds32_init_builtins_impl): Ditto.
	* config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
	(nds32_builtin_decl): New.
	* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
	* config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>
Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>

From-SVN: r258211
2018-03-03 16:05:25 +00:00
Paul Thomas c8bd326c47 re PR fortran/80965 (ICE with class argument and -O2 optimization)
2018-03-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/80965
	* resolve.c (build_loc_call): Change symtree name from 'loc' to
	'_loc'.

2018-03-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/80965
	* gfortran.dg/select_type_41.f90: New test.

From-SVN: r258195
2018-03-03 13:34:10 +00:00
Paolo Carlini 129c8d7e33 re PR c++/61135 (It seems to be not able to call virtual method of literal object in lambda expression)
2018-03-02  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/61135
	* g++.dg/cpp0x/lambda/lambda-61135.C: New.

From-SVN: r258165
2018-03-03 00:28:03 +00:00
GCC Administrator e176bb081b Daily bump.
From-SVN: r258163
2018-03-03 00:16:23 +00:00
Joseph Myers 3c41806ba9 * es.po: Update.
From-SVN: r258160
2018-03-02 23:55:25 +00:00
Jeff Law e9d03821f0 reorg.c (stop_search_p): Handle DEBUG_INSN.
* reorg.c (stop_search_p): Handle DEBUG_INSN.
	(redundant_insn, fill_simple_delay_slots): Likewise.
	(fill_slots_from_thread): Likewise.
	* resource.c (mark_referenced_resources): Likewise.
	(mark_set_resources, find_dead_or_set_registers): Likewise.

From-SVN: r258158
2018-03-02 16:47:56 -07:00
Jonathan Wakely 2f03003dcc PR libstdc++/84671 handle digit separators in duration literals
PR libstdc++/84671
	* include/bits/parse_numbers.h (_Number_help): Add partial
	specialization to handle digit separators. Adjust partial
	specialization for recursion temrination to require _Pow == 1ULL.
	* testsuite/20_util/duration/literals/84671.cc: New

From-SVN: r258157
2018-03-02 20:38:50 +00:00
Marek Polacek 74f8705ebe re PR c++/84578 (ICE with flexible array member and constexpr)
PR c++/84578
	* constexpr.c (get_array_or_vector_nelts): New.
	(cxx_eval_array_reference): Use it.
	(cxx_eval_vec_init_1): Likewise.
	(cxx_eval_store_expression): Likewise.

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

From-SVN: r258156
2018-03-02 20:27:46 +00:00