Commit Graph

165602 Commits

Author SHA1 Message Date
Iain Buclaw
5a5129a0df libphobos: Add support for RISCV to glibc bindings
Backported from upstream druntime master.

Reviewed-on: https://github.com/dlang/druntime/pull/2355

From-SVN: r266713
2018-12-01 21:48:43 +00:00
Marek Polacek
16e48dd1b4 re PR c++/79629 (ICE on invalid code in tsubst_copy, at cp/pt.c:14477)
PR c++/79629
	* g++.dg/other/error35.C: New test.

From-SVN: r266712
2018-12-01 21:32:16 +00:00
Marek Polacek
8fc1ef712d re PR c++/83856 (ICE in tsubst_copy;)
PR c++/83856
	* g++.dg/cpp1y/lambda-generic-83856.C: New test.

From-SVN: r266711
2018-12-01 21:09:31 +00:00
Marek Polacek
96c35892be Implement P0634R3, Down with typename!
* parser.c (CP_PARSER_FLAGS_TYPENAME_OPTIONAL): New enumerator.
	(cp_parser_type_name): Remove declaration.
	(cp_parser_postfix_expression): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_type_id.
	(cp_parser_new_type_id): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL to
	cp_parser_type_specifier_seq.
	(cp_parser_lambda_declarator_opt): Pass
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL to
	cp_parser_parameter_declaration_clause.
	(cp_parser_condition): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_simple_declaration): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_init_declarator.
	(cp_parser_conversion_type_id): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_type_specifier_seq.
	(cp_parser_default_type_template_argument): Pass
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL to cp_parser_type_id.
	(cp_parser_template_parameter): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_parameter_declaration.
	(cp_parser_explicit_instantiation): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_simple_type_specifier): Adjust call to cp_parser_type_name
	to relay if we should treat the typename keyword as optional.  Maybe
	call cp_parser_make_typename_type is parsing a template-id and it's
	not a TYPE_DECL.
	(cp_parser_type_name): Remove unused function.
	(cp_parser_enum_specifier): Pass to CP_PARSER_FLAGS_NONE
	cp_parser_type_specifier_seq.
	(cp_parser_alias_declaration): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_type_id.
	(cp_parser_init_declarator): New parameter.  Pass it down to
	cp_parser_declarator.
	(cp_parser_declarator): New parameter.  Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.  Pass the new parameter to
	cp_parser_direct_declarator.
	(cp_parser_direct_declarator): New parameter.  Pass it to
	cp_parser_parameter_declaration_clause and cp_parser_declarator.
	(cp_parser_declarator_id):
	(cp_parser_type_id_1): New parameter.  Pass it to
	cp_parser_type_specifier_seq.  Adjust call to cp_parser_declarator.
	(cp_parser_type_id): New parameter.  Pass it to cp_parser_type_id_1.
	(cp_parser_template_type_arg): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_type_id_1.
	(cp_parser_trailing_type_id): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_type_id_1.
	(cp_parser_type_specifier_seq): New parameter.
	(function_being_declared_is_template_p):
	(cp_parser_parameter_declaration_clause): New parameter.  Pass it to
	cp_parser_parameter_declaration_list.
	(cp_parser_parameter_declaration_list): New parameter.  Pass it to
	cp_parser_parameter_declaration.
	(cp_parser_parameter_declaration): New parameter.  Pass it to
	cp_parser_decl_specifier_seq.  Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_member_declaration): Adjust call to
	cp_parser_decl_specifier_seq to also include
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL.  Pass
	CP_PARSER_FLAGS_TYPENAME_OPTIONAL to cp_parser_declarator.
	(cp_parser_exception_declaration): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_type_specifier_seq and cp_parser_declarator.
	(cp_parser_requirement_parameter_list): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_parameter_declaration_clause.
	(cp_parser_constructor_declarator_p): Resolve the TYPENAME_TYPE.
	(cp_parser_single_declaration): Pass CP_PARSER_FLAGS_TYPENAME_OPTIONAL
	to cp_parser_decl_specifier_seq and cp_parser_init_declarator.
	(cp_parser_cache_defarg): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator and cp_parser_parameter_declaration_list.
	(cp_parser_objc_method_tail_params_opt): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_parameter_declaration.
	(cp_parser_objc_class_ivars): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_objc_try_catch_finally_statement): Pass CP_PARSER_FLAGS_NONE
	to cp_parser_parameter_declaration
	(cp_parser_objc_struct_declaration): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator.
	(cp_parser_omp_for_loop_init): Pass CP_PARSER_FLAGS_NONE to
	cp_parser_declarator and cp_parser_type_specifier_seq.

	* g++.dg/cpp0x/alias-decl-43.C: Adjust dg-error.
	* g++.dg/cpp0x/decltype67.C: Only expect error in c++17_down.
	* g++.dg/cpp1z/typename1.C: New test.
	* g++.dg/cpp2a/typename1.C: New test.
	* g++.dg/cpp2a/typename10.C: New test.
	* g++.dg/cpp2a/typename11.C: New test.
	* g++.dg/cpp2a/typename2.C: New test.
	* g++.dg/cpp2a/typename3.C: New test.
	* g++.dg/cpp2a/typename4.C: New test.
	* g++.dg/cpp2a/typename5.C: New test.
	* g++.dg/cpp2a/typename6.C: New test.
	* g++.dg/cpp2a/typename7.C: New test.
	* g++.dg/cpp2a/typename8.C: New test.
	* g++.dg/cpp2a/typename9.C: New test.
	* g++.dg/diagnostic/missing-typename.C: Only run the test in
	c++17_down.
	* g++.dg/other/crash-9.C: Add template disambiguator.
	* g++.dg/other/nontype-1.C: Only expect error in c++17_down.
	* g++.dg/parse/crash13.C: Likewise.
	* g++.dg/parse/error36.C: Likewise.
	* g++.dg/parse/no-typename1.C: Likewise.
	* g++.dg/parse/typedef2.C: Likewise.
	* g++.dg/parse/typename11.C: Likewise.
	* g++.dg/template/crash48.C: Adjust dg-error.
	* g++.dg/template/dependent-name5.C: Only expect error in c++17_down.
	Add dg-error.
	* g++.dg/template/error29.C: Only expect error in c++17_down.
	* g++.dg/template/nested5.C: Add template disambiguator.
	* g++.dg/template/pr84789.C: Only expect error in c++17_down.
	* g++.dg/template/static30.C: Add dg-error.
	* g++.dg/template/typedef6.C: Adjust dg-error.
	* g++.dg/template/typename3.C: Only expect error in c++17_down.

From-SVN: r266710
2018-12-01 17:56:27 +00:00
Jeff Law
e770ab191c * gcc.dg/predict-22.c: Update expected output.
From-SVN: r266709
2018-12-01 09:52:22 -07:00
Jakub Jelinek
a5b2566158 re PR sanitizer/88289 (r266664 causes asan to fail on many/most tests on BE)
PR sanitizer/88289
	* asan.c (asan_redzone_buffer::flush_redzone_payload): Fix up
	an off-by-one for BYTES_BIG_ENDIAN.

From-SVN: r266708
2018-12-01 08:31:56 +01:00
Jakub Jelinek
6b4f5050a9 re PR target/54589 (struct offset add should be folded into address calculation)
PR target/54589
	* combine.c (find_split_point): For invalid memory address
	nonobj + obj + const, if reg + obj + const is valid addressing
	mode, split at nonobj.  Use if rather than else if for the
	fallback.  Comment fixes.

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

From-SVN: r266707
2018-12-01 08:27:58 +01:00
GCC Administrator
1072cfdf34 Daily bump.
From-SVN: r266705
2018-12-01 00:16:41 +00:00
Indu Bhagat
732779d073 coverage.c (get_coverage_counts): Use from_function_decl for precise function location.
* coverage.c (get_coverage_counts): Use from_function_decl for precise
	function location.
	* profile-count.c (profile_count::dump): Add handling for precise
	profile quality.
	* profile.c (compute_branch_probabilities): Rely on exec_counts instead
	of profile_info to set profile_status of function.
	(branch_prob): Do not set profile_status of function based on
	profile_info. Done above based on exec_counts.

From-SVN: r266702
2018-11-30 16:54:30 -07:00
Jakub Jelinek
4df6a90634 re PR tree-optimization/88274 (ICE in check, at tree-vrp.c:188)
PR tree-optimization/88274
	* tree-ssa-reassoc.c (optimize_range_tests_xor,
	optimize_range_tests_diff): If type has smaller precision than
	corresponding mode or if it has non-standard min/max, compute
	everything in a standard type for the precision.

From-SVN: r266701
2018-12-01 00:27:23 +01:00
Jakub Jelinek
e26584b265 re PR testsuite/85368 (phi-opt-11 test fails on IBM Z)
PR testsuite/85368
	* params.def (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT): New param.
	* tree-ssa-ifcombine.c (ifcombine_ifandif): If
	--param logical-op-non-short-circuit is present, override
	LOGICAL_OP_NON_SHORT_CIRCUIT value from the param.
	* fold-const.c (fold_range_test, fold_truth_andor): Likewise.

	* lib/target-supports.exp (logical_op_short_circuit): Remove.
	* gcc.dg/builtin-bswap-7.c: Remove logical_op_short_circuit
	effective target, drop -mbranch-cost= options from the test and
	instead pass --param logical-op-non-short-circuit=0 or
	--param logical-op-non-short-circuit=1 depending on what the
	tests meant to test.
	* gcc.dg/pr21643.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c: Likewise.
	* gcc.dg/tree-ssa/phi-opt-11.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-4.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c: Likewise.
	* gcc.dg/tree-ssa/ssa-thread-14.c: Likewise.
	* gcc.dg/tree-ssa/vrp47.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-11.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-16.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-14.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c: Likewise.
	* gcc.dg/tree-ssa/vrp87.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c: Likewise.
	* gcc.dg/tree-ssa/phi-opt-2.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-13.c: Likewise.
	* gcc.dg/tree-ssa/ssa-thread-11.c: Likewise.
	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c: Likewise.
	* gcc.dg/tree-ssa/forwprop-28.c: Likewise.
	* gcc.dg/binop-xor1.c: Likewise.
	* gcc.dg/pr46309.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-18.c: New test.
	* gcc.dg/tree-ssa/reassoc-32.c: Add
	--param logical-op-non-short-circuit=1 to dg-options.
	* gcc.dg/tree-ssa/reassoc-33.c: Likewise.
	* gcc.dg/tree-ssa/reassoc-34.c: Likewise.
	* gcc.dg/tree-ssa/reassoc-35.c: Likewise.
	* gcc.dg/tree-ssa/reassoc-36.c: Likewise.

From-SVN: r266700
2018-12-01 00:26:41 +01:00
Jeff Law
2b86de4cc6 optabs.c (expand_binop): Use "machine_mode" rather than "enum machine mode" in most recent change.
* optabs.c (expand_binop): Use "machine_mode" rather than
	"enum machine mode" in most recent change.

From-SVN: r266698
2018-11-30 16:12:59 -07:00
Wilco Dijkstra
71b144289c re PR middle-end/64242 (Longjmp expansion incorrect)
PR middle-end/64242
	* builtins.c (expand_builtin_longjmp): Use a temporary when restoring
	the frame pointer.
	(expand_builtin_nonlocal_goto): Likewise.

	* gcc.c-torture/execute/pr64242.c: New test.

From-SVN: r266697
2018-11-30 16:06:51 -07:00
David Malcolm
8ba109cecc C++: fix-it hint for missing parentheses
Consider:

  class t1
  {
  public:
    double length () const { return m_length; }
  private:
    double m_length;
  };

missing-parens-fixit.C: In function 'bool test_1(const t1&)':
missing-parens-fixit.C:14:15: error: invalid use of member function
  'double t1::length() const' (did you forget the '()' ?)
   14 |   return inst.length > 0.0;
      |          ~~~~~^~~~~~

This patch adds a fix-it hint for the case where the member function
takes no parameters, suggesting the addition of the parentheses:

   14 |   return inst.length > 0.0;
      |          ~~~~~^~~~~~
      |                     ()

so that an IDE can potentially apply the fix.

gcc/cp/ChangeLog:
	* typeck2.c: Include "gcc-rich-location.h".
	(cxx_incomplete_type_diagnostic): When complaining about possibly
	missing parens, add a fix-it hint if the member function takes no
	additional params.

gcc/ChangeLog:
	* diagnostic-core.h (emit_diagnostic): New decl.
	* diagnostic.c (emit_diagnostic): New overload, taking a
	rich_location *.

gcc/testsuite/ChangeLog:
	* g++.dg/parse/missing-parens-fixit.C: New test.

From-SVN: r266696
2018-11-30 22:51:18 +00:00
David Malcolm
553a316b99 pretty-print.c: add selftest::test_prefixes_and_wrapping
gcc/ChangeLog:
	* pretty-print.c (class selftest::test_pretty_printer): New
	subclass of pretty_printer.
	(selftest::test_prefixes_and_wrapping): New test.
	(selftest::pretty_print_c_tests): Call it.

From-SVN: r266695
2018-11-30 22:46:45 +00:00
Michael Ploujnikov
ed1b53a0ab Minimize clone counter memory usage in LTO.
gcc/lto:

	* lto-partition.c (privatize_symbol_name_1): Keep track of
	non-unique symbol counters in the lto_clone_numbers hash
	map.
	(lto_promote_cross_file_statics): Allocate and free the
	lto_clone_numbers hash map.
	(lto_promote_statics_nonwpa): Free the lto_clone_numbers hash
	map.

From-SVN: r266693
2018-11-30 22:31:02 +00:00
Michael Ploujnikov
53aedcce09 Minimize clone counter memory usage in create_virtual_clone.
Based on Martin Jambour's suggestion:
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00111.html

gcc:

	* cgraph.h (clone_function_name): Add a variant that takes a
	tree decl.
	* cgraph.h (cgraph_node::create_virtual_clone): Add a new
	argument: num_suffix.
	* cgraphclones.c (cgraph_node::create_virtual_clone): Pass
	num_suffix to clone_function_name.
	(clone_function_name): Add a variant that takes a tree decl.
	* ipa-cp.c (create_specialized_node): Keep track of clone
	counters in clone_num_suffixes hash map.
	(ipcp_driver): Free the counter hash map.
	* ipa-hsa.c (process_hsa_functions): Creates at most one hsa
	clone per function.

From-SVN: r266692
2018-11-30 22:27:11 +00:00
Michael Ploujnikov
b75255a9b1 Make function assembly more independent.
This is achieved by having clone_function_name assign unique clone
numbers for each function independently.

gcc:

	* cgraphclones.c: Replaced clone_fn_id_num with clone_fn_ids;
	hash map.
	(clone_function_name_numbered): Use clone_fn_ids.

gcc/testsuite:

	* gcc.dg/independent-cloneids-1.c: New test.

From-SVN: r266691
2018-11-30 22:20:43 +00:00
Jakub Jelinek
d5b5f5ad90 re PR debug/85550 (-fdebug-types-section broken with DW_OP_addr in DW_AT_location)
PR debug/85550
	* g++.dg/debug/dwarf2/pr85550.C: New test.

From-SVN: r266689
2018-11-30 21:55:41 +01:00
Cesar Philippidis
fe570ff8d4 [PR88288, OpenACC, libgomp] Adjust offsets for present data clauses
Make libgomp respect the on device offset of subarrays which may arise in
present data clauses.

	libgomp/
	PR libgomp/88288
	* oacc-parallel.c (GOACC_parallel_keyed): Add offset to devaddrs.
	* testsuite/libgomp.oacc-c-c++-common/pr88288.c: New test.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>

From-SVN: r266688
2018-11-30 21:39:49 +01:00
James Norris
344b0fdf2e [C++] Use existing local variable in cp_parser_oacc_enter_exit_data
gcc/cp/
	* parser.c (cp_parser_oacc_enter_exit_data): Use existing local
	variable.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>

From-SVN: r266687
2018-11-30 21:39:40 +01:00
Thomas Schwinge
020dd8e4a0 [PR87924] Add (XFAILed) test cases for OpenACC wait clauses without async-arguments
gcc/testsuite/
	PR c/87924
	* c-c++-common/goacc/asyncwait-5.c: Update.
	* gfortran.dg/goacc/asyncwait-5.f: Likewise.

From-SVN: r266686
2018-11-30 21:39:30 +01:00
Thomas Schwinge
fc2a1f2fa6 Clean up Fortran OpenACC wait clause handling
"wait" can be deduced from "wait_list".

	gcc/fortran/
	* gfortran.h (struct gfc_omp_clauses): Remove "wait".  Adjust all
	users.

From-SVN: r266685
2018-11-30 21:39:18 +01:00
Thomas Schwinge
c34f4fbcc4 Support multiple OpenACC wait clauses
Support for this is not explicitly called for in OpenACC 2.6, but given that
GCC internally decomposes "wait (1, 2)" into "wait (1) wait (2)" (similar for
other clauses, too), it's reasonable to also support that syntax in the front
ends -- which happens to already be the case for C, C++, and easy enough to do
for Fortran.

	gcc/fortran/
	* openmp.c (gfc_match_omp_clauses): Support multiple OpenACC wait
	clauses.
	gcc/testsuite/
	* c-c++-common/goacc/asyncwait-5.c: New file.
	* gfortran.dg/goacc/asyncwait-5.f: Likewise.

From-SVN: r266684
2018-11-30 21:39:08 +01:00
Thomas Schwinge
c223608f54 Add libgomp.oacc-fortran/lib-16-2.f90
This is a copy of libgomp.oacc-fortran/lib-16.f90, but does 'include
"openacc_lib.h"' instead of 'use openacc'.

	libgomp/
	* testsuite/libgomp.oacc-fortran/lib-16-2.f90: New file.

From-SVN: r266683
2018-11-30 21:38:57 +01:00
Vladimir Makarov
9cb95c07fa re PR rtl-optimization/88179 ([MIPS] pr84941.c ICE in lra_eliminate_reg_if_possible at lra-eliminations.c:1393 start with r266385)
2018-11-30  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/88179
	* lra-constraints.c (address_eliminator::address_eliminator):
	Don't eleminate regs in illegitimate address.

From-SVN: r266682
2018-11-30 20:15:56 +00:00
Peter Bergner
8863a902b2 re PR target/87496 (ICE in aggregate_value_p at gcc/function.c:2046)
gcc/testsuite/
	PR target/87496
	* gcc.target/powerpc/pr86324-1.c: Add dg-skip-if selector.
	Add -mcpu=power7 option.

From-SVN: r266680
2018-11-30 12:57:33 -06:00
Janne Blomqvist
854cedfd40 Initialize backtrace state once
From backtrace.h for backtrace_create_state:

   Calling this function allocates resources that can not be freed.
   There is no backtrace_free_state function.  The state is used to
   cache information that is expensive to recompute.  Programs are
   expected to call this function at most once and to save the return
   value for all later calls to backtrace functions.

So instead of calling backtrace_create_state every time we wish to
show a backtrace, do it once and store the result in a static
variable.  libbacktrace allows multiple threads to access the state,
so no need to use TLS.

Regtested on x86_64-pc-linux-gnu.

libgfortran/ChangeLog:

2018-11-30  Janne Blomqvist  <jb@gcc.gnu.org>

	PR libfortran/88137
	* runtime/backtrace.c (show_backtrace): Make lbstate a static
	variable, initialize once.

From-SVN: r266677
2018-11-30 18:44:27 +02:00
Edward Smith-Rowland
5bd624fbde Implement P0457R2 String Prefix and Suffix Checking.
2018-11-30  Edward Smith-Rowland  <3dw4rd@verizon.net>

	Implement P0457R2 String Prefix and Suffix Checking.
	* include/bits/basic_string.h: Add starts_with, ends_with members.
	* include/std/string_view: Ditto.
	* testsuite/21_strings/basic_string/operations/starts_with/
	char/1.cc: New test.
	* testsuite/21_strings/basic_string/operations/starts_with/
	wchar_t/1.cc: New test.
	* testsuite/21_strings/basic_string/operations/ends_with/
	char/1.cc: New test.
	* testsuite/21_strings/basic_string/operations/ends_with/
	wchar_t/1.cc: New test.
	* testsuite/21_strings/basic_string_view/operations/starts_with/
	char/1.cc: New test.
	* testsuite/21_strings/basic_string_view/operations/starts_with/
	wchar_t/1.cc: New test.
	* testsuite/21_strings/basic_string_view/operations/ends_with/
	char/1.cc: New test.
	* testsuite/21_strings/basic_string_view/operations/ends_with/
	wchar_t/1.cc: New test.

From-SVN: r266674
2018-11-30 16:26:02 +00:00
Edward Smith-Rowland
32bbb362ef The remainder of the Pre-emptively support P0646R1 for std container erasure.
From-SVN: r266673
2018-11-30 16:13:29 +00:00
Edward Smith-Rowland
0b44b4b807 Pre-emptively support P0646R1 for std container erasure.
2018-11-30  Edward Smith-Rowland  <3dw4rd@verizon.net>

	Pre-emptively support P0646R1 for std container erasure.
	* include/bits/erase_if.h: Accumulate and return number of erased nodes.
	* include/std/forward_list (): Return number of erased items.
	* include/std/list (): Ditto.
	* include/std/map (): Ditto.
	* include/std/set (): Ditto.
	* include/std/string (): Ditto.
	* include/std/unordered_map (): Ditto.
	* include/std/unordered_set (): Ditto.
	* include/std/vector (): Ditto.
	* testsuite/21_strings/basic_string/erasure.cc: Test number of erasures.
	* testsuite/23_containers/deque/erasure.cc: Ditto.
	* testsuite/23_containers/forward_list/erasure.cc: Ditto.
	* testsuite/23_containers/list/erasure.cc: Ditto.
	* testsuite/23_containers/map/erasure.cc: Ditto.
	* testsuite/23_containers/set/erasure.cc: Ditto.
	* testsuite/23_containers/unordered_map/erasure.cc: Ditto.
	* testsuite/23_containers/unordered_set/erasure.cc: Ditto.
	* testsuite/23_containers/vector/erasure.cc: Ditto.

From-SVN: r266672
2018-11-30 16:12:13 +00:00
David Malcolm
ef33afebf3 Fix ICE in substring locations from macros in header files (PR preprocessor/88257)
PR preprocessor/88257 reports an ICE on gcc.dg/format/pr78304.c
when compiled using g++:

void test (const char *msg)
{
  printf ("size: %" PRIu32 "\n", msg);
}

due to mismatching files (and line maps) between
linemap_resolve_location and expand_location_to_spelling_point
when PRIu32 is defined in a system header.

The root cause is that expand_location_to_spelling_point stops
unwinding locations when it reaches a system header, whereas
linemap_resolve_location can resolve into a system header,
which can lead to locations within get_substring_ranges_for_loc
getting out of sync, and using the wrong line map.

This patch fixes the issue by checking that the files are the
same.

gcc/ChangeLog:
	PR preprocessor/88257
	* input.c (get_substring_ranges_for_loc): Fix indentation.
	Bulletproof against getting a different files back from
	linemap_resolve_location and expand_location_to_spelling_point.

gcc/testsuite/ChangeLog:
	PR preprocessor/88257
	* c-c++-common/Wformat-pr88257.c: New test.
	* c-c++-common/Wformat-pr88257.h: New test header.
	* c-c++-common/empty.h: New test header.

From-SVN: r266671
2018-11-30 15:57:37 +00:00
Tom de Vries
187b9e1dc5 [libbacktrace] Add tests for unused formats
When building libbacktrace, we typically use elf.c, and don't build pecoff.c,
xcoff.c or unknown.c.

Add testcases that use unused format to ensure that we also build and
test those on a typical development setup.

Bootstrapped and reg-tested on x86_64.

2018-11-30  Tom de Vries  <tdevries@suse.de>

	* Makefile.am (check_PROGRAMS): Add test_elf, test_xcoff_32,
	test_xcoff_64, test_pecoff and test_unknown.
	* Makefile.in: Regenerate.
	* test_format.c: New file.

From-SVN: r266668
2018-11-30 15:33:23 +00:00
Tom de Vries
9b7d1a9741 [libbacktrace] Test check_PROGRAMS without mmap
When building libbacktrace, we typically use mmapio.c and mmap.c, and don't
build read.c and alloc.c.

Add testcases that use read.c and alloc.c to ensure that we also build and
test those on a typical development setup.

Bootstrapped and reg-tested on x86_64.

2018-11-30  Tom de Vries  <tdevries@suse.de>

	* Makefile.am : Add _with_alloc version for each test in
	check_PROGRAMS.
	* Makefile.in: Regenerate.

From-SVN: r266667
2018-11-30 15:33:12 +00:00
Alexander Monakov
37eafc06dd Call decl_default_tls_model with a proper type (PR gcov-profile/88279).
2018-11-30  Alexander Monakov  <amonakov@ispras.ru>

	PR gcov-profile/88279
	* tree-profile.c (init_ic_make_global_vars): Call
	decl_default_tls_model for variable and not it's type.

From-SVN: r266666
2018-11-30 15:06:22 +00:00
Sam Tebbs
427071d4a4 [PATCH][GCC][ARM] Ensure dotproduct is only enabled on armv8 neon
gcc/ChangeLog:

2018-11-30  Sam Tebbs<sam.tebbs@arm.com>

	* config/arm/arm.h (TARGET_DOTPROD): Add TARGET_VFP5 constraint.

gcc/testsuite/ChangeLog:

2018-11-30  Sam Tebbs<sam.tebbs@arm.com>

	* gcc.target/arm/neon-dotprod-restriction.c: New file.
	* lib/target-supports.exp
	(check_effective_target_arm_v8_2a_dotprod_neon_ok_nocache): Include
	stdint.h.

From-SVN: r266665
2018-11-30 14:38:11 +00:00
Martin Liska
6e644a5004 Make red zone size more flexible for stack variables (PR sanitizer/81715).
2018-11-30  Martin Liska  <mliska@suse.cz>

	PR sanitizer/81715
	* asan.c (asan_shadow_cst): Remove, partially transform
	into flush_redzone_payload.
	(RZ_BUFFER_SIZE): New.
	(struct asan_redzone_buffer): New.
	(asan_redzone_buffer::emit_redzone_byte): Likewise.
	(asan_redzone_buffer::flush_redzone_payload): Likewise.
	(asan_redzone_buffer::flush_if_full): Likewise.
	(asan_emit_stack_protection): Use asan_redzone_buffer class
	that is responsible for proper aligned stores and flushing
	of shadow memory payload.
	* asan.h (ASAN_MIN_RED_ZONE_SIZE): New.
	(asan_var_and_redzone_size): Likewise.
	* cfgexpand.c (expand_stack_vars): Use smaller alignment
	(ASAN_MIN_RED_ZONE_SIZE) in order to make shadow memory
	for automatic variables more compact.
2018-11-30  Martin Liska  <mliska@suse.cz>

	PR sanitizer/81715
	* c-c++-common/asan/asan-stack-small.c: New test.

From-SVN: r266664
2018-11-30 14:25:15 +00:00
Alan Modra
b49f1a7e7c [RS6000] PowerPC64 soft-float
This patch aims to prevent long sequences loading soft-float
constants.  For 32-bit, it makes sense to load values inline to a gpr
with lis, addi, but not so much for 64-bit where a 5 insn sequence
might be needed for each gpr.  For TFmode in particular, a 10 insn
sequence is reduced to 2 loads from memory plus 1 or 2 address setup
insns.

	* config/rs6000/predicates.md (easy_fp_constant): Avoid long
	dependent insn sequences.
	* config/rs6000/rs6000.c (num_insns_constant): Support long
	double constants.
	* config/rs6000/rs6000.md (mov<mode>_softfloat <FMOVE128>): Adjust
	length attribute.

From-SVN: r266663
2018-12-01 00:05:25 +10:30
Alan Modra
ceb8c8c4ca [RS6000] num_insns_constant ICE
This patch came about from investigating an ICE that appeared when I
was retesting an old half-baked patch of mine to rs6000_rtx_costs.
If a const_double is fed to rs6000_is_valid_and_mask and from there to
rs6000_is_valid_mask where INTVAL is used, gcc will ICE.

The num_insns_constant ICE was introduced with git commit f337168d97.
However, the code was buggy before that.  There was no point in
testing for a mask since the mask predicates only handle const_int.
In fact, I don't think the function ever handled floating point
constants that might match a load of minus one and mask.  It does now.
I've added a few comments regarding splitters so the next person
looking at this code can see how this works.

The patch also extracts code out of num_insns_constant that needed to
handle multiple gprs for DFmode constants in 32-bit mode, to a
function that handles multiple gprs a little more generally.  I don't
think there is any need for anything but the 32-bit DFmode case
currently, but this allows for possible future uses.  The
CONST_WIDE_INT case is also not used currently, and needed fixing.
Adding CONST_WIDE_INT_NUNITS - 1 only makes sense if the elements of
the array were being shifted into a register of size larger than the
element size (which is 64-bits).

	* config/rs6000/rs6000.c (num_insns_constant_gpr): Renamed from
	num_insns_constant_wide.  Make static.  Revise comment.
	(num_insns_constant_multi): New function.
	(num_insns_constant): Formatting.  Correct CONST_WIDE_INT
	calculation.  Simplify and extract code common to both
	CONST_INT and CONST_DOUBLE.  Add gcc_unreachable for unhandled
	const_double modes.
	* config/rs6000/rs6000-protos.h (num_insns_const_wide): Delete.

From-SVN: r266662
2018-12-01 00:03:18 +10:30
Richard Biener
f44697b78a gimple-parser.c (c_parser_gimple_postfix_expression): Parse _Literal (type) { ...
2018-11-30  Richard Biener  <rguenther@suse.de>

	c/
	* gimple-parser.c (c_parser_gimple_postfix_expression): Parse
	_Literal (type) { ... } as empty aggregate or vector constructor.

	* gcc.dg/gimplefe-34.c: New testcase.
	* gcc.dg/gimplefe-35.c: Likewise.

From-SVN: r266661
2018-11-30 12:02:55 +00:00
Martin Liska
eea34f2038 Restrict vector extension to use 128bit vectors (PR testsuite/88265).
2018-11-30  Martin Liska  <mliska@suse.cz>

	PR testsuite/88265
	* gfortran.dg/simd-builtins-1.f90: Restrict to 128b vectors.
	* gfortran.dg/simd-builtins-6.f90: Likewise.

From-SVN: r266660
2018-11-30 10:48:51 +00:00
Richard Biener
45b97a09af re PR tree-optimization/88274 (ICE in check, at tree-vrp.c:188)
2018-11-30  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/88274
	* tree-vrp.c (ranges_from_anti_range): Fix handling of
	TYPE_MIN/MAX_VALUE.

From-SVN: r266659
2018-11-30 10:37:39 +00:00
Tom de Vries
518a3a2106 [libbacktrace] Factor out backtrace_vector_free
Factor out new function backtrace_vector_free.

Bootstrapped and reg-tested on x86_64.

2018-11-30  Tom de Vries  <tdevries@suse.de>

	* internal.h (backtrace_vector_free): New static inline fuction,
	factored out of ...
	* dwarf.c (read_line_info): ... here.

From-SVN: r266658
2018-11-30 08:43:50 +00:00
GCC Administrator
507bdfc5f6 Daily bump.
From-SVN: r266657
2018-11-30 00:16:30 +00:00
Andi Kleen
1c31f6c896 Allow changing the fentry section per file and per function
When dynamically patching in/out instrumentation it can be useful
to handle different classes of functions differently. Add support
for changing the fentry section name on the command line
or as a function attributes. This allows to mark functions differently,
and handle them differently in dynamic patching.

gcc/:

2018-11-29  Andi Kleen  <ak@linux.intel.com>

	* config/i386/i386.c (current_fentry_section): Add.
	(x86_function_profiler): Handle fentry section.
	(ix86_attribute_table): Add fentry section.
	* config/i386/i386.opt: Add -mfentry-section.
	* doc/extend.texi: Document fentry_section attribute.
	* doc/invoke.texi: Document -mfentry-section.

gcc/testsuite/:

2018-11-29  Andi Kleen  <ak@linux.intel.com>

	* gcc.target/i386/fentryname2.c: New test.
	* gcc.target/i386/fentryname3.c: New test.

From-SVN: r266654
2018-11-29 23:11:59 +00:00
Andi Kleen
d7bf0bd696 Support changing fentry name per function
It can be useful to have some classes of functions that use a different
__fentry__ instrumentation than others.  Currently it is only
possible to disable instrumentation on the command line or with
no_instrument_function, but not to change the instrumentation function
on a case by case base.

Add some flexibility to allow to change the instrumentation function
name per file with an option or per function with a new attribute.
This also allows switching to nops for individual functions.

gcc/:

2018-11-29  Andi Kleen  <ak@linux.intel.com>

	* config/i386/i386.c (x86_print_call_or_nop): Handle nop name.
	(current_fentry_name): Add.
	(x86_function_profiler): Handle fentry_name attribute.
	(ix86_handle_fentry_name): Add.
	(ix86_attribute_table): Add fentry_name.
	* config/i386/i386.opt: Add -mfentry-name
	* doc/extend.texi: Document fentry_name.
	* doc/invoke.texi: Document minstrument-return.

gcc/testsuite/:

2018-11-29  Andi Kleen  <ak@linux.intel.com>

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

From-SVN: r266653
2018-11-29 23:11:53 +00:00
Andi Kleen
3b31afe1a5 Support instrumenting returns of instrumented functions
When instrumenting programs using __fentry__ it is often useful
to instrument the function return too. Traditionally this
has been done by patching the return address on the stack
frame on entry. However this is fairly complicated (trace
function has to emulate a stack) and also slow because
it causes a branch misprediction on every return.

Add an option to generate call or nop instrumentation for
every return instead, including patch sections.

This will increase the program size slightly, but can be a
lot faster and simpler.

This version only instruments true returns, not sibling
calls or tail recursion. This matches the semantics of the
original stack.

gcc/:

2018-11-29  Andi Kleen  <ak@linux.intel.com>

	* config/i386/i386-opts.h (enum instrument_return): Add.
	* config/i386/i386.c (output_return_instrumentation): Add.
	(ix86_output_function_return): Call output_return_instrumentation.
	(ix86_output_call_insn): Call output_return_instrumentation.
	* config/i386/i386.opt: Add -minstrument-return=.
	* doc/invoke.texi (-minstrument-return): Document.

gcc/testsuite/:

2018-11-29  Andi Kleen  <ak@linux.intel.com>

	* gcc.target/i386/returninst1.c: New test.
	* gcc.target/i386/returninst2.c: New test.
	* gcc.target/i386/returninst3.c: New test.

From-SVN: r266652
2018-11-29 23:11:47 +00:00
Eric Botcazou
856f4c6a9c re PR target/87807 (passing float/double vectors as variadic args fails on-64bit SPARC)
PR target/87807
	* config/sparc/sparc-modes.def: Minor tweak.
	* config/sparc/sparc.c: Minor reordering.
	(sparc_pass_by_reference): Move around.
	(traverse_record_type): Change offset from HOST_WIDE_INT to int.
	(classify_registers): Likewise for bitpos.
	(function_arg_slotno): Remove dead test and tweak comments.
	<MODE_RANDOM>: Remove useless assertion and test whether the
	parameter is named in order to pass it in FP registers.  Return
	the regno for floating-point vector types.
	(compute_int_layout): Change bitpos from HOST_WIDE_INT to int.
	(compute_fp_layout): Likewise.
	(count_registers): Likewise.
	(assign_int_registers): Likewise.
	(assign_fp_registers): Likewise.
	(assign_registers): Likewise.
	(function_arg_record_value): Change size from HOST_WIDE_INT to int
	and use CEIL_NWORDS to compute the number of registers.
	(function_arg_union_value): Minor tweaks.
	(function_arg_vector_value): Add slotno and named parameters, use
	CEIL_NWORDS to compute the number of registers.
	(sparc_function_arg_1): Rework handling of vector types.  Change
	size from HOST_WIDE_INT to int.
	(sparc_arg_partial_bytes): Rework handling of 32-bit ABI and deal
	with vector types for the 64-bt ABI.
	(sparc_function_arg_advance): Likewise.
	(sparc_return_in_memory): Add reference to -fpcc-struct-return.
	(sparc_struct_value_rtx): Return NULL_RTX instead of 0.
	(sparc_function_value_1): Rework handling of vector types.  Change
	size from HOST_WIDE_INT to int.

From-SVN: r266651
2018-11-29 23:08:09 +00:00
Jakub Jelinek
0b1c4b83e4 re PR target/88152 (optimize SSE & AVX char compares with subsequent movmskb)
PR target/88152
	* config/i386/sse.md (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_lt,
	*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_lt,
	*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_shift,
	*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_zext_shift,
	*<sse2_avx2>_pmovmskb_lt, *<sse2_avx2>_pmovmskb_zext_lt): New
	define_insn_and_split patterns.

	* g++.target/i386/pr88152.C: New test.

From-SVN: r266649
2018-11-29 23:16:37 +01:00
Jakub Jelinek
fb9e6a4bf8 re PR target/54700 (Optimize away x<0 as mask argument of a blend.)
PR target/54700
	* config/i386/sse.md
	(*<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>_lt,
	*<sse4_1>_blendv<ssefltmodesuffix><avxsizesuffix>_ltint,
	*<sse4_1_avx2>_pblendvb_lt): Change define_insn into
	define_insn_and_split.

From-SVN: r266648
2018-11-29 23:15:42 +01:00