Commit Graph

160673 Commits

Author SHA1 Message Date
Andrey Belevantsev
8e9a9b0142 re PR rtl-optimization/83913 (Compile time and memory hog w/ selective scheduling)
PR rtl-optimization/83913

       * sel-sched-ir.c (merge_expr_data): Choose the middle between two
       different sched-times when merging exprs.

       * gcc.dg/pr83913.c: New test.

From-SVN: r259230
2018-04-09 12:42:25 +03:00
Andrey Belevantsev
ab6dceab10 re PR rtl-optimization/83962 (ICE: verify_flow_info failed (too many outgoing branch edges from bb 8))
PR rtl-optimization/83962

       * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
       tidy_fallthru_edge and tidy_control_flow.

       * gcc.dg/pr83962.c: New test.

From-SVN: r259229
2018-04-09 12:16:34 +03:00
Andrey Belevantsev
33bacbcba5 re PR rtl-optimization/83530 (ICE in reset_sched_cycles_in_current_ebb, at sel-sched.c:7150)
PR rtl-optimization/83530

       * sel-sched.c (force_next_insn): New global variable.
       (remove_insn_for_debug): When force_next_insn is true, also leave only
       next insn in the ready list.
       (sel_sched_region): When the region wasn't scheduled, make another pass
       over it with force_next_insn set to 1.

       * gcc.dg/pr83530.c: New test.

From-SVN: r259228
2018-04-09 12:08:28 +03:00
GCC Administrator
a0873952aa Daily bump.
From-SVN: r259227
2018-04-09 00:16:27 +00:00
Martin Sebor
de8a29bd84 invoke.texi (-Wrestrict, [...]): Tweak text.
gcc/ChangeLog:

	* invoke.texi (-Wrestrict, -fprintf-return-value): Tweak text.

From-SVN: r259224
2018-04-08 10:14:31 -06:00
Monk Chiang
8b9322f0a5 [NDS32] Add intrinsic functions for interrupt control.
gcc/
	* config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
	into tm_file.
	* config/nds32/constants.md (unspec_volatile_element): Add enum values
	for interrupt control.
	* config/nds32/nds32-intrinsic.c: Implementation of intrinsic
	functions for interrupt control.
	* config/nds32/nds32-intrinsic.md: Likewise.
	* config/nds32/nds32_intrinsic.h: Likewise.
	* config/nds32/nds32.h (nds32_builtins): Likewise.

From-SVN: r259223
2018-04-08 14:28:44 +00:00
Chung-Ju Wu
5f2a98c3f5 [NDS32] Add strict_aligned_p to machine_function and implement TARGET_EXPAND_TO_RTL_HOOK.
gcc/
	* config/nds32/nds32.c (nds32_init_machine_status,
	nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
	strict_aligned_p field.
	(nds32_expand_to_rtl_hook): New function.
	(TARGET_EXPAND_TO_RTL_HOOK): Define.
	* config/nds32/nds32.h (machine_function): Add strict_aligned_p field.

From-SVN: r259222
2018-04-08 11:14:09 +00:00
Kito Cheng
63ab910dd7 [NDS32] Implement n7 pipeline.
gcc/
	* config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
	* config/nds32/nds32-n7.md: New file.
	* config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
	* config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
	pipeline.
	* config/nds32/nds32-protos.h: More declarations for n7 pipeline.
	* config/nds32/nds32.md (pipeline_model): Add n7.
	* config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
	* config/nds32/pipelines.md: Include n7 settings.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r259221
2018-04-08 09:21:30 +00:00
Kito Cheng
7c1583bdd8 [NDS32] Implement e8 pipeline.
gcc/
	* config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
	* config/nds32/nds32-e8.md: New file.
	* config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
	* config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
	pipeline.
	* config/nds32/nds32-protos.h: More declarations for e8 pipeline.
	* config/nds32/nds32.md (pipeline_model): Add e8.
	* config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
	* config/nds32/pipelines.md: Include e8 settings.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r259220
2018-04-08 09:02:31 +00:00
Kito Cheng
8fd5214127 [NDS32] Implement n8 pipeline.
gcc/
	* config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
	* config/nds32/nds32-n8.md: New file.
	* config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
	* config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
	pipeline.
	* config/nds32/nds32-protos.h: More declarations for n8 pipeline.
	* config/nds32/nds32-utils.c: More implementations for n8 pipeline.
	* config/nds32/nds32.md (pipeline_model): Add n8.
	* config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
	* config/nds32/pipelines.md: Include n8 settings.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r259219
2018-04-08 08:31:52 +00:00
Kito Cheng
b99353a2aa [NDS32] Implment n9 pipeline.
gcc/
	* config.gcc (nds32*): Add nds32-utils.o into extra_objs.
	* config/nds32/nds32-n9-2r1w.md: New file.
	* config/nds32/nds32-n9-3r2w.md: New file.
	* config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
	nds32_register_ports): New or modify for cpu n9.
	* config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
	pipeline.
	* config/nds32/nds32-protos.h: More declarations for n9 pipeline.
	* config/nds32/nds32-utils.c: New file.
	* config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
	TARGET_MUL_SLOW): Define.
	* config/nds32/nds32.md (pipeline_model): New attribute.
	* config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
	New options that support cpu n9.
	* config/nds32/pipelines.md: Include n9 settings.
	* config/nds32/t-nds32 (nds32-utils.o): Add dependency.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r259218
2018-04-08 08:12:19 +00:00
Chung-Ju Wu
43fa41c1aa [NDS32] New option -malways-align and -malign-functions.
gcc/
	* config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
	information if necessary.
	(output_cond_branch_compare_zero): Likewise.
	* config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
	(nds32_target_alignment): Refine for alignment.
	* config/nds32/nds32.h (NDS32_ALIGN_P): Define.
	(FUNCTION_BOUNDARY): Modify.
	* config/nds32/nds32.md (call_internal, call_value_internal): Consider
	align case.
	* config/nds32/nds32.opt (malways-align, malign-functions): New.

From-SVN: r259217
2018-04-08 06:00:34 +00:00
Monk Chiang
57aaf0cc9e [NDS32] Add intrinsic functions for TLB operation and data prefech.
gcc/
	* config/nds32/constants.md (unspec_volatile_element): Add values for
	TLB operation and data prefetch.
	* config/nds32/nds32-intrinsic.c: Implementation of intrinsic
	functions for TLB operation and data prefetch.
	* config/nds32/nds32-intrinsic.md: Likewise.
	* config/nds32/nds32_intrinsic.h: Likewise.
	* config/nds32/nds32.c (nds32_dpref_names): Likewise.
	(nds32_print_operand): Likewise.
	* config/nds32/nds32.h (nds32_builtins): Likewise.

From-SVN: r259216
2018-04-08 03:21:08 +00:00
GCC Administrator
82d800ce37 Daily bump.
From-SVN: r259215
2018-04-08 00:16:24 +00:00
Thomas Koenig
f913ff2adc re PR middle-end/82976 (Error: non-trivial conversion at assignment since r254526)
2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
	Andrew Pinski <pinsika@gcc.gnu.org>

	PR middle-end/82976
	* match.pd: Use constant_boolean_node of correct type instead of
	boolean_true_node or boolean_false_node for simplifying
	pointer comparisons to zero.

2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR middle-end/82976
	* gfortran.dg/realloc_on_assign_16a.f90: New test.


Co-Authored-By: Andrew Pinski <pinskia@gcc.gnu.org>

From-SVN: r259212
2018-04-07 23:52:03 +00:00
Jakub Jelinek
7c75d64658 re PR tree-optimization/80021 (untranslateable diagnostic "type variant differs by " #flag ".")
PR tree-optimization/80021
	* tree.c (verify_type_variant): Make error call in verify_variant_match
	translatable and remove final full stop.

From-SVN: r259211
2018-04-07 12:57:53 +02:00
Chung-Ju Wu
ca3a4a555d [NDS32] Support dwarf exception handling.
gcc/
	* config/nds32/constants.md (unspec_volatile_element): Add
	UNSPEC_VOLATILE_EH_RETURN.
	* config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
	nds32_output_stack_pop): Support dwarf exception handling process.
	* config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
	* config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
	exception handling process.
	(nds32_compute_stack_frame): Likewise.
	(nds32_return_addr_rtx): Likewise.
	(nds32_initial_elimination_offset): Likewise.
	(nds32_expand_prologue): Likewise.
	(nds32_expand_epilogue): Likewise.
	(nds32_dynamic_chain_address): New function.
	* config/nds32/nds32.h (machine_function): Add fields for dwarf
	exception handling.
	(DYNAMIC_CHAIN_ADDRESS): Define.
	(EH_RETURN_DATA_REGNO): Define.
	(EH_RETURN_STACKADJ_RTX): Define.
	* config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
	patterns for dwarf exception handling.

From-SVN: r259210
2018-04-07 10:52:19 +00:00
Chung-Ju Wu
30044989cc [NDS32] Clean up nds32.h.
gcc/
	* config/nds32/nds32.h: Clean up obsolete macros.

From-SVN: r259209
2018-04-07 10:12:48 +00:00
Monk Chiang
2feae6cdf2 [NDS32] Add intrinsic functions for particular instructions.
gcc/
	* config/nds32/constants.md (unspec_element, unspec_volatile_element):
	Add enum values for particular instructions.
	* config/nds32/nds32-intrinsic.c: Implementation of expanding
	particular intrinsic functions.
	* config/nds32/nds32-intrinsic.md: Likewise.
	* config/nds32/nds32_intrinsic.h: Likewise.
	* config/nds32/nds32.h (nds32_builtins): Likewise.
	* config/nds32/nds32.md (type): Add pbsad and pbsada.
	(btst, ave): New patterns for particular instructions.

From-SVN: r259208
2018-04-07 08:16:41 +00:00
Monk Chiang
154e3ea6f7 [NDS32] Add intrinsic functions for atomic load/store and memory sync.
gcc/
	* config/nds32/constants.md (unspec_element, unspec_volatile_element):
	Add enum values for atomic load/store and memory sync.
	* config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
	and memory sync.
	* config/nds32/nds32-intrinsic.md: Likewise.
	* config/nds32/nds32_intrinsic.h: Likewise.
	* config/nds32/nds32.h (nds32_builtins): Likewise.

From-SVN: r259207
2018-04-07 07:40:49 +00:00
Jakub Jelinek
eda71a9eea re PR tree-optimization/85257 (wrong code with -O -fno-tree-ccp and reading zeroed vector member)
PR tree-optimization/85257
	* fold-const.c (native_encode_vector): If not all elts could fit
	and off is -1, return 0 rather than offset.
	* tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
	(offseti - offset2) / BITS_PER_UNIT as 4th argument to
	native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
	adjust buffer in native_interpret_expr call.

	* gcc.dg/pr85257.c: New test.

From-SVN: r259206
2018-04-07 09:20:42 +02:00
Monk Chiang
f1a0afe2aa [NDS32] Add intrinsic functions for cache control.
gcc/
	* config/nds32/constants.md (unspec_volatile_element): Add cache
	control enum values.
	* config/nds32/nds32-intrinsic.c: Add cache control expand functions.
	* config/nds32/nds32-intrinsic.md: Add cache control patterns.
	* config/nds32/nds32.c (nds32_cctl_names): New.
	(nds32_print_operand): Handle cache control register names.
	* config/nds32/nds32.h (nds32_builtins): New enum values.
	* config/nds32/nds32_intrinsic.h: Add cache control enum types and
	macros.
	* config/nds32/nds32.md (type): Add mmu.
	* config/nds32/pipelines.md (simple_insn): Add mmu.

From-SVN: r259205
2018-04-07 06:21:56 +00:00
Chung-Ju Wu
79f0e157d5 [NDS32] Remove unused insn type: call.
gcc/
	* config/nds32/nds32.md (type): Remove call.
	* config/nds32/pipelines.md (simple_insn): Likewise.

From-SVN: r259204
2018-04-07 05:49:58 +00:00
Monk Chiang
0bb4423d43 [NDS32] Add intrinsic functions for FPU.
gcc/
	* config/nds32/constants.md (unspec_volatile_element): Add
	UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
	UNSPEC_VOLATILE_FMFCFG.
	* config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
	description for fmfcfg and fmfcsr.
	(bdesc_1arg): Add fmtcsr.
	(bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
	(nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
	* config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
	unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
	unspec_fmfcfg): New patterns.
	* config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
	NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
	NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
	* config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
	__nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
	__nds32__fmfcfg): Define.

From-SVN: r259203
2018-04-07 05:40:07 +00:00
Monk Chiang
2095a9d538 [NDS32] Add more intrinsic register names.
gcc/
	* config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
	intrinsic register names.
	* config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
	intrinsic register enum values and macros.

From-SVN: r259202
2018-04-07 04:24:48 +00:00
Chung-Ju Wu
f62a2af5df [NDS32] Support [$ra + $rb << 3] form for load/store address.
gcc/
	* config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
	for load/store addressing form.
	(nds32_print_operand_address): Likewise.

From-SVN: r259201
2018-04-07 04:07:53 +00:00
GCC Administrator
e0617fb647 Daily bump.
From-SVN: r259200
2018-04-07 00:16:14 +00:00
Eric Botcazou
69128a1730 re PR middle-end/85196 (ICE in extract_insn, at recog.c:2311: unrecognizable insn)
PR target/85196
	* config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
	based on LABEL_REF.  Remove useless assertion.
	(pic_address_needs_scratch): Fix formatting.
	(sparc_legitimize_pic_address): Minor tweaks.
	(sparc_delegitimize_address): Adjust assertion accordingly.
	* config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
	into symbolic_operand.
	(movsi_high_pic_label_ref): Likewise.
	(movsi_lo_sum_pic_label_ref): Likewise.
	(movdi_pic_label_ref): Likewise.
	(movdi_high_pic_label_ref): Likewise.
	(movdi_lo_sum_pic_label_ref): Likewise.

From-SVN: r259194
2018-04-06 22:30:05 +00:00
Joel Sherrill
5f690e68cb Fix ChangeLog
From-SVN: r259193
2018-04-06 21:07:38 +00:00
Amaan Cheval
6fa08cbe64 config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for custom LIB_SPEC setup.
2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>

	* config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
	custom LIB_SPEC setup.

From-SVN: r259192
2018-04-06 21:01:23 +00:00
Ruslan Bukin
4d47fe5a8f RISC-V: Support for FreeBSD.
gcc/
	* config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
	* config/riscv/freebsd.h: New.
	libgcc/
	* config.host (riscv*-*-freebsd*): Add RISC-V FreeBSD support.

From-SVN: r259190
2018-04-06 13:04:17 -07:00
Thomas Koenig
e889aa0a96 re PR libfortran/85253 (asan detects heap-buffer-overflow in matmul_r4.c)
2018-04-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/85253
	* m4/matmul_internal.m4: If ycount == 1, add one more row to
	the internal buffer.
	* generated/matmul_c10.c: Regenerated.
	* generated/matmul_c16.c: Regenerated.
	* generated/matmul_c4.c: Regenerated.
	* generated/matmul_c8.c: Regenerated.
	* generated/matmul_i1.c: Regenerated.
	* generated/matmul_i16.c: Regenerated.
	* generated/matmul_i2.c: Regenerated.
	* generated/matmul_i4.c: Regenerated.
	* generated/matmul_i8.c: Regenerated.
	* generated/matmul_r10.c: Regenerated.
	* generated/matmul_r16.c: Regenerated.
	* generated/matmul_r4.c: Regenerated.
	* generated/matmul_r8.c: Regenerated.
	* generated/matmulavx128_c10.c: Regenerated.
	* generated/matmulavx128_c16.c: Regenerated.
	* generated/matmulavx128_c4.c: Regenerated.
	* generated/matmulavx128_c8.c: Regenerated.
	* generated/matmulavx128_i1.c: Regenerated.
	* generated/matmulavx128_i16.c: Regenerated.
	* generated/matmulavx128_i2.c: Regenerated.
	* generated/matmulavx128_i4.c: Regenerated.
	* generated/matmulavx128_i8.c: Regenerated.
	* generated/matmulavx128_r10.c: Regenerated.
	* generated/matmulavx128_r16.c: Regenerated.
	* generated/matmulavx128_r4.c: Regenerated.
	* generated/matmulavx128_r8.c: Regenerated.

From-SVN: r259188
2018-04-06 18:49:21 +00:00
Chung-Ju Wu
a58762287e [NDS32] Refine ADJUST_INSN_LENGTH implementation.
gcc/
	* config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
	* config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
	file.

From-SVN: r259187
2018-04-06 18:36:28 +00:00
Chung-Ju Wu
f467067339 [NDS32] Refine call and return patterns.
gcc/
	* config/nds32/nds32-md-auxiliary.c (nds32_output_return,
	nds32_output_call, nds32_symbol_binds_local_p): New functions.
	* config/nds32/nds32-protos.h (nds32_output_call,
	nds32_output_return): Declare.
	* config/nds32/nds32.md: Refine all the call and return patterns.

Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>

From-SVN: r259186
2018-04-06 18:27:51 +00:00
Jason Merrill
96975b1159 PR c++/85214 - ICE with alias, generic lambda, constexpr if.
Here, since the condition for the constexpr if depends on the type of 'j',
it's still dependent when we are partially instantiating the inner lambda,
so we need to defer instantiating the constexpr if.  When we instantiated
the inner lambda, we tried to substitute into the typename, which failed
because we didn't have a declaration of 'i' available.

Fixed by teaching extract_locals_r to capture local typedefs such as 'ar';
if we have the typedef handy, we don't need to substitute into its
definition.

	* pt.c (extract_locals_r): Remember local typedefs.

From-SVN: r259185
2018-04-06 14:09:53 -04:00
David Malcolm
e1c7971b81 C++: more std header hints; filter on C++ dialect (PR c++/84269)
This patch adds more suggestions as per:
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84269#c10
some of which need C++14 and C++17, and some of which use headers that
exist in earlier standards.

For example, <memory> exists in C++98, but if the user attempts to
use std::make_shared with -std=c++98, they are suggested to include
<memory>, even if they've already included it.

This patch adds the missing names, and fixes the nonsensical suggestions
by detecting if the name isn't available yet, based on the user's
dialect, and reporting things more intelligently:

t.cc: In function 'void test_make_shared()':
t.cc:5:8: error: 'make_shared' is not a member of 'std'
   std::make_shared<int>();
        ^~~~~~~~~~~
t.cc:5:8: note: 'std::make_shared' is only available from C++11 onwards

gcc/cp/ChangeLog:
	PR c++/84269
	* name-lookup.c (struct std_name_hint): Move out of
	get_std_name_hint; add field "min_dialect".
	(get_std_name_hint): Add min_dialect values to all initializers.
	Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
	<future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
	<shared_mutex>, <string_view>, <thread>, and <variant>.
	Add fstream, ifstream, and ofstream to <fstream>.
	Add istringstream, ostringstream, and stringstream to <sstream>.
	Add basic_string to <string>.
	Add tuple_element and tuple_size to <tuple>.
	Add declval to <utility>.
	Fix ordering of <queue> and <tuple>.
	Return a std_name_hint, rather than a const char *.
	(get_cxx_dialect_name): New function.
	(maybe_suggest_missing_std_header): Detect names that aren't yet
	available in the current dialect, and instead of suggesting a
	missing #include, warn about the dialect.

gcc/testsuite/ChangeLog:
	PR c++/84269
	* g++.dg/lookup/missing-std-include-6.C: Move std::array and
	std::tuple here since they need C++11.
	* g++.dg/lookup/missing-std-include-8.C: New test.
	* g++.dg/lookup/missing-std-include.C: Move std::array and
	std::tuple test to missing-std-include-6.C to avoid failures
	with C++98.

From-SVN: r259184
2018-04-06 17:36:33 +00:00
Jakub Jelinek
c617fb562d re PR debug/85252 (ICE with -g for static zero-length array initialization)
PR debug/85252
	* dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
	build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.

	* gcc.dg/debug/pr85252.c: New test.

From-SVN: r259183
2018-04-06 19:28:54 +02:00
Jakub Jelinek
49574486e6 re PR rtl-optimization/84872 (ICE in create_preheader, at cfgloopmanip.c:1536)
PR rtl-optimization/84872
	* cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
	nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
	EDGE_CROSSING edge.

	* gcc.dg/graphite/pr84872.c: New test.

From-SVN: r259182
2018-04-06 19:28:02 +02:00
Jakub Jelinek
e83bc9d775 re PR c++/85210 (ICE with broken structured binding in template)
PR c++/85210
	* pt.c (tsubst_decomp_names): Return error_mark_node and assert
	errorcount is set if tsubst doesn't return a VAR_DECL.

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

From-SVN: r259181
2018-04-06 19:27:01 +02:00
David Malcolm
cb73187287 C++: suggest missing headers for implicit use of "std" (PR c++/85021)
We provide fix-it hints for the most common "std" names when an explicit
"std::" prefix is present, however we don't yet provide fix-it hints for
this implicit case:

  using namespace std;
  void f() {  cout << "test"; }

for which we emit:

  t.cc: In function 'void f()':
  t.cc:2:13: error: 'cout' was not declared in this scope
  void f() {  cout << "test"; }
              ^~~~

This patch detects if a "using namespace std;" directive is present
in the current namespace, and if so, offers a suggestion for
unrecognized names that are in our list of common "std" names:

  t.cc: In function 'void f()':
  t.cc:2:13: error: 'cout' was not declared in this scope
   void f() {  cout << "test"; }
               ^~~~
  t.cc:2:13: note: 'std::cout' is defined in header '<iostream>'; did you forget to '#include <iostream>'?
  +#include <iostream>
   using namespace std;
   void f() {  cout << "test"; }
               ^~~~

gcc/cp/ChangeLog:
	PR c++/85021
	* name-lookup.c (using_directives_contain_std_p): New function.
	(has_using_namespace_std_directive_p): New function.
	(suggest_alternatives_for): Simplify if/else logic using early
	returns.  If no candidates were found, and there's a
	"using namespace std;" directive, call
	maybe_suggest_missing_std_header.
	(maybe_suggest_missing_header): Split later part of the function
	into..
	(maybe_suggest_missing_std_header): New.

gcc/testsuite/ChangeLog:
	PR c++/85021
	* g++.dg/lookup/missing-std-include-7.C: New test.

From-SVN: r259179
2018-04-06 15:46:04 +00:00
Jason Merrill
a82f886aa6 PR c++/85242 - ICE with class definition in template parm.
* cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
	processing_template_parmlist.

From-SVN: r259178
2018-04-06 11:12:34 -04:00
Jason Merrill
0c923157ab PR c++/85240 - LTO ICE with using of undeduced auto fn.
* cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.

From-SVN: r259177
2018-04-06 11:12:28 -04:00
Tamar Christina
d8ab9ce00a Reverted commit r254862
From-SVN: r259169
2018-04-06 13:16:39 +00:00
Richard Biener
ef2e5ec2d4 re PR tree-optimization/85244 (Bad optimisation with flexible array member (may be related to -ftree-dominator-opts))
2018-04-06  Richard Biener  <rguenther@suse.de>

	PR middle-end/85244
	* tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
	after seeing a component reference with an adjacent field.  Treat
	refs to arrays at struct end of external decls similar to
	refs to unconstrained commons.

	* gcc.dg/torture/pr85244-1.c: New testcase.
	* gcc.dg/torture/pr85244-2.c: Likewise.

From-SVN: r259168
2018-04-06 11:47:18 +00:00
Jakub Jelinek
5a98025d8f re PR sanitizer/85213 (-fsanitize=undefined internal compiler error: in fold_convert_loc, at fold-const.c:2402)
PR sanitizer/85213
	* fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
	look through SAVE_EXPRs with non-side-effects argument.  Adjust
	recursive calls.
	(fold_comparison): Adjust twoval_comparison_p caller, don't handle
	save_p here.

	* c-c++-common/ubsan/pr85213.c: New test.

From-SVN: r259167
2018-04-06 13:24:36 +02:00
Richard Biener
6ca838330b re PR rtl-optimization/85180 (Infinite loop in RTL DSE optimizer)
2018-04-06  Richard Biener  <rguenther@suse.de>

	PR middle-end/85180
	* alias.c (find_base_term): New wrapper around find_base_term
	unwinding CSELIB_VAL_PTR changes.
	(find_base_term): Do not restore CSELIB_VAL_PTR during the
	recursion.

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

From-SVN: r259166
2018-04-06 08:30:52 +00:00
Andreas Krebbel
54ebcca795 IBM Z: Fix vcond-shift testcase.
gcc/testsuite/ChangeLog:

2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/vector/vcond-shift.c: Use the proper conditions
	to trigger the optimization. Do some cleanup and function
	renaming.  Add more test functions.

From-SVN: r259165
2018-04-06 07:46:30 +00:00
Andreas Krebbel
aad98a6104 IBM Z: Use the dedicated NOP instructions for "nop"
We still use lr r0,r0 as a NOP instruction although we have some kind
of dedicated NOP instruction (nopr) which maps to a "branch never".

As a side-effect this fixes testcases scanning for NOPs
e.g. patchable_function_entry-*.

As another side-effect this makes it difficult to distingiush NOPs
generated for hotpatching from NOPs added when using -O0 to attach
location information to it.  Hence I had to make sure that the hotpatch
testcases get skipped when compiling without optimization.

gcc/ChangeLog:

2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
	instructions.
	* config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
	constant definitions.
	("nop"): lr 0,0 -> nopr r0
	("nop_lr0", "nop_lr1"): New insn definitions.

gcc/testsuite/ChangeLog:

2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/s390.exp: Remove -O0 from list of torture
	options.
	* gcc.target/s390/hotpatch-1.c: Skip when building without
	optimization.
	* gcc.target/s390/hotpatch-10.c: Likewise.
	* gcc.target/s390/hotpatch-11.c: Likewise.
	* gcc.target/s390/hotpatch-12.c: Likewise.
	* gcc.target/s390/hotpatch-13.c: Likewise.
	* gcc.target/s390/hotpatch-14.c: Likewise.
	* gcc.target/s390/hotpatch-15.c: Likewise.
	* gcc.target/s390/hotpatch-16.c: Likewise.
	* gcc.target/s390/hotpatch-17.c: Likewise.
	* gcc.target/s390/hotpatch-18.c: Likewise.
	* gcc.target/s390/hotpatch-19.c: Likewise.
	* gcc.target/s390/hotpatch-2.c: Likewise.
	* gcc.target/s390/hotpatch-3.c: Likewise.
	* gcc.target/s390/hotpatch-4.c: Likewise.
	* gcc.target/s390/hotpatch-5.c: Likewise.
	* gcc.target/s390/hotpatch-6.c: Likewise.
	* gcc.target/s390/hotpatch-7.c: Likewise.
	* gcc.target/s390/hotpatch-8.c: Likewise.
	* gcc.target/s390/hotpatch-9.c: Likewise.

From-SVN: r259164
2018-04-06 07:45:42 +00:00
Andreas Krebbel
bce89076ce Wattributes.c testcase: Disable warning check for IBM Z.
On IBM Z we enforce function alignment to 8 bytes.  Hence we get an
error instead of a warning when trying to specify smaller alignments.

gcc/testsuite/ChangeLog:

2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* c-c++-common/Wattributes.c: Disable warning for s390* target and
	check for an error instead.
	* gcc.dg/Wattributes-6.c: Likewise.

From-SVN: r259163
2018-04-06 07:43:53 +00:00
Chung-Ju Wu
9865d2406b [NDS32] Refine condition of stack_push and stack_pop patterns.
gcc/
	* config/nds32/nds32.md (*stack_push, *stack_pop): Use
	NDS32_V3PUSH_AVAILABLE_P macro.

From-SVN: r259162
2018-04-06 06:33:44 +00:00