Commit Graph

149766 Commits

Author SHA1 Message Date
Ville Voutilainen
627a2f5923 Implement P0504R0 (Revisiting in-place tag types for any/optional/variant).
Implement P0504R0 (Revisiting in-place tag types for
any/optional/variant).
* include/std/any (any(_ValueType&& __value)): Constrain
the __is_in_place_type with the decayed type.
(make_any): Adjust to use the new tag type.
* include/std/utility (in_place_tag): Remove.
(in_place_t): Turn into a non-reference tag type.
(__in_place, __in_place_type, __in_place_index): Remove.
(in_place): Turn into an inline variable of non-reference
tag type.
(in_place<_Tp>): Remove.
(in_place_index<_Idx>): Remove.
(in_place_type_t): New.
(in_place_type): Turn into a variable template of non-reference
type.
(in_place_index_t): New.
(in_place_index): Turn into a variable template of non-reference
type.
* include/std/variant
(_Variant_storage(in_place_index_t<_Np>, _Args&&...)): Adjust to
use the new tag type.
(_Union(in_place_index_t<0>, _Args&&...)): Likewise.
(_Union(in_place_index_t<_Np>, _Args&&...)): Likewise.
(_Variant_base()): Likewise.
(variant(_Tp&&)): Likewise.
(variant(in_place_type_t<_Tp>, _Args&&...)): Likewise.
(variant(in_place_type_t<_Tp>, initializer_list<_Up>,
_Args&&...)): Likewise.
(variant(in_place_index_t<_Np>, _Args&&...)): Likewise.
(variant(in_place_index_t<_Np>, initializer_list<_Up>,
_Args&&...)): Likewise
(variant(allocator_arg_t, const _Alloc&)): Likewise.
(variant(allocator_arg_t, const _Alloc&, _Tp&&)): Likewise.
(variant(allocator_arg_t, const _Alloc&, in_place_type_t<_Tp>,
_Args&&...)): Likewise.
(variant(allocator_arg_t, const _Alloc&, in_place_type_t<_Tp>,
initializer_list<_Up>, _Args&&...)): Likewise.
(variant(allocator_arg_t, const _Alloc&, in_place_index_t<_Np>,
_Args&&...)): Likewise.
(variant(allocator_arg_t, const _Alloc&, in_place_index_t<_Np>,
initializer_list<_Up>, _Args&&...)): Likewise.
(emplace(_Args&&...)): Likewise.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* testsuite/20_util/any/cons/explicit.cc: Likewise.
* testsuite/20_util/any/cons/in_place.cc: Likewise.
* testsuite/20_util/any/requirements.cc: Add tests to
check that any is not constructible from the new in_place_type_t
of any value category.
* testsuite/20_util/in_place/requirements.cc: Adjust to
use the new tag type.
* testsuite/20_util/variant/compile.cc: Likewise.
* testsuite/20_util/variant/run.cc: Likewise.

From-SVN: r242401
2016-11-14 22:47:44 +02:00
Michael Meissner
bcb9a772e9 rs6000.c (rs6000_expand_vector_set): Add support for using xxinsertw and vinsert{b,h} on ISA 3.0.
[gcc]
2016-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (rs6000_expand_vector_set): Add support
	for using xxinsertw and vinsert{b,h} on ISA 3.0.

	* config/rs6000/vsx.md (vsx_extract_<mode>): Update comment.
	(vsx_set_<mode>_p9): New insn to generate xxinsertw and
	vinsert{b,h} on ISA 3.0.

[gcc/testsuite]
2016-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* gcc.target/powerpc/vec-set-int.c: New test.
	* gcc.target/powerpc/vec-set-short.c: Likesie.
	* gcc.target/powerpc/vec-set-char.c: Likewise.

From-SVN: r242397
2016-11-14 19:55:42 +00:00
Mark Wielaard
3eb89071d6 libiberty: Add -Wshadow=local to warning flags (if supported).
libiberty/ChangeLog:

       * configure.ac (ac_libiberty_warn_cflags): Add -Wshadow=local.
       * configure: Regenerated.

From-SVN: r242396
2016-11-14 19:46:26 +00:00
Jakub Jelinek
8e745a1709 c-cppbuiltin.c (c_cpp_builtins): Define __cpp_structured_bindings.
* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_structured_bindings.

	* g++.dg/cpp1z/feat-cxx1z.C: Test __cpp_structured_bindings macro.

From-SVN: r242395
2016-11-14 20:00:32 +01:00
Thomas Preud'homme
bf166718a9 tree-ssa-math-opts.c (find_bswap_or_nop): Zero out bytes in cmpxchg and cmpnop in two steps...
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
2016-11-14 18:55:05 +00:00
Thomas Koenig
d32e1fd8b9 dump-parse-tree.c (show_code): Add prototype.
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
2016-11-14 18:15:36 +00:00
Janus Weil
d809e15a19 re PR fortran/78300 ([OOP] Failure to compile a F03 code with an optional dummy procedure argument)
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
2016-11-14 17:55:01 +01:00
Uros Bizjak
9daa4c7259 i386.md (*andndi3_doubleword): Merge operand constraints.
* config/i386/i386.md (*andndi3_doubleword): Merge operand constraints.
	(*ashl<mode>3_doubleword): Ditto.

From-SVN: r242391
2016-11-14 17:51:27 +01:00
Ville Voutilainen
ca9e949f2e Use constexpr addressof in optional, SFINAE housekeeping for any, optional and tuple.
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
2016-11-14 17:30:37 +02:00
Martin Liska
ebd9509a2d Fix dump output in dse_optimize_stmt
* tree-ssa-dse.c (dse_optimize_stmt): Remove quotes and extra
	new line.

From-SVN: r242389
2016-11-14 14:22:10 +00:00
Prasad Ghangal
bc08ecba2b Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.
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
2016-11-14 14:13:32 +00:00
Prasad Ghangal
1ee62b9264 Make-lang.in (C_AND_OBJC_OBJS): Add gimple-parser.o.
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
2016-11-14 13:51:48 +00:00
Martin Liska
4d2098539a Introduce -fprofile-update=prefer-atomic
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
2016-11-14 12:09:48 +00:00
Wilco Dijkstra
f6b9a2a0c5 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
2016-11-14 12:07:03 +00:00
Wilco Dijkstra
94f7a25eeb Currently the SBFM, UBFM and BFM instructions all use the attribute "bfm".
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
2016-11-14 12:04:11 +00:00
Wilco Dijkstra
db4a1c18ce The existing vector costs stop some beneficial vectorization.
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
2016-11-14 11:51:33 +00:00
Eric Botcazou
725bbb80d6 Makefile.in: Replace s-interr-hwint.adb with s-interr-vxworks.adb throughout.
* gcc-interface/Makefile.in: Replace s-interr-hwint.adb with
	s-interr-vxworks.adb throughout.

From-SVN: r242382
2016-11-14 11:45:33 +00:00
Trevor Saunders
61214be10b remove conditional compilation of HAVE_AS_LEB128 code
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
2016-11-14 10:58:48 +00:00
Richard Biener
5129b43be6 re PR tree-optimization/78312 (wrong code due to ssa-backprop)
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
2016-11-14 10:33:15 +00:00
Georg-Johann Lay
d97cca4a46 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
2016-11-14 10:25:34 +00:00
Jakub Jelinek
5230c3d825 Implement P0217R3 - C++17 structured bindings
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
2016-11-14 08:54:50 +01:00
Jakub Jelinek
70f40fea6a Implement P0217R3 - C++17 structured bindings
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
2016-11-14 00:02:58 -05:00
Jason Merrill
e7555e42d0 Improve various diagnostic issues.
* 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
2016-11-13 23:58:45 -05:00
Jonathan Wakely
3ce968519a Delete addressof for temporaries (LWG 2598)
* include/bits/move.h (addressof(const _Tp&&)): Add deleted overload,
	as per LWG 2598.

From-SVN: r242375
2016-11-14 03:44:56 +00:00
Jonathan Wakely
9c52cc0189 Make std::future::share() noexcept (LWG 2556)
* include/std/future (future::share(), future<R&>::share())
	(future<void>::share()): Add noexcept, as per LWG 2556.

From-SVN: r242374
2016-11-14 03:44:53 +00:00
Jonathan Wakely
881ca4c9de PR78326 fix incorrect access of data member in base class
PR libstdc++/78326
	* include/experimental/memory_resource (memory_resource::_S_max_align):
	Change access to protected.

From-SVN: r242373
2016-11-14 02:00:26 +00:00
GCC Administrator
d1422b9d9a Daily bump.
From-SVN: r242372
2016-11-14 00:16:14 +00:00
Jonathan Wakely
b2343559f2 Add array support to std::shared_ptr for C++17
* 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
2016-11-13 22:57:45 +00:00
Kugan Vivekanandarajah
a2b4c18823 pr78268.C: New test.
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
2016-11-13 22:04:36 +00:00
Ville Voutilainen
1701800580 Implement P0403R1, Literal suffixes for basic_string_view.
* 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
2016-11-13 22:54:27 +02:00
Prathamesh Kulkarni
975672f357 re PR tree-optimization/35503 (Warning about restricted pointers?)
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
2016-11-13 19:38:36 +00:00
Bob Duff
8d5a1b4f64 decl.c (gnat_to_gnu_entity): In assertion about known Esize...
* 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
2016-11-13 18:38:02 +00:00
Uros Bizjak
a4ba1151df re PR rtl-optimization/78232 (FAIL: gcc.dg/torture/pr48124-4.c)
PR rtl-optimization/78232
	PR rtl-optimization/78248
	* gcc.dg/ubsan/pr78248.c: New test.

From-SVN: r242362
2016-11-13 19:31:17 +01:00
Eric Botcazou
476053121b decl.c (gnat_to_gnu_entity): Look at the underlying type for the signedness of the type.
* 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
2016-11-13 18:29:45 +00:00
Eric Botcazou
c0c54de6a0 decl.c (annotate_value): Deal specially with negative constants.
* gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Deal specially
	with negative constants.

From-SVN: r242360
2016-11-13 18:20:25 +00:00
Eric Botcazou
96826e28ef 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
2016-11-13 18:08:25 +00:00
Eric Botcazou
854c00dd69 Makefile.in (NO_OMIT_ADAFLAGS): Define.
* 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
2016-11-13 17:43:23 +00:00
Eric Botcazou
4be719cdc2 c-ada-spec.c (print_ada_declaration): For typedef declarations...
* 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
2016-11-13 17:37:35 +00:00
Eric Botcazou
4ebd491f2a 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
2016-11-13 17:23:13 +00:00
David Edelsohn
499266dc40 re PR target/78336 (powerpc-darwin bootstrap broken (probably by 241930))
PR target/78336
        * config/rs6000/rs6000.c (rs6000_asm_weaken_decl): Protect
        ASM_OUTPUT_DEF.

From-SVN: r242353
2016-11-13 09:28:49 -05:00
Janus Weil
f9d49cd1d0 re PR fortran/60952 ([F03] Problem using "end" as a type-bound procedure and contained procedure)
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
2016-11-13 12:12:05 +01:00
Janus Weil
9cbf867310 re PR fortran/66366 ([OOP] ICE on invalid with non-allocatable CLASS variable)
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
2016-11-13 10:56:10 +01:00
Jason Merrill
559f2bbc36 CWG 2233 - default arg and parameter pack
* typeck.c (convert_arguments): Handle default arg followed by none.

From-SVN: r242350
2016-11-13 01:52:43 -05:00
Jason Merrill
dc8d2d00c5 Fix constexpr lvalue use of __real and __imag.
* constexpr.c (potential_constant_expression_1): REALPART_EXPR and
	IMAGPART_EXPR can be lvalues.

From-SVN: r242349
2016-11-13 01:52:15 -05:00
Jason Merrill
ba1e69c03f DR 374 - specialization in outer namespace
PR c++/56840
	* pt.c (check_specialization_namespace): Allow any enclosing
	namespace.
	(check_unqualified_spec_or_inst): New.
	(check_explicit_specialization): Call it.
	* parser.c (cp_parser_elaborated_type_specifier)
	(cp_parser_class_head): Call it.

From-SVN: r242348
2016-11-13 01:51:23 -05:00
GCC Administrator
478eca6464 Daily bump.
From-SVN: r242345
2016-11-13 00:16:21 +00:00
David Edelsohn
0e07583557 * g++.dg/pr78112.C: XFAIL AIX.
From-SVN: r242342
2016-11-12 18:11:04 -05:00
Jonathan Wakely
5485c81829 * src/filesystem/ops.cc (is_empty): Fix typo in exception message.
From-SVN: r242341
2016-11-12 20:28:55 +00:00
Jonathan Wakely
13908b4404 * include/std/future (future_error): Fix public typo to private.
From-SVN: r242340
2016-11-12 20:28:50 +00:00
Joseph Myers
90df67c791 * es.po: Update.
From-SVN: r242338
2016-11-12 18:51:17 +00:00