Jakub Jelinek [Fri, 8 Dec 2017 11:55:23 +0000 (12:55 +0100)]
arc.c (arc_attribute_table): Add exclusions to the comment.
* config/arc/arc.c (arc_attribute_table): Add exclusions to
the comment.
* config/avr/avr.c (avr_attribute_table): Likewise.
* config/msp430/msp430.c (msp430_attribute_table): Likewise.
* config/rl78/rl78.c (rl78_attribute_table): Likewise.
* config/nds32/nds32.c (nds32_attribute_table): Likewise.
* config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member
of struct attribute_spec.
* config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
ada/
* gcc-interface/utils.c (gnat_internal_attribute_table): Add
exclusions to the comment.
brig/
* brig-lang.c (brig_attribute_table): Fix up comment.
From-SVN: r255509
Ulrich Weigand [Fri, 8 Dec 2017 11:33:09 +0000 (11:33 +0000)]
re PR target/82960 (spu_machine_dependent_reorg does not handle jump_table_data insn)
gcc/
PR target/82960
* config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true.
From-SVN: r255508
Jan Hubicka [Fri, 8 Dec 2017 11:27:28 +0000 (12:27 +0100)]
re PR tree-optimization/83609 (ICE in read_complex_part at gcc/expr.c:3202)
* profile-count.c (profile_count::from_gcov_type): Move from
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.
From-SVN: r255507
Segher Boessenkool [Fri, 8 Dec 2017 11:26:35 +0000 (12:26 +0100)]
combine: Fix PR83304
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.
From-SVN: r255506
Richard Biener [Fri, 8 Dec 2017 11:24:36 +0000 (11:24 +0000)]
gimple-loop-interchange.cc (tree_loop_interchange::interchange): Provide -fopt-info-loop feedback when we interchange in a nest.
2017-12-08 Richard Biener <rguenther@suse.de>
* gimple-loop-interchange.cc (tree_loop_interchange::interchange):
Provide -fopt-info-loop feedback when we interchange in a nest.
From-SVN: r255505
Richard Earnshaw [Fri, 8 Dec 2017 11:19:20 +0000 (11:19 +0000)]
[arm] PR target/83206: Make native driver select fp-capable armv6 cores
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.
From-SVN: r255504
Richard Earnshaw [Fri, 8 Dec 2017 11:14:09 +0000 (11:14 +0000)]
[arm] Don't strip off all architecture features from -march passed to assembler
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.
From-SVN: r255503
Richard Earnshaw [Fri, 8 Dec 2017 10:55:01 +0000 (10:55 +0000)]
[arm] Generate a -mfpu= option for passing to the assembler
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
From-SVN: r255502
Tristan Gingold [Fri, 8 Dec 2017 09:33:08 +0000 (09:33 +0000)]
re PR bootstrap/81470 (Bootstrap comparison failures in gcc/ada)
2017-06-08 Tristan Gingold <gindold@adacore.com>
PR ada/81470
* dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit
.cfi_personality or .cfi_lsda if the eh data format is dwarf2.
From-SVN: r255501
Rainer Orth [Fri, 8 Dec 2017 09:27:40 +0000 (09:27 +0000)]
Initialize new member of SOLARIS_ATTRIBUTE_TABLE
* config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member
of struct attribute_spec.
From-SVN: r255500
Richard Biener [Fri, 8 Dec 2017 08:22:08 +0000 (08:22 +0000)]
re PR tree-optimization/81303 (410.bwaves regression caused by r249919)
2017-12-08 Richard Biener <rguenther@suse.de>
PR tree-optimization/81303
* gfortran.dg/pr81303.f: New testcase.
* gfortran.dg/vect/pr81303.f: Likewise.
From-SVN: r255499
Julia Koval [Fri, 8 Dec 2017 08:12:49 +0000 (09:12 +0100)]
Enable VNNI support [5/5]
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.
From-SVN: r255498
Richard Biener [Fri, 8 Dec 2017 08:06:31 +0000 (08:06 +0000)]
re PR tree-optimization/81303 (410.bwaves regression caused by r249919)
2017-12-08 Richard Biener <rguenther@suse.de>
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.
From-SVN: r255497
Julia Koval [Fri, 8 Dec 2017 08:05:33 +0000 (09:05 +0100)]
Enable VNNI support [4/5]
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.
From-SVN: r255496
Julia Koval [Fri, 8 Dec 2017 05:04:26 +0000 (06:04 +0100)]
Enable VAES support [2/5]
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.
From-SVN: r255495
Sandra Loosemore [Fri, 8 Dec 2017 04:26:12 +0000 (23:26 -0500)]
const-addr-1.c: New.
2017-12-07 Sandra Loosemore <sandra@codesourcery.com>
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.
From-SVN: r255494
Sandra Loosemore [Fri, 8 Dec 2017 04:24:21 +0000 (23:24 -0500)]
nios2.md (ld<bhw_uns>io): Add splitter for memory operand.
2017-12-07 Sandra Loosemore <sandra@codesourcery.com>
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.
From-SVN: r255493
Sandra Loosemore [Fri, 8 Dec 2017 04:23:00 +0000 (23:23 -0500)]
nios2.c (nios2_symbolic_constant_allowed): Rename to...
2017-12-07 Sandra Loosemore <sandra@codesourcery.com>
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.
From-SVN: r255492
Andrew Waterman [Fri, 8 Dec 2017 00:44:13 +0000 (00:44 +0000)]
Add srodata section support to riscv port.
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.
From-SVN: r255491
GCC Administrator [Fri, 8 Dec 2017 00:16:13 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r255490
Jakub Jelinek [Fri, 8 Dec 2017 00:03:28 +0000 (01:03 +0100)]
re PR target/83252 (Wrong code with "-march=skylake-avx512 -O3")
PR target/83252
* 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.
From-SVN: r255487
Jakub Jelinek [Thu, 7 Dec 2017 23:56:34 +0000 (00:56 +0100)]
re PR target/81906 (Calls to rint() wrongly optimized away starting in g++ 6)
PR target/81906
* config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math.
* gcc.target/i386/pr81906.c: New test.
From-SVN: r255486
Jakub Jelinek [Thu, 7 Dec 2017 23:55:18 +0000 (00:55 +0100)]
re PR tree-optimization/83075 (Invalid strncpy optimization)
PR tree-optimization/83075
* 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.
From-SVN: r255485
Thomas Preud'homme [Thu, 7 Dec 2017 21:48:35 +0000 (21:48 +0000)]
Improve fstack_protector effective target
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.
From-SVN: r255484
David Edelsohn [Thu, 7 Dec 2017 20:05:59 +0000 (20:05 +0000)]
re PR libstdc++/83120 (ext/special_functions/hyperg failure on AIX)
PR libstdc++/83120
* 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.
From-SVN: r255483
Joseph Myers [Thu, 7 Dec 2017 18:47:20 +0000 (18:47 +0000)]
Allow _Alignas in compound literals (C11 DR#444).
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.
From-SVN: r255482
Richard Sandiford [Thu, 7 Dec 2017 18:43:40 +0000 (18:43 +0000)]
[AArch64] Fix ICEs in aarch64_print_operand
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.
From-SVN: r255481
Richard Sandiford [Thu, 7 Dec 2017 18:42:41 +0000 (18:42 +0000)]
Make more use of VECTOR_CST_ENCODED_ELT
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.
From-SVN: r255480
Richard Sandiford [Thu, 7 Dec 2017 18:42:14 +0000 (18:42 +0000)]
Make build_vector static
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.
From-SVN: r255479
Richard Sandiford [Thu, 7 Dec 2017 18:41:59 +0000 (18:41 +0000)]
Make gimple_build_vector take a tree_vector_builder
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.
From-SVN: r255478
Richard Sandiford [Thu, 7 Dec 2017 18:41:35 +0000 (18:41 +0000)]
Use tree_vector_builder::new_binary_operation for folding
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.
From-SVN: r255477
Richard Sandiford [Thu, 7 Dec 2017 18:41:13 +0000 (18:41 +0000)]
Use tree_vector_builder::new_unary_operation for folding
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.
From-SVN: r255476
Richard Sandiford [Thu, 7 Dec 2017 18:40:50 +0000 (18:40 +0000)]
Use tree_vector_builder instead of build_vector
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.
From-SVN: r255475
Richard Sandiford [Thu, 7 Dec 2017 18:40:28 +0000 (18:40 +0000)]
New VECTOR_CST layout
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.
From-SVN: r255474
Richard Sandiford [Thu, 7 Dec 2017 18:40:06 +0000 (18:40 +0000)]
Add underscores to local vars in selftest macros
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.
From-SVN: r255473
Bin Cheng [Thu, 7 Dec 2017 18:03:53 +0000 (18:03 +0000)]
re PR tree-optimization/81303 (410.bwaves regression caused by r249919)
PR tree-optimization/81303
* 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.
Co-Authored-By: Richard Biener <rguenther@suse.de>
From-SVN: r255472
Vladimir Makarov [Thu, 7 Dec 2017 17:50:54 +0000 (17:50 +0000)]
re PR target/83252 (Wrong code with "-march=skylake-avx512 -O3")
2017-12-07 Vladimir Makarov <vmakarov@redhat.com>
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.
From-SVN: r255471
Jakub Jelinek [Thu, 7 Dec 2017 17:06:08 +0000 (18:06 +0100)]
re PR middle-end/83164 (internal compiler error: verify_gimple failed)
PR middle-end/83164
* 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.
From-SVN: r255470
Martin Sebor [Thu, 7 Dec 2017 16:32:03 +0000 (16:32 +0000)]
PR c/81544 - attribute noreturn and warn_unused_result on the same function accepted
PR c/81544 - attribute noreturn and warn_unused_result on the same function 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.
From-SVN: r255469
Tamar Christina [Thu, 7 Dec 2017 14:54:22 +0000 (14:54 +0000)]
re PR target/82641 (Unable to enable crc32 for a certain function with target attribute on ARM (aarch32))
2017-12-07 Tamar Christina <tamar.christina@arm.com>
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.
From-SVN: r255468
Michael Matz [Thu, 7 Dec 2017 14:49:54 +0000 (14:49 +0000)]
Add unroll and jam pass
* 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.
From-SVN: r255467
Richard Biener [Thu, 7 Dec 2017 13:21:51 +0000 (13:21 +0000)]
re PR tree-optimization/83296 (missing -Wstringop-overflow due to missing range info for MAX_EXPR)
2017-12-07 Richard Biener <rguenther@suse.de>
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.
From-SVN: r255466
Segher Boessenkool [Thu, 7 Dec 2017 09:36:28 +0000 (10:36 +0100)]
rs6000: Initialise rs6000_cpu correctly (PR43871)
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.
From-SVN: r255464
Segher Boessenkool [Thu, 7 Dec 2017 09:35:10 +0000 (10:35 +0100)]
rs6000: Don't use rs6000_cpu_attr directly
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.
From-SVN: r255463
Segher Boessenkool [Thu, 7 Dec 2017 09:32:46 +0000 (10:32 +0100)]
rs6000: Split rs6000_cpu
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.
From-SVN: r255462
Julia Koval [Thu, 7 Dec 2017 06:28:55 +0000 (07:28 +0100)]
Enable VAES support [2/5]
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.
From-SVN: r255461
GCC Administrator [Thu, 7 Dec 2017 00:16:13 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r255460
Jeff Law [Wed, 6 Dec 2017 23:50:58 +0000 (16:50 -0700)]
re PR tree-optimization/69224 (-Warray-bounds false positive with -O3 and struct pointer parameter)
PR tree-optimization/69224
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.
From-SVN: r255457
Jakub Jelinek [Wed, 6 Dec 2017 22:48:39 +0000 (23:48 +0100)]
re PR c++/80259 (ICE deleting friend function)
PR c++/80259
* decl2.c (grokfield): Diagnose = delete redefinition of a friend.
* g++.dg/cpp0x/pr80259.C: New test.
From-SVN: r255456
Jason Merrill [Wed, 6 Dec 2017 22:31:47 +0000 (17:31 -0500)]
Correct argument to targetm.calls.promote_prototypes.
* call.c (convert_for_arg_passing): Pass NULL_TREE to
targetm.calls.promote_prototypes.
(type_passed_as): Likewise.
From-SVN: r255455
Jason Merrill [Wed, 6 Dec 2017 21:42:02 +0000 (16:42 -0500)]
PR c++/82115 - ICE with variable initialized with its own address.
* pt.c (value_dependent_expression_p): Add lval parameter. Don't
consider DECL_INITIAL if it's true.
From-SVN: r255454
David Malcolm [Wed, 6 Dec 2017 20:02:55 +0000 (20:02 +0000)]
C/C++: don't suggest implementation names as spelling fixes (PR c/83236)
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.
From-SVN: r255453
David Malcolm [Wed, 6 Dec 2017 19:56:11 +0000 (19:56 +0000)]
Move macro-spellchecking code from "gcc" to new files in c-family
The code for spellchecking macros really belongs in c-family, rather
than in gcc/spellcheck-tree.c, so this patch moves it there.
gcc/ChangeLog:
* Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o.
* spellcheck-tree.c (find_closest_macro_cpp_cb): Move to
c-family/c-spellcheck.cc.
(best_macro_match::best_macro_match): Likewise.
* spellcheck-tree.h
(struct edit_distance_traits<cpp_hashnode *>): Move to
c-family/c-spellcheck.h.
(class best_macro_match): Likewise.
gcc/c-family/ChangeLog:
* c-spellcheck.cc: New file, taken from macro-handling code in
spellcheck-tree.c.
* c-spellcheck.h: New file, taken from macro-handling code in
spellcheck-tree.h.
gcc/c/ChangeLog:
* c-decl.c: Include "c-family/c-spellcheck.h".
gcc/cp/ChangeLog:
* name-lookup.c: Include "c-family/c-spellcheck.h".
From-SVN: r255452
Jakub Jelinek [Wed, 6 Dec 2017 19:27:41 +0000 (20:27 +0100)]
re PR tree-optimization/83293 (ICE: in gsi_insert_seq_nodes_after, at gimple-iterator.c:278)
PR tree-optimization/83293
* gimple-ssa-strength-reduction.c (insert_initializers): Use
GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that
might insert into empty bb.
* g++.dg/torture/pr83293.C: New test.
From-SVN: r255451
Martin Sebor [Wed, 6 Dec 2017 19:22:55 +0000 (19:22 +0000)]
PR testsuite/83303 - FAIL: g++.dg/opt/new1.C on arm-none-eabi
PR testsuite/83303 - FAIL: g++.dg/opt/new1.C on arm-none-eabi
(extra -Walloc-size-larger-than warning
* g++.dg/opt/new1.C: Prune warning from test output.
From-SVN: r255450
Jakub Jelinek [Wed, 6 Dec 2017 19:22:06 +0000 (20:22 +0100)]
re PR sanitizer/81281 (UBSAN: false positive, dropped promotion to long type.)
PR sanitizer/81281
* match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate
simplify for plus with :c added, and pointer_plus without that.
((T)P - (T)(P + A) -> -(T) A): Likewise. If type is integral
with undefined overflow and the conversion is not widening,
perform negation in utype and only convert to type afterwards.
((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate
simplify for plus with :c added, and pointer_plus without that.
If type is integral with undefined overflow and the conversion is
not widening, perform minus in utype and only convert to type
afterwards. Move the last pointer_diff_expr simplify into the
two outermost ifs.
* gcc.c-torture/execute/pr81281.c: New test.
* gcc.dg/pr81281-1.c: New test.
* gcc.dg/pr81281-2.c: New test.
* g++.dg/ubsan/pr81281.C: New test.
* g++.dg/ubsan/pr81281-aux.cc: New test.
From-SVN: r255449
Martin Sebor [Wed, 6 Dec 2017 17:59:01 +0000 (17:59 +0000)]
PR tree-optimization/82646 - bogus -Wstringop-overflow with -D_FORTIFY_SOURCE=2 on strncpy with range to a member array
gcc/ChangeLog:
PR tree-optimization/82646
* builtins.c (maybe_emit_chk_warning): Use size as the bound for
strncpy, not maxlen.
gcc/testsuite/ChangeLog:
PR tree-optimization/82646
* gcc.dg/builtin-stringop-chk-1.c: Adjust.
* gcc.dg/builtin-stringop-chk-9.c: New test.
* g++.dg/ext/strncpy-chk1.C: Adjust.
From-SVN: r255448
Martin Sebor [Wed, 6 Dec 2017 17:51:21 +0000 (17:51 +0000)]
invoke.texi (-Wstringop-truncation): Mention attribute nonstring.
gcc/ChangeLog:
* doc/invoke.texi (-Wstringop-truncation): Mention attribute
nonstring.
From-SVN: r255447
Martin Sebor [Wed, 6 Dec 2017 17:47:45 +0000 (17:47 +0000)]
PR tree-optimization/83075 - Invalid strncpy optimization
gcc/ChangeLog:
PR tree-optimization/83075
* tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming
strncat/strncpy don't change length of source string.
gcc/testsuite/ChangeLog:
PR tree-optimization/83075
* gcc.dg/tree-ssa/strncat.c: New test.
* gcc.dg/tree-ssa/strncpy-2.c: Same.
From-SVN: r255446
Ian Lance Taylor [Wed, 6 Dec 2017 17:43:29 +0000 (17:43 +0000)]
libgo: remove -fplan9-extensions from CFLAGS
Remove -fplan9-extensions from the CFLAGS used for libgo (no
longer needed since the runtime was converted from C to Go).
Reviewed-on: https://go-review.googlesource.com/82177
From-SVN: r255445
Bin Cheng [Wed, 6 Dec 2017 16:43:43 +0000 (16:43 +0000)]
pr41305.C: Refine test option.
gcc/testsuite
* g++.dg/graphite/pr41305.C: Refine test option.
* gcc.dg/graphite/pr42205-1.c: Ditto.
* gcc.dg/graphite/pr42205-2.c: Ditto.
* gcc.dg/graphite/pr42211.c: Ditto.
* gcc.dg/graphite/pr46185.c: Ditto.
* gcc.dg/graphite/pr46966.c: Ditto.
* gcc.dg/graphite/pr59817-1.c: Ditto.
* gcc.dg/graphite/pr59817-2.c: Ditto.
* gcc.dg/graphite/pr60740.c: Ditto.
* gcc.dg/graphite/pr60785.c: Ditto.
* gcc.dg/graphite/pr68715-2.c: Ditto.
* gcc.dg/graphite/pr68715.c: Ditto.
* gcc.dg/graphite/pr70045.c: Ditto.
* gfortran.dg/graphite/pr14741.f90: Ditto.
* gfortran.dg/graphite/pr40982.f90: Ditto.
* gfortran.dg/graphite/pr42285.f90: Ditto.
* gfortran.dg/graphite/pr42334-1.f: Ditto.
* gfortran.dg/graphite/pr42334.f90: Ditto.
* gfortran.dg/graphite/pr43349.f: Ditto.
* gfortran.dg/graphite/pr59817.f: Ditto.
From-SVN: r255444
Charles Baylis [Wed, 6 Dec 2017 15:19:42 +0000 (15:19 +0000)]
[ARM] testsuite: force hardfp in addr-modes-float.c
gcc/testsuite/ChangeLog:
<date> Charles Baylis <charles.baylis@linaro.org>
* gcc.target/arm/addr-modes-float.c: Place dg-add-options after
dg-require-effective-target.
(ATTR): New define.
(POST_STORE): Pass ATTR as 2nd argument.
(POST_LOAD): Likewise.
(POST_STORE_VEC): Likewise.
* gcc.target/arm/addr-modes-int.c (ATTR): New define.
(PRE_STORE): Pass ATTR as 2nd argument.
(POST_STORE): Likewise.
(PRE_LOAD): Likewise.
(POST_LOAD): Likewise.
* gcc.target/arm/addr-modes.h: (PRE_STORE): New parameter.
(POST_STORE): Likewise.
(POST_STORE_VEC): Likewise.
(PRE_LOAD): Likewise.
(POST_LOAD): Likewise.
(POST_LOAD_VEC): Likewise.
From-SVN: r255443
Ian Lance Taylor [Wed, 6 Dec 2017 13:32:06 +0000 (13:32 +0000)]
compiler: handle set-and-use-temp in nilcheck code
Change the code in Unary_expression::do_get_backend that introduces
explicit nil checks for dereference operations to special case
set-and-use-temporary expressions. For this case it is better to
generate an explicit reference of the temp in the final conditional
(avoids introducing tree sharing).
Reviewed-on: https://go-review.googlesource.com/81915
From-SVN: r255442
Simon Wright [Wed, 6 Dec 2017 09:42:57 +0000 (09:42 +0000)]
re PR ada/66205 (gnatbind generates invalid code when finalization is enabled in restricted runtime)
PR ada/66205
* bindgen.adb (Gen_AdaFinal): If the restriction No_Task_Termination is
set, generate a null body.
From-SVN: r255441
Eric Botcazou [Wed, 6 Dec 2017 08:38:11 +0000 (08:38 +0000)]
Revert
2017-11-29 Martin Aberg <maberg@gaisler.com>
* config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
to prevent b2bst errata sequence.
(sqrtdf2_fix): Likewise.
From-SVN: r255439
Jakub Jelinek [Wed, 6 Dec 2017 08:16:44 +0000 (09:16 +0100)]
re PR tree-optimization/81945 (ICE in operator[], at vec.h:749)
PR tree-optimization/81945
* cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn.
* tree-cfg.c (move_sese_region_to_fn): If any of the loops moved
to dest_cfun has orig_loop_num set, either remap it to the new
loop number if the loop got moved too, or clear it.
* gcc.dg/graphite/pr81945.c: New test.
From-SVN: r255438
GCC Administrator [Wed, 6 Dec 2017 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r255437
Jakub Jelinek [Tue, 5 Dec 2017 21:00:15 +0000 (22:00 +0100)]
re PR c++/79228 ('i' suffix for __complex__ extension interferes with C++14 UDLs for std::complex)
PR c++/79228
* expr.c (interpret_float_suffix): Avoid memcmp.
(interpret_int_suffix): Likewise. Don't check for if.
From-SVN: r255434
Mike Stump [Tue, 5 Dec 2017 19:26:56 +0000 (19:26 +0000)]
Remove $tmpdir from -dumpbase, we should be in $tmpdir.
From-SVN: r255433
Matthew Gretton-Dann [Tue, 5 Dec 2017 19:16:52 +0000 (19:16 +0000)]
dump-noaddr.x: Generate dump files in tmpdir.
2017-12-05 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
* gcc.c-torture/unsorted/dump-noaddr.x: Generate dump files in
tmpdir.
From-SVN: r255432
Steve Ellcey [Tue, 5 Dec 2017 18:47:00 +0000 (18:47 +0000)]
thunderx2-t99.md (thunderx2t99_branch): Add trap to reservation.
2017-12-05 Steve Ellcey <sellcey@cavium.com>
* config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap
to reservation.
(thunderx2t99_nothing): New insn reservation.
(thunderx2t99_mrs): New insn reservation.
(thunderx2t99_multiple): New insn reservation.
(thunderx2t99_alu_basi): Add bfx to reservation.
(thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation.
From-SVN: r255431
Jason Merrill [Tue, 5 Dec 2017 18:05:23 +0000 (13:05 -0500)]
PR c++/82331 - ICE with variadic partial specialization of auto
* pt.c (unify) [TEMPLATE_PARM_INDEX]: Set processing_template_decl
around call to tsubst.
From-SVN: r255430
Nathan Sidwell [Tue, 5 Dec 2017 17:29:58 +0000 (17:29 +0000)]
[PR C++/83287] Mark lookup for keeping
https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00242.html
PR c++/83287
* tree.c (build_min): Check CAST_EXPR arg for OVERLOADs.
* g++.dg/lookup/pr83287.C: New.
From-SVN: r255429
Ramana Radhakrishnan [Tue, 5 Dec 2017 16:32:55 +0000 (16:32 +0000)]
[Patch ARM] Fix probe_stack constraint.
The probe_stack pattern uses r0 as a fixed register. This can cause issues if we have auto-increment instructions coming out that have r0 as the base register.
Tested with a bootstrap and regression run. richi reports that the original issue was fixed in the run. I did consider whether probe_stack_range was affected but it all comes back to probe_stack pattern so I think we are ok.
I don't have a testcase that seems to provoke this but it seems to be default on most distributions so I'm expecting the testcoverage to come from there.
Applied.
Ramana
PR target/82248
* config/arm/arm.md (probe_stack) : Use the 'o' constraint.
From-SVN: r255428
Jakub Jelinek [Tue, 5 Dec 2017 16:17:09 +0000 (17:17 +0100)]
re PR testsuite/83289 (i386/sse2-init-v2di-2.c, i386/avx256-unaligned-load-1.c, i386/avx256-unaligned-store-*.c fails)
PR testsuite/83289
* gcc.target/i386/avx256-unaligned-load-1.c: Adjust for -dp
alternative numbers being 0 based instead of former 1 based.
* gcc.target/i386/avx256-unaligned-store-1.c: Likewise.
* gcc.target/i386/avx256-unaligned-store-2.c: Likewise.
* gcc.target/i386/avx256-unaligned-store-3.c: Likewise.
* gcc.target/i386/avx256-unaligned-store-4.c: Likewise.
* gcc.target/i386/sse2-init-v2di-2.c: Likewise.
From-SVN: r255427
Bin Cheng [Tue, 5 Dec 2017 15:42:58 +0000 (15:42 +0000)]
tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from tree-ssa-pre.c::remove_dead_inserted_code.
* tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from
tree-ssa-pre.c::remove_dead_inserted_code.
* tree-ssa-dce.h: New file.
* tree-ssa-pre.c (tree-ssa-dce.h): Include new header file.
(remove_dead_inserted_code): Move and rename to function
tree-ssa-dce.c::simple_dce_from_worklist.
(pass_pre::execute): Update use.
From-SVN: r255426
Jason Merrill [Tue, 5 Dec 2017 15:23:26 +0000 (10:23 -0500)]
Correct noexcept mismatch in declarations.
2017-12-05 Jason Merrill <jason@redhat.com>
Jonathan Wakely <jwakely@redhat.com>
* include/bits/fs_fwd.h (copy, copy_file): Remove noexcept.
(permissions): Add noexcept.
* include/bits/fs_ops.h (permissions): Add noexcept.
* libsupc++/eh_throw.cc (__cxa_init_primary_exception): Add
_GLIBCXX_NOTHROW.
Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>
From-SVN: r255425
Richard Biener [Tue, 5 Dec 2017 15:10:23 +0000 (15:10 +0000)]
re PR tree-optimization/83277 ([graphite] Wrong code w/ -O2 -floop-nest-optimize)
2017-12-05 Richard Biener <rguenther@suse.de>
PR tree-optimization/83277
* graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure
to code-gen liveout vars.
* gcc.dg/graphite/pr83277.c: New testcase.
From-SVN: r255424
Richard Sandiford [Tue, 5 Dec 2017 14:40:37 +0000 (14:40 +0000)]
[AArch64] Fix some define_insn_and_split conditions
The split conditions for aarch64_simd_bsldi_internal and
aarch64_simd_bsldi_alt were:
"&& GP_REGNUM_P (REGNO (operands[0]))"
But since they (deliberately) can be split before reload, the operand
matched by register_operand can be a SUBREG rather than a REG. This
triggered a boostrap failure building libgcc with rtl checking enabled.
While checking other define_insn_and_splits for the same thing,
I noticed a couple of SIMD ones were missing the leading "&&",
meaning that they would trigger even without TARGET_SIMD. That
shouldn't matter in practice, since combine should never end up
generating matching rtl, but...
2017-12-05 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal)
(aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P.
(aarch64_cm<optab>di, aarch64_cmtstdi): Add leading "&&" to
split condition.
From-SVN: r255423
Max Filippov [Tue, 5 Dec 2017 14:17:35 +0000 (14:17 +0000)]
gcc: xtensa: enable address sanitizer
gcc/
2017-12-05 Max Filippov <jcmvbkbc@gmail.com>
* config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New
function.
(TARGET_ASAN_SHADOW_OFFSET): New macro definition.
* config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if
ASAN is enabled.
From-SVN: r255420
Jakub Jelinek [Tue, 5 Dec 2017 13:34:41 +0000 (14:34 +0100)]
re PR testsuite/83281 (libgomp.oacc-c-c++-common/reduction-cplx-flt.c and reduction-cplx-dbl.c fail starting with r255335)
PR testsuite/83281
* testsuite/libgomp.oacc-c-c++-common/reduction-cplx-flt.c (main): Use
j suffix instead of i.
* testsuite/libgomp.oacc-c-c++-common/reduction-cplx-dbl.c (main):
Likewise.
From-SVN: r255418
Jakub Jelinek [Tue, 5 Dec 2017 13:33:52 +0000 (14:33 +0100)]
re PR tree-optimization/83283 (Casting from boolean to unsigned char to enum returns incorrect results)
PR tree-optimization/83283
* g++.dg/torture/pr83283.C: New test.
From-SVN: r255417
Richard Biener [Tue, 5 Dec 2017 13:19:45 +0000 (13:19 +0000)]
timevar.def (TV_TREE_RECIP, [...]): Add.
2017-12-05 Richard Biener <rguenther@suse.de>
* timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL):
Add.
* tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP.
(pass_data_cse_sincos): Use TV_TREE_SINCOS.
(pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL.
From-SVN: r255415
Pierre-Marie de Rodat [Tue, 5 Dec 2017 12:45:35 +0000 (12:45 +0000)]
sem_util.adb (Contains_Refined_State): Remove.
gcc/ada/
2017-12-05 Piotr Trojanek <trojanek@adacore.com>
* sem_util.adb (Contains_Refined_State): Remove.
2017-12-05 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Analyze_Aspect_Specifications, case Predicate): A
predicate cannot apply to a formal type.
2017-12-05 Arnaud Charlet <charlet@adacore.com>
* exp_unst.ads: Fix typos.
2017-12-05 Jerome Lambourg <lambourg@adacore.com>
* libgnarl/s-taprop__qnx.adb: Better detect priority ceiling bug in
QNX. At startup, the first mutex created has a non-zero ceiling
priority whatever its actual policy. This makes some tests fail
(
c940013 for example).
2017-12-05 Bob Duff <duff@adacore.com>
* exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Call
Expand_Cleanup_Actions for N_Extended_Return_Statement.
* exp_ch7.adb (Expand_Cleanup_Actions): Handle
N_Extended_Return_Statement by transforming the statements into a
block, and (indirectly) calling Expand_Cleanup_Actions on the block.
It's too hard for Expand_Cleanup_Actions to operate directly on the
N_Extended_Return_Statement, because it has a different structure than
the other node kinds that Expand_Cleanup_Actions.
* exp_util.adb (Requires_Cleanup_Actions): Add support for
N_Extended_Return_Statement. Change "when others => return False;" to
"when others => raise ...;" so it's clear what nodes this function
handles. Use named notation where appropriate.
* exp_util.ads: Mark incorrect comment with ???.
2017-12-05 Javier Miranda <miranda@adacore.com>
* exp_ch9.adb (Install_Private_Data_Declarations): Add missing
Debug_Info_Needed decoration of internally generated discriminal
renaming declaration.
2017-12-05 Arnaud Charlet <charlet@adacore.com>
* exp_unst.adb (Unnest_Subprogram): Add handling of 'Access on
nested subprograms.
2017-12-05 Sergey Rybin <rybin@adacore.com>
* doc/gnat_ugn/gnat_utility_programs.rst: Add description of '--ignore'
option for gnatmetric, gnatpp, gnat2xml, and gnattest.
2017-12-05 Piotr Trojanek <trojanek@adacore.com>
* sem_util.adb (Contains_Refined_State): Remove.
2017-12-05 Piotr Trojanek <trojanek@adacore.com>
* rtsfind.ads: Add new enumeration literals: RE_Clock_Time (for
Ada.Real_Time.Clock_Time) and RO_CA_Clock_Time (for
Ada.Calendar.Clock_Time).
2017-12-05 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Is_Private_Overriding): If the candidate private
subprogram is overloaded, scan the list of homonyms in the same
scope, to find the inherited operation that may be overridden
by the candidate.
* exp_ch11.adb, exp_ch7.adb: Minor reformatting.
2017-12-05 Bob Duff <duff@adacore.com>
* exp_ch6.adb (Expand_N_Extended_Return_Statement): If the
Init_Assignment is rewritten, we need to set Assignment_OK on the new
node. Otherwise, we will get spurious errors when initializing via
assignment statement.
gcc/testsuite/
2017-12-05 Ed Schonberg <schonberg@adacore.com>
* gnat.dg/private_overriding.adb: New testcase.
From-SVN: r255414
Pierre-Marie de Rodat [Tue, 5 Dec 2017 12:22:46 +0000 (12:22 +0000)]
[multiple changes]
2017-12-05 Hristian Kirtchev <kirtchev@adacore.com>
* sem_elab.adb: Update the terminology and switch sections.
(Check_SPARK_Model_In_Effect): New routine.
(Check_SPARK_Scenario): Verify the model in effect for SPARK.
(Process_Conditional_ABE_Call_SPARK): Verify the model in effect for
SPARK.
(Process_Conditional_ABE_Instantiation_SPARK): Verify the model in
effect for SPARK.
(Process_Conditional_ABE_Variable_Assignment_SPARK): Verify the model
in effect for SPARK.
2017-12-05 Nicolas Setton <setton@adacore.com>
* terminals.c (__gnat_setup_child_communication): As documented,
__gnat_setup_child_communication should not terminate - it is intended
to be used as the child process of a call to fork(). However, execvp
might actually return in some cases, for instance when attempting to
run a 32-bit binary on a 64-bit Linux distribution when the
compatibility packages are not installed. In these cases, exit the
program to conform to the documentation.
2017-12-05 Olivier Hainque <hainque@adacore.com>
* libgnat/s-tsmona.adb: Fix for oversight in the tsmona interface
update.
2017-12-05 Gary Dismukes <dismukes@adacore.com>
* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Minor typo fix
and reformatting.
* gnat_ugn.texi: Regenerate.
2017-12-05 Olivier Hainque <hainque@adacore.com>
* sem_util.adb (Set_Convention): Always clear Can_Use_Internal_Rep
on access to subprogram types with foreign convention.
2017-12-05 Yannick Moy <moy@adacore.com>
* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix User's
Guide description of default settings of warnings.
From-SVN: r255413
Pierre-Marie de Rodat [Tue, 5 Dec 2017 12:12:22 +0000 (12:12 +0000)]
[multiple changes]
2017-12-05 Olivier Hainque <hainque@adacore.com>
* s-dwalin.adb (Read_And_Execute_Isn): Adjust test checking for the end
of section. Add comments explaining the rationale of the computation.
2017-12-05 Bob Duff <duff@adacore.com>
* exp_ch11.adb: Minor refactoring.
2017-12-05 Hristian Kirtchev <kirtchev@adacore.com>
* debug.adb: Add debug switches d_a, d_e, and d_p, along with
documentation.
(Set_Underscored_Debug_Flag): New routine.
* debug.ads: Add the flags for all underscore switches.
(Set_Underscored_Debug_Flag): New routine.
* einfo.adb: Flag303 is now Suppress_Elaboration_Warnings.
(Suppress_Elaboration_Warnings): New routine.
(Set_Suppress_Elaboration_Warnings): New routine.
(Write_Entity_Flags): Add output for Suppress_Elaboration_Warnings.
* einfo.ads: Add new flag Suppress_Elaboration_Warnings.
(Suppress_Elaboration_Warnings): New routine along with pragma Inline.
(Set_Suppress_Elaboration_Warnings): New routine along with pragma
Inline.
* exp_ch3.adb (Build_Init_Procedure): Restore the behavior of the
legacy elaboration model.
(Default_Initialize_Object): Restore the behavior of the legacy
elaboration model.
* exp_ch9.adb: Add with and use clause for Sem_Elab.
(Build_Task_Activation_Call): Restore the behavior of the legacy
elaboration model.
* frontend.adb (Frontend): Restore the behavior of the legacy
elaboration model.
* opt.ads: Add new flags Legacy_Elaboration_Checks and
Relaxed_Elaboration_Checks, along with documentation.
* sem_attr.adb (Analyze_Access_Attribute): Restore the behavior of the
legacy elaboration model.
* sem_ch5.adb (Analyze_Assignment): Restore the behavior of the legacy
elaboration model.
* sem_ch7.adb (Analyze_Package_Declaration): Restore the behavior of
the legacy elaboration model.
* sem_ch8.adb (Attribute_Renaming): Restore the behavior of the legacy
elaboration model.
* sem_ch12.adb (Analyze_Instance_And_Renamings): Restore the behavior
of the legacy elaboration model.
(Analyze_Package_Instantiation): Restore the behavior of the legacy
elaboration model.
(Analyze_Subprogram_Instantiation): Restore the behavior of the legacy
elaboration model.
* sem_elab.adb: Update the documentation of the Processing phase.
Update the documentation on elaboration-related compilation
switches. Update the documentation on adding a new target. Add
Processing_Attributes which represent the state of the Processing
phase. Resurrect the previous elaboration model as "legacy elaboration
model".
(Build_Call_Marker): This routine does not function when the legacy
elaboration model is in effect. Do not consider entry calls and requeue
statements when debug flag d_e is in effect. Do not consider calls to
subprograms which verify the runtime semantics of certain assertion
pragmas when debug flag d_p is in effect.
(Build_Variable_Reference_Marker): This routine does not function when
the legacy elaboration model is in effect.
(Check_Elaboration_Scenarios): This routine does not function when the
legacy elaboration model is in effect.
(Ensure_Prior_Elaboration): The various flags have now been replaced
with a state. Do not generate implicit Elaborate[_All] pragmas when
their creation has been suppressed.
(Ensure_Prior_Elaboration_Static): The with clause is marked based on
the requested pragma, not on the nature of the scenario.
(In_External_Context): Removed.
(Is_Assertion_Pragma_Target): New routine.
(Is_Potential_Scenario): Stop the traversal of a task body when
reaching an accept or select statement, and debug switch d_a is in
effect.
(Kill_Elaboration_Scenario): This routine does not function when the
legacy elaboration model is in effect.
(Process_Activation_Generic): The various flags have now been replaced
with a state.
(Process_Conditional_ABE): The various flags have now been replaced
with a state.
(Process_Conditional_ABE_Access): The various flags have now been
replaced with a state.
(Process_Conditional_ABE_Activation_Impl): The various flags have now
been replaced with a state. Do not process an activation call which
activates a task whose type is defined in an external instance, and
debug switch dL is in effect. Suppress the generation of implicit
Elaborate[_All] pragmas once a conditional ABE check has been
installed.
(Process_Conditional_ABE_Call): The various flags have now been
replaced with a state. Do not process a call which invokes a subprogram
defined in an external instance, and debug switch dL is in effect.
(Process_Conditional_ABE_Call_Ada): The various flags have now been
replaced with a state. Suppress the generation of implicit
Elaborate[_All] pragmas once a conditional ABE check has been
installed.
(Process_Conditional_ABE_Call_SPARK): The various flags have now been
replaced with a state.
(Process_Conditional_ABE_Instantiation): The various flags have now
been replaced with a state.
(Process_Conditional_ABE_Instantiation_Ada): The various flags have now
been replaced with a state. Suppress the generation of implicit
Elaborate[_All] pragmas once a conditional ABE check has been
installed.
(Process_Conditional_ABE_Instantiation_SPARK): The various flags have
now been replaced with a state.
(Process_Guaranteed_ABE_Activation_Impl): The various flags have now
been replaced with a state.
(Process_Single_Activation): The various flags have now been replaced
with a state.
(Record_Elaboration_Scenario): This routine does not function when the
legacy elaboration model is in effect.
(Traverse_Body): The various flags have now been replaced with a state.
* sem_elab.ads: Resurrect the pre-18.x elaboration model as "legacy
elaboration model".
* sem_prag.adb (Analyze_Pragma): Restore the behavior of the legacy
elaboration model.
* sem_res.adb (Resolve_Call): Restore the behavior of the legacy
elaboration model.
(Resolve_Entity_Name): Restore the behavior of the legacy elaboration
model.
* sem_util.adb (Mark_Elaboration_Attributes): This routine does not
function when the legacy elaboration model is in effect.
* sinfo.adb (Is_Known_Guaranteed_ABE): Update the assertion check.
(No_Elaboration_Check): New routine.
(Set_Is_Known_Guaranteed_ABE): Update the assertion check.
(Set_No_Elaboration_Check): New routine.
* sinfo.ads: Update the documentation of flag Is_Known_Guaranteed_ABE
along with occurrences in nodes. Add new flag No_Elaboration_Check
along with occurrences in nodes.
* switch-c.adb (Scan_Front_End_Switches): Add processing for debug
switches with underscores. Add processing for switches -gnatH and
-gnatJ.
* usage.adb (Usage): Add output for switches -gnatH and -gnatJ.
* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the
documentation to include the legacy and relaxed elaboration models.
* gnat_ugn.texi: Regenerate.
2017-12-05 Arnaud Charlet <charlet@adacore.com>
* doc/gnat_ugn/platform_specific_information.rst: Minor edit.
Improve doc on required packages for linux 32bits.
2017-12-05 Doug Rupp <rupp@adacore.com>
* tracebak.c (ppc64-vx7): USE_GCC_UNWINDER for 64bit.
2017-12-05 Javier Miranda <miranda@adacore.com>
* checks.adb (Generate_Range_Check): Force evaluation of the node in
more cases. This patch was written to improve the code generated by
the CCG compiler but it is enabled for all targets since double
evaluation is always a potential source of inefficiency.
2017-12-05 Gary Dismukes <dismukes@adacore.com>
* doc/gnat_ugn/gnat_utility_programs.rst: Remove reference to obsolete
-fdump-xref switch.
From-SVN: r255412
Pierre-Marie de Rodat [Tue, 5 Dec 2017 11:58:13 +0000 (11:58 +0000)]
[multiple changes]
2017-12-05 Eric Botcazou <ebotcazou@adacore.com>
* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Use the SLOC of the
iteration scheme throughout, except for the new loop statement(s).
2017-12-05 Ed Schonberg <schonberg@adacore.com>
* exp_aggr.adb (Gen_Assign): Do not analyze the expressionn of the
assignment if it is part of an Iterated_Component_Association: the
analysis needs to take place once the loop structure is analyzed and
the loop parameter made visible, because references to it typically
appear in the corresponding expression. This is necessary if the
expression is an aggregate, because previous pre-analysis of the
expression does not handle nested aggregates properly.
2017-12-05 Bob Duff <duff@adacore.com>
* sem_res.adb (Resolve_Allocator): Avoid coextension processing for an
allocator that is the expansion of a build-in-place function call.
2017-12-05 Olivier Hainque <hainque@adacore.com>
libgnat/
* s-trasym__dwarf.adb (spec of Module_Name.Get): Instead of
possibly adjusting the lookup address by a load address, expect
a extra argument through which the load address can be conveyed
separately.
(Multi_Module_Symbolic_Traceback): Adjust accordingly. Pass the
retrieved load address to Init_Module.
* s-tsmona__linux.adb (Get): Honor the new interface.
* s-tsmona__mingw.adb (Get): Likewise.
* s-dwalin.ads: Adjust comments to be explicit about which
addresses are from module info and which are run-time addresses,
offsetted by the module load address.
* s-dwalin.adb (Set_Load_Address): Simply set C.Load_Slide.
Do not alter the module Low and High (relative) addresses.
(Is_Inside): Improve documentation regarding the kinds of addresses
at hand and correct the test.
(Symbolic_Traceback): Use separate variables with explicit names
for the address in traceback (run-time value) and the address to
lookup within the shared object (module-relative). Adjust the
computation of address passed to Symbolic_Address for symbolization.
From-SVN: r255411
Pierre-Marie de Rodat [Tue, 5 Dec 2017 11:46:16 +0000 (11:46 +0000)]
[multiple changes]
2017-12-05 Arnaud Charlet <charlet@adacore.com>
* opt.ads (Expand_Nonbinary_Modular_Ops): New flag.
* exp_ch4.adb (Expand_Nonbinary_Modular_Op): Use
Expand_Nonbinary_Modular_Ops instead of Modify_Tree_For_C, so that
other back-ends can also benefit from the front-end expansion. Remove
test for Modify_Tree_For_C in all callers to better share code.
* gnat1drv.adb (Adjust_Global_Switches): Set
Expand_Nonbinary_Modular_Ops when generating C code.
2017-12-05 Ed Schonberg <schonberg@adacore.com>
* exp_ch5.adb (Expand_Formal_Container_Loop): Ensure that the loop
parameter becomes invisible after analyzing the loop, which has been
rewritten as a while-loop.
2017-12-05 Doug Rupp <rupp@adacore.com>
* vxaddr2line.adb: Revise and enhance for new ports, remove dead ports,
and update for 64bit ports.
From-SVN: r255410
Pierre-Marie de Rodat [Tue, 5 Dec 2017 11:38:00 +0000 (11:38 +0000)]
[multiple changes]
2017-12-05 Bob Duff <duff@adacore.com>
* exp_ch6.adb (Build_In_Place_Formal): Search for the formal by suffix
instead of the full name.
* sem_ch6.adb (Create_Extra_Formals): Make sure there are extra formals
in the case of an instance of a generic.
2017-12-05 Arnaud Charlet <charlet@adacore.com>
(Adjust_Global_Switches): Create an alias GNAT_Annotate to map to
pragma Annotate.
From-SVN: r255409
Sebastian Huber [Tue, 5 Dec 2017 10:46:42 +0000 (10:46 +0000)]
RTEMS/Ada: Define EH_MECHANISM
Without this definition I got the following error:
<...>/xgcc <...> -c -g -O2 -W -Wall -gnatpg -nostdinc -g -fno-inline \
-fno-toplevel-reorder -O1 a-except.adb -o a-except.o
a-exexpr.adb:38:06: "System.Exceptions.Machine" is not a predefined library unit
a-exexpr.adb:38:06: "Ada.Exceptions (body)" depends on "Ada.Exceptions.Exception_Propagation (body)"
a-exexpr.adb:38:06: "Ada.Exceptions.Exception_Propagation (body)" depends on "System.Exceptions.Machine (spec)"
../gcc-interface/Makefile:2661: recipe for target 'a-except.o' failed
gcc/ada
* gcc-interface/Makefile.in (RTEMS): Define EH_MECHANISM.
From-SVN: r255408
Rainer Orth [Tue, 5 Dec 2017 10:03:56 +0000 (10:03 +0000)]
Avoid -Werror=format-overflow error in dbxout.c (dbxout_block) on 64-bit Solaris/SPARC
* dbxout.c (dbxout_block): Grow buf to 30 bytes.
From-SVN: r255406
Martin Liska [Tue, 5 Dec 2017 09:23:25 +0000 (10:23 +0100)]
invoke.texi: Document the options.
gcc/
* doc/invoke.texi: Document the options.
* flag-types.h (enum sanitize_code): Add
SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
* ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling
of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
* opts.c: Define new sanitizer options.
* sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise.
(BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise.
gcc/c/
* c-typeck.c (pointer_diff): Add new argument and instrument
pointer subtraction.
(build_binary_op): Similar for pointer comparison.
gcc/cp/
* typeck.c (pointer_diff): Add new argument and instrument
pointer subtraction.
(cp_build_binary_op): Create compound expression if doing an
instrumentation.
gcc/testsuite/
* c-c++-common/asan/pointer-compare-1.c: New test.
* c-c++-common/asan/pointer-compare-2.c: New test.
* c-c++-common/asan/pointer-subtract-1.c: New test.
* c-c++-common/asan/pointer-subtract-2.c: New test.
* c-c++-common/asan/pointer-subtract-3.c: New test.
* c-c++-common/asan/pointer-subtract-4.c: New test.
libsanitizer/
* asan/asan_descriptions.cc: Cherry-pick upstream r319668.
* asan/asan_descriptions.h: Likewise.
* asan/asan_report.cc: Likewise.
* asan/asan_thread.cc: Likewise.
* asan/asan_thread.h: Likewise.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r255404
Jakub Jelinek [Tue, 5 Dec 2017 09:17:32 +0000 (10:17 +0100)]
cp-gimplify.c (cp_maybe_instrument_return): Don't add __builtin_unreachable if -O0 or if -fsanitize=unreachable.
* cp-gimplify.c (cp_maybe_instrument_return): Don't add
__builtin_unreachable if -O0 or if -fsanitize=unreachable.
* g++.dg/missing-return.C: Add -O to dg-options.
From-SVN: r255403
Julia Koval [Tue, 5 Dec 2017 07:11:58 +0000 (08:11 +0100)]
Enable VNNI support [1/5]
gcc/
* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET,
OPTION_MASK_ISA_AVX512VNNI_UNSET): New.
(ix86_handle_option): Handle -mavx512vnni.
* config/i386/cpuid.h (bit_AVX512VNNI): New bit.
* config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
* config/i386/i386-c (__AVX512VNNI__): New.
* config/i386/i386.c (ix86_target_string): Handle new option.
(ix86_valid_target_attribute_inner_p): Handle new option.
* config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New.
* config/i386/i386.opt (mavx512vnni): New option.
From-SVN: r255401
Ian Lance Taylor [Tue, 5 Dec 2017 02:03:19 +0000 (02:03 +0000)]
compiler: no nil check needed for closure var dereferences
Add the "no nil check needed" annotation to the dereference operations
created in Parse::enclosing_var_reference (this is safe since the
closure object is under control of the compiler, and pointer fields in
it will always be non-nil).
Reviewed-on: https://go-review.googlesource.com/81795
From-SVN: r255400
Steve Ellcey [Tue, 5 Dec 2017 00:49:09 +0000 (00:49 +0000)]
Makefile.am (ARCH_AARCH64_LINUX): Add IFUNC_OPTIONS and libatomic_la_LIBADD.
2017-12-04 Steve Ellcey <sellcey@cavium.com>
* Makefile.am (ARCH_AARCH64_LINUX): Add IFUNC_OPTIONS and
libatomic_la_LIBADD.
* config/linux/aarch64/host-config.h: New file.
* configure.ac (IFUNC_RESOLVER_ARGS): Define.
(ARCH_AARCH64_LINUX): New conditional for IFUNC builds.
* configure.tgt (aarch64): Set ARCH and try_ifunc.
(aarch64*-*-linux*) Update config_path.
(aarch64*-*-linux*) Set IFUNC_RESOLVER_ARGS.
* libatomic_i.h (GEN_SELECTOR): Add IFUNC_RESOLVER_ARGS argument.
* Makefile.in: Regenerate.
* auto-config.h.in: Regenerate.
* configure: Regenerate.
From-SVN: r255399
GCC Administrator [Tue, 5 Dec 2017 00:16:14 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r255398
Jan Hubicka [Mon, 4 Dec 2017 23:59:11 +0000 (00:59 +0100)]
re PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)
PR target/81616
* athlon.md: Disable for generic.
* haswell.md: Enable for generic.
* i386.c (ix86_sched_init_global): Add core hooks for generic.
* x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic
to 4.
(ix86_adjust_cost): Move generic to haswell path.
From-SVN: r255395
Eric Botcazou [Mon, 4 Dec 2017 23:13:56 +0000 (23:13 +0000)]
sparc.c (sparc_do_work_around_errata): Use mem_ref instead of MEM_P in a couple more places.
* config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref
instead of MEM_P in a couple more places. Fix formatting issues.
From-SVN: r255393
Jonathan Wakely [Mon, 4 Dec 2017 23:08:22 +0000 (23:08 +0000)]
Fix warnings in <bits/regex_compiler.tcc>
* include/bits/regex_compiler.tcc: Use C-style comment to work around
PR preprocessor/61638.
(__INSERT_REGEX_MATCHER): Replace GNU extension with __VA_ARGS__.
From-SVN: r255392