1. 14 Nov, 2016 23 commits
    • tree-ssa-math-opts.c (find_bswap_or_nop): Zero out bytes in cmpxchg and cmpnop in two steps... · bf166718
      2016-11-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * tree-ssa-math-opts.c (find_bswap_or_nop): Zero out bytes in cmpxchg
          and cmpnop in two steps: first the ones not accessed in original gimple
          expression in a endian independent way and then the ones not accessed
          in the final result in an endian-specific way.
          (bswap_replace): Stop doing big endian adjustment.
      
      From-SVN: r242394
      Thomas Preud'homme committed
    • dump-parse-tree.c (show_code): Add prototype. · d32e1fd8
      2016-11-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	* dump-parse-tree.c (show_code):  Add prototype.
      	(gfc_debug_code):  New function.
      	(show_code_node):  Add space after SELECT TYPE.
      
      From-SVN: r242393
      Thomas Koenig committed
    • re PR fortran/78300 ([OOP] Failure to compile a F03 code with an optional dummy procedure argument) · d809e15a
      2016-11-14  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/78300
      	* resolve.c (resolve_procedure_interface): Properly handle CLASS-valued
      	function results.
      
      2016-11-14  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/78300
      	* gfortran.dg/class_result_3.f90: New test.
      
      From-SVN: r242392
      Janus Weil committed
    • i386.md (*andndi3_doubleword): Merge operand constraints. · 9daa4c72
      	* config/i386/i386.md (*andndi3_doubleword): Merge operand constraints.
      	(*ashl<mode>3_doubleword): Ditto.
      
      From-SVN: r242391
      Uros Bizjak committed
    • Use constexpr addressof in optional, SFINAE housekeeping for any, optional and tuple. · ca9e949f
      Use constexpr addressof in optional, SFINAE housekeeping
      for any, optional and tuple.
      * include/std/any (__do_emplace(_Args&&...)): New.
      (__do_emplace(initializer_list<_Up>, _Args&&...)): Likewise.
      (__any_constructible): Likewise.
      (__any_constructible_t): Use __any_constructible.
      (operator=(_ValueType&&)): SFINAE in the return type.
      (emplace(_Args&&...)): Likewise.
      (emplace(initializer_list<_Up>, _Args&&...)): Likewise.
      * include/std/optional (_Has_addressof_mem): Remove.
      (_Has_addressof_free): Likewise.
      (_Has_addressof): Likewise.
      (__constexpr_addressof(_Tp&)): Likewise.
      (operator->): Use std::__addressof.
      * include/std/tuple (operator=(const tuple<_UElements...>&)):
      SFINAE in return type.
      (operator=(tuple<_UElements...>&&)): Likewise.
      * testsuite/20_util/any/misc/any_cast_neg.cc: Adjust.
      
      From-SVN: r242390
      Ville Voutilainen committed
    • Fix dump output in dse_optimize_stmt · ebd9509a
      	* tree-ssa-dse.c (dse_optimize_stmt): Remove quotes and extra
      	new line.
      
      From-SVN: r242389
      Martin Liska committed
    • Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o. · bc08ecba
      2016-11-14  Prasad Ghangal  <prasad.ghangal@gmail.com>
      	Richard Biener  <rguenther@suse.de>
          
          	c/
          	* Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.
          	* config-lang.in (gtfiles): Add c/c-parser.h.
          	* c-tree.h (enum c_declspec_word): Add cdw_gimple.
          	(struct c_declspecs): Add gimple_pass member and gimple_p flag.
          	* c-parser.c (enum c_id_kind, struct c_token,
          	c_parser_next_token_is, c_parser_next_token_is_not,
          	c_parser_next_token_is_keyword,
          	enum c_lookahead_kind, enum c_dtr_syn, enum c_parser_prec):
          	Split out to ...
          	* c-parser.h: ... new header.
          	* c-parser.c: Include c-parser.h and gimple-parser.h.
      	(c_parser_peek_token, c_parser_peek_2nd_token,
          	c_token_starts_typename, c_parser_next_token_starts_declspecs,
          	c_parser_next_tokens_start_declaration, c_parser_consume_token,
          	c_parser_error, c_parser_require, c_parser_skip_until_found,
          	c_parser_declspecs, c_parser_declarator, c_parser_peek_nth_token,
          	c_parser_type_name): Export.
          	(c_parser_tokens_buf): New function.
          	(c_parser_error): Likewise.
          	(c_parser_set_error): Likewise.
          	(c_parser_declspecs): Handle RID_GIMPLE.
      	(c_parser_declaration_or_fndef): Parse __GIMPLE marked body
      	via c_parser_parse_gimple_body.
          	* c-parser.h (c_parser_peek_token, c_parser_peek_2nd_token,
          	c_token_starts_typename, c_parser_next_token_starts_declspecs,
          	c_parser_next_tokens_start_declaration, c_parser_consume_token,
          	c_parser_error, c_parser_require, c_parser_skip_until_found,
          	c_parser_declspecs, c_parser_declarator, c_parser_peek_nth_token,
          	c_parser_type_name): Declare.
      	(struct c_parser): Declare forward.
      	(c_parser_tokens_buf): Declare.
              (c_parser_error): Likewise.
              (c_parser_set_error): Likewise.
          	* gimple-parser.c: New file.
          	* gimple-parser.h: Likewise.
          
          	obj-c/
          	* config-lang.in (gtfiles): Add c/c-parser.h.
      
          	c-family/
          	* c-common.h (c_common_resword): Add RID_GIMPLE, RID_PHI types.
          	* c-common.h (enum rid): Add RID_GIMPLE, RID_PHI.
          	* c.opt (fgimple): New option.
      
      	* doc/invoke.texi (fgimple): Document.
       
          	* dumpfile.h (TDF_GIMPLE): Add.
          	* dumpfile.c (dump_options): Add gimple.
          	* gimple-pretty-print.c (dump_gimple_switch): Adjust dump
      	for TDF_GIMPLE.
      	(dump_gimple_label): Likewise.
      	(dump_gimple_phi): Likewise.
      	(dump_gimple_bb_header): Likewise.
      	(dump_phi_nodes): Likewise.
      	(pp_cfg_jump): Likewise.  Pass in dump flags.
      	(dump_implicit_edges): Adjust.
          	* passes.c (pass_init_dump_file): Do not dump function header
          	for TDF_GIMPLE.
          	* tree-cfg.c (dump_function_to_file): Dump function return type
      	and __GIMPLE keyword for TDF_GIMPLE.  Change guard for dumping
      	GIMPLE stmts.
          	* tree-pretty-print.c (dump_decl_name): Adjust dump for TDF_GIMPLE.
          	(dump_generic_node): Likewise.
      
      	* function.h (struct function): Add pass_startwith member.
      	* passes.c (execute_one_pass): Implement startwith.
      
          	* tree-ssanames.c (make_ssa_name_fn): New argument, check for version
          	and assign proper version for parsed ssa names.
          	* tree-ssanames.h (make_ssa_name_fn): Add new argument to the function.
          	* internal-fn.c (expand_PHI): New function.
          	* internal-fn.h (expand_PHI): Declared here.
          	* internal-fn.def: New defination for PHI.
          	* tree-cfg.c (lower_phi_internal_fn): New function.
      	(build_gimple_cfg): Call it.
          	(verify_gimple_call): Condition for passing label as arg in internal
          	function PHI.
      	* tree-into-ssa.c (rewrite_add_phi_arguments): Handle already
      	present PHIs with arguments.
      
          	testsuite/
          	* gcc.dg/gimplefe-1.c: New testcase.
          	* gcc.dg/gimplefe-2.c: Likewise.
          	* gcc.dg/gimplefe-3.c: Likewise.
          	* gcc.dg/gimplefe-4.c: Likewise.
          	* gcc.dg/gimplefe-5.c: Likewise.
          	* gcc.dg/gimplefe-6.c: Likewise.
          	* gcc.dg/gimplefe-7.c: Likewise.
          	* gcc.dg/gimplefe-8.c: Likewise.
          	* gcc.dg/gimplefe-9.c: Likewise.
          	* gcc.dg/gimplefe-10.c: Likewise.
          	* gcc.dg/gimplefe-11.c: Likewise.
          	* gcc.dg/gimplefe-12.c: Likewise.
          	* gcc.dg/gimplefe-13.c: Likewise.
          	* gcc.dg/gimplefe-14.c: Likewise.
          	* gcc.dg/gimplefe-15.c: Likewise.
          	* gcc.dg/gimplefe-16.c: Likewise.
          	* gcc.dg/gimplefe-17.c: Likewise.
          	* gcc.dg/gimplefe-18.c: Likewise.
      
      From-SVN: r242388
      Prasad Ghangal committed
    • Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o. · 1ee62b92
      2016-11-14  Prasad Ghangal  <prasad.ghangal@gmail.com>
      	Richard Biener  <rguenther@suse.de>
          
          	c/
          	* Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.
          	* config-lang.in (gtfiles): Add c/c-parser.h.
          	* c-tree.h (enum c_declspec_word): Add cdw_gimple.
          	(struct c_declspecs): Add gimple_pass member and gimple_p flag.
          	* c-parser.c (enum c_id_kind, struct c_token,
          	c_parser_next_token_is, c_parser_next_token_is_not,
          	c_parser_next_token_is_keyword,
          	enum c_lookahead_kind, enum c_dtr_syn, enum c_parser_prec):
          	Split out to ...
          	* c-parser.h: ... new header.
          	* c-parser.c: Include c-parser.h and gimple-parser.h.
      	(c_parser_peek_token, c_parser_peek_2nd_token,
          	c_token_starts_typename, c_parser_next_token_starts_declspecs,
          	c_parser_next_tokens_start_declaration, c_parser_consume_token,
          	c_parser_error, c_parser_require, c_parser_skip_until_found,
          	c_parser_declspecs, c_parser_declarator, c_parser_peek_nth_token,
          	c_parser_type_name): Export.
          	(c_parser_tokens_buf): New function.
          	(c_parser_error): Likewise.
          	(c_parser_set_error): Likewise.
          	(c_parser_declspecs): Handle RID_GIMPLE.
      	(c_parser_declaration_or_fndef): Parse __GIMPLE marked body
      	via c_parser_parse_gimple_body.
          	* c-parser.h (c_parser_peek_token, c_parser_peek_2nd_token,
          	c_token_starts_typename, c_parser_next_token_starts_declspecs,
          	c_parser_next_tokens_start_declaration, c_parser_consume_token,
          	c_parser_error, c_parser_require, c_parser_skip_until_found,
          	c_parser_declspecs, c_parser_declarator, c_parser_peek_nth_token,
          	c_parser_type_name): Declare.
      	(struct c_parser): Declare forward.
      	(c_parser_tokens_buf): Declare.
              (c_parser_error): Likewise.
              (c_parser_set_error): Likewise.
          	* gimple-parser.c: New file.
          	* gimple-parser.h: Likewise.
          
          	obj-c/
          	* config-lang.in (gtfiles): Add c/c-parser.h.
      
          	c-family/
          	* c-common.h (c_common_resword): Add RID_GIMPLE, RID_PHI types.
          	* c-common.h (enum rid): Add RID_GIMPLE, RID_PHI.
          	* c.opt (fgimple): New option.
      
      	* doc/invoke.texi (fgimple): Document.
       
          	* dumpfile.h (TDF_GIMPLE): Add.
          	* dumpfile.c (dump_options): Add gimple.
          	* gimple-pretty-print.c (dump_gimple_switch): Adjust dump
      	for TDF_GIMPLE.
      	(dump_gimple_label): Likewise.
      	(dump_gimple_phi): Likewise.
      	(dump_gimple_bb_header): Likewise.
      	(dump_phi_nodes): Likewise.
      	(pp_cfg_jump): Likewise.  Pass in dump flags.
      	(dump_implicit_edges): Adjust.
          	* passes.c (pass_init_dump_file): Do not dump function header
          	for TDF_GIMPLE.
          	* tree-cfg.c (dump_function_to_file): Dump function return type
      	and __GIMPLE keyword for TDF_GIMPLE.  Change guard for dumping
      	GIMPLE stmts.
          	* tree-pretty-print.c (dump_decl_name): Adjust dump for TDF_GIMPLE.
          	(dump_generic_node): Likewise.
      
      	* function.h (struct function): Add pass_startwith member.
      	* passes.c (execute_one_pass): Implement startwith.
      
          	* tree-ssanames.c (make_ssa_name_fn): New argument, check for version
          	and assign proper version for parsed ssa names.
          	* tree-ssanames.h (make_ssa_name_fn): Add new argument to the function.
          	* internal-fn.c (expand_PHI): New function.
          	* internal-fn.h (expand_PHI): Declared here.
          	* internal-fn.def: New defination for PHI.
          	* tree-cfg.c (lower_phi_internal_fn): New function.
      	(build_gimple_cfg): Call it.
          	(verify_gimple_call): Condition for passing label as arg in internal
          	function PHI.
      	* tree-into-ssa.c (rewrite_add_phi_arguments): Handle already
      	present PHIs with arguments.
      
          	testsuite/
          	* gcc.dg/gimplefe-1.c: New testcase.
          	* gcc.dg/gimplefe-2.c: Likewise.
          	* gcc.dg/gimplefe-3.c: Likewise.
          	* gcc.dg/gimplefe-4.c: Likewise.
          	* gcc.dg/gimplefe-5.c: Likewise.
          	* gcc.dg/gimplefe-6.c: Likewise.
          	* gcc.dg/gimplefe-7.c: Likewise.
          	* gcc.dg/gimplefe-8.c: Likewise.
          	* gcc.dg/gimplefe-9.c: Likewise.
          	* gcc.dg/gimplefe-10.c: Likewise.
          	* gcc.dg/gimplefe-11.c: Likewise.
          	* gcc.dg/gimplefe-12.c: Likewise.
          	* gcc.dg/gimplefe-13.c: Likewise.
          	* gcc.dg/gimplefe-14.c: Likewise.
          	* gcc.dg/gimplefe-15.c: Likewise.
          	* gcc.dg/gimplefe-16.c: Likewise.
          	* gcc.dg/gimplefe-17.c: Likewise.
          	* gcc.dg/gimplefe-18.c: Likewise.
      
      Co-Authored-By: Richard Biener <rguenther@suse.de>
      
      From-SVN: r242387
      Prasad Ghangal committed
    • Introduce -fprofile-update=prefer-atomic · 4d209853
      	PR bootstrap/78069
      	* common.opt: Add prefer-atomic as a new enum value for
      	-fprofile-update.
      	* coretypes.h: Likewise.
      	* doc/invoke.texi: Document the new option value.
      	* gcc.c: Replace atomic with prefer-atomic.  Remove warning.
      	* tree-profile.c (tree_profiling): Select default value
      	of -fprofile-update when 'prefer-atomic' is selected.
      	PR bootstrap/78069
      	* gcc.dg/no_profile_instrument_function-attr-1.c: Update test
      	to match scanned pattern.
      	* gcc.dg/tree-ssa/ssa-lim-11.c: Likewise.
      
      From-SVN: r242386
      Martin Liska committed
    • The second patch updates the Cortex-A57 scheduler now that we can differentiate… · f6b9a2a0
      The second patch updates the Cortex-A57 scheduler now that we can differentiate between shifts and bitfield inserts.
      
      The second patch updates the Cortex-A57 scheduler now that we can differentiate
      between shifts and bitfield inserts.  The Cortex-A57 Software Optimization Guide
      indicates that BFM operations use the integer multi-cycle pipeline, while ARM
      UXTB/H instructions use the Integer 1 or Integer 0 pipelines, so swap the bfm
      and extend reservations.  This results in minor scheduling differences.
      
      	* config/arm/cortex-a57.md (cortex_a57_alu): Move extend here, bfm...
      	(cortex_a57_alu_shift): ...here.
      
      From-SVN: r242385
      Wilco Dijkstra committed
    • Currently the SBFM, UBFM and BFM instructions all use the attribute "bfm". · 94f7a25e
      SBFM and UBFM include all shifts on AArch64, which are simpler than bitfield
      insert.  Add a new bfx attribute for these instructions so that they can be
      modelled more accurately in the future.  There is no difference in code 
      generation.
      
      	* config/aarch64/aarch64.md (aarch64_ashl_sisd_or_int_<mode>3)
      	Use bfx attribute.
      	(aarch64_lshr_sisd_or_int_<mode>3): Likewise.
      	(aarch64_ashr_sisd_or_int_<mode>3): Likewise.
      	(<optab>si3_insn_uxtw): Likewise.
      	(<optab><mode>3_insn): Likewise.
      	(<ANY_EXTEND:optab><GPI:mode>_ashl<SHORT:mode>): Likewise.
      	(zero_extend<GPI:mode>_lshr<SHORT:mode>): Likewise.
      	(extend<GPI:mode>_ashr<SHORT:mode>): Likewise.
      	(<optab><mode>): Likewise.
      	(insv<mode>): Likewise.
      	(andim_ashift<mode>_bfiz): Likewise.
      	* config/aarch64/thunderx.md (thunderx_shift): Add bfx.
      	* config/arm/cortex-a53.md (cortex_a53_alu_shift): Likewise.
      	* config/arm/cortex-a57.md (cortex_a57_alu): Add bfx.
      	* config/arm/exynos-m1.md (exynos_m1_alu): Add bfx.
      	(exynos_m1_alu_p): Likewise.
      	* config/arm/types.md: Add bfx.
      	* config/arm/xgene1.md (xgene1_bfm): Add bfx.
      
      From-SVN: r242384
      Wilco Dijkstra committed
    • The existing vector costs stop some beneficial vectorization. · db4a1c18
      The existing vector costs stop some beneficial vectorization.  This is mostly
      due to vector statement cost being set to 3 as well as vector loads having a
      higher cost than scalar loads.  This means that even when we vectorize 4x, it
      is possible that the cost of a vectorized loop is similar to the scalar
      version, and we fail to vectorize.
      
      Using a cost of 3 for a vector operation suggests they are 3 times as
      expensive as scalar operations.  Since most vector operations have a 
      similar throughput as scalar operations, this is not correct.
      
      Using slightly lower values for these heuristics now allows this loop
      and many others to be vectorized.  On a proprietary benchmark the gain
      from vectorizing this loop is around 15-30% which shows vectorizing it is
      indeed beneficial.
      
      	* config/aarch64/aarch64.c (cortexa57_vector_cost):
      	Change vec_stmt_cost, vec_align_load_cost and vec_unalign_load_cost.
      
      From-SVN: r242383
      Wilco Dijkstra committed
    • Makefile.in: Replace s-interr-hwint.adb with s-interr-vxworks.adb throughout. · 725bbb80
      	* gcc-interface/Makefile.in: Replace s-interr-hwint.adb with
      	s-interr-vxworks.adb throughout.
      
      From-SVN: r242382
      Eric Botcazou committed
    • remove conditional compilation of HAVE_AS_LEB128 code · 61214be1
      gcc/ChangeLog:
      
      2016-08-20  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
      
      	* acinclude.m4 (gcc_GAS_CHECK_FEATURE): Support doing an action
      	if the feature isn't available.
      	* configure: Regenerate.
      	* configure.ac: define HAVE_AS_LEB128 to 0 when not available.
      	* dwarf2asm.c (dw2_asm_output_data_uleb128): Always compile code
      	for HAVE_AS_LEB128.
      	(dw2_asm_output_data_sleb128): Likewise.
      	(dw2_asm_output_delta_uleb128): Likewise.
      	(dw2_asm_output_delta_sleb128): Likewise.
      	* except.c (output_one_function_exception_table): Likewise.
      	(dw2_size_of_call_site_table): Likewise.
      	(sjlj_size_of_call_site_table): Likewise.
      	* dwarf2out.c (output_loc_list): Likewise.
      	(output_rnglists): Likewise.
      
      From-SVN: r242381
      Trevor Saunders committed
    • re PR tree-optimization/78312 (wrong code due to ssa-backprop) · 5129b43b
      2016-11-14  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/78312
      	* gimple-ssa-backprop.c (backprop::prepare_change): Reset
      	flow-sensitive info.
      
      	* gcc.dg/torture/pr78312.c: New testcase.
      
      From-SVN: r242380
      Richard Biener committed
    • re PR target/78093 ([avr] New variable attribute "absdata" and option… · d97cca4a
      re PR target/78093 ([avr] New variable attribute "absdata" and option "-mabsdata" to enable LDS / STS on Reduced Tiny)
      
      gcc/
      	PR target/78093
      	* doc/invoke.texi (AVR Options) [-mabsdata]: Document new option.
      	* config/avr/avr.opt (-mabsdata): New option.
      	* config/avr/avr-arch.h (avr_device_specific_features):	Add AVR_ISA_LDS.
      	* config/avr/avr.c (avr_encode_section_info) [AVR_TINY]: If
      	-mabsdata & symbol is not progmem, tag as AVR_SYMBOL_FLAG_TINY_ABSDATA.
      	* config/avr/avr-mcus.def (attiny4/5/9/10/20): Use AVR_ISA_LDS.
      	* config/avr/gen-avr-mmcu-specs.c (print_mcu): Print cc1_absdata
      	spec depending on AVR_ISA_LDS.
      	* config/avr/specs.h (CC1_SPEC): Enhanced by cc1_absdata spec.
      gcc/testsuite/
      	PR target/78093
      	* gcc.target/avr/torture/tiny-absdata-2.c: New test.
      
      From-SVN: r242379
      Georg-Johann Lay committed
    • Implement P0217R3 - C++17 structured bindings · 5230c3d8
      	Implement P0217R3 - C++17 structured bindings
      	* g++.dg/cpp1z/decomp1.C: New test.
      	* g++.dg/cpp1z/decomp2.C: New test.
      	* g++.dg/cpp1z/decomp3.C: New test.
      	* g++.dg/cpp1z/decomp4.C: New test.
      	* g++.dg/cpp1z/decomp5.C: New test.
      	* g++.dg/cpp1z/decomp6.C: New test.
      	* g++.dg/cpp1z/decomp7.C: New test.
      	* g++.dg/cpp1z/decomp8.C: New test.
      	* g++.dg/cpp1z/decomp9.C: New test.
      	* g++.dg/cpp1z/decomp10.C: New test.
      
      Co-Authored-By: Jason Merrill <jason@redhat.com>
      
      From-SVN: r242378
      Jakub Jelinek committed
    • Implement P0217R3 - C++17 structured bindings · 70f40fea
      gcc/
      	* match.pd: Don't try to compare addresses of variables with
      	DECL_VALUE_EXPR.
      gcc/cp/
      	* cp-tree.h (struct lang_decl_base): Add decomposition_p.
      	(DECL_DECOMPOSITION_P): New
      	(enum auto_deduction_context): Add adc_decomp_type.
      	(enum cp_declarator_kind): Add cdk_decomp.
      	* constexpr.c (cxx_eval_constant_expression): Look through
      	DECL_VALUE_EXPR.
      	(potential_constant_expression_1): Likewise.
      	* decl.c (reshape_init): Preserve CONSTRUCTOR_IS_DIRECT_INIT.
      	(check_initializer): Use build_aggr_init for DECL_DECOMPOSITION_P.
      	(cp_finish_decl): Pass adc_decomp_type for decomposition.
      	(find_decomp_class_base, get_tuple_size, get_tuple_element_type)
      	(get_tuple_decomp_init, cp_finish_decomp): New.
      	(grokdeclarator): Handle decomposition.
      	* init.c (build_aggr_init): Handle decomposition array.
      	(build_vec_init): Handle initialization from { array }.
      	* name-lookup.c (add_function): Always wrap TEMPLATE_DECL in
      	OVERLOAD.
      	* parser.c (declarator_can_be_parameter_pack): Handle cdk_decomp.
      	(function_declarator_p, strip_declarator_types)
      	(cp_parser_check_declarator_template_parameters): Likewise.
      	(cp_parser_range_for, cp_convert_range_for): Handle decomposition.
      	(cp_parser_simple_declaration): Parse decomposition.
      	(cp_parser_decomposition_declaration): New.
      	* pt.c (tsubst_decomp_names): New.
      	(subst_expr) [DECL_EXPR, RANGE_FOR_STMT]: Handle decomposition.
      	(do_auto_deduction): Handle adc_decomp_type.
      	* semantics.c (finish_decltype_type): Look through DECL_VALUE_EXPR.
      	* typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
      	* tree.c (lvalue_kind): Likewise.
      	(cp_build_reference_type): Handle reference collapsing.
      
      Co-Authored-By: Jason Merrill <jason@redhat.com>
      
      From-SVN: r242377
      Jakub Jelinek committed
    • Improve various diagnostic issues. · e7555e42
      	* call.c (build_new_method_call_1): Include template arguments in
      	error message.
      	(print_error_for_call_failure): Likewise.
      	(build_new_function_call): Pass them in.
      	* name-lookup.c (supplement_binding_1): Don't complain about a
      	conflict with an erroneous declaration.
      	* error.c (dump_decl): Fix printing of alias declaration.
      	* decl.c (make_typename_type): Call cxx_incomplete_type_error.
      	* parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
      	* semantics.c (perform_koenig_lookup): Don't wrap an error in
      	TEMPLATE_ID_EXPR.
      
      From-SVN: r242376
      Jason Merrill committed
    • Delete addressof for temporaries (LWG 2598) · 3ce96851
      	* include/bits/move.h (addressof(const _Tp&&)): Add deleted overload,
      	as per LWG 2598.
      
      From-SVN: r242375
      Jonathan Wakely committed
    • Make std::future::share() noexcept (LWG 2556) · 9c52cc01
      	* include/std/future (future::share(), future<R&>::share())
      	(future<void>::share()): Add noexcept, as per LWG 2556.
      
      From-SVN: r242374
      Jonathan Wakely committed
    • PR78326 fix incorrect access of data member in base class · 881ca4c9
      	PR libstdc++/78326
      	* include/experimental/memory_resource (memory_resource::_S_max_align):
      	Change access to protected.
      
      From-SVN: r242373
      Jonathan Wakely committed
    • Daily bump. · d1422b9d
      From-SVN: r242372
      GCC Administrator committed
  2. 13 Nov, 2016 17 commits
    • Add array support to std::shared_ptr for C++17 · b2343559
      	* doc/xml/manual/status_cxx2017.xml: Update status.
      	* doc/html/manual/status.html: Regenerate.
      	* include/bits/shared_ptr.h (shared_ptr(unique_ptr<_Yp, _Del>)): Add
      	extension constructor to maintain C++14 behaviour.
      	* include/bits/shared_ptr_base.h (__sp_array_delete): Add new struct.
      	(__shared_count(_Ptr, false_type), __shared_count(_Ptr, true_type)):
      	New constructors.
      	(__sp_compatible_with, __sp_is_constructible): Add specializations
      	for array support.
      	(__sp_is_constructible_arr, __sp_is_constructible_arrN): New helpers.
      	(__shared_ptr_access): New base class for observer member functions.
      	(__shared_ptr::element_type): Use remove_extent.
      	(__shared_ptr::_UniqCompatible): Add __sp_compatible_with check.
      	(__shared_ptr(_Yp*)): Use tag dispatching to call new __shared_count
      	constructor.
      	(__shared_ptr(unique_ptr<_Yp, _Del>)): Add extension constructor.
      	(__shared_ptr::operator*, __shared_ptr::operator->): Remove and
      	inherit from __shared_ptr_access base class.
      	(__shared_ptr::__has_esft_base): Return false for array types.
      	(__weak_ptr::element_type): Use remove_extent.
      	* include/experimental/bits/shared_ptr.h (__libfund_v1): Remove.
      	(__shared_ptr<__libfund_v1<_Tp>>): Remove specializations.
      	(__wak_ptr<__libfund_v1<_Tp>>): Likewise.
      	(experimental::__sp_compatible_v): Redefine using
      	__sp_compatible_with.
      	(experimental::__sp_is_constructible_v): Redefine using
      	__sp_is_constructible.
      	(get_deleter, operator<<): Change argument from __shared_ptr to
      	shared_ptr.
      	* testsuite/20_util/shared_ptr/cons/array.cc: New test.
      	* testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc: Adjust for
      	new behaviour.
      	* testsuite/20_util/shared_ptr/observers/array.cc: Test observers for
      	arrays.
      	* testsuite/20_util/shared_ptr/observers/array_neg.cc: New test.
      
      From-SVN: r242369
      Jonathan Wakely committed
    • pr78268.C: New test. · a2b4c188
      gcc/testsuite/ChangeLog:
      
      2016-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	* g++.dg/torture/pr78268.C: New test.
      
      gcc/ChangeLog:
      
      2016-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	* ipa-cp.c (ipa_get_jf_pass_through_result): Skip unary expressions.
      	(propagate_vr_accross_jump_function): Handle unary expressions.
      	* ipa-prop.c (ipa_set_jf_unary_pass_through): New.
      	(load_from_param_1): New.
      	(load_from_unmodified_param): Factor common part into load_from_param_1.
      	(load_from_param): New.
      	(compute_complex_assign_jump_func): Handle unary expressions.
      	(update_jump_functions_after_inlining): Likewise.
      	(ipa_write_jump_function): Likewise.
      	(ipa_read_jump_function): Likewise.
      
      From-SVN: r242368
      Kugan Vivekanandarajah committed
    • Implement P0403R1, Literal suffixes for basic_string_view. · 17018005
      * include/std/string_view
      (operator""sv(const char*, size_t)): New.
      (operator""sv(const wchar_t*, size_t)): Likewise.
      (operator""sv(const char16_t*, size_t)): Likewise.
      (operator""sv(const char32_t*, size_t)): Likewise.
      * testsuite/21_strings/basic_string_view/literals/types.cc: New.
      * testsuite/21_strings/basic_string_view/literals/values.cc: Likewise.
      * testsuite/experimental/string_view/literals/values.cc: Add
      tests for literals with embedded NULs.
      
      From-SVN: r242367
      Ville Voutilainen committed
    • re PR tree-optimization/35503 (Warning about restricted pointers?) · 975672f3
      2016-11-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR c/35503
      	* doc/invoke.texi: Document Wrestrict.
      	* pretty-print.c (pp_format): Add case for "Z" specifier.
      	(test_pp_format): Test "Z" specifier.
      c-family/
      	* c-common.h (warn_for_restrict): Declare.
      	* c-warn.c: Include gcc-rich-location.h.
      	(warn_for_restrict): New function.
      	* c-format.c (gcc_tdiag_char_table): Add entry for "Z" specifier.
      	(gcc_cdiag_char_table): Likewise.
      	(gcc_cxxdiag_char_table): Likewise.
      	* c.opt (Wrestrict): New option.
      c/
      	* c-parser.c (c_parser_postfix_expression_after_primary): Call
      	warn_for_restrict.
      cp/
      	* parser.c (cp_parser_postfix_pexpression): Call warn_for_restrict.
      testsuite/
      	* c-c++-common/pr35503-1.c: New test.
      	* c-c++-common/pr35503-2.c: Likewise.
      	* c-c++-common/pr35503-3.c: Likewise.
      	* gcc.dg/format/gcc_diag-1.c: Add tests for "Z" specifier.
      
      From-SVN: r242366
      Prathamesh Kulkarni committed
    • decl.c (gnat_to_gnu_entity): In assertion about known Esize... · 8d5a1b4f
      	* gcc-interface/decl.c (gnat_to_gnu_entity): In assertion about known
      	Esize, protect with !is_type and change !Unknown_Esize to Known_Esize.
      
      From-SVN: r242363
      Bob Duff committed
    • re PR rtl-optimization/78232 (FAIL: gcc.dg/torture/pr48124-4.c) · a4ba1151
      	PR rtl-optimization/78232
      	PR rtl-optimization/78248
      	* gcc.dg/ubsan/pr78248.c: New test.
      
      From-SVN: r242362
      Uros Bizjak committed
    • decl.c (gnat_to_gnu_entity): Look at the underlying type for the signedness of the type. · 47605312
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>:
      	Look at the underlying type for the signedness of the type.
      
      From-SVN: r242361
      Eric Botcazou committed
    • decl.c (annotate_value): Deal specially with negative constants. · c0c54de6
      	* gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Deal specially
      	with negative constants.
      
      From-SVN: r242360
      Eric Botcazou committed
    • utils2.c (gnat_protect_expr): Also protect only the address if the expression is… · 96826e28
      utils2.c (gnat_protect_expr): Also protect only the address if the expression is the component of a dereference.
      
      	* gcc-interface/utils2.c (gnat_protect_expr): Also protect only the
      	address if the expression is the component of a dereference.
      	Do not use a reference type for the final temporary reference.
      
      From-SVN: r242358
      Eric Botcazou committed
    • Makefile.in (NO_OMIT_ADAFLAGS): Define. · 854c00dd
      	* gcc-interface/Makefile.in (NO_OMIT_ADAFLAGS): Define.
      	(a-except.o): Replace -fno-inline with NO_INLINE_ADAFLAGS.
      	(s-memory.o): New rule.
      	(tracebak.o): Replace -fno-omit-frame-pointer with NO_OMIT_ADAFLAGS.
      
      From-SVN: r242357
      Eric Botcazou committed
    • c-ada-spec.c (print_ada_declaration): For typedef declarations... · 4be719cd
      	* c-ada-spec.c (print_ada_declaration): For typedef declarations, look
      	for nested types only if the type is a record or union and dump SLOC.
      
      From-SVN: r242356
      Eric Botcazou committed
    • ipa-icf.c (sem_function::merge): Do not create a wrapper also if the original… · 4ebd491f
      ipa-icf.c (sem_function::merge): Do not create a wrapper also if the original function needs a static chain.
      
      	* ipa-icf.c (sem_function::merge): Do not create a wrapper also if the
      	original function needs a static chain.
      
      From-SVN: r242354
      Eric Botcazou committed
    • re PR target/78336 (powerpc-darwin bootstrap broken (probably by 241930)) · 499266dc
              PR target/78336
              * config/rs6000/rs6000.c (rs6000_asm_weaken_decl): Protect
              ASM_OUTPUT_DEF.
      
      From-SVN: r242353
      David Edelsohn committed
    • re PR fortran/60952 ([F03] Problem using "end" as a type-bound procedure and contained procedure) · f9d49cd1
      2016-11-13  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/60952
      	* decl.c (match_procedure_in_type): Apply the FL_PROCEDURE attribute
      	to the target procedure.
      
      2016-11-13  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/60952
      	* gfortran.dg/typebound_proc_34.f90: New test.
      
      From-SVN: r242352
      Janus Weil committed
    • re PR fortran/66366 ([OOP] ICE on invalid with non-allocatable CLASS variable) · 9cbf8673
      2016-11-13  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/66366
      	* resolve.c (resolve_component): Move check for C437
      	to ...
      	* decl.c (build_struct): ... here. Fix indentation.
      
      2016-11-13  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/66366
      	* gfortran.dg/class_57.f90: Changed error message.
      	* gfortran.dg/class_60.f90: New test.
      
      From-SVN: r242351
      Janus Weil committed
    • CWG 2233 - default arg and parameter pack · 559f2bbc
      	* typeck.c (convert_arguments): Handle default arg followed by none.
      
      From-SVN: r242350
      Jason Merrill committed
    • Fix constexpr lvalue use of __real and __imag. · dc8d2d00
      	* constexpr.c (potential_constant_expression_1): REALPART_EXPR and
      	IMAGPART_EXPR can be lvalues.
      
      From-SVN: r242349
      Jason Merrill committed