* lto-cgraph.c (compute_ltrans_boundary): Add abstract origins into
	boundaries.
	* lto-streamer-out.c (tree_is_indexable): Results decls and
	parm decls are not indexable.
	(DFS_write_tree_body): Do not follow args and results.
	(hash_tree): Likewise.
	(output_functions): Rearrange so struct function is needed
	only when real body is output; be able to also ouptut abstract
	functions; output DECL_ARGUMENTS and DECL_RESULT.
	(lto_output): When not in WPA, ale store abstract functions.
	(write_symbol): Do not care about RESULT_DECL.
	(output_symbol_p): Handle correctly sbtract decls.
	* lto-streamer-in.c (input_function): Rearrange so struct
	function can be NULL at entry; allow streaming of
	functions w/o body; store DECL_ARGUMENTS and DECL_RESULT.
	* ipa.c (symtab_remove_unreachable_nodes): Silence confused
	sanity check during LTO.
	* tree-streamer-out.c (write_ts_decl_non_common_tree_pointers): Skip
	RESULT_DECl and DECL_ARGUMENTS.
	* tree-streamer-in.c (lto_input_ts_decl_non_common_tree_pointers):
	Likewise.

	* lto.c (lto_materialize_function): Do not push struct function.
	* lto-partition.c (get_symbol_class): Handle abstracts correctly.
	(may_need_named_section_p): Even abstract origins may need
	named section.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201468 138bc75d-0d04-0410-961f-82ee72b054a4
	DR 1430
	PR c++/51239
	* pt.c (pack_expansion_args_count): Rename from
	any_pack_expanson_args_p.
	(coerce_template_parms): Reject pack expansion to
	non-pack template parameter of alias template.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201469 138bc75d-0d04-0410-961f-82ee72b054a4
	DR 1286
	* pt.c (get_underlying_template): New.
	(convert_template_argument, lookup_template_class_1): Use it.

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