156711 Commits

Author SHA1 Message Date
Nathan Sidwell
a92f67261a [PATCH] DECL_ASSEMBLER_NAME and friends
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00582.html
	* tree.h (DECL_ASSEMBLER_NAME_SET_P): Don't check
	HAS_DECL_ASSEMBLER_NAME_P.
	* gimple-expr.c (gimple_decl_printable_name: Check
	HAS_DECL_ASSEMBLER_NAME_P too.
	* ipa-utils.h (type_in_anonymous_namespace_p): Check
	DECL_ASSEMBLER_NAME_SET_P of TYPE_NAME.
	(odr_type_p): No need to assert TYPE_NAME is a TYPE_DECL.
	* passes.c (rest_of_decl_compilation): Check
	HAS_DECL_ASSEMBLER_NAME_P too.
	* recog.c (verify_changes): Likewise.
	* tree-pretty-print.c (dump_decl_name): Likewise.
	* tree-ssa-structalias.c (alias_get_name): Likewise.  Reimplement.

	c/
	* c-decl.c (grokdeclarator): Check HAS_DECL_ASSEMBLER_NAME_P too.

From-SVN: r253649
2017-10-11 16:35:18 +00:00
Nathan Sidwell
4e7d02606e [PATCH] DECL_ASSEMBLER_NAME and friends
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00582.html
	* tree.h (DECL_ASSEMBLER_NAME_RAW): New.
	(SET_DECL_ASSEMBLER_NAME): Use it.
	(DECL_ASSEMBLER_NAME_SET_P): Likewise.
	(COPY_DECL_ASSEMBLER_NAME): Likewise.
	* tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW.

	lto/
	* lto.c (mentions_vars_p_decl_with_vis): Use
	DECL_ASSEMBLER_NAME_RAW.
	(lto_fixup_prevailing_decls): Likewise.

	cp
	* decl2.c (struct mangled_decl_hash): Use DECL_ASSEMBLER_NAME_RAW.
	(record_mangling): Likewise.

From-SVN: r253647
2017-10-11 15:33:51 +00:00
Jan Hubicka
64766e8dc7 config.gcc (i386, x86_64): Add extra objects.
* config.gcc (i386, x86_64): Add extra objects.
	* i386/i386-protos.h (ix86_rip_relative_addr_p): Declare.
	(ix86_min_insn_size): Declare.
	(ix86_issue_rate): Declare.
	(ix86_adjust_cost): Declare.
	(ia32_multipass_dfa_lookahead): Declare.
	(ix86_macro_fusion_p): Declare.
	(ix86_macro_fusion_pair_p): Declare.
	(ix86_bd_has_dispatch): Declare.
	(ix86_bd_do_dispatch): Declare.
	(ix86_core2i7_init_hooks): Declare.
	(ix86_atom_sched_reorder): Declare.
	* i386/i386.c Move all CPU cost tables to x86-tune-costs.h.
	(COSTS_N_BYTES): Move to x86-tune-costs.h.
	(DUMMY_STRINGOP_ALGS):x86-tune-costs.h.
	(rip_relative_addr_p): Rename to ...
	(ix86_rip_relative_addr_p): ... this one; export.
	(memory_address_length): Update.
	(ix86_issue_rate): Move to x86-tune-sched.c.
	(ix86_flags_dependent): Move to x86-tune-sched.c.
	(ix86_agi_dependent): Move to x86-tune-sched.c.
	(exact_dependency_1): Move to x86-tune-sched.c.
	(exact_store_load_dependency): Move to x86-tune-sched.c.
	(ix86_adjust_cost): Move to x86-tune-sched.c.
	(ia32_multipass_dfa_lookahead): Move to x86-tune-sched.c.
	(ix86_macro_fusion_p): Move to x86-tune-sched.c.
	(ix86_macro_fusion_pair_p): Move to x86-tune-sched.c.
	(do_reorder_for_imul): Move to x86-tune-sched-atom.c.
	(swap_top_of_ready_list): Move to x86-tune-sched-atom.c.
	(ix86_sched_reorder): Move to x86-tune-sched-atom.c.
	(core2i7_first_cycle_multipass_init): Move to x86-tune-sched-core.c.
	(core2i7_dfa_post_advance_cycle): Move to x86-tune-sched-core.c.
	(min_insn_size): Rename to ...
	(ix86_min_insn_size): ... this one; export.
	(core2i7_first_cycle_multipass_begin): Move to x86-tune-sched-core.c.
	(core2i7_first_cycle_multipass_issue): Move to x86-tune-sched-core.c.
	(core2i7_first_cycle_multipass_backtrack): Move to x86-tune-sched-core.c.
	(core2i7_first_cycle_multipass_end): Move to x86-tune-sched-core.c.
	(core2i7_first_cycle_multipass_fini): Move to x86-tune-sched-core.c.
	(ix86_sched_init_global): Break up logic to ix86_core2i7_init_hooks.
	(ix86_avoid_jump_mispredicts): Update.
	(TARGET_SCHED_DISPATCH): Move to ix86-tune-sched-bd.c.
	(TARGET_SCHED_DISPATCH_DO): Move to ix86-tune-sched-bd.c.
	(TARGET_SCHED_REORDER): Move to ix86-tune-sched-bd.c.
	(DISPATCH_WINDOW_SIZE): Move to ix86-tune-sched-bd.c.
	(MAX_DISPATCH_WINDOWS): Move to ix86-tune-sched-bd.c.
	(MAX_INSN): Move to ix86-tune-sched-bd.c.
	(MAX_IMM): Move to ix86-tune-sched-bd.c.
	(MAX_IMM_SIZE): Move to ix86-tune-sched-bd.c.
	(MAX_IMM_32): Move to ix86-tune-sched-bd.c.
	(MAX_IMM_64): Move to ix86-tune-sched-bd.c.
	(MAX_LOAD): Move to ix86-tune-sched-bd.c.
	(MAX_STORE): Move to ix86-tune-sched-bd.c.
	(BIG): Move to ix86-tune-sched-bd.c.
	(enum dispatch_group): Move to ix86-tune-sched-bd.c.
	(enum insn_path): Move to ix86-tune-sched-bd.c.
	(get_mem_group): Move to ix86-tune-sched-bd.c.
	(is_cmp): Move to ix86-tune-sched-bd.c.
	(dispatch_violation): Move to ix86-tune-sched-bd.c.
	(is_branch): Move to ix86-tune-sched-bd.c.
	(is_prefetch): Move to ix86-tune-sched-bd.c.
	(init_window): Move to ix86-tune-sched-bd.c.
	(allocate_window): Move to ix86-tune-sched-bd.c.
	(init_dispatch_sched): Move to ix86-tune-sched-bd.c.
	(is_end_basic_block): Move to ix86-tune-sched-bd.c.
	(process_end_window): Move to ix86-tune-sched-bd.c.
	(allocate_next_window): Move to ix86-tune-sched-bd.c.
	(find_constant): Move to ix86-tune-sched-bd.c.
	(get_num_immediates): Move to ix86-tune-sched-bd.c.
	(has_immediate): Move to ix86-tune-sched-bd.c.
	(get_insn_path): Move to ix86-tune-sched-bd.c.
	(get_insn_group): Move to ix86-tune-sched-bd.c.
	(count_num_restricted): Move to ix86-tune-sched-bd.c.
	(fits_dispatch_window): Move to ix86-tune-sched-bd.c.
	(add_insn_window): Move to ix86-tune-sched-bd.c.
	(add_to_dispatch_window): Move to ix86-tune-sched-bd.c.
	(debug_dispatch_window_file): Move to ix86-tune-sched-bd.c.
	(debug_dispatch_window): Move to ix86-tune-sched-bd.c.
	(debug_insn_dispatch_info_file): Move to ix86-tune-sched-bd.c.
	(debug_ready_dispatch): Move to ix86-tune-sched-bd.c.
	(do_dispatch): Move to ix86-tune-sched-bd.c.
	(has_dispatch): Move to ix86-tune-sched-bd.c.
	* i386/t-i386: Add new object files.
	* i386/x86-tune-costs.h: New file.
	* i386/x86-tune-sched-atom.c: New file.
	* i386/x86-tune-sched-bd.c: New file.
	* i386/x86-tune-sched-core.c: New file.
	* i386/x86-tune-sched.c: New file.

From-SVN: r253646
2017-10-11 15:17:23 +00:00
Liu Hao
db0d1bae4a pretty-print.c [_WIN32] (colorize_init): Remove.
2017-10-11  Liu Hao  <lh_mouse@126.com>

	* pretty-print.c [_WIN32] (colorize_init): Remove.  Use
	the generic version below instead.
	(should_colorize): Recognize Windows consoles as terminals
	for MinGW targets.
	* pretty-print.c [__MINGW32__] (write_all): New function.
	[__MINGW32__] (find_esc_head): Likewise.
	[__MINGW32__] (find_esc_terminator): Likewise.
	[__MINGW32__] (eat_esc_sequence): Likewise.
	[__MINGW32__] (mingw_ansi_fputs): New function that handles
	ANSI escape codes.
	(pp_write_text_to_stream): Use mingw_ansi_fputs instead of fputs
	for MinGW targets.

From-SVN: r253645
2017-10-11 13:34:44 +00:00
Richard Biener
85866209d4 tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith): Properly call analyze_scalar_evolution with the loop of the stmt.
2017-10-11  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith):
	Properly call analyze_scalar_evolution with the loop of the stmt.

From-SVN: r253644
2017-10-11 13:20:59 +00:00
Richard Biener
d2ec027749 tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.
2017-10-11  Richard Biener  <rguenther@suse.de>

	* tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.
	* tree-core.h (tree_base): Add chrec_var union member.
	* tree.h (CHREC_VAR): Remove.
	(CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE): Adjust.
	* tree-chrec.h (build_polynomial_chrec): Adjust.
	* tree-chrec.c (reset_evolution_in_loop): Use build_polynomial_chrec.
	* tree-pretty-print.c (dump_generic_node): Use CHREC_VARIABLE.

From-SVN: r253643
2017-10-11 13:18:46 +00:00
Marc Glisse
6358a676c3 X+Y < X iff Y<0 moved to match.pd
2017-10-11  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	* fold-const.c (fold_binary_loc) [X +- Y CMP X]: Move ...
	* match.pd: ... here.
	((T) X == (T) Y): Relax condition.

gcc/testsuite/
	* gcc.dg/Wstrict-overflow-7.c: Xfail.
	* gcc.dg/pragma-diag-3.c: Likewise.

From-SVN: r253642
2017-10-11 13:18:06 +00:00
Bin Cheng
b4ec1d31a5 re PR tree-optimization/82472 (ICE in generate_code_for_partition, at tree-loop-distribution.c:1145)
PR tree-optimization/82472
	* tree-loop-distribution.c (sort_partitions_by_post_order): Refine
	comment.
	(break_alias_scc_partitions): Update postorder number.

	gcc/testsuite
	* gcc.dg/tree-ssa/pr82472.c: New test.

From-SVN: r253641
2017-10-11 13:04:05 +00:00
Martin Liska
3a266bcd81 Do not error for no_sanitize attributes (PR sanitizer/82490).
2017-10-11  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82490
	* opts.c (parse_no_sanitize_attribute): Do not use error_value
	variable.
	* opts.h (parse_no_sanitize_attribute): Remove last argument.
2017-10-11  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82490
	* c-attribs.c (handle_no_sanitize_attribute): Report directly
	Wattributes warning.
2017-10-11  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82490
	* c-c++-common/ubsan/attrib-5.c: New test.

From-SVN: r253640
2017-10-11 12:31:59 +00:00
Martin Liska
050dcb6ad8 Fix use-after-scope error.
2017-10-11  Martin Liska  <mliska@suse.cz>

	* print-rtl.c (print_insn): Move declaration of idbuf
	to same scope as name.

From-SVN: r253639
2017-10-11 12:30:03 +00:00
Martin Liska
ed89e76a35 Revert last commit.
From-SVN: r253638
2017-10-11 12:29:13 +00:00
Martin Liska
78188a05d0 Do not handled volatile arguments (PR sanitizer/82484).
2017-10-11  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82484
	* sanopt.c (sanitize_rewrite_addressable_params): Do not handle
	volatile arguments.
2017-10-11  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82484
	* gcc.dg/asan/pr82484.c: New test.

From-SVN: r253637
2017-10-11 12:24:44 +00:00
Martin Liska
b1a651a25a Fix a test-case for Darwin.
2017-10-11  Martin Liska  <mliska@suse.cz>

	* c-c++-common/ubsan/ptr-overflow-sanitization-1.c: Scan
	optimized dump rather than assembly.

From-SVN: r253636
2017-10-11 12:22:48 +00:00
Adhemerval Zanella
d71031ff62 Enable ifunc attribute by default for ARM GNU/Linux
Similar to other architectures with IFUNC binutils/glibc support, this
patch enables the ifunc attribute for ARM GNU/Linux.  Although not
required for build master GLIBC, the intention is to allow refactor
its assembly implementation to C.

Tested compilation of glibc (in conjunction with a glibc patch to
support using the attribute on ARM) with build-many-glibcs.py (with
a patch to add a armv7 variant which enables multiarch).  I have
not run the GCC tests for ARM.

	* config.gcc (default_gnu_indirect_function): Default to yes for
	arm*-*-linux* with glibc.

From-SVN: r253635
2017-10-11 12:14:07 +00:00
Nathan Sidwell
dbd282bb38 * g++.dg/cpp/string-3.C: Fix dg-final.
From-SVN: r253634
2017-10-11 11:58:05 +00:00
Paolo Carlini
08f0a7396e re PR c++/80412 ([c++17] crash with class template deduction guide and inheritance)
2017-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80412
	* g++.dg/cpp1z/class-deduction44.C: New.

From-SVN: r253632
2017-10-11 10:01:23 +00:00
Paolo Carlini
1d14f58c1f re PR c++/82230 (ICE: in tsubst, at cp/pt.c:13686 when binding lambda to variable inside a generic lambda inside a template member function inside a template class)
2017-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/82230
	* g++.dg/cpp1y/lambda-generic-ice8.C: New.

From-SVN: r253631
2017-10-11 09:04:29 +00:00
Paolo Carlini
99f1498eed re PR c++/81299 (Spurious "set but not used" warning with constexpr variable)
2017-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/81299
	* g++.dg/cpp1y/lambda-generic-ice7.C: New.

From-SVN: r253630
2017-10-11 08:50:15 +00:00
Richard Biener
5355943cc1 tree-scalar-evolution.c (get_scalar_evolution): Handle default-defs and types we do not want to analyze.
2017-10-11  Richard Biener  <rguenther@suse.de>

	* tree-scalar-evolution.c (get_scalar_evolution): Handle
	default-defs and types we do not want to analyze.
	(interpret_loop_phi): Replace unreachable code with an assert.
	(compute_scalar_evolution_in_loop): Remove and inline ...
	(analyze_scalar_evolution_1): ... here, replacing condition with
	what makes the intent clearer.  Remove handling of cases
	get_scalar_evolution now handles.

From-SVN: r253629
2017-10-11 07:21:05 +00:00
James E Wilson
e9593da8cc Allow 2 insns from sched group to issue in same cycle, if no stalls needed.
gcc/
	PR rtl-optimization/81434
	* haifa-sched.c (prune_ready_list): Init min_cost_group to 0.  Update
	comment for main loop.  In sched_group_found if, also add checks for
	pass and min_cost_group.

From-SVN: r253628
2017-10-10 20:23:41 -07:00
GCC Administrator
9ef8d30e92 Daily bump.
From-SVN: r253627
2017-10-11 00:16:14 +00:00
Segher Boessenkool
ca158af378 rs6000: insn_cost
This adds an implementation of the insn_cost hook to rs6000.

This implementations is very minimal (so far).  It is mostly based on
how many machine instructions are generated by an RTL insn, and it also
looks at the instruction type.  Floating point insns are costed as if
all machine instructions it generates are floating point; the other
insns are treated as if all but one are integer insns (and one is the
specified type).  Load instructions are treated as costing twice as
much, and load locked and sync insns as three times as much (just like
the original costs), and integer div and mul are handled as well.

Each define_insn (etc.) can set a "cost" attribute to override this
general cost.  With optimization for size, the cost is set equal to the
value of the "length" attribute.

With this, the majority of cost differences between old and new are
where the old was wrong.  Also, benchmarks show a slight win (if
anything).  Some refinements are obviously needed.


	* config/rs6000/rs6000.c (TARGET_INSN_COST): New.
	(rs6000_insn_cost): New function.
	* config/rs6000/rs6000.md (cost): New attribute.

From-SVN: r253624
2017-10-11 02:11:23 +02:00
Nathan Sidwell
7cd6ea64f8 [C++ PATCH] hash-table for extern-c fns.
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00614.html
	* name-lookup.c (extern_c_fns): Rename to ...
	(extern_c_decls): ... here.
	(check_extern_c_conflict, extern_c_linkage_bindings): Update.
	(do_pushdecl): Check extern-c fns and vars.

	* g++.dg/lookup/extern-c-redecl6.C: New.
	* g++.dg/lookup/extern-c-hidden.C: Adjust diagnostics.
	* g++.dg/lookup/extern-c-redecl.C: Likewise.
	* g++.old-deja/g++.other/using9.C: Likewise.

From-SVN: r253622
2017-10-10 20:50:26 +00:00
Paolo Carlini
507ea98d58 re PR c++/78006 (Segmentation fault with 'using' and generic lambda trailing return types)
2017-10-10  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/78006
	* g++.dg/cpp1y/auto-fn40.C: New.

From-SVN: r253621
2017-10-10 20:46:26 +00:00
Nathan Sidwell
d6b605f6ae [C++ PATCH] Kill unneeded hash specialization
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00621.html
	* cp-tree.h (default_hash_traits <lang_identifier *>): Delete
	specialization.

From-SVN: r253620
2017-10-10 20:42:45 +00:00
Paolo Carlini
92395f1c24 re PR c++/81032 (ICE with lambda and broken constexpr)
2017-10-10  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/81032
	* g++.dg/cpp1y/lambda-generic-ice6.C: New.

From-SVN: r253619
2017-10-10 20:16:40 +00:00
Jakub Jelinek
16d926d2ab re PR rtl-optimization/68205 (ICE compiling gcc.c-torture/execute/20040709-2.c with -fno-common on arm-none-eabi)
PR rtl-optimization/68205
	* gcc.c-torture/execute/20040709-3.c: New test.

From-SVN: r253618
2017-10-10 22:12:08 +02:00
Jakub Jelinek
b2ca2504f0 re PR c++/67625 (some constexpr expressions rejected as enumerator value)
2017-10-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/67625
	* g++.dg/cpp0x/pr67625.C: New test.

From-SVN: r253617
2017-10-10 22:11:47 +02:00
Jakub Jelinek
c9a0dec5ee re PR middle-end/70887 (internal compiler error in trunc_int_for_mode, at explow.c:78)
2017-10-10  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/70887
	* g++.dg/cpp0x/pr70887.C: New test.

From-SVN: r253616
2017-10-10 22:11:21 +02:00
Jakub Jelinek
aaf58ab173 re PR c++/70338 (ICE combining debug symbols, range-for in lambda in function template accessing captured variable-size array)
PR c++/70338
	* g++.dg/cpp0x/pr70338.C: New test.

From-SVN: r253615
2017-10-10 22:10:56 +02:00
Jakub Jelinek
10885d138e re PR c++/77786 (ICE in tsubst_copy, at cp/pt.c:13040)
PR c++/77786
	* g++.dg/cpp1y/pr77786.C: New test.

From-SVN: r253614
2017-10-10 22:10:25 +02:00
Jakub Jelinek
da31baba47 re PR c++/71875 (template specialization compile error)
PR c++/71875
	* g++.dg/cpp1y/pr71875.C: New test.

From-SVN: r253613
2017-10-10 22:10:00 +02:00
Jakub Jelinek
24f8d3916c re PR c++/77578 (ICE in cp_parser_omp_for_loop (cp/parser.c:29404))
PR c++/77578
	* g++.dg/gomp/pr77578.C: New test.

From-SVN: r253612
2017-10-10 22:09:29 +02:00
Jakub Jelinek
4407c3097f re PR middle-end/70100 (ICE: in execute, at cfgexpand.c:6066)
PR middle-end/70100
	* g++.dg/opt/pr70100.C: New test.

From-SVN: r253611
2017-10-10 22:09:01 +02:00
Jakub Jelinek
7094f0d341 re PR c++/68252 (left operand of shift expression, while we shift > 0 integer)
2017-10-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/68252
	* g++.dg/other/pr68252.C: New test.

From-SVN: r253610
2017-10-10 22:08:36 +02:00
Jakub Jelinek
71a84d92e1 re PR target/79565 (ICE in copy_to_mode_reg, at explow.c:612)
PR target/79565
	PR target/82483
	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Add
	OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq,
	__builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi.
	(ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly
	to OPTION_MASK_ISA_AVX512VL - builtins that have both
	OPTION_MASK_ISA_MMX and some other bit set require both
	mmx and the ISAs without the mmx bit.
	* config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi,
	__builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps,
	__builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw,
	__builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub,
	__builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb,
	__builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi,
	__builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd,
	__builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw,
	__builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd,
	__builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd,
	__builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw,
	__builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb,
	__builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq,
	__builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr):
	Add OPTION_MASK_ISA_MMX.

	* gcc.target/i386/pr82483-1.c: New test.
	* gcc.target/i386/pr82483-2.c: New test.

Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>

From-SVN: r253609
2017-10-10 22:06:33 +02:00
Nathan Sidwell
eead34af3a [C++ PATCH] Hash mangling alias
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00618.html
	* decl2.c (struct mangled_decl_hash): New hash traits.
	(mangled_decls): Make hash_table<mangled_decl_hash>.
	(generate_mangling_alias, record_mangling): Adjust.

From-SVN: r253608
2017-10-10 19:59:12 +00:00
Will Schmidt
24d8f6b62a fold-vec-mult-int128-p8.c: Update options
2017-10-10  Will Schmidt <will_schmidt@vnet.ibm.com>

	* gcc.target/powerpc/fold-vec-mult-int128-p8.c: Update options
	* gcc.target/powerpc/fold-vec-mult-int128-p9.c: Update expected
	instruction list.

From-SVN: r253606
2017-10-10 19:06:13 +00:00
Nathan Sidwell
35b82d26e5 [PATCH] preprocessor stringizing raw strings
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00611.html
	libcpp/
	PR preprocessor/82506
	* macro.c (cpp_quote_string): Escape raw LFs.

	gcc/testsuite/
	PR preprocessor/82506
	* g++.dg/cpp/string-3.C: New.

From-SVN: r253605
2017-10-10 18:56:31 +00:00
Andreas Tobler
eb484969f6 config.gcc (armv7*-*-freebsd*): New target.
2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>

    * config.gcc (armv7*-*-freebsd*): New target.
    (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.

From-SVN: r253602
2017-10-10 20:33:48 +02:00
Jason Merrill
84dd815ff8 More delayed lambda capture fixes.
* call.c (add_function_candidate): Use build_address.
	(build_op_call_1): Call mark_lvalue_use early.
	(build_over_call): Handle error from build_this.
	* constexpr.c (cxx_bind_parameters_in_call): Use build_address.
	(cxx_eval_increment_expression): Don't use rvalue().
	* cvt.c (convert_to_void): Use mark_discarded_use.
	* expr.c (mark_use): Handle PARM_DECL, NON_DEPENDENT_EXPR.  Fix
	reference handling.  Don't copy the expression.
	(mark_discarded_use): New.
	* lambda.c (insert_capture_proxy): Add some sanity checking.
	(maybe_add_lambda_conv_op): Set cp_unevaluated_operand.
	* pt.c (register_local_specialization): Add sanity check.
	* semantics.c (process_outer_var_ref): Fix check for existing proxy.
	* typeck.c (cp_build_addr_expr_1): Handle error from
	mark_lvalue_use.
	(cp_build_modify_expr): Call mark_lvalue_use_nonread, handle error
	from rvalue.

	Handle generic lambda capture in dependent expressions.
	* lambda.c (need_generic_capture, dependent_capture_r)
	(do_dependent_capture): New.
	* pt.c (processing_nonlambda_template): Use need_generic_capture.
	* semantics.c (maybe_cleanup_point_expr)
	(maybe_cleanup_point_expr_void, finish_goto_stmt)
	(maybe_convert_cond): Call do_dependent_capture.
	* typeck.c (build_static_cast): Remove dependent capture handling.

From-SVN: r253601
2017-10-10 14:04:02 -04:00
Jason Merrill
e1bea3412a Various small C++ fixes.
* typeck.c (condition_conversion): Assert !processing_template_decl.
	* semantics.c (finish_omp_clauses): Don't
	fold_build_cleanup_point_expr if processing_template_decl.
	(outer_var_p): A temporary can't be from an outer scope.
	* pt.c (type_dependent_expression_p): Fix dependency checking of
	functions without DECL_TEMPLATE_INFO.
	(instantiate_decl): Use lss_copy.
	* constexpr.c (is_valid_constexpr_fn): Fix lambdas before C++17.

From-SVN: r253600
2017-10-10 14:03:56 -04:00
Jason Merrill
4d612bfde8 Check non-dependent conversion in return from template fn.
* typeck.c (check_return_expr): Check non-dependent conversion in
	templates.
	* constraint.cc (check_function_concept): Don't complain about an
	empty concept if seen_error.

From-SVN: r253599
2017-10-10 14:03:22 -04:00
Jan Hubicka
3652a4d243 x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, [...]): Move to right spot in the file.
* x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, X86_TUNE_ADJUST_UNROLL,
	X86_TUNE_ONE_IF_CONV_INSN): Move to right spot in the file.

From-SVN: r253598
2017-10-10 17:47:35 +00:00
Will Schmidt
f1e2a00403 fold-vec-cmp-char.c: New.
[testsuite]

2017-10-10  Will Schmidt <will_schmidt@vnet.ibm.com>
	* gcc.target/powerpc/fold-vec-cmp-char.c: New.
	* gcc.target/powerpc/fold-vec-cmp-double.c: New.
	* gcc.target/powerpc/fold-vec-cmp-float.c: New.
	* gcc.target/powerpc/fold-vec-cmp-int.c: New.
	* gcc.target/powerpc/fold-vec-cmp-longlong.c: New.
	* gcc.target/powerpc/fold-vec-cmp-short.c: New.

From-SVN: r253597
2017-10-10 17:41:02 +00:00
Richard Sandiford
8e6cdc90d4 Require wi::to_wide for trees
The wide_int routines allow things like:

   wi::add (t, 1)

to add 1 to an INTEGER_CST T in its native precision.  But we also have:

   wi::to_offset (t)      // Treat T as an offset_int
   wi::to_widest (t)      // Treat T as a widest_int

Recently we also gained:

   wi::to_wide (t, prec)  // Treat T as a wide_int in preccision PREC

This patch therefore requires:

   wi::to_wide (t)

when operating on INTEGER_CSTs in their native precision.  This is
just as efficient, and makes it clearer that a deliberate choice is
being made to treat the tree as a wide_int in its native precision.
This also removes the inconsistency that

a) INTEGER_CSTs in their native precision can be used without an accessor
   but must use wi:: functions instead of C++ operators

b) the other forms need an explicit accessor but the result can be used
   with C++ operators.

It also helps with SVE, where there's the additional possibility
that the tree could be a runtime value.

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

gcc/
	* wide-int.h (wide_int_ref_storage): Make host_dependent_precision
	a template parameter.
	(WIDE_INT_REF_FOR): Update accordingly.
	* tree.h (wi::int_traits <const_tree>): Delete.
	(wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs.
	(wi::to_widest, wi::to_offset): Use them.  Expand commentary.
	(wi::tree_to_wide_ref): New typedef.
	(wi::to_wide): New function.
	* calls.c (get_size_range): Use wi::to_wide when operating on
	trees as wide_ints.
	* cgraph.c (cgraph_node::create_thunk): Likewise.
	* config/i386/i386.c (ix86_data_alignment): Likewise.
	(ix86_local_alignment): Likewise.
	* dbxout.c (stabstr_O): Likewise.
	* dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise.
	* expr.c (const_vector_from_tree): Likewise.
	* fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise.
	* fold-const.c (may_negate_without_overflow_p, negate_expr_p)
	(fold_negate_expr_1, int_const_binop_1, const_binop)
	(fold_convert_const_int_from_real, optimize_bit_field_compare)
	(all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1)
	(fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr)
	(pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc)
	(fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const)
	(fold_not_const, round_up_loc): Likewise.
	* gimple-fold.c (gimple_fold_indirect_ref): Likewise.
	* gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise.
	(alloca_call_type): Likewise.
	* gimple.c (preprocess_case_label_vec_for_gimple): Likewise.
	* godump.c (go_output_typedef): Likewise.
	* graphite-sese-to-poly.c (tree_int_to_gmp): Likewise.
	* internal-fn.c (get_min_precision): Likewise.
	* ipa-cp.c (ipcp_store_vr_results): Likewise.
	* ipa-polymorphic-call.c
	(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
	* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise.
	(ipa_modify_call_arguments): Likewise.
	* match.pd: Likewise.
	* omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise.
	* print-tree.c (print_node_brief, print_node): Likewise.
	* stmt.c (expand_case): Likewise.
	* stor-layout.c (layout_type): Likewise.
	* tree-affine.c (tree_to_aff_combination): Likewise.
	* tree-cfg.c (group_case_labels_stmt): Likewise.
	* tree-data-ref.c (dr_analyze_indices): Likewise.
	(prune_runtime_alias_test_list): Likewise.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise.
	* tree-predcom.c (is_inv_store_elimination_chain): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
	(simple_iv_with_niters): Likewise.
	* tree-ssa-address.c (addr_for_mem_ref): Likewise.
	* tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise.
	* tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise.
	* tree-ssa-loop-niter.c (split_to_var_and_offset)
	(refine_value_range_using_guard, number_of_iterations_ne_max)
	(number_of_iterations_lt_to_ne, number_of_iterations_lt)
	(get_cst_init_from_scev, record_nonwrapping_iv)
	(scev_var_range_cant_overflow): Likewise.
	* tree-ssa-phiopt.c (minmax_replacement): Likewise.
	* tree-ssa-pre.c (compute_avail): Likewise.
	* tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
	(vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise.
	* tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
	* tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise.
	* tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise.
	* tree-switch-conversion.c (collect_switch_conv_info, array_value_type)
	(dump_case_nodes, try_switch_expansion): Likewise.
	* tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise.
	(vect_do_peeling): Likewise.
	* tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
	* tree-vect-stmts.c (vectorizable_load): Likewise.
	* tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise.
	(zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise.
	(extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise.
	(overflow_comparison_p_1, register_edge_assert_for_2): Likewise.
	(is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits)
	(vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise.
	(range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise.
	(evrp_dom_walker::before_dom_children): Likewise.
	* tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop)
	(integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2)
	(tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit)
	(tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise.
	(get_type_static_bounds, num_ending_zeros, drop_tree_overflow)
	(get_range_pos_neg): Likewise.
	* ubsan.c (ubsan_expand_ptr_ifn): Likewise.
	* config/darwin.c (darwin_mergeable_constant_section): Likewise.
	* config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
	* config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
	* config/avr/avr.c (avr_fold_builtin): Likewise.
	* config/bfin/bfin.c (bfin_local_alignment): Likewise.
	* config/msp430/msp430.c (msp430_attr): Likewise.
	* config/nds32/nds32.c (nds32_insert_attributes): Likewise.
	* config/powerpcspe/powerpcspe-c.c
	(altivec_resolve_overloaded_builtin): Likewise.
	* config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate)
	(rs6000_expand_ternop_builtin): Likewise.
	* config/rs6000/rs6000-c.c
	(altivec_resolve_overloaded_builtin): Likewise.
	* config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
	(rs6000_expand_ternop_builtin): Likewise.
	* config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise.

gcc/ada/
	* gcc-interface/decl.c (annotate_value): Use wi::to_wide when
	operating on trees as wide_ints.

gcc/c/
	* c-parser.c (c_parser_cilk_clause_vectorlength): Use wi::to_wide when
	operating on trees as wide_ints.
	* c-typeck.c (build_c_cast, c_finish_omp_clauses): Likewise.
	(c_tree_equal): Likewise.

gcc/c-family/
	* c-ada-spec.c (dump_generic_ada_node): Use wi::to_wide when
	operating on trees as wide_ints.
	* c-common.c (pointer_int_sum): Likewise.
	* c-pretty-print.c (pp_c_integer_constant): Likewise.
	* c-warn.c (match_case_to_enum_1): Likewise.
	(c_do_switch_warnings): Likewise.
	(maybe_warn_shift_overflow): Likewise.

gcc/cp/
	* cvt.c (ignore_overflows): Use wi::to_wide when
	operating on trees as wide_ints.
	* decl.c (check_array_designated_initializer): Likewise.
	* mangle.c (write_integer_cst): Likewise.
	* semantics.c (cp_finish_omp_clause_depend_sink): Likewise.

gcc/fortran/
	* target-memory.c (gfc_interpret_logical): Use wi::to_wide when
	operating on trees as wide_ints.
	* trans-const.c (gfc_conv_tree_to_mpz): Likewise.
	* trans-expr.c (gfc_conv_cst_int_power): Likewise.
	* trans-intrinsic.c (trans_this_image): Likewise.
	(gfc_conv_intrinsic_bound): Likewise.
	(conv_intrinsic_cobound): Likewise.

gcc/lto/
	* lto.c (compare_tree_sccs_1): Use wi::to_wide when
	operating on trees as wide_ints.

gcc/objc/
	* objc-act.c (objc_decl_method_attributes): Use wi::to_wide when
	operating on trees as wide_ints.

From-SVN: r253595
2017-10-10 16:55:34 +00:00
Thomas Koenig
3934b625ee re PR libfortran/82233 (execute_command_line causes program to stop when command fails (or does not exist))
2017-10-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/82233
	* intrinsics/execute_command_line.c (execute_command_line):
	No call to runtime_error if cmdstat is present.

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

	PR libfortran/82233
	* gfortran.dg/execute_command_line_3.f90: New test.

From-SVN: r253593
2017-10-10 16:49:32 +00:00
Will Schmidt
53befce7f2 |-------* gcc.target/powerpc/fold-vec-splat-16.c: New |-------* gcc.target/powerpc/fold-vec-splat-32.c: New.
2017-10-10  Will Schmidt  <will_schmidt@vnet.ibm.com>

[testsuite]
|-------* gcc.target/powerpc/fold-vec-splat-16.c: New
|-------* gcc.target/powerpc/fold-vec-splat-32.c: New.
|-------* gcc.target/powerpc/fold-vec-splat-8.c: New.

From-SVN: r253591
2017-10-10 16:32:54 +00:00
Will Schmidt
0ec8f0c6d6 fold-vec-splats-char.c: New.
[testsuite]

2017-10-10  Will Schmidt <will_schmidt@vnet.ibm.com>

	* gcc.target/powerpc/fold-vec-splats-char.c: New.
	* gcc.target/powerpc/fold-vec-splats-floatdouble.c: New.
	* gcc.target/powerpc/fold-vec-splats-int.c: New.
	* gcc.target/powerpc/fold-vec-splats-longlong.c: New.
	* gcc.target/powerpc/fold-vec-splats-short.c: New.

From-SVN: r253590
2017-10-10 16:26:03 +00:00
Jakub Jelinek
802b38c91f re PR c/82437 (false-positive -Wtautological-compare warning with -std=gnu89)
PR c/82437
	* c-warn.c (warn_tautological_bitwise_comparison): Use wi::to_wide
	instead of wide_int::from.

	* c-c++-common/Wtautological-compare-7.c: New test.

From-SVN: r253589
2017-10-10 18:17:47 +02:00