Commit Graph

159973 Commits

Author SHA1 Message Date
Peter Bergner
bf3c8adf37 re PR target/83399 (Power8 ICE During LRA with 2-op rtl pattern for lvx instruction)
PR target/83399
	* gcc.target/powerpc/pr83399.c: Only run on Linux.

From-SVN: r258071
2018-02-28 09:43:41 -06:00
Richard Biener
0e0e545fc6 re PR tree-optimization/84584 ([graphite] ICE: Segmentation fault (in dominated_by_p))
2018-02-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84584
	* graphite-scop-detection.c (scop_detection::add_scop): Discard
	SCoPs with fake exit edge.

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

From-SVN: r258070
2018-02-28 15:33:33 +00:00
Jonathan Wakely
b44f8ad8b2 PR preprocessor/84517 allow double-underscore macros after string literals
gcc/testsuite:

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

libcpp:

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

From-SVN: r258069
2018-02-28 15:27:17 +00:00
Eric Botcazou
c6db43fa35 i-cexten.ads (Float_128): New type.
ada/
	* libgnat/i-cexten.ads (Float_128): New type.
c-family/
	* c-ada-spec.c (dump_ada_node) <NULLPTR_TYPE>: New case.
	<REAL_TYPE>: Deal specifically with _Float128/__float128.

From-SVN: r258068
2018-02-28 14:31:02 +00:00
Eric Botcazou
9e25c7ed96 c-ada-spec.c (dump_ada_double_name): New case.
* c-ada-spec.c (dump_ada_double_name) <ENUMERAL_TYPE>: New case.
	(is_char_array): Take a type instead of a declaration.
	(dump_ada_array_type): Likewise.
	(is_simple_enum): Minor tweak.
	(dump_ada_enum_type): New function extracted from...
	(dump_ada_node) <ENUMERAL_TYPE>: ...here.  Invoke it.
	<INTEGER_TYPE>: Remove unreachable code.
	<RECORD_TYPE>: Likewise.  Minor tweaks.
	(dump_nested_type) <ARRAY_TYPE>: Adjust to above changes.
	<ENUMERAL_TYPE>: New case.
	<RECORD_TYPE>: Factor out common code.
	(dump_ada_declaration) <ARRAY_TYPE>: Adjust to above changes.
	Minor tweaks.  Deal with enumeral types.
	(dump_ada_structure): Minor tweaks.

From-SVN: r258067
2018-02-28 14:14:12 +00:00
Eric Botcazou
09de35509f c-ada-spec.c (dump_ada_node): Do not use generic address for incomplete structures.
* c-ada-spec.c (dump_ada_node) <POINTER_TYPE>: Do not use generic
	address for incomplete structures.
	(dump_forward_type): Do not bail out for incomplete structures.
	(dump_ada_declaration): Do not special-case incomplete structures
	for subtypes.  Dump them as null records for types.

From-SVN: r258066
2018-02-28 13:59:44 +00:00
Eric Botcazou
e02f4b9298 c-ada-spec.c (dump_ada_import): Use boolean and fix formatting.
* c-ada-spec.c (dump_ada_import): Use boolean and fix formatting.
	(is_char_array): Fix formatting.
	(dump_template_types): Likewise.
	(dump_generic_ada_node): Rename into...
	(dump_ada_node): ...this.
	<POINTER_TYPE>: Remove superfluous space.  Use generic address for
	incomplete structures and not for empty structures.  Do not use it
	when forward declarations are needed.
	(dump_forward_type): New function.
	(dump_nested_types): Remove FORWARD parameter.  Do not consider
	TREE_VISITED and do not generate a forward declaration.  Only dump
	original nested types for nested declaration.
	(dump_nested_type) <POINTER_TYPE>: Call dump_forward_type.
	<ARRAY_TYPE>: Likewise if the component type is an anonymous pointer.
	<RECORD_TYPE>: Do not consider TREE_VISITED.
	(dump_ada_declaration): Use booleans and fix formatting throughout.
	<TYPE_DECL>: Skip incomplete structures and not empty structures.
	Call dump_forward_type instead of dump_nested_types for a typedef.
	Remove superfluous check and adjust call to dump_nested_types.
	<POINTER_TYPE>: Call dump_forward_type and fall through.
	(dump_ada_struct_decl): Rename into...
	(dump_ada_structure): ...this.  Do not special-case empty structures.

From-SVN: r258064
2018-02-28 13:53:54 +00:00
Martin Liska
4830cfc0a0 Fix timevar format and fix tests (PR testsuite/84597).
2018-02-28  Martin Liska  <mliska@suse.cz>

	PR testsuite/84597
	* timevar.c (timer::print): Fix format to properly print 100%
	values.
2018-02-28  Martin Liska  <mliska@suse.cz>

	PR testsuite/84597
	* g++.dg/ext/timevar1.C: Fix pruned patterns.
	* g++.dg/ext/timevar2.C: Likewise.

From-SVN: r258063
2018-02-28 13:45:59 +00:00
Eric Botcazou
095d8d4b23 c-ada-spec.c (dump_ada_import): Use boolean and fix formatting.
* c-ada-spec.c (dump_ada_import): Use boolean and fix formatting.
	(is_char_array): Fix formatting.
	(dump_template_types): Likewise.
	(dump_generic_ada_node): Rename into...
	(dump_ada_node): ...this.
	<POINTER_TYPE>: Remove superfluous space.  Use generic address for
	incomplete structures and not for empty structures.  Do not use it
	when forward declarations are needed.
	(dump_forward_type): New function.
	(dump_nested_types): Remove FORWARD parameter.  Do not consider
	TREE_VISITED and do not generate a forward declaration.  Only dump
	original nested types for nested declaration.
	(dump_nested_type) <POINTER_TYPE>: Call dump_forward_type.
	<ARRAY_TYPE>: Likewise if the component type is an anonymous pointer.
	<RECORD_TYPE>: Do not consider TREE_VISITED.
	(dump_ada_declaration): Use booleans and fix formatting throughout.
	<TYPE_DECL>: Skip incomplete structures and not empty structures.
	Call dump_forward_type instead of dump_nested_types for a typedef.
	Remove superfluous check and adjust call to dump_nested_types.
	<POINTER_TYPE>: Call dump_forward_type and fall through.
	(dump_ada_struct_decl): Rename into...
	(dump_ada_structure): ...this.  Do not special-case empty structures.

From-SVN: r258062
2018-02-28 13:43:38 +00:00
Richard Biener
9348eb677e re PR c/84607 (Side effects discarded in address computation inside 'if')
2018-02-28  Richard Biener  <rguenther@suse.de>

	PR middle-end/84607
	* genmatch.c (capture_info::walk_match): Do not mark
	captured expressions without operands as expr_p given
	they act more like predicates and should be subject to
	"lost tail" side-effect preserving.

	* gcc.dg/pr84607.c: New testcase.

From-SVN: r258061
2018-02-28 13:40:41 +00:00
Nathan Sidwell
35129fd3a7 [PR c++/84602] ICE with anon-struct
https://gcc.gnu.org/ml/gcc-patches/2018-02/msg01577.html
	PR c++/84602
	* name-lookup.h (search_anon_aggr): Add defaulted WANT_TYPE arg.
	* name-lookup.c (fields_linear_search): Look in an anon-aggr
	regardless of want_type.
	(search_anon_aggr): Just use get_class_binding_direct.

	PR c++/84602
	* g++.dg/lookup/pr84602.C: New.

From-SVN: r258060
2018-02-28 12:32:10 +00:00
Jakub Jelinek
6030f6fe25 re PR c++/83871 (wrong code for attribute const and pure on distinct template specializations)
PR c++/83871
	PR c++/83503
	* g++.dg/ext/attr-warning.C: Remove -fdump-tree-optimized from
	dg-options.
	* g++.dg/ext/attr-nonnull.C: Likewise.
	* g++.dg/ext/attr-noinline.C: Fix syntax in scan-tree-dump-not directives.
	* g++.dg/ext/attr-noinline-2.C: Likewise.
	* g++.dg/ext/attr-noreturn-2.C: Use -fdump-tree-optimized instead of
	-fdump-tree-eh in dg-options.

From-SVN: r258059
2018-02-28 10:43:10 +01:00
Jakub Jelinek
c1299a9e28 decl.c (cp_finish_decomp): Don't adjust eltscnt when calling inform_n.
* decl.c (cp_finish_decomp): Don't adjust eltscnt when calling
	inform_n.

From-SVN: r258058
2018-02-28 10:01:13 +01:00
Jakub Jelinek
ce579a4fe0 re PR debug/83917 (with -mcall-ms2sysv-xlogues, stepping into x86 tail-call restore stub gives bad backtrace)
PR debug/83917
	* configure.ac (AS_HIDDEN_DIRECTIVE): AC_DEFINE_UNQUOTED this to
	$asm_hidden_op if visibility ("hidden") attribute works.
	(HAVE_AS_CFI_SECTIONS): New AC_DEFINE.
	* config/i386/i386-asm.h: Don't include auto-host.h.
	(PACKAGE_VERSION, PACKAGE_NAME, PACKAGE_STRING, PACKAGE_TARNAME,
	PACKAGE_URL): Don't undefine.
	(USE_GAS_CFI_DIRECTIVES): Don't use nor define this macro, instead
	guard cfi_startproc only on ifdef __GCC_HAVE_DWARF2_CFI_ASM.
	(FN_HIDDEN): Change guard from #ifdef HAVE_GAS_HIDDEN to
	#ifdef AS_HIDDEN_DIRECTIVE, use AS_HIDDEN_DIRECTIVE macro in the
	definition instead of hardcoded .hidden.
	* config/i386/cygwin.S: Include i386-asm.h first before .cfi_sections
	directive.  Use #ifdef HAVE_AS_CFI_SECTIONS rather than
	#ifdef HAVE_GAS_CFI_SECTIONS_DIRECTIVE to guard .cfi_sections.
	(USE_GAS_CFI_DIRECTIVES): Don't define.
	* configure: Regenerated.
	* config.in: Likewise.

From-SVN: r258057
2018-02-28 09:59:15 +01:00
Alan Modra
678127a85e gcc testsuite changes for new linker messages
GNU ld error messages have changed to comply with the GNU coding
standards.

	* lib/prune.exp (prune_gcc_output): Match lower case "in function"
	GNU ld message.
	* g++.dg/other/anon5.C: Match lower case "bad value" GNU ld message.

From-SVN: r258054
2018-02-28 18:33:06 +10:30
Alexandre Oliva
408e89356c [PR81611] turn inc-and-use-of-dead-orig into auto-inc
When the addressing modes available on the machine don't allow offsets
in addresses, odds are that post-increments will be represented in
trees and RTL as:

  y <= x + 1
  ... *(x) ...
  x <= y

so deal with it by turning such RTL as:

  (set y (plus x n))
  ... (mem x) ...

without intervening uses of y into

  (set y x)
  ... (mem (post_add y n)) ...

so as to create auto-inc addresses that we'd otherwise miss.


for  gcc/ChangeLog

	PR rtl-optimization/81611
	* auto-inc-dec.c (attempt_change): Move dead note from
	mem_insn if it's the next use of regno
	(find_address): Take address use of reg holding
	non-incremented value.  Add parm to limit search to the named
	reg only.
	(merge_in_block): Attempt to use a mem insn that is the next
	use of the original regno.

From-SVN: r258053
2018-02-28 05:25:34 +00:00
Ian Lance Taylor
8cda97ab52 runtime: update AIX memory allocation for new versions
Reviewed-on: https://go-review.googlesource.com/97357

From-SVN: r258052
2018-02-28 01:39:03 +00:00
Ian Lance Taylor
930540ca89 libgo: update to final Go 1.10 release
Reviewed-on: https://go-review.googlesource.com/97517

From-SVN: r258051
2018-02-28 01:19:07 +00:00
GCC Administrator
5007cea32e Daily bump.
From-SVN: r258050
2018-02-28 00:16:22 +00:00
Martin Sebor
2211eff659 Avoid including <string> directly.
From-SVN: r258046
2018-02-27 16:29:51 -07:00
Martin Sebor
d4cfd486eb PR c++/83871 - wrong code for attribute const and pure on distinct template specializations
PR c++/83871 - wrong code for attribute const and pure on distinct template specializations
PR c++/83503 - [8 Regression] bogus -Wattributes for const and pure on function template specialization

gcc/ChangeLog:

	PR c++/83871
	* gcc/doc/invoke.texi (-Wmissing-attributes): New option.
	* gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.

gcc/c-family/ChangeLog:

	PR c++/83871
	* c.opt (-Wmissing-attributes): New option.

gcc/cp/ChangeLog:

	PR c++/83871
	PR c++/83503
	* cp-tree.h (warn_spec_missing_attributes): New function.
	((check_explicit_specialization): Add an argument.  Call the above
	function.
	* decl.c (duplicate_decls): Avoid applying primary function template's
	attributes to its explicit specializations.
	cp/pt.c (warn_spec_missing_attributes): Define.

gcc/testsuite/ChangeLog:

	PR c++/83871
	PR c++/83503
	* g++.dg/Wmissing-attributes.C: New test.
	* g++.dg/ext/attr-const-pure.C: New test.
	* g++.dg/ext/attr-const.C: New test.
	* g++.dg/ext/attr-deprecated-2.C: New test.
	* g++.dg/ext/attr-malloc-2.C: New test.
	* g++.dg/ext/attr-malloc.C: New test.
	* g++.dg/ext/attr-noinline-2.C: New test.
	* g++.dg/ext/attr-noinline.C: New test.
	* g++.dg/ext/attr-nonnull.C: New test.
	* g++.dg/ext/attr-noreturn-2.C: New test.
	* g++.dg/ext/attr-noreturn.C: New test.
	* g++.dg/ext/attr-nothrow-2.C: New test.
	* g++.dg/ext/attr-nothrow.C: New test.
	* g++.dg/ext/attr-optimize.C: New test.
	* g++.dg/ext/attr-pure.C: New test.
	* g++.dg/ext/attr-returns-nonnull.C: New test.
	* g++.dg/ext/attr-warning.C: New test.

From-SVN: r258045
2018-02-27 15:28:21 -07:00
Martin Sebor
1c89478aef PR translation/84207 - Hard coded plural in gimple-fold.c
gcc/ChangeLog:

	PR translation/84207
	* diagnostic-core.h (warning_n, error_n, inform_n): Change
	n argument to unsigned HOST_WIDE_INT.
	* diagnostic.c (warning_n, error_n, inform_n): Ditto.
	(diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
	* gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.

From-SVN: r258044
2018-02-27 15:06:03 -07:00
Håkon Sandsmark
76bd270a7d PR c++/71546 - lambda init-capture with qualified-id.
* parser.c (cp_parser_lambda_introducer): Clear scope after
	each lambda capture.

From-SVN: r258043
2018-02-27 15:57:35 -05:00
Nathan Sidwell
10b5c9829b [PR c++/84426] ICE after conflicting member decl
https://gcc.gnu.org/ml/gcc-patches/2018-02/msg01529.html
	PR c++/84426
	* name-lookup.h (get_member_slot): Rename ...
	(find_member_slot): ... here.
	(add_member_slot): New.
	* name-lookup.c (member_vec_linear_search): No need to check for
	NULL slot.
	(get_member_slot): Rename ...
	(find_member_slot): ... here.  Don't add slot for incomplete class.
	(add_member_slot): New.
	* class.c (add_method): Adjust get_member_slot rename.  Bail out
	if push_class_level_binding fails.  Create slot and grok
	properties once we're committed to insertion.

	PR c++/84426
	* g++.dg/lookup/pr84426.C: New.

From-SVN: r258042
2018-02-27 20:52:15 +00:00
Jason Merrill
7f7e718d9c * cp-tree.h: Adjust comment.
From-SVN: r258040
2018-02-27 14:05:23 -05:00
Jason Merrill
e8ef9fdfb9 PR c++/84489 - dependent default template argument
* pt.c (type_unification_real): Handle early substitution failure.

From-SVN: r258039
2018-02-27 12:26:47 -05:00
Richard Biener
b1ddb654ab re PR tree-optimization/84512 (Missed optimization: should be precalculated in compile-time)
2018-02-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84512
	* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
	Do not use the estimate returned from record_stmt_cost for
	the scalar iteration cost but sum properly using add_stmt_cost.

	* gcc.dg/tree-ssa/pr84512.c: New testcase.

From-SVN: r258036
2018-02-27 15:25:33 +00:00
Richard Biener
c16d3e3c87 re PR libgomp/84466 (libgomp.graphite/force-parallel-8.c fails starting with r257723)
2018-02-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/84466
	* graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
	Adjust last change to less strictly validate use operands.

From-SVN: r258035
2018-02-27 14:45:46 +00:00
Martin Liska
e59b5e24ea Make groups more generic (PR gcov-profile/84548).
2018-02-27  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/84548
	* gcov.c (process_file): Allow partial overlap and consider it
	also as group functions.
	(output_lines): Properly calculate range of lines for a group.
2018-02-27  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/84548
	* g++.dg/gcov/pr84548.C: New test.

From-SVN: r258033
2018-02-27 14:11:08 +00:00
Ville Voutilainen
23c3a05908 Implement the missing bits of LWG 2769
* include/std/any (any_cast(const any&)): Add static_assert.
(any_cast(any&)): Likewise.
(any_cast(any&&)): Likewise, and remove the handling
for copyable-but-not-movable type.
* testsuite/20_util/any/misc/any_cast.cc: Adjust.
* testsuite/20_util/any/misc/any_cast_neg.cc: Likewise, and
add new tests.

From-SVN: r258031
2018-02-27 13:33:30 +02:00
Jakub Jelinek
2be4b342e0 re PR target/84575 (gcc.target/i386/pr84309.c fail)
PR target/84575
	* gcc.target/i386/pr84309.c: Add -mno-avx2 to dg-options.

From-SVN: r258030
2018-02-27 09:44:48 +01:00
Martin Liska
ea2cd1c276 Fix formatting of -ftime-report.
2018-02-27  Martin Liska  <mliska@suse.cz>

	* timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
	'ggc' suffixes.  Change first column width.
	(timer::print): Fix formatting of the column.

From-SVN: r258029
2018-02-27 08:27:12 +00:00
Alexandre Oliva
9893273d98 [IEPM] don't preserve lexical blocks just for debug inline markers
This patch stops preserving scope blocks just because they are inlined
function scopes, when cleaning up unused scope blocks.  This change
was introduced along with IEPM, but it preserved lots of blocks, and
output debug information for them, although no code from the inlined
function remained after optimization.

The additional preserved blocks took up compile-time memory, and
significant disk space and link time, in some cases more than 25%.
This is deemed excessive, compared with the reasonably small benefit
of allowing one to single-step into an inlined function using a
view-capable debugger.

There was another way of marking inlined function scopes as unused,
based on the markers referencing them during stmt scanning, but that
still preserved too much.

So, this patch restores the pre-IEPM logic of preservation of scopes.
Should a scope block referenced by an inline entry marker be found to
be unused in remove_unused_scope_block_p, the marker will be cleaned
up right after that, in clear_unused_block_pointer, so we won't keep
a dangling reference to a dropped block.

for  gcc/ChangeLog

	* tree-ssa-live.c (remove_unused_scope_block_p): Do not
	preserve inline entry blocks for the sake of debug inline
	entry point markers alone.
	(remove_unused_locals): Suggest in comments a better place to
	force the preservation of inline entry blocks that are
	otherwise unused, but do not preserve them.

From-SVN: r258026
2018-02-27 03:37:10 +00:00
Jason Merrill
ed75f594a9 PR c++/84560 - ICE capturing multi-dimensional VLA.
* tree.c (array_of_runtime_bound_p): False if the element is
	variably-modified.

From-SVN: r258023
2018-02-26 21:45:56 -05:00
Jason Merrill
a2444ce970 PR c++/84441 - ICE with base initialized from ?:
* call.c (unsafe_copy_elision_p): Handle COND_EXPR.

From-SVN: r258022
2018-02-26 21:45:12 -05:00
Jason Merrill
ab5f26bba1 PR c++/84520 - ICE with generic lambda in NSDMI.
* lambda.c (lambda_expr_this_capture): Don't look for fake NSDMI
	'this' in a generic lambda instantiation.

From-SVN: r258021
2018-02-26 21:44:26 -05:00
GCC Administrator
d36a19c78a Daily bump.
From-SVN: r258020
2018-02-27 00:16:24 +00:00
Joseph Myers
e64e6793b1 * es.po, sv.po: Update.
From-SVN: r258016
2018-02-26 22:35:23 +00:00
Jason Merrill
8e9589bd6b PR c++/84559 - ICE with constexpr VLA.
* constexpr.c (ensure_literal_type_for_constexpr_object): Check
	for constexpr variable with VLA type.

From-SVN: r258015
2018-02-26 16:55:41 -05:00
Jakub Jelinek
c2236b9b79 re PR c++/84558 (ICE with invalid constexpr constructor)
PR c++/84558
	* constexpr.c (cxx_eval_vec_init_1): For reuse, treat NULL eltinit like
	a valid constant initializer.  Formatting fixes.

	* g++.dg/cpp1y/pr84558.C: New test.

From-SVN: r258014
2018-02-26 22:52:39 +01:00
Paolo Carlini
08735f538c re PR c++/84540 (ICE with alignas in variadic template)
/cp
2018-02-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84540
	* pt.c (tsubst_attributes): Handle correctly tsubst_attribute
	returning NULL_TREE.
	(apply_late_template_attributes): Likewise.

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

	PR c++/84540
	* g++.dg/cpp0x/alignas14.C: New.
	* g++.dg/cpp0x/alignas15.C: Likewise.

From-SVN: r258012
2018-02-26 20:06:40 +00:00
Jakub Jelinek
2bb03eb72f re PR c++/84557 (ICE with invalid firstprivate variable)
PR c++/84557
	* parser.c (cp_parser_omp_var_list_no_open): Only call
	cp_parser_lookup_name_simple on names satisfying identifier_p.
	(cp_parser_oacc_routine): Likewise.

	* g++.dg/gomp/pr84557.C: New test.

From-SVN: r258011
2018-02-26 20:51:05 +01:00
Jakub Jelinek
e586831971 re PR debug/83917 (with -mcall-ms2sysv-xlogues, stepping into x86 tail-call restore stub gives bad backtrace)
PR debug/83917
	* config/i386/i386-asm.h (PACKAGE_VERSION, PACKAGE_NAME,
	PACKAGE_STRING, PACKAGE_TARNAME, PACKAGE_URL): Undefine between
	inclusion of auto-target.h and auto-host.h.
	(USE_GAS_CFI_DIRECTIVES): Define if not defined already based on
	__GCC_HAVE_DWARF2_CFI_ASM.
	(cfi_startproc, cfi_endproc, cfi_adjust_cfa_offset,
	cfi_def_cfa_register, cfi_def_cfa, cfi_register, cfi_offset, cfi_push,
	cfi_pop): Define.
	* config/i386/cygwin.S: Don't include auto-host.h here, just
	define USE_GAS_CFI_DIRECTIVES to 1 or 0 and include i386-asm.h.
	(cfi_startproc, cfi_endproc, cfi_adjust_cfa_offset,
	cfi_def_cfa_register, cfi_register, cfi_push, cfi_pop): Remove.
	* config/i386/resms64fx.h: Add cfi_* directives.
	* config/i386/resms64x.h: Likewise.

From-SVN: r258010
2018-02-26 20:46:34 +01:00
Jason Merrill
106b15eac3 PR c++/84551 - ICE with concepts and -g.
* parser.c (add_debug_begin_stmt): Do nothing in a concept.

From-SVN: r258009
2018-02-26 14:04:42 -05:00
Marek Polacek
b671df813a re PR c++/84325 (internal compiler error, in cxx_eval_constant_expression gcc/cp/constexpr.c:4740)
PR c++/84325
	* tree.c (replace_placeholders_r): Only check TREE_CONSTANT on
	non-types.

	* g++.dg/cpp1z/pr84325.C: New test.

From-SVN: r258008
2018-02-26 18:41:56 +00:00
Carl Love
40b864f141 builtins-3.c: Move vec_neg builtin tests to Power 8 test file.
gcc/testsuite/ChangeLog:

2018-02-26  Carl Love  <cel@us.ibm.com>
	* gcc.target/powerpc/builtins-3.c: Move vec_neg builtin tests to
	Power 8 test file.
	* gcc.target/powerpc/builtins-3-p8.c: Add vec_neg builtin tests.
	* gcc.target/powerpc/fold-vec-neg-char.c(dg-options): Add -mcpu=power8.
	* gcc.target/powerpc/fold-vec-neg-floatdouble.c(dg-options): Add
	-mcpu=power8.
	* gcc.target/powerpc/fold-vec-neg-int.c(dg-options): Remove file.
	* gcc.target/powerpc/fold-vec-neg-short.c(dg-options): Add
	-mcpu=power8.

From-SVN: r258006
2018-02-26 18:13:56 +00:00
H.J. Lu
fc43583658 i386: Update comments for ix86_output_indirect_jmp
Revision 257992 removed the bool argument from ix86_output_indirect_jmp.
Update comments to reflect it.

	* config/i386/i386.c (ix86_output_indirect_jmp): Update comments.

From-SVN: r258005
2018-02-26 09:57:26 -08:00
Jason Merrill
18101e7383 PR c++/84447 - ICE with deleted inherited ctor with default arg.
* call.c (build_over_call): Handle deleted functions in one place.

From-SVN: r258003
2018-02-26 12:06:07 -05:00
Jason Merrill
f18f8ade38 PR c++/81589 - error with is_trivially_constructible
* g++.dg/ext/is_trivially_constructible6.C: New.

From-SVN: r258002
2018-02-26 12:06:02 -05:00
H.J. Lu
c2c601b2c0 i386: Add TARGET_INDIRECT_BRANCH_REGISTER
For

---
struct C {
  virtual ~C();
  virtual void f();
};

void
f (C *p)
{
  p->f();
  p->f();
}
---

-mindirect-branch=thunk-extern -O2 on x86-64 GNU/Linux generates:

_Z1fP1C:
.LFB0:
        .cfi_startproc
        pushq   %rbx
        .cfi_def_cfa_offset 16
        .cfi_offset 3, -16
        movq    (%rdi), %rax
        movq    %rdi, %rbx
        jmp     .LIND1
.LIND0:
        pushq   16(%rax)
        jmp     __x86_indirect_thunk
.LIND1:
        call    .LIND0
        movq    (%rbx), %rax
        movq    %rbx, %rdi
        popq    %rbx
        .cfi_def_cfa_offset 8
        movq    16(%rax), %rax
        jmp     __x86_indirect_thunk_rax
        .cfi_endproc

x86-64 is supposed to have asynchronous unwind tables by default, but
there is nothing that reflects the change in the (relative) frame
address after .LIND0.  That region really has to be moved outside of
the .cfi_startproc/.cfi_endproc bracket.

This patch adds TARGET_INDIRECT_BRANCH_REGISTER to force indirect
branch via register whenever -mindirect-branch= is used.  Now,
-mindirect-branch=thunk-extern -O2 on x86-64 GNU/Linux generates:

_Z1fP1C:
.LFB0:
	.cfi_startproc
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	(%rdi), %rax
	movq	%rdi, %rbx
	movq	16(%rax), %rax
	call	__x86_indirect_thunk_rax
	movq	(%rbx), %rax
	movq	%rbx, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 8
	movq	16(%rax), %rax
	jmp	__x86_indirect_thunk_rax
	.cfi_endproc

so that "-mindirect-branch=thunk-extern" is equivalent to
"-mindirect-branch=thunk-extern -mindirect-branch-register", which is
used by Linux kernel.

gcc/

	PR target/84039
	* config/i386/constraints.md (Bs): Replace
	ix86_indirect_branch_register with
	TARGET_INDIRECT_BRANCH_REGISTER.
	(Bw): Likewise.
	* config/i386/i386.md (indirect_jump): Likewise.
	(tablejump): Likewise.
	(*sibcall_memory): Likewise.
	(*sibcall_value_memory): Likewise.
	Peepholes of indirect call and jump via memory: Likewise.
	(*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
	(*sibcall_value_GOT_32): Likewise.
	* config/i386/i386.opt: Likewise.
	* config/i386/predicates.md (indirect_branch_operand): Likewise.
	(GOT_memory_operand): Likewise.
	(call_insn_operand): Likewise.
	(sibcall_insn_operand): Likewise.
	(GOT32_symbol_operand): Likewise.
	* config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.

gcc/testsuite/

	PR target/84039
	* gcc.target/i386/indirect-thunk-1.c: Updated.
	* gcc.target/i386/indirect-thunk-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-3.c: Likewise.
	* gcc.target/i386/indirect-thunk-4.c: Likewise.
	* gcc.target/i386/indirect-thunk-5.c: Likewise.
	* gcc.target/i386/indirect-thunk-6.c: Likewise.
	* gcc.target/i386/indirect-thunk-7.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
	* gcc.target/i386/indirect-thunk-attr-7.c: Likewise.
	* gcc.target/i386/indirect-thunk-bnd-1.c: Likewise.
	* gcc.target/i386/indirect-thunk-bnd-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-bnd-3.c: Likewise.
	* gcc.target/i386/indirect-thunk-bnd-4.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-5.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-6.c: Likewise.
	* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-5.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-6.c: Likewise.
	* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
	* gcc.target/i386/ret-thunk-9.c: Likewise.
	* gcc.target/i386/ret-thunk-10.c: Likewise.
	* gcc.target/i386/ret-thunk-11.c: Likewise.
	* gcc.target/i386/ret-thunk-12.c: Likewise.
	* gcc.target/i386/ret-thunk-13.c: Likewise.
	* gcc.target/i386/ret-thunk-14.c: Likewise.
	* gcc.target/i386/ret-thunk-15.c: Likewise.

From-SVN: r258001
2018-02-26 09:00:46 -08:00