summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* * profile-count.c (profile_count::from_gcov_type): Move fromhubicka2017-12-085-12/+49
| | | | | | | | | | | profile-count.h; handle overflow. * profile-count. (profile_count::from_gcov_type): Move offline. PR middle-end/83609 * gcc.c-torture/compile/pr83069.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255507 138bc75d-0d04-0410-961f-82ee72b054a4
* combine: Fix PR83304segher2017-12-082-0/+26
| | | | | | | | | | | | | | | | | | | | In PR83304 two insns are combined, where the I2 uses a register that has a REG_DEAD note on an insn after I2 but before I3. In such a case move_deaths should move that death note. But move_deaths only looks at the reg_stat[regno].last_death insn, and that field can be zeroed out (previously, use_crosses_set_p would prevent the combination in this case). If the last_death field is zero it means "unknown", not "no death", so we have to find if there is a REG_DEAD note. PR rtl-optimization/83304 * combine.c (move_deaths): If we do not know where a register died, search for it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255506 138bc75d-0d04-0410-961f-82ee72b054a4
* 2017-12-08 Richard Biener <rguenther@suse.de>rguenth2017-12-082-1/+11
| | | | | | | | * gimple-loop-interchange.cc (tree_loop_interchange::interchange): Provide -fopt-info-loop feedback when we interchange in a nest. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255505 138bc75d-0d04-0410-961f-82ee72b054a4
* [arm] PR target/83206: Make native driver select fp-capable armv6 coresrearnsha2017-12-082-3/+8
| | | | | | | | | | | | | | | | | | | | | | | A quirk in the historical naming of some ARMv6 products means that the main CPU name implies the presence or otherwise of the floating point unit. This causes problems when using -mfpu=auto with -mcpu=native: the driver is picking a CPU that does not support a floating-point unit, even though one may well exist. This patch addresses this by selecting the FP-capable names so that FP instructions will be generated if the other options suggest this is permitted. Note that a more complete fix is really needed here to look up the FP/simd capabilities and append the appropriate capability extensions. This will be the subject of some follow-up patches. * config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names for armv6 ARM CPU IDs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255504 138bc75d-0d04-0410-961f-82ee72b054a4
* [arm] Don't strip off all architecture features from -march passed to assemblerrearnsha2017-12-082-12/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When GCC invokes the assembler it generates a sanitized version of the user-specified -march option to pass through, since the assembler does not understand all the new FPU-related architectural options. Unfortunately it goes too far and strips off all the architectural extensions, including some that are unrelated to the -mfpu variant selected. Again, this doesn't really matter when compiling C code because the compiler will override the command-line specified architecture with directives in the assembly file itself, but when using the compiler driver to invoke the assembler the only indiciation of the desired architecture might come from the command line. We fix this by adjusting the canonicalization pass to remove any option that only specifies features that can be expressed by -mfpu (any that go beyond that are already supported by the assembler). We do have to take care to re-order the options, though as the assembler expects feature options to be in a canonical order (unlike the compiler, where ordering is handled left-to-right: there's only a difference if there are negation options, but a canonicalized architecture string shouldn't have any of those). We do this by recording which options we need and then sorting the final list alphabetically. * common/config/arm/arm-common.c: Include <algorithm>. (INCLUDE_VECTOR): Define. (compare_opt_names): New function. (arm_rewrite_selected_arch): Only strip out extensions that can be expressed through -mfpu. Sort the remaining extensions alphabetically. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255503 138bc75d-0d04-0410-961f-82ee72b054a4
* [arm] Generate a -mfpu= option for passing to the assemblerrearnsha2017-12-083-2/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When gcc runs with the new -mfpu=auto option (either explicitly or when that's the default behaviour) then this option is not passed through to the assembler as we cannot rely on the assembler understanding it (currently it doesn't understand it at all, but in future that might change). That means that the assembler falls back to its builtin default, which may not correspond to what the user expected based on the command-line options they passed. Normally that wouldn't matter because assembler files generated by the compiler will contain explicit directives that set the FPU type directly and override any internal defaults; but when the compiler driver is used to invoke the assembler directly (because the source file ends in .s or .S) then this might cause a problem if that assumes the FPU matches the compiler. To address this, this patch makes the driver construct a -mfpu= option for the assembler in the same way as the compiler generates an internal .fpu directive. As mentioned, this makes no difference if the assembler file explicitly overrides the command line options, but helps in the case where this is implicit. * config/arm/arm.h (arm_asm_auto_mfpu): Declare. (ASM_CPU_SPEC_FUNCTIONS): Add new rule asm_auto_mfpu. (ASM_CPU_SPEC): Use it if -mfpu is set to auto. * common/config/arm/arm-common.c (arm_asm_auto_mfpu): New function. -- This line, and those below, will be ignored-- M gcc/ChangeLog M gcc/common/config/arm/arm-common.c M gcc/config/arm/arm.h git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255502 138bc75d-0d04-0410-961f-82ee72b054a4
* 2017-06-08 Tristan Gingold <gindold@adacore.com>hainque2017-12-082-1/+13
| | | | | | | | | | PR ada/81470 * dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit .cfi_personality or .cfi_lsda if the eh data format is dwarf2. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255501 138bc75d-0d04-0410-961f-82ee72b054a4
* Initialize new member of SOLARIS_ATTRIBUTE_TABLEro2017-12-082-2/+7
| | | | | | | * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member of struct attribute_spec. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255500 138bc75d-0d04-0410-961f-82ee72b054a4
* 2017-12-08 Richard Biener <rguenther@suse.de>rguenth2017-12-083-0/+100
| | | | | | | | | PR tree-optimization/81303 * gfortran.dg/pr81303.f: New testcase. * gfortran.dg/vect/pr81303.f: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255499 138bc75d-0d04-0410-961f-82ee72b054a4
* Enable VNNI support [5/5]kyukhin2017-12-088-0/+197
| | | | | | | | | | | | | | | | | | | gcc/ * config/i386/avx512vnniintrin.h (_mm512_dpwssds_epi32, _mm512_mask_dpwssds_epi32, _mm512_maskz_dpwssds_epi32): New intrinsics. * config/i386/avx512vnnivlintrin.h (_mm256_dpwssds_epi32, _mm256_mask_dpwssds_epi32, _mm256_maskz_dpwssds_epi32, _mm_dpwssds_epi32, _mm_mask_dpwssds_epi32, _mm_maskz_dpwssds_epi32): Ditto. gcc/testsuite/ * gcc.target/i386/avx512f-vnni-1.c: Add checks for vdpdwssds. * gcc.target/i386/avx512vl-vnni-1.c: Ditto. * gcc.target/i386/avx512f-vpdpwssds-2.c: New test. * gcc.target/i386/avx512vl-vpdpwssds-2.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255498 138bc75d-0d04-0410-961f-82ee72b054a4
* 2017-12-08 Richard Biener <rguenther@suse.de>rguenth2017-12-086-2/+91
| | | | | | | | | | | | | | | | PR tree-optimization/81303 * tree-vect-stmts.c (vect_is_simple_cond): For invariant conditions try to create a comparison vector type matching the data vector type. (vectorizable_condition): Adjust. * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Leave invariant conditions alone in case we can vectorize those. * gcc.target/i386/vectorize9.c: New testcase. * gcc.target/i386/vectorize10.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255497 138bc75d-0d04-0410-961f-82ee72b054a4
* Enable VNNI support [4/5]kyukhin2017-12-088-14/+204
| | | | | | | | | | | | | | | | | | gcc/ * config/i386/avx512vnniintrin.h (_mm512_dpwssd_epi32, _mm512_mask_dpwssd_epi32, _mm512_maskz_dpwssd_epi32): New intrinsics. * config/i386/avx512vnnivlintrin.h (_mm256_dpwssd_epi32, _mm256_mask_dpwssd_epi32, _mm256_maskz_dpwssd_epi32, _mm_dpwssd_epi32, _mm_mask_dpwssd_epi32, _mm_maskz_dpwssd_epi32): Ditto. gcc/testsuite/ * gcc.target/i386/avx512f-vnni-1.c: Add vdpwssd checks. * gcc.target/i386/avx512vl-vnni-1.c: Ditto. * gcc.target/i386/avx512f-vpdpwssd-2.c: New. * gcc.target/i386/avx512vl-vpdpwssd-2.c: Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255496 138bc75d-0d04-0410-961f-82ee72b054a4
* Enable VAES support [2/5]kyukhin2017-12-088-0/+207
| | | | | | | | | | | | | | | | | | | | | | | gcc/ * config.gcc: Add vaesintrin.h. * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI): New type. * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi, __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi): New builtins. * config/i386/i386.c (ix86_expand_args_builtin): Handle new type. * config/i386/immintrin.h: Include vaesintrin.h. * config/i386/sse.md (vaesdec_<mode>): New pattern. * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128, _mm_aesdec_epi128): New intrinsics. gcc/testsuite/ * gcc.target/i386/avx512-check.h: Handle bit_VAES. * gcc.target/i386/avx512f-aesdec-2.c: New test. * gcc.target/i386/avx512fvl-vaes-1.c: Ditto. * gcc.target/i386/avx512vl-aesdec-2.c: Ditto. * gcc.target/i386/i386.exp (check_effective_target_avx512vaes): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255495 138bc75d-0d04-0410-961f-82ee72b054a4
* 2017-12-07 Sandra Loosemore <sandra@codesourcery.com>sandra2017-12-084-0/+63
| | | | | | | | | | gcc/testsuite/ * gcc.target/nios2/const-addr-1.c: New. * gcc.target/nios2/const-addr-2.c: New. * gcc.target/nios2/const-addr-3.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255494 138bc75d-0d04-0410-961f-82ee72b054a4
* 2017-12-07 Sandra Loosemore <sandra@codesourcery.com>sandra2017-12-083-3/+31
| | | | | | | | | | | | | gcc/ * config/nios2/nios2.md (ld<bhw_uns>io): Add splitter for memory operand. (ld<bh>io_signed): Likewise. (st<bhw>io): Likewise. * config/nios2/predicates.md (ldstio_memory_operand): Allow SMALL_INT12 constant integer operand. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255493 138bc75d-0d04-0410-961f-82ee72b054a4
* 2017-12-07 Sandra Loosemore <sandra@codesourcery.com>sandra2017-12-084-57/+128
| | | | | | | | | | | | | | | | | | | | | | | | gcc/ * config/nios2/nios2.c (nios2_symbolic_constant_allowed): Rename to... (nios2_large_constant_allowed): ...this. Adjust uses. (nios2_plus_symbolic_constant_p): Rename to... (nios2_plus_large_constant_p): ...this. Adjust uses. (nios2_legitimate_address_p): Correct CONST_INT handling. (nios2_symbolic_memory_operand_p): Rename to... (nios2_large_constant_memory_operand_p): ...this. Adjust uses. (nios2_large_constant_p): Check for large constant integers too. (nios2_split_large_constant): Handle constant integers. (nios2_split_symbolic_memory_operand): Rename to... (nios2_split_large_constant_memory_operand): ...this. Adjust uses. (nios2_legitimize_constant_address): Handle constant integers. (r0rel_constant_p): Handle small constant integers. (nios2_print_operand_address): Handle r0-relative integer addresses. * config/nios2/nios2-protos.h: Adjust for renamed functions. * config/nios2/nios2.md: Adjust for renamed functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255492 138bc75d-0d04-0410-961f-82ee72b054a4
* Add srodata section support to riscv port.wilson2017-12-082-0/+28
| | | | | | | | | | | 2017-12-07 Andrew Waterman <andrew@sifive.com> gcc/ * config/riscv/riscv.c (TARGET_ASM_SELECT_SECTION): New define. (TARGET_HAVE_SRODATA_SECTION): New define. (riscv_select_section): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255491 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2017-12-081-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255490 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/83252jakub2017-12-084-11/+112
| | | | | | | | | | * gcc.target/i386/i386.exp (check_effective_target_bmi2): Moved to ... * lib/target-supports.exp (check_effective_target_bmi2): ... here. Guard with i?86-*-* x86_64-*-*. * g++.dg/opt/pr83252.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255487 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/81906jakub2017-12-074-6/+66
| | | | | | | | | * config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math. * gcc.target/i386/pr81906.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255486 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-optimization/83075jakub2017-12-073-24/+65
| | | | | | | | | | | * gcc.dg/tree-ssa/strncpy-2.c: Use size_t instead of unsigned, add separate function with noipa attribute to also verify behavior when optimizers don't know the sizes and aliasing, verify resulting sizes and array content. Add -Wstringop-overflow to dg-options. * gcc.dg/tree-ssa/strncat.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255485 138bc75d-0d04-0410-961f-82ee72b054a4
* Improve fstack_protector effective targetthopre012017-12-072-1/+10
| | | | | | | | | | | | | | | | | | | | | Effective target fstack_protector fails to return an error for newlib-based target (such as arm-none-eabi targets) which does not support stack protector. This is due to the test being too simplist for stack protection code to be generated by GCC: it does not contain a local buffer and does not read unknown input. This commit adds a small local buffer with a copy of the filename to trigger stack protector code to be generated. The filename is used instead of the full path so as to ensure the size will fit in the local buffer. 2017-12-07 Thomas Preud'homme <thomas.preudhomme@arm.com> gcc/testsuite/ * lib/target-supports.exp (check_effective_target_fstack_protector): Copy filename in local buffer to trigger stack protection. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255484 138bc75d-0d04-0410-961f-82ee72b054a4
* PR libstdc++/83120dje2017-12-073-2/+11
| | | | | | | | | | * testsuite/ext/special_functions/hyperg/check_value.cc: Add -ffp-contract=off. Add -ffloat-store for m68* and ia32. * testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc: Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255483 138bc75d-0d04-0410-961f-82ee72b054a4
* Allow _Alignas in compound literals (C11 DR#444).jsm282017-12-0711-13/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | C11 DR#444 dealt with how C11 intended to allow alignment specifiers on struct and union members, but failed to include that in the syntax. The final resolution of that DR also allows alignment specifiers in type names in compound literals (in order to apply an increased alignment to the unnamed object created by the compound literal), but not other cases of type names. This patch implements allowing alignment specifiers in compound literals and adds tests for the resolution of the DR (including that they are allowed on struct and union members, which GCC already implemented). Because the parser has to parse the parenthesized type name of a compound literal before it can tell that it's a compound literal (rather than, depending on the context, a cast expression or sizeof (type-name) or _Alignof (type-name)), this means _Alignas specifiers are allowed syntactically in those contexts and then an error is given once it's known to be an invalid use (whereas _Alignas specifiers are disallowed syntactically in other contexts where type names can occur and a compound literal is not possible). Bootstrapped with no regressions on x86_64-pc-linux-gnu. gcc/c: * c-decl.c (build_compound_literal): Add parameter alignas_align and set alignment of decl if nonzero. * c-parser.c (c_keyword_starts_typename): Allow RID_ALIGNAS. (c_parser_declspecs): Allow RID_ALIGNAS to follow a type, like a qualifier. (c_parser_struct_declaration): Update syntax comment. (c_parser_type_name): Add alignas_ok argument and pass it to c_parser_declspecs. (c_parser_cast_expression): Pass true to c_parser_type_name and give error if a cast used an _Alignas specifier. (c_parser_sizeof_expression): Pass true to c_parser_type_name and give error if sizeof (type-name) used an _Alignas specifier. (c_parser_alignof_expression): Pass true to c_parser_type_name and give error if _Alignof (type-name) used an _Alignas specifier. (c_parser_postfix_expression_after_paren_type): Check specified alignment for a compound literal and pass it to build_compound_literal. * c-parser.h (c_parser_type_name): Update prototype. * c-tree.h (build_compound_literal): Update prototype. gcc/testsuite: * gcc.dg/c11-align-7.c, gcc.dg/c11-align-8.c, gcc.dg/c11-align-9.c, gcc.dg/gnu11-align-1.c: New tests. * gcc.dg/c11-align-5.c (test): Update expected error for sizeof case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255482 138bc75d-0d04-0410-961f-82ee72b054a4
* [AArch64] Fix ICEs in aarch64_print_operandrsandifo2017-12-075-27/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Three related regression fixes: - We can't use asserts like: gcc_assert (GET_MODE_SIZE (mode) == 16); in aarch64_print_operand because it could trigger for invalid user input. - The output_operand_lossage in aarch64_print_address_internal: output_operand_lossage ("invalid operand for '%%%c'", op); wasn't right because "op" is an rtx_code enum rather than the prefix character. - aarch64_print_operand_address shouldn't call output_operand_lossage (because it doesn't have a prefix code) but instead fall back to output_addr_const. 2017-12-05 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * config/aarch64/aarch64.c (aarch64_print_address_internal): Return a bool success value. Don't call output_operand_lossage here. (aarch64_print_ldpstp_address): Return a bool success value. (aarch64_print_operand_address): Call output_addr_const if aarch64_print_address_internal fails. (aarch64_print_operand): Don't assert that the mode is 16 bytes for 'y'; call output_operand_lossage instead. Call output_operand_lossage if aarch64_print_ldpstp_address fails. gcc/testsuite/ * gcc.target/aarch64/asm-2.c: New test. * gcc.target/aarch64/asm-3.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255481 138bc75d-0d04-0410-961f-82ee72b054a4
* Make more use of VECTOR_CST_ENCODED_ELTrsandifo2017-12-0710-113/+137
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes various bits of code operate directly on the new VECTOR_CST encoding, instead of using VECTOR_CST_ELT on all elements of the vector. Previous patches handled operations that produce a new VECTOR_CST, while this patch handles things like predicates. It also makes print_node dump the encoding instead of the full vector that the encoding represents. 2017-12-07 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * tree-vector-builder.h (tree_vector_builder::binary_encoded_nelts): Declare. * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts): New function. * fold-const.c (negate_expr_p): Likewise. (operand_equal_p, fold_checksum_tree): Likewise. * tree-loop-distribution.c (const_with_all_bytes_same): Likewise. * tree.c (integer_zerop, integer_onep, integer_all_onesp, real_zerop) (real_onep, real_minus_onep, add_expr, initializer_zerop): Likewise. (uniform_vector_p): Likewise. * varasm.c (const_hash_1, compare_constant): Likewise. * tree-ssa-ccp.c: Include tree-vector-builder.h. (valid_lattice_transition): Operate directly on the VECTOR_CST encoding. * ipa-icf.c: Include tree-vector-builder.h. (sem_variable::equals): Operate directly on the VECTOR_CST encoding. * print-tree.c (print_node): Print encoding of VECTOR_CSTs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255480 138bc75d-0d04-0410-961f-82ee72b054a4
* Make build_vector staticrsandifo2017-12-073-13/+18
| | | | | | | | | | | | | | | The only remaining uses of build_vector are in the selftests in tree.c. This patch makes it static and moves it to the selftest part of the file. 2017-12-07 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * tree.c (build_vector): Delete. * tree.h (build_vector): Make static and move into the self-testing block. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255479 138bc75d-0d04-0410-961f-82ee72b054a4
* Make gimple_build_vector take a tree_vector_builderrsandifo2017-12-077-27/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | This patch changes gimple_build_vector so that it takes a tree_vector_builder instead of a size and a vector of trees. 2017-12-07 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * vector-builder.h (vector_builder::derived): New const overload. (vector_builder::elt): New function. * tree-vector-builder.h (tree_vector_builder::type): New function. (tree_vector_builder::apply_step): Declare. * tree-vector-builder.c (tree_vector_builder::apply_step): New function. * gimple-fold.h (tree_vector_builder): Declare. (gimple_build_vector): Take a tree_vector_builder instead of a type and vector of elements. * gimple-fold.c (gimple_build_vector): Likewise. * tree-vect-loop.c (get_initial_def_for_reduction): Update call accordingly. (get_initial_defs_for_reduction): Likewise. (vectorizable_induction): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255478 138bc75d-0d04-0410-961f-82ee72b054a4
* Use tree_vector_builder::new_binary_operation for foldingrsandifo2017-12-074-12/+98
| | | | | | | | | | | | | | | | | | | | | This patch makes fold-const.c operate directly on the VECTOR_CST encoding when folding an operation that has two VECTOR_CST inputs. 2017-12-07 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * tree-vector-builder.h (tree_vector_builder::new_binary_operation): Declare. * tree-vector-builder.c (tree_vector_builder::new_binary_operation): New function. * fold-const.c (fold_relational_const): Use it. (const_binop): Likewise. Check that both input vectors have the same number of elements, thus excluding things like WIDEN_SUM. Check whether it is possible to operate directly on the encodings of stepped inputs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255477 138bc75d-0d04-0410-961f-82ee72b054a4
* Use tree_vector_builder::new_unary_operation for foldingrsandifo2017-12-072-23/+73
| | | | | | | | | | | | | | | | | | | | | | | | This patch makes fold-const.c operate directly on the VECTOR_CST encoding when folding an operation that has a single VECTOR_CST input. 2017-12-07 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * fold-const.c (fold_negate_expr_1): Use tree_vector_builder and new_unary_operation, operating only on the encoded elements. (const_unop): Likewise. (exact_inverse): Likewise. (distributes_over_addition_p): New function. (const_binop): Use tree_vector_builder and new_unary_operation for combinations of VECTOR_CST and INTEGER_CST. Operate only on the encoded elements unless the encoding is strided and the operation does not distribute over addition. (fold_convert_const): Use tree_vector_builder and new_unary_operation. Operate only on the encoded elements for truncating integer conversions, or for non-stepped encodings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255476 138bc75d-0d04-0410-961f-82ee72b054a4
* Use tree_vector_builder instead of build_vectorrsandifo2017-12-0711-65/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch switches most build_vector calls over to tree_vector_builder, using explicit encodings where appropriate. Later patches handle the remaining uses of build_vector. 2017-12-07 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * config/sparc/sparc.c: Include tree-vector-builder.h. (sparc_fold_builtin): Use tree_vector_builder instead of build_vector. * expmed.c: Include tree-vector-builder.h. (make_tree): Use tree_vector_builder instead of build_vector. * fold-const.c: Include tree-vector-builder.h. (const_binop): Use tree_vector_builder instead of build_vector. (const_unop): Likewise. (native_interpret_vector): Likewise. (fold_vec_perm): Likewise. (fold_ternary_loc): Likewise. * gimple-fold.c: Include tree-vector-builder.h. (gimple_fold_stmt_to_constant_1): Use tree_vector_builder instead of build_vector. * tree-ssa-forwprop.c: Include tree-vector-builder.h. (simplify_vector_constructor): Use tree_vector_builder instead of build_vector. * tree-vect-generic.c: Include tree-vector-builder.h. (add_rshift): Use tree_vector_builder instead of build_vector. (expand_vector_divmod): Likewise. (optimize_vector_constructor): Likewise. * tree-vect-loop.c: Include tree-vector-builder.h. (vect_create_epilog_for_reduction): Use tree_vector_builder instead of build_vector. Explicitly use a stepped encoding for { 1, 2, 3, ... }. * tree-vect-slp.c: Include tree-vector-builder.h. (vect_get_constant_vectors): Use tree_vector_builder instead of build_vector. (vect_transform_slp_perm_load): Likewise. (vect_schedule_slp_instance): Likewise. * tree-vect-stmts.c: Include tree-vector-builder.h. (vectorizable_bswap): Use tree_vector_builder instead of build_vector. (vect_gen_perm_mask_any): Likewise. (vectorizable_call): Likewise. Explicitly use a stepped encoding. * tree.c: (build_vector_from_ctor): Use tree_vector_builder instead of build_vector. (build_vector_from_val): Likewise. Explicitly use a duplicate encoding. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255475 138bc75d-0d04-0410-961f-82ee72b054a4
* New VECTOR_CST layoutrsandifo2017-12-0716-70/+1015
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch uses a simple compression scheme to represent the contents of a VECTOR_CST using its leading elements. There are three formats: 1) a repeating sequence of N values. This is encoded using the first N elements. 2) a "foreground" sequence of N values inserted at the beginning of a "background" repeating sequence of N values, such as: { 1, 2, 0, 0, 0, 0, ... }. This is encoded using the first 2*N elements. 2) a "foreground" sequence of N values inserted at the beginning of a "background" repeating sequence of N interleaved linear series, such as: { 0, 0, 8, 10, 9, 11, 10, 12, ... }. This is encoded using the first 3*N elements. In practice the foreground values are often part of the same series as the background values, such as: { 1, 11, 2, 12, 3, 13, ... }. This reduces the amount of work involved in processing simple vector constants and means that the encoding extends naturally to variable-length vectors. 2017-12-07 Richard Sandiford <richard.sandiford@arm.com> gcc/ * doc/generic.texi (VECTOR_CST): Describe new representation of vector constants. * vector-builder.h: New file. * tree-vector-builder.h: Likewise. * tree-vector-builder.c: Likewise. * Makefile.in (OBJS): Add tree-vector-builder.o. * tree.def (VECTOR_CST): Update comment to refer to generic.texi. * tree-core.h (tree_base): Add a vector_cst field to the u union. (tree_vector): Change the number of elements to vector_cst_encoded_nelts. * tree.h (VECTOR_CST_NELTS): Redefine using TYPE_VECTOR_SUBPARTS. (VECTOR_CST_ELTS): Delete. (VECTOR_CST_ELT): Redefine using vector_cst_elt. (VECTOR_CST_LOG2_NPATTERNS, VECTOR_CST_NPATTERNS): New macros. (VECTOR_CST_NELTS_PER_PATTERN, VECTOR_CST_DUPLICATE_P): Likewise. (VECTOR_CST_STEPPED_P, VECTOR_CST_ENCODED_ELTS): Likewise. (VECTOR_CST_ENCODED_ELT): Likewise. (vector_cst_encoded_nelts): New function. (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and VECTOR_CST_NELTS_PER_PATTERN as arguments. (vector_cst_int_elt, vector_cst_elt): Declare. * tree.c: Include tree-vector-builder.h. (tree_code_size): Abort if passed VECTOR_CST. (tree_size): Update for new VECTOR_CST layout. (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and VECTOR_CST_NELTS_PER_PATTERN as arguments. (build_vector): Use tree_vector_builder. (vector_cst_int_elt, vector_cst_elt): New functions. (drop_tree_overflow): For VECTOR_CST, drop the TREE_OVERFLOW from the encoded elements and then create the vector in the canonical form. (check_vector_cst, check_vector_cst_duplicate, check_vector_cst_fill) (check_vector_cst_stepped, test_vector_cst_patterns): New functions. (tree_c_tests): Call test_vector_cst_patterns. * lto-streamer-out.c (DFS::DFS_write_tree_body): Handle the new VECTOR_CST fields. (hash_tree): Likewise. * tree-streamer-out.c (write_ts_vector_tree_pointers): Likewise. (streamer_write_tree_header): Likewise. * tree-streamer-in.c (lto_input_ts_vector_tree_pointers): Likewise. (streamer_alloc_tree): Likewise. Update call to make_vector. * fold-const.c (fold_ternary_loc): Avoid using VECTOR_CST_ELTS. gcc/lto/ * lto.c (compare_tree_sccs_1): Compare the new VECTOR_CST flags. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255474 138bc75d-0d04-0410-961f-82ee72b054a4
* Add underscores to local vars in selftest macrosrsandifo2017-12-073-29/+35
| | | | | | | | | | | | | | | Allows functions doing selftests to take parameters with names like "actual". 2017-12-07 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * selftest.h (ASSERT_TRUE_AT, ASSERT_FALSE_AT, ASSERT_EQ_AT) (ASSERT_NE, ASSERT_PRED1): Add underscores to local variable names * selftest-rtl.h (ASSERT_RTX_EQ, ASSERT_RTX_PTR_EQ): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255473 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-optimization/81303amker2017-12-0729-108/+3032
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (gimple-loop-interchange.o): New object file. * common.opt (floop-interchange): Reuse the option from graphite. * doc/invoke.texi (-floop-interchange): Ditto. New document for -floop-interchange and mention it for -O3. * opts.c (default_options_table): Enable -floop-interchange at -O3. * gimple-loop-interchange.cc: New file. * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter. (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter. * passes.def (pass_linterchange): New pass. * timevar.def (TV_LINTERCHANGE): New time var. * tree-pass.h (make_pass_linterchange): New declaration. * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external interchange. Record IV before/after increment in new parameters. * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration. * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction path check into... (check_reduction_path): ...New function here. * tree-vectorizer.h (check_reduction_path): New declaration. gcc/testsuite * gcc.dg/tree-ssa/loop-interchange-1.c: New test. * gcc.dg/tree-ssa/loop-interchange-1b.c: New test. * gcc.dg/tree-ssa/loop-interchange-2.c: New test. * gcc.dg/tree-ssa/loop-interchange-3.c: New test. * gcc.dg/tree-ssa/loop-interchange-4.c: New test. * gcc.dg/tree-ssa/loop-interchange-5.c: New test. * gcc.dg/tree-ssa/loop-interchange-6.c: New test. * gcc.dg/tree-ssa/loop-interchange-7.c: New test. * gcc.dg/tree-ssa/loop-interchange-8.c: New test. * gcc.dg/tree-ssa/loop-interchange-9.c: New test. * gcc.dg/tree-ssa/loop-interchange-10.c: New test. * gcc.dg/tree-ssa/loop-interchange-11.c: New test. * gcc.dg/tree-ssa/loop-interchange-12.c: New test. * gcc.dg/tree-ssa/loop-interchange-13.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255472 138bc75d-0d04-0410-961f-82ee72b054a4
* 2017-12-07 Vladimir Makarov <vmakarov@redhat.com>vmakarov2017-12-073-10/+26
| | | | | | | | | | | | | PR target/83252 PR rtl-optimization/80818 * lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER always early clobbered. * lra-lives.c (process_bb_lives): Check input hard regs for early clobbered non-operand hard reg. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255471 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/83164jakub2017-12-074-1/+21
| | | | | | | | | | * tree-cfg.c (verify_gimple_assign_binary): Don't require types_compatible_p, just that TYPE_MODE is the same. * gcc.c-torture/compile/pr83164.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255470 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c/81544 - attribute noreturn and warn_unused_result on the same function ↵msebor2017-12-0762-477/+1116
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | accepted PR c/81566 - invalid attribute aligned accepted on functions gcc/ada/ChangeLog: PR c/81544 * gcc-interface/utils.c (gnat_internal_attribute_table): Initialize new member of struct attribute_spec. gcc/c/ChangeLog: PR c/81544 * c-decl.c (c_decl_attributes): Look up existing declaration and pass it to decl_attributes. gcc/c-family/ChangeLog: PR c/81544 PR c/81566 * c-attribs.c (attr_aligned_exclusions): New array. (attr_alloc_exclusions, attr_cold_hot_exclusions): Same. (attr_common_exclusions, attr_const_pure_exclusions): Same. (attr_gnu_inline_exclusions, attr_inline_exclusions): Same. (attr_noreturn_exclusions, attr_returns_twice_exclusions): Same. (attr_warn_unused_result_exclusions): Same. (handle_hot_attribute, handle_cold_attribute): Simplify. (handle_const_attribute): Warn on function returning void. (handle_pure_attribute): Same. (handle_aligned_attribute): Diagnose conflicting attribute specifications. * c-warn.c (diagnose_mismatched_attributes): Simplify. gcc/cp/ChangeLog: PR c/81544 * cp-tree.h (decls_match): Add default argument. * decl.c (decls_match): Avoid calling into the target back end and triggering an error. * decl2.c (cplus_decl_attributes): Look up existing declaration and pass it to decl_attributes. * tree.c (cxx_attribute_table): Initialize new member of struct attribute_spec. gcc/fortran/ChangeLog: PR c/81544 * f95-lang.c (gfc_attribute_table): Initialize new member of struct attribute_spec. gcc/lto/ChangeLog: PR c/81544 * lto-lang.c (lto_attribute_table): Initialize new member of struct attribute_spec. gcc/ChangeLog: PR c/81544 * attribs.c (empty_attribute_table): Initialize new member of struct attribute_spec. (decl_attributes): Add argument. Handle mutually exclusive combinations of attributes. (selftests::test_attribute_exclusions): New function. (selftests::attribute_c_tests): Ditto. * attribs.h (decl_attributes): Add default argument. * selftest.h (attribute_c_tests): Declare. * selftest-run-tests.c (selftest::run_tests): Call attribute_c_tests. * tree-core.h (attribute_spec::exclusions, exclude): New type and member. * doc/extend.texi (Common Function Attributes): Update const and pure. gcc/testsuite/ChangeLog: PR c/81544 * c-c++-common/Wattributes-2.c: New test. * c-c++-common/Wattributes.c: New test. * c-c++-common/attributes-3.c: Adjust. * gcc.dg/Wattributes-6.c: New test. * gcc.dg/Wattributes-7.c: New test. * gcc.dg/attr-noinline.c * gcc.dg/pr44964.c: Same. * gcc.dg/torture/pr42363.c: Same. * gcc.dg/tree-ssa/ssa-ccp-2.c: Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255469 138bc75d-0d04-0410-961f-82ee72b054a4
* 2017-12-07 Tamar Christina <tamar.christina@arm.com>tnfchris2017-12-077-4/+179
| | | | | | | | | | | | | | | | | | | | | | PR target/82641 * config/arm/arm.c (INCLUDE_STRING): Define. (arm_last_printed_arch_string, arm_last_printed_fpu_string): New. (arm_declare_function_name): Conservatively emit .arch, .arch_extensions and .fpu. gcc/testsuite/ 2017-12-07 Tamar Christina <tamar.christina@arm.com> PR target/82641 * gcc.target/arm/pragma_arch_attribute_2.c: New. * gcc.target/arm/pragma_arch_attribute_2.c: New. * gcc.target/arm/pragma_arch_attribute_3.c: New. * gcc.target/arm/pragma_fpu_attribute.c: New. * gcc.target/arm/pragma_fpu_attribute_2.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255468 138bc75d-0d04-0410-961f-82ee72b054a4
* Add unroll and jam passmatz2017-12-0716-24/+790
| | | | | | | | | | | | | | | | | | | | | | | | | * gimple-loop-jam.c: New file. * Makefile.in (OBJS): Add gimple-loop-jam.o. * common.opt (funroll-and-jam): New option. * opts.c (default_options_table): Add unroll-and-jam at -O3. * params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param. (PARAM_UNROLL_JAM_MAX_UNROLL): Ditto. * passes.def: Add pass_loop_jam. * timevar.def (TV_LOOP_JAM): Add. * tree-pass.h (make_pass_loop_jam): Declare. * cfgloop.c (flow_loop_tree_node_add): Add AFTER argument. * cfgloop.h (flow_loop_tree_node_add): Adjust declaration. * cfgloopmanip.c (duplicate_loop): Add AFTER argument, adjust call to flow_loop_tree_node_add. (duplicate_subloops, copy_loops_to): Append to sibling list. * cfgloopmanip.h: (duplicate_loop): Adjust declaration. * doc/invoke.texi (-funroll-and-jam): Document new option. (unroll-jam-min-percent, unroll-jam-max-unroll): Document new params. testsuite/ * gcc.dg/unroll-and-jam.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255467 138bc75d-0d04-0410-961f-82ee72b054a4
* 2017-12-07 Richard Biener <rguenther@suse.de>rguenth2017-12-074-18/+50
| | | | | | | | | | | | | | | | | PR tree-optimization/83296 PR tree-optimization/67769 * tree-ssa-phiopt.c (conditional_replacement): Do not reset flow sensitive info in an unrelated BB. (value_replacement): Use reset_flow_sensitive_info. (minmax_replacement): Reset flow sensitive info on the def we move. Do not reset flow sensitive info in the whole BB we move the stmt to. (abs_replacement): Likewise. * g++.dg/warn/Wstringop-overflow-1.C: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255466 138bc75d-0d04-0410-961f-82ee72b054a4
* rs6000: Initialise rs6000_cpu correctly (PR43871)segher2017-12-072-2/+11
| | | | | | | | | | | | | Finally, set rs6000_cpu based not on -mtune=, but only -mcpu= and the defaults. PR target/43871 * config/rs6000/rs6000.c (rs6000_option_override_internal): Set rs6000_cpu to the given -mcpu=, or to the default processor. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255464 138bc75d-0d04-0410-961f-82ee72b054a4
* rs6000: Don't use rs6000_cpu_attr directlysegher2017-12-074-63/+76
| | | | | | | | | | | | | | | | | | | | | | | | | In some places in the code we currently use rs6000_cpu_attr, although that is a cast from rs6000_tune. This patch changes things to be more regular and clearer. Now rs6000_cpu_attr is not used any more, and it is deleted. * config/rs6000/rs6000.h (rs6000_cpu_attr): Delete. * config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune instead of rs6000_cpu_attr. (rs6000_adjust_cost): Ditto. (is_microcoded_insn): Ditto. (rs6000_adjust_priority): Ditto. (rs6000_issue_rate): Ditto. (rs6000_use_sched_lookahead): Ditto. (rs6000_use_sched_lookahead_guard): Ditto. (rs6000_sched_reorder): Ditto. (force_new_group): Ditto. * config/rs6000/rs6000.md (cpu attribute): Ditto. (group_ending_nop): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255463 138bc75d-0d04-0410-961f-82ee72b054a4
* rs6000: Split rs6000_cpusegher2017-12-074-59/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This splits rs6000_cpu into rs6000_cpu and rs6000_tune. Both are still initialised identically, so there is no behaviour change. Now rs6000_cpu should be set by -mcpu=, and rs6000_tune by -mtune= (but both still are set by -mtune=, fixed in a later patch in the series). Also change rs6000_cpu to rs6000_tune in the appropriate cases (i.e. most, but not those that enable using new insns). * config/rs6000/rs6000.opt (rs6000_tune): New variable. * config/rs6000/rs6000.c (rs6000_option_override_internal): Also set rs6000_tune. Use rs6000_tune instead of rs6000_cpu where appropriate. (rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where appropriate. (rs6000_reassociation_width): Ditto. (rs6000_emit_epilogue): Ditto. (rs6000_adjust_cost): Ditto. (is_microcoded_insn): Ditto. (is_cracked_insn): Ditto. (rs6000_adjust_priority): Ditto. (rs6000_sched_reorder): Ditto. (rs6000_sched_reorder2): Ditto. (insn_must_be_first_in_group): Ditto. (insn_must_be_last_in_group): Ditto. (rs6000_register_move_cost): Ditto. * config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of rs6000_cpu. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255462 138bc75d-0d04-0410-961f-82ee72b054a4
* Enable VAES support [2/5]kyukhin2017-12-0714-2/+597
| | | | | | | | | | | | | | | | | | | | | | | gcc/ * config.gcc: Add vaesintrin.h. * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI): New type. * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi, __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi): New builtins. * config/i386/i386.c (ix86_expand_args_builtin): Handle new type. * config/i386/immintrin.h: Include vaesintrin.h. * config/i386/sse.md (vaesdec_<mode>): New pattern. * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128, _mm_aesdec_epi128): New intrinsics. gcc/testsuite/ * gcc.target/i386/avx512-check.h: Handle bit_VAES. * gcc.target/i386/avx512f-aesdec-2.c: New test. * gcc.target/i386/avx512fvl-vaes-1.c: Ditto. * gcc.target/i386/avx512vl-aesdec-2.c: Ditto. * gcc.target/i386/i386.exp (check_effective_target_avx512vaes): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255461 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2017-12-071-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255460 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-optimization/69224law2017-12-064-0/+108
| | | | | | | | | | PR tree-optimization/80907 PR tree-optimization/82286 * gcc.dg/pr69224.c: New test. * gcc.dg/pr80907.c: New test. * gcc.dg/pr82286.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255457 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/80259jakub2017-12-064-3/+35
| | | | | | | | | * decl2.c (grokfield): Diagnose = delete redefinition of a friend. * g++.dg/cpp0x/pr80259.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255456 138bc75d-0d04-0410-961f-82ee72b054a4
* Correct argument to targetm.calls.promote_prototypes.jason2017-12-062-2/+6
| | | | | | | | * call.c (convert_for_arg_passing): Pass NULL_TREE to targetm.calls.promote_prototypes. (type_passed_as): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255455 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/82115 - ICE with variable initialized with its own address.jason2017-12-064-7/+29
| | | | | | | * pt.c (value_dependent_expression_p): Add lval parameter. Don't consider DECL_INITIAL if it's true. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255454 138bc75d-0d04-0410-961f-82ee72b054a4
* C/C++: don't suggest implementation names as spelling fixes (PR c/83236)dmalcolm2017-12-0611-5/+189
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/c-family/ChangeLog: PR c/83236 * c-common.c (selftest::c_family_tests): Call selftest::c_spellcheck_cc_tests. * c-common.h (selftest::c_spellcheck_cc_tests): New decl. * c-spellcheck.cc: Include "selftest.h". (name_reserved_for_implementation_p): New function. (should_suggest_as_macro_p): New function. (find_closest_macro_cpp_cb): Move the check for NT_MACRO to should_suggest_as_macro_p and call it. (selftest::test_name_reserved_for_implementation_p): New function. (selftest::c_spellcheck_cc_tests): New function. * c-spellcheck.h (name_reserved_for_implementation_p): New decl. gcc/c/ChangeLog: PR c/83236 * c-decl.c (lookup_name_fuzzy): Don't suggest names that are reserved for use by the implementation. gcc/cp/ChangeLog: PR c/83236 * name-lookup.c (consider_binding_level): Don't suggest names that are reserved for use by the implementation. gcc/testsuite/ChangeLog: PR c/83236 * c-c++-common/spellcheck-reserved.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@255453 138bc75d-0d04-0410-961f-82ee72b054a4