Commit Graph

154231 Commits

Author SHA1 Message Date
Ian Lance Taylor
cd34e54306 runtime: clear isSystemGoroutine in goexit
Otherwise it may be set when the g struct is reused via gfput/gfget.
    
    Test is golang.org/x/net/http2 with GOMAXPROCS=12.
    
    Reviewed-on: https://go-review.googlesource.com/45430

From-SVN: r249143
2017-06-13 00:43:56 +00:00
GCC Administrator
67972c9038 Daily bump.
From-SVN: r249142
2017-06-13 00:16:26 +00:00
Ian Lance Taylor
a282a875c8 runtime: ignore _Gscan bit when checking status in CgocallDone
Also always access the atomicstatus field atomically.
    
    The effect of not checking the _Gscan bit is that if the GC decides to
    scan the stack just as the goroutine is leaving the system call, the
    goroutine might fail to call exitsyscall.  Then then typically causes
    a runtime assertion failure later on.  If we do call exitsyscall as we
    should, it will stall (in casgstatus) until the _Gscan bit is cleared.
    
    No separate test.  I've observed causing sporadic failures running the
    misc/cgo tests, but we don't currently have a way to run those
    routinely for gccgo.  I should fix that.
    
    Reviewed-on: https://go-review.googlesource.com/45392

From-SVN: r249138
2017-06-12 23:14:05 +00:00
Pedro Alves
b51483f48f Finish implementing P0426R1 "Constexpr for std::char_traits" for C++17
As discussed in PR c++/80265 ("__builtin_{memcmp,memchr,strlen} are
not usable in constexpr functions"), use __builtin_constant_p to tell
whether we can defer to a constexpr algorithm.

I used __always_inline__ just to be thorough.  It isn't really really
necessary as far as I could determine.

Changes like these:

	 if (__n == 0)
	   return 0;
 -	return wmemcmp(__s1, __s2, __n);
 +	else
 +	  return wmemcmp(__s1, __s2, __n);

are necessary otherwise G++ complains that we're calling a
non-constexpr function, which looks like a a manifestation of PR67026
to me.

libstdc++-v3:
2017-06-12  Pedro Alves  <palves@redhat.com>

	* doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr
	char_traits status.
	* doc/html/*: Regenerate.

	* include/bits/char_traits.h (_GLIBCXX_ALWAYS_INLINE): Define if
	not already defined.
	(__cpp_lib_constexpr_char_traits): Uncomment.
	(__constant_string_p, __constant_char_array_p): New.
	(std::char_traits<char>, std::char_traits<wchar_t>): Add
	_GLIBCXX17_CONSTEXPR on compare, length and find and use
	__constant_string_p, __constant_char_array_p and
	__builtin_constant_p to defer to __gnu_cxx::char_traits at compile
	time.

	* testsuite/21_strings/char_traits/requirements/
	constexpr_functions_c++17.cc: Uncomment
	__cpp_lib_constexpr_char_traits tests.  Uncomment
	test_compare<char>, test_length<char>, test_find<char>,
	test_compare<wchar_t>, test_length<wchar_t> and test_find<wchar_t>
	static_assert tests.

From-SVN: r249137
2017-06-12 22:22:39 +00:00
François Dumont
07cfc2d75d stl_tree.h (_Rb_tree_impl()): Restore _Node_allocator default init.
2017-06-12  François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/stl_tree.h (_Rb_tree_impl()): Restore _Node_allocator
	default init.
	* testsuite/util/testsuite_allocator.h
	(__gnu_test::default_init_allocator<>) New.
	* testsuite/23_containers/set/allocator/default_init.cc: New.
	* testsuite/23_containers/map/allocator/default_init.cc: New.

From-SVN: r249136
2017-06-12 20:38:16 +00:00
David S. Miller
6d1ea02a6c More refinements to fixing sparc's PR target/80968.
gcc/

	PR target/80968
	* config/sparc/sparc.md (return expander): Emit frame blockage if
	function uses alloca.

From-SVN: r249134
2017-06-12 12:30:45 -07:00
Ian Lance Taylor
20d5c8731f compiler: avoid orphaning Bexpressions when processing conversions
The method Type_conversion_expression::do_get_backend was (in some
    circumstances) creating a Bexpression for the source expression of the
    conversion and then throwing it away before using it. Fix up this
    method to insure that the call to get_backend() on the source
    expression is only made when the result will be used.
    
    Reviewed-on: https://go-review.googlesource.com/45350

From-SVN: r249131
2017-06-12 17:51:52 +00:00
Jonathan Wakely
754d67d5ba PR libstdc++/55917 do not handle exceptions in std::thread
PR libstdc++/55917
	* src/c++11/thread.cc (execute_native_thread_routine): Remove
	try-block so that exceptions propagate out of the thread and terminate
	is called by the exception-handling runtime.
	(execute_native_thread_routine_compat): Likewise.
	* testsuite/30_threads/thread/cons/terminate.cc: New.

From-SVN: r249130
2017-06-12 17:37:28 +01:00
Ian Lance Taylor
196ed8eae5 split-1.c: Require split_stack, don't require freorder.
* gcc.dg/tree-prof/split-1.c: Require split_stack, don't require
	freorder.  Update comment to explain test.

From-SVN: r249129
2017-06-12 16:15:53 +00:00
Richard Sandiford
e701e0b9e8 Fix pessimistic DImode handling in combine.c:make_field_assignment
The make_field_assignment code:

      src = force_to_mode (src, mode,
		       GET_MODE_PRECISION (mode) >= HOST_BITS_PER_WIDE_INT
		       ? HOST_WIDE_INT_M1U
		       : (HOST_WIDE_INT_1U << len) - 1,
		       0);

would ignore the field length len for DImode, even though DImode can be
handled using HWIs.  I think the code should be testing len instead.

2017-06-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* combine.c (make_field_assignment): Check len rather than the mode
	precision when calling force_to_mode.

From-SVN: r249128
2017-06-12 16:06:38 +00:00
Tamar Christina
64ff4f60d0 inline-lrint_1.c: Broaden regexp.
2017-06-12  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/aarch64/inline-lrint_1.c: Broaden regexp.
	* gcc.target/aarch64/inline-lrint_2.c: Likewise.
	* gcc.target/aarch64/no-inline-lrint_1.c: Likewise.
	* gcc.target/aarch64/no-inline-lrint_2.c: Likewise.

From-SVN: r249127
2017-06-12 14:23:22 +00:00
Tamar Christina
5ed2fdfee4 sdiv_costs_1.c: Require arm_v8_vfp_ok.
2017-06-12  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/arm/sdiv_costs_1.c: Require arm_v8_vfp_ok.

From-SVN: r249125
2017-06-12 13:24:37 +00:00
Georg-Johann Lay
3266ddb36a Support multilibs and devices that see flash in RAM address range.
gcc/
	Support multilibs and devices that see flash in RAM address range.

	PR target/81072
	* config/avr/avr-arch.h (avr_arch_id) <ARCH_AVRXMEGA3>: New enum.
	(avr_mcu_t) <flash_pm_offset>: New field.
	(avr_device_specific_features) <AVR_ISA_RCALL>: New enum.
	* config/avr/avr.h (AVR_SHORT_CALLS): New define.
	(AVR_HAVE_JMP_CALL): Don't set if AVR_SHORT_CALLS.
	(AVR_TINY_PM_OFFSET): Remove macro.
	* config/avr/avr.opt (-mshort-calls): New option.
	* config/avr/gen-avr-mmcu-specs.c (print_mcu)
	[*self_spec]: Add / remove -mshort-calls depending on AVR_ISA_RCALL.
	* config/avr/avr-c.c (avr_cpu_cpp_builtins)
	<__AVR_SHORT_CALLS__>: Built-in define if AVR_SHORT_CALLS.
	<__AVR_HAVE_JMP_CALL__>: Use AVR_HAVE_JMP_CALL as condition
	instead of avr_arch->have_jmp_call.
	<__AVR_PM_BASE_ADDRESS__>: Built-in define if avr_arch->flash_pm_offset.
	[AVR_TINY] <__AVR_TINY_PM_BASE_ADDRESS__>: Use
	avr_arch->flash_pm_offset to define.
	* config/avr/avr-devices.c (avr_arch_types): Add initializers for
	new field flash_pm_offset.  Add entry for avrxmega3.
	(avr_texinfo): Add entry for avrxmega3.
	* config/avr/avr-mcus.def: Add entries for: avrxmega3,
	attiny212, attiny214,
	attiny412, attiny414, attiny416, attiny417,
	attiny814, attiny816, attiny817,
	attiny1614, attiny1616, attiny1617,
	attiny3214, attiny3216, attiny3217.
	* config/avr/avr.c (avr_assemble_integer)[AVR_TINY]: Use
	avr_arch->flash_pm_offset instead of AVR_TINY_PM_OFFSET.
	(avr_print_operand_address) [AVR_TINY]: Same.
	(avr_asm_init_sections) <readonly_data_section>: Only patch
	callback if avr_arch->flash_pm_offset = 0.
	(avr_asm_named_section) <avr_need_copy_data_p>: Skip setting it
	for rodata if avr_arch->flash_pm_offset != 0.
	(avr_encode_section_info) [AVR_TINY]: Adjust comment.
	* config/avr/genmultilib.awk (dir_rcall, opt_rcall): New vars.
	(opts) [AVR_ISA_RCALL]: Append opt_rcall.
	(m_options): Append opt_rcall.
	(m_dirnames): Append dir_rcall.
	* config/avr/t-multilib: Regenerate.
	* configure.ac [target=avr]: Check whether avrxmega3 default
	linker description file works as needed.
	* configure: Regenerate.
	* doc/avr-mmcu.texi: Regenerate.
	* doc/invoke.texi (AVR Options) <-mshort-calls>: Document it.
	<__AVR_ARCH__>: Document avrxmega3 and 103.
	<__AVR_HAVE_JMP_CALL__>: Adjust documentation.
	<__AVR_SHORT_CALLS__>: Document it.
	<__AVR_PM_BASE_ADDRESS__>: Document it.
	* doc/extend.texi (AVR Options) <-mshort-calls>: Document it.
	(AVR Variable Attributes) <progmem>: Document this is
	not needed for avrxmega3.
	(AVR Named Address Spaces) <__flash>: Dito.

From-SVN: r249124
2017-06-12 12:52:30 +00:00
Jan Hubicka
7c41b76e9f * cgraph.c (cgraph_node::dump): Complain about profile insanities.
From-SVN: r249123
2017-06-12 12:36:47 +00:00
Tamar Christina
6cddb61ca1 sdiv_costs_1.c: Disable on softfloat.
2017-06-12  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/arm/sdiv_costs_1.c: Disable on softfloat.

From-SVN: r249122
2017-06-12 12:32:45 +00:00
Doug Rupp
a476498c30 config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide".
2017-06-12  Doug Rupp  <rupp@adacore.com>

	gcc/
	* config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide".
	Append vxworks-stdint.h to the tm_file list.
	* config/vxworks-stdint.h: New file.

	fixincludes/
	* inclhack.def (AAB_vxworks_stdint): Remove hack.
	* fixincl.x: Regenerate.

From-SVN: r249121
2017-06-12 12:10:12 +00:00
Martin Liska
c9c15e2749 Create an extra BB in profile-generate (PR tree-optimization/81041).
2017-06-12  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/81041
	* tree-profile.c (gimple_gen_ic_func_profiler):
	Create an extra BB in profile-generate
	(gimple_gen_time_profiler): Likewise.

From-SVN: r249120
2017-06-12 11:56:32 +00:00
Eric Botcazou
3b387bff56 re PR bootstrap/80897 (gnat bootstrap broken on SPARC64/Linux)
PR bootstrap/80897
	* exp_ch3.adb (Make_Predefined_Primitive_Specs): Use Positive index.

From-SVN: r249119
2017-06-12 11:28:33 +00:00
Segher Boessenkool
c725f69cdb rs6000: Remove e500.h from config.gcc some more
* config.gcc: Remove rs6000/e500.h from tm_file for all targets.

From-SVN: r249117
2017-06-12 13:16:11 +02:00
Eric Botcazou
cdf2dd41b5 re PR ada/81070 (build failure for s-intrr.adb)
PR ada/81070
	* s-interr-hwint.adb: Reinstate.
	* gcc-interface/Makefile.in (RTEMS): Use it again.

From-SVN: r249115
2017-06-12 10:47:36 +00:00
Jakub Jelinek
aebce39694 re PR tree-optimization/81003 (ICE: tree check: expected ssa_name, have integer_cst in optimize_range_tests_to_bit_test, at tree-ssa-reassoc.c:2782)
PR tree-optimization/81003
	* tree-ssa-reassoc.c (force_into_ssa_name): New function.
	(update_range_test): Use it instead of force_gimple_operand_gsi.

	* gcc.c-torture/compile/pr81003.c: New test.

From-SVN: r249114
2017-06-12 12:45:52 +02:00
Richard Biener
3fd7fe218b re PR tree-optimization/81053 (ICE on valid code at -O3 on x86_64-linux-gnu: in as_a, at is-a.h:192)
2017-06-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81053
	* tree-vect-loop.c (vect_is_simple_reduction): Handle PHI
	with backedge value not defined in loop.  Simplify def stmt
	compute.

	* gcc.dg/torture/pr81053.c: New testcase.

From-SVN: r249113
2017-06-12 10:42:57 +00:00
Ian Lance Taylor
d1609a2326 elf.c (backtrace_initialize): Always set *fileline_fn.
* elf.c (backtrace_initialize): Always set *fileline_fn.
	* ttest.c: New file.
	* btest.c: Move support functions into testlib.c.  Change calls to
	check to pass file name.
	* testlib.c: New file, copied from (part of) btest.c.
	* testlib.h: New file, declarations for testlib.c.
	* edtest.c: Use testlib.h and testlib.c.
	* configure.ac: Test for -pthread, set HAVE_PTHREAD conditional.
	* Makefile.am (btest_SOURCES): Add testlib.c.
	(edtest_SOURCES): Likewise.
	(CHECK_PROGRAMS): Add ttest if HAVE_PTHREAD.
	(ttest_SOURCES, ttest_CFLAGS, ttest_LDADD): Define.
	* configure, Makefile.in: Rebuild.

From-SVN: r249111
2017-06-12 03:25:04 +00:00
GCC Administrator
1e7a4be3a1 Daily bump.
From-SVN: r249110
2017-06-12 00:16:33 +00:00
Tom de Vries
e053f7109f Disable constant pool for nvptx
2017-06-11  Tom de Vries  <tom@codesourcery.com>

	PR target/79939
	* config/nvptx/nvptx.c (nvptx_cannot_force_const_mem): New function.
	Return true.
	(TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
	nvptx_cannot_force_const_mem.

From-SVN: r249106
2017-06-11 21:54:00 +00:00
Jan Hubicka
227b76c3b4 opts.c (finish_options): Move test for flag_split_stack after it has been initialized.
* opts.c (finish_options): Move test for flag_split_stack after
	it has been initialized.

From-SVN: r249105
2017-06-11 09:33:22 +00:00
Jason Merrill
c3b0f4c600 * error.c (dump_expr): Use is_this_parameter.
From-SVN: r249104
2017-06-11 01:29:34 -04:00
Jason Merrill
a01f151f1e tree.h (id_equal): New.
* tree.h (id_equal): New.

	* dwarf2out.c, hsa-gen.c, ipa-devirt.c, omp-expand.c,
	omp-simd-clone.c, read-rtl-function.c, tree-chkp.c, tree.c: Use it
	instead of strcmp of IDENTIFIER_POINTER.
c-family/
	* c-ada-spec.c, c-pragma.c: Use it.
cp/
	* cp-tree.h, decl2.c, mangle.c, parser.c, pt.c, semantics.c: Use it.

From-SVN: r249103
2017-06-11 01:29:14 -04:00
GCC Administrator
dc77253832 Daily bump.
From-SVN: r249102
2017-06-11 00:16:34 +00:00
Jan Hubicka
09fcc0c01d ipa-inline-transform.c: Include function.h, cfg.h and basic-block.h
* ipa-inline-transform.c: Include function.h, cfg.h and basic-block.h
	(mark_all_inlined_calls_cdtor): Fix formating.
	(inline_transform): Rescale profile before inlining.

From-SVN: r249098
2017-06-10 23:18:44 +00:00
Jan Hubicka
1511c8c005 cgraph.h (cgraph_edge::clone): Update prototype.
* cgraph.h (cgraph_edge::clone): Update prototype.
	* cgraphclones.c (cgraph_edge::clone): Update profile scaling.
	(cgraph_node::create_clone): Update.
	(cgraph_node::create_version_clone): Update.
	* tree-inline.c (copy_bb): Update.
	(expand_call_inline): Update.

From-SVN: r249097
2017-06-10 23:07:11 +00:00
Segher Boessenkool
9a58d6cdbf rs6000: Factor out emit_vrsave_prologue
This is a second patch to make the prologue code more manageable.


	* config/rs6000/rs6000.c (emit_vrsave_prologue): New function,
	factored out from ...
	(rs6000_emit_prologue): ... here.

From-SVN: r249096
2017-06-11 00:22:54 +02:00
Segher Boessenkool
85e71e3505 rs6000: Factor out emit_split_stack_prologue
This is a first patch to make the prologue code more manageable.


	* config/rs6000/rs6000.c (emit_split_stack_prologue): New function,
	factored out from ...
	(rs6000_emit_prologue): ... here.

From-SVN: r249095
2017-06-11 00:21:34 +02:00
Jan Hubicka
e525ddf40f predict.c (drop_profile): Also drop individual bb/edge and cgraph edge counts.
* predict.c (drop_profile): Also drop individual bb/edge and cgraph
	edge counts.
	(handle_missing_profiles): Fix computation of tp_first_run.
	(counts_to_freqs): Do not touch freqs when count is 0.

From-SVN: r249094
2017-06-10 20:37:34 +00:00
Jan Hubicka
9a73a3c38e cgraphbuild.c (cgraph_edge::rebuild_references): Do not touch profile.
* cgraphbuild.c (cgraph_edge::rebuild_references): Do not touch
	profile.

From-SVN: r249093
2017-06-10 16:33:07 +00:00
Thomas Koenig
ac39f0e831 re PR fortran/80988 (171_swim fails)
2017-06-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/80988
	* frontend-passes.c (traverse_io_block):  Also
	check for variables occurring as indices multiple
	time in a single implied DO loop.

2017-06-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/80988
	* gfortran.dg/implied_do_io_3.f90:  New test.

From-SVN: r249092
2017-06-10 10:07:13 +00:00
Tom de Vries
18787c384a Add effective target signal
2017-06-10  Tom de Vries  <tom@codesourcery.com>

	* lib/target-supports.exp (check_effective_target_signal): New proc.
	* lib/gcc.exp (gcc_target_compile): Remove appending of
	-DSIGNAL_SUPPRESS to additional_flags.
	* gcc.c-torture/execute/ieee/ieee.exp: Add -DSIGNAL_SUPPRESS to
	additional_flags if effective target signal is not supported by the
	target.
	* gcc.c-torture/execute/20101011-1.c: Same.
	* gcc.dg/c99-stdint-1.c: Same.
	* gcc.dg/c99-stdint-2.c: Same.
	* gcc.dg/c99-stdint-5.c: Same.
	* gcc.dg/c99-stdint-6.c: Same.
	* gcc.dg/stdint-width-1.c: Same.

	* doc/sourcebuild.texi (Effective-Target Keywords, Environment
	attributes): Document signal effective target.

From-SVN: r249091
2017-06-10 06:59:49 +00:00
Tom de Vries
0069a00991 Add effective target stack_size
2017-06-10  Tom de Vries  <tom@codesourcery.com>

	* lib/target-supports.exp (check_effective_target_stack_size)
	(dg-effective-target-value): New proc.
	* lib/gcc.exp (gcc_target_compile): Remove adding of DSTACK_SIZE to
	additional_flags.
	* lib/objc.exp (objc_target_compile): Same.
	* lib/profopt.exp (profopt-get-options): Allow dg-additional-options.
	* g++.old-deja/g++.eh/badalloc1.C: Add -DSTACK_SIZE=<value> using
	dg-additional-options.
	* gcc.c-torture/compile/20080806-1.c: Same.
	* gcc.c-torture/compile/920723-1.c: Same.
	* gcc.c-torture/compile/930621-1.c: Same.
	* gcc.c-torture/compile/991214-2.c: Same.
	* gcc.c-torture/compile/bcopy.c: Same.
	* gcc.c-torture/compile/memtst.c: Same.
	* gcc.c-torture/compile/msp.c: Same.
	* gcc.c-torture/compile/stuct.c: Same.
	* gcc.c-torture/execute/20011008-3.c: Same.
	* gcc.c-torture/execute/20030209-1.c: Same.
	* gcc.c-torture/execute/20031012-1.c: Same.
	* gcc.c-torture/execute/20040805-1.c: Same.
	* gcc.c-torture/execute/920410-1.c: Same.
	* gcc.c-torture/execute/920501-7.c: Same.
	* gcc.c-torture/execute/921113-1.c: Same.
	* gcc.c-torture/execute/921202-1.c: Same.
	* gcc.c-torture/execute/921208-2.c: Same.
	* gcc.c-torture/execute/930106-1.c: Same.
	* gcc.c-torture/execute/930406-1.c: Same.
	* gcc.c-torture/execute/950221-1.c: Same.
	* gcc.c-torture/execute/960521-1.c: Same.
	* gcc.c-torture/execute/980605-1.c: Same.
	* gcc.c-torture/execute/comp-goto-1.c: Same.
	* gcc.c-torture/execute/comp-goto-2.c: Same.
	* gcc.c-torture/execute/memcpy-1.c: Same.
	* gcc.c-torture/execute/multi-ix.c: Same.
	* gcc.c-torture/execute/nestfunc-4.c: Same.
	* gcc.c-torture/execute/pr20621-1.c: Same.
	* gcc.c-torture/execute/pr23135.c: Same.
	* gcc.c-torture/execute/pr28982b.c: Same.
	* gcc.dg/loop-3.c: Same.
	* gcc.dg/struct-ret-3.c: Same.
	* gcc.dg/torture/stackalign/comp-goto-1.c: Same.
	* gcc.dg/torture/stackalign/non-local-goto-4.c: Same.
	* gcc.dg/tree-prof/comp-goto-1.c: Same.
	* gcc.dg/tree-prof/pr44777.c: Same.

	* doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
	Document effective target stack_size.

From-SVN: r249090
2017-06-10 06:59:26 +00:00
Jason Merrill
e6d7d61861 Missing bits from N4268, constant evaluation for all non-type args.
* call.c (build_converted_constant_expr): Rename from
	build_integral_nontype_arg_conv, handle all types.
	* pt.c (convert_nontype_argument): In C++17 call it for all types.
	Move NOP stripping inside pointer case, don't strip ADDR_EXPR.
	* cvt.c (strip_fnptr_conv): Also strip conversions to the same type.

From-SVN: r249089
2017-06-09 20:40:50 -04:00
Jason Merrill
8b8b203a26 Overhaul pointer-to-member conversion and template argument handling.
* call.c (standard_conversion): Avoid creating ck_pmem when the
	class type is the same.
	* cvt.c (can_convert_qual): Split from
	perform_qualification_conversions.
	* constexpr.c (cxx_eval_constant_expression): Check it.
	* typeck.c (convert_ptrmem): Only cplus_expand_constant if
	adjustment is necessary.
	* pt.c (check_valid_ptrmem_cst_expr): Compare class types.
	(convert_nontype_argument): Avoid redundant error.

From-SVN: r249088
2017-06-09 20:40:44 -04:00
GCC Administrator
5248689192 Daily bump.
From-SVN: r249087
2017-06-10 00:16:18 +00:00
Jason Merrill
bf31620ceb Don't fold conversion from a constant variable.
* call.c (convert_like_real): Remove "inner" parameter.
	Don't replace a constant with its value.
	* cp-gimplify.c (cp_fully_fold): Use cp_fold_rvalue.

From-SVN: r249083
2017-06-09 18:46:51 -04:00
David Malcolm
b09649fdc6 Add support for mutually-incompatible fix-it hints
This patch adds a method:
  rich_location::fixits_cannot_be_auto_applied
for ensuring that mutually-incompatible fix-its hints don't
lead to insane output from -fdiagnostics-generate-patch.

Fix-it hints within such rich_location instances are printed
as normal by diagnostic_show_locus, but don't affect the output
of -fdiagnostics-generate-patch.

gcc/ChangeLog:
	* diagnostic.c (diagnostic_report_diagnostic): Only add fixits
	to the edit_context if they can be auto-applied.

gcc/testsuite/ChangeLog:
	* gcc.dg/plugin/diagnostic-test-show-locus-bw.c
	(test_mutually_exclusive_suggestions): New test function.
	* gcc.dg/plugin/diagnostic-test-show-locus-generate-patch.c
	(test_mutually_exclusive_suggestions): New test function.
	* gcc.dg/plugin/diagnostic-test-show-locus-parseable-fixits.c
	(test_mutually_exclusive_suggestions): New test function.
	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
	(test_show_locus): Add special-case for
	"test_mutually_exclusive_suggestions".

libcpp/ChangeLog:
	* include/line-map.h
	(rich_location::fixits_cannot_be_auto_applied): New method.
	(rich_location::fixits_can_be_auto_applied_p): New accessor.
	(rich_location::m_fixits_cannot_be_auto_applied): New field.
	* line-map.c (rich_location::rich_location): Initialize new field.

From-SVN: r249081
2017-06-09 20:57:38 +00:00
Jason Merrill
c5d6c6d94e Fix template argument of nullptr_t type.
* pt.c (convert_nontype_argument): Check NULLPTR_TYPE_P rather than
	nullptr_node.

From-SVN: r249080
2017-06-09 16:18:06 -04:00
Jason Merrill
3d2e25a240 Fix array decay handling in constant expressions.
* parser.c (cp_parser_constant_expression): Check
	potential_rvalue_constant_expression after decay_conversion.
	* pt.c (convert_nontype_argument): Don't require linkage in C++17.

From-SVN: r249079
2017-06-09 16:13:44 -04:00
Jason Merrill
55c5c0ad3c PR c++/80384 - ICE with dependent noexcept-specifier
* pt.c (dependent_type_p_r) [FUNCTION_TYPE]: Check for dependent
	noexcept-specifier.

From-SVN: r249078
2017-06-09 16:13:38 -04:00
Jason Merrill
948d0d9137 * constexpr.c (potential_constant_expression_1): Allow 'this' capture.
From-SVN: r249077
2017-06-09 16:13:32 -04:00
Ian Lance Taylor
a1f427e9a5 opts.c (finish_options): If -fsplit-stack, disable implicit -forder-blocks-and-partition.
gcc/:
	* opts.c (finish_options): If -fsplit-stack, disable implicit
	-forder-blocks-and-partition.
	* doc/invoke.texi (Optimize Options): Document that when using
	-fsplit-stack -forder-blocks-and-partition is not implicitly
	enabled.
gcc/go/:
	* go-lang.c (go_langhook_post_options): If -fsplit-stack is turned
	on, disable implicit -forder-blocks-and-partition.
gcc/testsuite/:
	* gcc.dg/tree-prof/split-1.c: New test.

From-SVN: r249071
2017-06-09 18:44:28 +00:00
Jan Hubicka
cb59f689a3 builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST, [...]): New.
* builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST,
	ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST,
	ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New.
	* builtins.def (abort, trap, unreachable): Declare cold.
	* calls.c (flags_from_decl_or_type): Lookup ECF_COLD.
	* tree-core.h (ECF_COLD): New.
	* tree.c (set_call_expr_flags): Handle ECF_COLD.
	(build_common_builtin_nodes): Mark unreachable and abort as cold.

	* class.c (build_vtbl_initializer): Mark dvirt_fn as cold.
	* decl.c (cxx_init_decl_processing, push_throw_library_fn): Likewise.
	(excpet.c): Mark terminate as cold.

	* gcc.dg/predict-14.c: Avoid cold function detection.
	* gcc.target/i386/umod-3.c: Likewise.

From-SVN: r249070
2017-06-09 18:36:50 +00:00
Jan Hubicka
d225aa745d * predict.c (unlikely_executed_stmt_p): Cleanup.
From-SVN: r249069
2017-06-09 18:34:29 +00:00