Richard Sandiford [Mon, 5 Feb 2018 10:48:49 +0000 (10:48 +0000)]
[AArch64] Remove SVE XFAILs
These tests started passing after r257293, which had the side-effect
of renumbering the SSA names and leaving the COND_EXPRs in their
natural order.
This does show a deeper underlying issue that code generation is too
sensitive to internal things like SSA_NAME versions, but it no longer
affects these particular tests (for now).
2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
gcc/testsuite/
* gcc.target/aarch64/sve/vcond_4.c: Remove XFAILs.
* gcc.target/aarch64/sve/vcond_5.c: Likewise.
From-SVN: r257386
Richard Sandiford [Mon, 5 Feb 2018 10:47:56 +0000 (10:47 +0000)]
Adjust ira_init_register_move_cost comment
2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* ira.c (ira_init_register_move_cost): Adjust comment.
From-SVN: r257385
Martin Liska [Mon, 5 Feb 2018 09:59:16 +0000 (10:59 +0100)]
Fix GCOV documentation (PR gcov-profile/84137).
2018-02-05 Martin Liska <mliska@suse.cz>
PR gcov-profile/84137
* doc/gcov.texi: Fix typo in documentation.
From-SVN: r257384
Martin Liska [Mon, 5 Feb 2018 09:19:18 +0000 (10:19 +0100)]
Document --dynamic-list-data option for --coverage usage.
2018-02-05 Martin Liska <mliska@suse.cz>
PR gcov-profile/83879
* doc/gcov.texi: Document necessity of --dynamic-list-data when
using dlopen functionality.
From-SVN: r257383
Olga Makhotina [Mon, 5 Feb 2018 07:08:24 +0000 (07:08 +0000)]
Add missing mask[z]_range[_round]_s[d,s] intrinsics
gcc/
* config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
_mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
_mm_maskz_range_ss, _mm_mask_range_round_ss,
_mm_maskz_range_round_ss): New intrinsics.
(__builtin_ia32_rangesd128_round)
(__builtin_ia32_rangess128_round): Remove.
(__builtin_ia32_rangesd128_mask_round,
__builtin_ia32_rangess128_mask_round): New builtins.
* config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
__builtin_ia32_rangess128_round): Remove.
(__builtin_ia32_rangesd128_mask_round,
__builtin_ia32_rangess128_mask_round): New builtins.
* config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
(ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
"<round_saeonly_constraint>")): Changed to ...
((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
"<round_saeonly_scalar_constraint>")): ... this.
("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
%0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
%1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
%2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
gcc/testsuite
* gcc.target/i386/avx512dq-vrangesd-1.c (_mm_mask_range_sd,
_mm_maskz_range_sd, _mm_mask_range_round_sd,
_mm_maskz_range_round_sd): Test new intrinsics.
* gcc.target/i386/avx512dq-vrangesd-2.c (_mm_range_sd,
_mm_mask_range_sd, _mm_maskz_range_sd, _mm_range_round_sd,
_mm_mask_range_round_sd, _mm_maskz_range_round_sd): Test new intrinsics.
* gcc.target/i386/avx512dq-vrangess-1.c (_mm_mask_range_ss,
_mm_maskz_range_ss, _mm_mask_range_round_ss,
_mm_maskz_range_round_ss): Test new intrinsics.
* gcc.target/i386/avx512dq-vrangess-2.c (_mm_range_ss,
_mm_mask_range_ss, _mm_maskz_range_ss, _mm_range_round_ss,
_mm_mask_range_round_ss, _mm_maskz_range_round_ss): Test new intrinsics.
* gcc.target/i386/avx-1.c (__builtin_ia32_rangesd128_round,
__builtin_ia32_rangess128_round): Remove builtins.
(__builtin_ia32_rangesd128_mask_round,
__builtin_ia32_rangess128_mask_round): Test new builtins.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
From-SVN: r257382
Ian Lance Taylor [Mon, 5 Feb 2018 01:57:42 +0000 (01:57 +0000)]
compiler: update iota handling, fix using iota in array length
CL 71750 changed the definition of how iota works. This patch updates
gccgo for the new definition.
We've been mishandling iota appearing in a type that appears in a
const expression, as in `c = len([iota]int{})`. Correct that by copying
type expressions when we copy an expression. For simplicity only copy
when it can change the size of a type, as that is the only case where
iota in a type can affect the value of a constant (I think). This is
still a bunch of changes, but almost all boilerplate.
Fixes golang/go#22341
Reviewed-on: https://go-review.googlesource.com/91475
From-SVN: r257379
Ian Lance Taylor [Mon, 5 Feb 2018 01:53:23 +0000 (01:53 +0000)]
compiler: permit empty statements after fallthrough
The language spec permits empty statements after a fallthrough
statement, so implement that. Also give a better error message when a
fallthrough statement is in the wrong place. The test case for this
is in the master repository, test/fixedbugs/issue14540.go, just not
yet in the gccgo repository.
Fixes golang/go#14538
Reviewed-on: https://go-review.googlesource.com/91855
From-SVN: r257378
Ian Lance Taylor [Mon, 5 Feb 2018 01:50:22 +0000 (01:50 +0000)]
compiler: in range, evaluate array if it has receives or calls
The last change was incomplete, in that it did not evaluate the array
argument in some cases where it had to be evaluated. This reuses the
existing code for checking whether len/cap is constant.
Also clean up the use of _ as the second variable in a for/range,
which was previously inconsistent depending on whether the statement
used = or :=.
Updates golang/go#22313
Reviewed-on: https://go-review.googlesource.com/91715
From-SVN: r257377
Ian Lance Taylor [Mon, 5 Feb 2018 01:46:07 +0000 (01:46 +0000)]
compiler: give error for non-int arguments to make
This implements a requirement of the language spec.
While we're here fix the value returned by the type method of a
builtin call expression to make, although this doesn't seem to make
any difference anywhere since we lower this to a runtime call before
the determine_types pass anyhow.
There is already a test for this error in the master repository:
test/fixedbugs/issue16949.go. It just hasn't made it into the gccgo
testsuite yet.
Fixes golang/go#16949
Reviewed-on: https://go-review.googlesource.com/91697
From-SVN: r257376
Ian Lance Taylor [Mon, 5 Feb 2018 01:43:24 +0000 (01:43 +0000)]
compiler: don't error for goto over type or const declaration
We should only issue an error for a goto over a var declaration.
The test case for this is already in the master repository, at
test/fixedbugs/issue8042.go. It just hasn't been copied into the
gccgo repository yet.
Fixes golang/go#19089
Reviewed-on: https://go-review.googlesource.com/91696
From-SVN: r257375
Ian Lance Taylor [Mon, 5 Feb 2018 01:40:51 +0000 (01:40 +0000)]
compiler: correct parse of parenthesized select case
We used to mishandle `select { case (<-c): }` and friends.
The test case for this is https://golang.org/cl/91657.
Fixes golang/go#20923
Reviewed-on: https://go-review.googlesource.com/91695
From-SVN: r257374
Ian Lance Taylor [Mon, 5 Feb 2018 01:38:34 +0000 (01:38 +0000)]
cmd/go: don't lose last flag from _cgo_flags
The quoting code that read _cgo_flags, currently only in the gccgo
version of cmd/go, was losing the last flag read from the file.
Fixes golang/go#23666
Reviewed-on: https://go-review.googlesource.com/91655
From-SVN: r257373
GCC Administrator [Mon, 5 Feb 2018 00:16:12 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r257372
Jan Hubicka [Sun, 4 Feb 2018 17:15:36 +0000 (18:15 +0100)]
re PR ipa/79966 (run time more than twice slower when using -fipa-cp-clone)
PR middle-end/79966
* gfortran.dg/pr79966.f90: New testcase
From-SVN: r257367
Joseph Myers [Sun, 4 Feb 2018 14:03:29 +0000 (14:03 +0000)]
* es.po: Update.
From-SVN: r257366
Joseph Myers [Sun, 4 Feb 2018 14:01:51 +0000 (14:01 +0000)]
* ru.po: Update.
From-SVN: r257365
Dominique d'Humieres [Sun, 4 Feb 2018 13:44:52 +0000 (14:44 +0100)]
re PR fortran/84094 (several correctness issues in gfortran.dg)
2018-02-04 Dominique d'Humieres <dominiq@gcc.gnu.org>
PR fortran/84094
* gfortran.dg/associate_23.f90: Fix invalid code.
* gfortran.dg/intrinsic_actual_4.f90: Likewise.
* gfortran.dg/matmul_3.f90: Likewise.
* gfortran.dg/transfer_array_intrinsic_2.f90: Likewise.
From-SVN: r257364
Paul Thomas [Sun, 4 Feb 2018 13:18:33 +0000 (13:18 +0000)]
re PR fortran/84115 (Failure in associate construct with concatenated character target)
2018-02-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84115
* trans-decl.c (gfc_get_symbol_decl): Do not finish the decl of
'length' if the symbol charlen backend_decl is an indirect ref.
2018-02-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84115
* gfortran.dg/associate_34.f90: New test.
* gfortran.dg/associate_35.f90: New test.
From-SVN: r257363
GCC Administrator [Sun, 4 Feb 2018 00:16:23 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r257362
Ian Lance Taylor [Sat, 3 Feb 2018 17:01:46 +0000 (17:01 +0000)]
go-gcc.cc (Gcc_backend::fill_in_struct): Mark struct types as using structural equality.
* go-gcc.cc (Gcc_backend::fill_in_struct): Mark struct types as
using structural equality.
From-SVN: r257357
Paul Thomas [Sat, 3 Feb 2018 14:06:44 +0000 (14:06 +0000)]
re PR fortran/84141 (Internal error: type_name(): Bad type)
2018-02-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84141
PR fortran/84155
* trans-array.c (gfc_array_init_size): Instead of gfc_get_dtype
use gfc_get_dtype_rank_type.
2018-02-03 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84141
PR fortran/84155
* gfortran.dg/pr84155.f90 : New test.
From-SVN: r257356
GCC Administrator [Sat, 3 Feb 2018 00:16:13 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r257355
Joseph Myers [Fri, 2 Feb 2018 21:30:48 +0000 (21:30 +0000)]
* pt_BR.po: Update.
From-SVN: r257350
Paolo Carlini [Fri, 2 Feb 2018 19:53:59 +0000 (19:53 +0000)]
c-common.h (DECL_UNNAMED_BIT_FIELD): New.
/c-family
2018-02-02 Paolo Carlini <paolo.carlini@oracle.com>
* c-common.h (DECL_UNNAMED_BIT_FIELD): New.
/c
2018-02-02 Paolo Carlini <paolo.carlini@oracle.com>
* c-typeck.c (really_start_incremental_init, push_init_level,
set_nonincremental_init, output_init_element, process_init_element):
Use DECL_UNNAMED_BIT_FIELD.
/cp
2018-02-02 Paolo Carlini <paolo.carlini@oracle.com>
* class.c (is_really_empty_class): Use DECL_UNNAMED_BIT_FIELD.
* constexpr.c (cx_check_missing_mem_inits): Likewise.
* decl.c (next_initializable_field, find_decomp_class_base,
cp_finish_decomp): Likewise.
* typeck2.c (process_init_constructor_record): Likewise.
From-SVN: r257348
Eric Botcazou [Fri, 2 Feb 2018 18:09:58 +0000 (18:09 +0000)]
decl.c (array_type_has_nonaliased_component): Return false if the component type is a pointer.
* gcc-interface/decl.c (array_type_has_nonaliased_component): Return
false if the component type is a pointer.
From-SVN: r257344
Eric Botcazou [Fri, 2 Feb 2018 18:09:32 +0000 (18:09 +0000)]
re PR lto/83954 (LTO: Bogus -Wlto-type-mismatch warning for array of pointer to incomplete type)
PR lto/83954
* lto-symtab.c (warn_type_compatibility_p): Do not recurse into the
component type of array types with non-aliased component.
From-SVN: r257343
Andrew Jenner [Fri, 2 Feb 2018 17:31:20 +0000 (17:31 +0000)]
powerpcspe.opt: Add Undocumented to irrelevant options.
* config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
options.
* config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
Remove all values except native, 8540 and 8548.
From-SVN: r257342
H.J. Lu [Fri, 2 Feb 2018 16:43:46 +0000 (16:43 +0000)]
i386: Pass INVALID_REGNUM as invalid register number
* config/i386/i386.c (ix86_output_function_return): Pass
INVALID_REGNUM, instead of -1, as invalid register number to
indirect_thunk_name and output_indirect_thunk.
From-SVN: r257340
Jason Merrill [Fri, 2 Feb 2018 16:42:46 +0000 (11:42 -0500)]
PR c++/84181 - ICE with lambda parm in template argument.
* tree.c (strip_typedefs_expr): Use cp_tree_operand_length.
From-SVN: r257339
Uros Bizjak [Fri, 2 Feb 2018 16:01:49 +0000 (17:01 +0100)]
dec_parameter_1.f (sub1): Remove statement with no effect.
* gfortran.dg/dec_parameter_1.f (sub1): Remove statement with no effect.
* gfortran.dg/dec_parameter_2.f90 (sub1): Ditto.
From-SVN: r257337
Will Schmidt [Fri, 2 Feb 2018 16:00:28 +0000 (16:00 +0000)]
vec-cmpne-long.c: Add p8vector_hw require to dg-do run stanza.
[testsuite]
2018-02-02 Will Schmidt <will_schmidt@vnet.ibm.com>
* gcc.target/powerpc/vec-cmpne-long.c: Add p8vector_hw require to
dg-do run stanza.
From-SVN: r257336
Will Schmidt [Fri, 2 Feb 2018 15:53:30 +0000 (15:53 +0000)]
fold-vec-abs-int.p9.c: Add powerpc_p9vector_ok requirement.
[testsuite]
2018-01-31 Will Schmidt <will_schmidt@vnet.ibm.com>
* gcc.target/powerpc/fold-vec-abs-int.p9.c: Add powerpc_p9vector_ok
requirement.
* gcc.target/powerpc/fold-vec-abs-int-fwrapv.p9.c: Same.
* gcc.target/powerpc/fold-vec-cmp-char.p9.c: Same.
* gcc.target/powerpc/fold-vec-neg-int.p9.c: Same.
From-SVN: r257335
Ian Lance Taylor [Fri, 2 Feb 2018 15:19:44 +0000 (15:19 +0000)]
go-gcc.cc (Gcc_backend::type_size): Return 0 for void_type_node.
* go-gcc.cc (Gcc_backend::type_size): Return 0 for
void_type_node.
(Gcc_backend::convert_expression): Don't convert if the type of
expr_tree is void_type_node.
(Gcc_backend::array_index_expression): Don't index if the type of
the array expression is void_type_node.
(Gcc_backend::init_statement): Don't initialize if the type of the
initializer expression is void_type_node.
(Gcc_backend::assignment_statement): Don't assign if the type of
either the left or right hand side is void_type_node.
(Gcc_backend::temporary_variable): Don't initialize if the type of
the initializer expression is void_type_node.
From-SVN: r257334
Georg-Johann Lay [Fri, 2 Feb 2018 15:07:37 +0000 (15:07 +0000)]
re PR testsuite/52641 (Test cases fail for 16-bit int targets)
PR testsuite/52641
* gcc.c-torture/execute/pr83362.c: Make work for int16.
* gcc.dg/Wsign-conversion.c: Dito.
* gcc.dg/attr-alloc_size-4.c: Dito.
* gcc.dg/pr81020.c: Dito.
* gcc.dg/pr81192.c: Dito.
* gcc.dg/pr83463.c (dg-options): Add -Wno-pointer-to-int-cast.
* gcc.dg/attr-alloc_size-11.c: Also special-case avr.
* gcc.dg/pr83844.c: Restrict to int32plus.
* gcc.dg/attr-alloc_size-3.c: Restrict to size32plus.
* gcc.dg/tree-ssa/ldist-25.c: Dito.
* gcc.dg/tree-ssa/ldist-27.c: Dito.
* gcc.dg/tree-ssa/ldist-28.c: Dito.
* gcc.dg/tree-ssa/ldist-29.c: Dito.
* gcc.dg/tree-ssa/ldist-30.c: Dito.
* gcc.dg/tree-ssa/ldist-31.c: Dito.
* gcc.dg/tree-ssa/ldist-32.c: Dito.
* gcc.dg/tree-ssa/ldist-33.c: Dito.
* gcc.dg/tree-ssa/ldist-34.c: Dito.
* gcc.dg/tree-ssa/ldist-35.c: Dito.
* gcc.dg/tree-ssa/ldist-36.c: Dito.
From-SVN: r257333
Julia Koval [Fri, 2 Feb 2018 13:45:57 +0000 (14:45 +0100)]
Add -march=icelake.
gcc/
* config.gcc: Add -march=icelake.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
* config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
* config/i386/i386.c (processor_costs): Add m_ICELAKE.
(PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
(processor_target_table): Add icelake.
(ix86_option_override_internal): Handle new PTAs.
(get_builtin_code_for_version): Handle icelake.
(M_INTEL_COREI7_ICELAKE): New.
(fold_builtin_cpu): Handle icelake.
* config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
* doc/invoke.texi: Add -march=icelake.
gcc/testsuite/
* gcc.target/i386/funcspec-56.inc: Handle new march.
* g++.dg/ext/mv16.C: Ditto.
libgcc/
* config/i386/cpuinfo.h (processor_subtypes): Add INTEL_COREI7_ICELAKE.
From-SVN: r257331
Ian Lance Taylor [Fri, 2 Feb 2018 13:44:41 +0000 (13:44 +0000)]
compiler: don't incorrectly evaluate range variable
The language spec says that in `for i = range x`, in which there is no
second iteration variable, if len(x) is constant, then x is not
evaluated. This only matters when x is an expression that panics but
whose type is an array type; in such a case, we should not evaluate x,
since len of any array type is a constant.
Fixes golang/go#22313
Reviewed-on: https://go-review.googlesource.com/91555
From-SVN: r257330
Julia Koval [Fri, 2 Feb 2018 13:39:30 +0000 (14:39 +0100)]
Move omp bitmask to general to use it in x86 backend.
gcc/c-family/
* c-common.h (omp_clause_mask): Move to wide_int_bitmask.h.
gcc/
* config/i386/i386.c (ix86_option_override_internal): Change flags type
to wide_int_bitmask.
* wide-int-bitmask.h: New.
From-SVN: r257329
Georg-Johann Lay [Fri, 2 Feb 2018 12:24:34 +0000 (12:24 +0000)]
Reduce fallout for avr.
* lib/target-supports.exp
(check_effective_target_keeps_null_pointer_checks): No more
special-case avr.
* gcc.dg/tree-ssa/pr21086.c (dg-final): Special-case avr.
* gcc.dg/ifcvt-4.c: Skip avr.
* gcc.dg/pr53037-1.c: Dito.
* gcc.dg/pr53037-2.c: Dito.
* gcc.dg/pr53037-3.c: Dito.
* gcc.dg/pr63387-2.c: Dito.
* gcc.dg/pr63387.c: Dito.
* gcc.dg/sancov/cmp0.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-1.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-10.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-11.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-1b.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-2.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-3.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-4.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-5.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-6.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-7.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-8.c: Dito.
* gcc.dg/tree-ssa/loop-interchange-9.c: Dito.
* gcc.dg/tree-ssa/pr82059.c: Dito.
* gcc.c-torture/execute/pr70460.c: Dito.
From-SVN: r257328
Georg-Johann Lay [Fri, 2 Feb 2018 11:36:54 +0000 (11:36 +0000)]
re PR testsuite/52641 (Test cases fail for 16-bit int targets)
PR testsuite/52641
* gcc.c-torture/execute/pr81913.c: Use types that also work for int16.
* gcc.c-torture/execute/
20180112-1.c: Dito.
* gcc.c-torture/execute/pr81503.c: Dito.
* gcc.dg/store_merging_12.c: Dito.
* gcc.dg/tree-ssa/loop-niter-1.c: Dito.
* gcc.dg/tree-ssa/loop-niter-2.c: Dito.
* gcc.dg/tree-ssa/pr80898.c: Dito.
* gcc.dg/tree-ssa/pr82363.c: Dito.
* gcc.dg/utf16-4.c: Also allow "short unsigned int" in dg-warning.
* gcc.dg/tree-ssa/pr81346-5.c: Special-case int16.
* gcc.dg/tree-ssa/ssa-sink-11.c: Dito.
* gcc.dg/tree-ssa/ssa-sink-12.c: Dito.
* gcc.dg/torture/pr81814.c: Restrict to int32plus.
* gcc.dg/tree-ssa/pr80803.c: Dito.
* gcc.dg/tree-ssa/pr80898-2.c: Dito.
* gcc.dg/tree-ssa/pr81346-4.c: Dito.
* gcc.dg/tree-ssa/vrp114.c: Dito.
* gcc.dg/tree-ssa/pr82574.c: Restrict to size32plus.
* gcc.dg/tree-ssa/ssa-dom-thread-13.c: Dito.
* gcc.dg/tree-ssa/ssa-sink-15.c: Dito.
From-SVN: r257327
Igor Tsimbalist [Fri, 2 Feb 2018 10:06:39 +0000 (11:06 +0100)]
PR84066 Wrong shadow stack register size is saved for x32
x32 is a 64-bit process with 32-bit software pointer and kernel may
place x32 shadow stack above 4GB. We need to save and restore 64-bit
shadow stack register for x32. builtin jmp buf size is 5 pointers. We
have space to save 64-bit shadow stack pointers: 32-bit SP, 32-bit FP,
32-bit IP, 64-bit SSP for x32.
PR target/84066
* gcc/config/i386/i386.md: Replace Pmode with word_mode in
builtin_setjmp_setup and builtin_longjmp to support x32.
* gcc/testsuite/gcc.target/i386/cet-sjlj-6a.c: New test.
* gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c: Likewise.
From-SVN: r257326
Jason Merrill [Fri, 2 Feb 2018 02:07:09 +0000 (21:07 -0500)]
PR c++/84160 - ICE with nested variadic capture.
* lambda.c (is_capture_proxy_with_ref): New.
(insert_capture_proxy): Don't set DECL_CAPTURED_VARIABLE from a
COMPONENT_REF.
* expr.c (mark_use): Use is_capture_proxy_with_ref.
* constexpr.c (potential_constant_expression_1): Likewise.
* semantics.c (process_outer_var_ref): Likewise.
From-SVN: r257325
Ian Lance Taylor [Fri, 2 Feb 2018 00:33:03 +0000 (00:33 +0000)]
reflect: enable allocation tests
They were disabled due to the lack of escape analysis. Now that
we have escape analysis, unskip these tests.
Reviewed-on: https://go-review.googlesource.com/86248
From-SVN: r257324
Ian Lance Taylor [Fri, 2 Feb 2018 00:16:43 +0000 (00:16 +0000)]
runtime: scan register backing store on ia64
On ia64, a separate stack is used for saving/restoring register frames,
occupying the other end of the stack mapping. This must also be scanned
for pointers into the heap.
Reviewed-on: https://go-review.googlesource.com/85276
From-SVN: r257323
GCC Administrator [Fri, 2 Feb 2018 00:16:28 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r257322
Cherry Zhang [Fri, 2 Feb 2018 00:00:04 +0000 (00:00 +0000)]
compiler: turn on escape analysis by default
The escape analysis now runs by default. It can be disabled with
the negative flag, -fno-go-optimize-allocs.
Reviewed-on: https://go-review.googlesource.com/86247
* lang.opt (fgo-optimize): Remove RejectNegative.
* go-c.h (go_enable_optimize): Update declaration to take value
argument.
* go-lang.c (go_langhook_handle_option): Pass value to
go_enable_optimize.
* gccgo.texi (Invoking gccgo): Update -fgo-optimize-allocs doc.
From-SVN: r257319
Ian Lance Taylor [Thu, 1 Feb 2018 21:08:31 +0000 (21:08 +0000)]
Change accidentally omitted from revision 257280.
From-SVN: r257313
Ian Lance Taylor [Thu, 1 Feb 2018 21:05:20 +0000 (21:05 +0000)]
math: adjust compilation flags, use them when testing
We were using special compilation flags for the math package, but we
weren't using them when testing. That meant that our tests were not
checking the real code we were providing. Fix that.
Fixing that revealed that we were not using a good set of flags, or at
least were not using flags that let the tests pass. Adjust the flags
to stop using -funsafe-math-optimizations on x86. Instead always use
-ffp-contract=off -fno-math-errno -fno-trapping-math for all targets.
Fixes golang/go#23647
Reviewed-on: https://go-review.googlesource.com/91355
From-SVN: r257312
Marek Polacek [Thu, 1 Feb 2018 20:32:33 +0000 (20:32 +0000)]
re PR c++/84125 (ICE in generic lambda when static_assert argument is implicitly converted to bool)
PR c++/84125
* typeck.c (build_address): Relax the assert when
processing_template_decl.
* g++.dg/cpp1y/lambda-generic-84125.C:New test.
From-SVN: r257311
Janne Blomqvist [Thu, 1 Feb 2018 19:47:15 +0000 (21:47 +0200)]
PR 83975 Associate target with non-constant character length
When associating a variable of type character, if the length of the
target isn't known at compile time, generate an error. See PR 83344
for more details.
Regtested on x86_64-pc-linux-gnu.
gcc/fortran/ChangeLog:
2018-02-01 Janne Blomqvist <jb@gcc.gnu.org>
PR 83975
PR 83344
* resolve.c (resolve_assoc_var): Generate an error if
target length unknown.
From-SVN: r257310
Jason Merrill [Thu, 1 Feb 2018 18:44:41 +0000 (13:44 -0500)]
PR c++/84126 - ICE with variadic generic lambda
PR c++/84036
PR c++/82249
* pt.c (tsubst_pack_expansion): Handle function parameter_packs in
PACK_EXPANSION_EXTRA_ARGS.
From-SVN: r257307
Peter Bergner [Thu, 1 Feb 2018 18:26:51 +0000 (12:26 -0600)]
re PR target/56010 (Powerpc, -mcpu=native and -mtune=native use the wrong name for target 7450)
PR target/56010
PR target/83743
* config/rs6000/driver-rs6000.c: #include "diagnostic.h".
#include "opts.h".
(rs6000_supported_cpu_names): New static variable.
(linux_cpu_translation_table): Likewise.
(elf_platform) <cpu>: Define new static variable and use it.
Translate kernel AT_PLATFORM name to canonical name if needed.
Error if platform name is unknown.
From-SVN: r257305
Aldy Hernandez [Thu, 1 Feb 2018 17:12:28 +0000 (17:12 +0000)]
re PR middle-end/84089 (FAIL: g++.dg/cpp1y/lambda-generic-x.C -std=gnu++14 (internal compiler error))
PR target/84089
* config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
From-SVN: r257304
Jeff Law [Thu, 1 Feb 2018 16:22:56 +0000 (09:22 -0700)]
re PR target/84128 (i686: Stack spilling in -fstack-clash-protection prologue neglects %esp change)
PR target/84128
* config/i386/i386.c (release_scratch_register_on_entry): Add new
OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
the scratch if RELEASE_VIA_POP is false.
(ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
If we have to save a temporary register, decrement SIZE appropriately.
Pass new arguments to release_scratch_register_on_entry.
(ix86_adjust_stack_and_probe): Likewise.
(ix86_emit_probe_stack_range): Pass new arguments to
release_scratch_register_on_entry.
PR target/84128
* gcc.target/i386/pr84128.c: New test.
From-SVN: r257303
Uros Bizjak [Thu, 1 Feb 2018 16:04:18 +0000 (17:04 +0100)]
re PR rtl-optimization/84157 ([nvptx] ICE: RTL check: expected code 'reg', have 'lshiftrt')
PR rtl-optimization/84157
* combine.c (change_zero_ext): Use REG_P predicate in
front of HARD_REGISTER_P predicate.
From-SVN: r257302
Georg-Johann Lay [Thu, 1 Feb 2018 15:54:20 +0000 (15:54 +0000)]
avr.c (avr_option_override): Move disabling of -fdelete-null-pointer-checks to...
gcc/
* config/avr/avr.c (avr_option_override): Move disabling of
-fdelete-null-pointer-checks to...
* common/config/avr/avr-common.c (avr_option_optimization_table):
...here.
testsuite/
* gcc.dg/tree-ssa/vrp111.c (dg-options): Add
-fdelete-null-pointer-checks.
From-SVN: r257301
Ian Lance Taylor [Thu, 1 Feb 2018 15:54:04 +0000 (15:54 +0000)]
compiler: omit field name for embedded fields in reflection string
This matches the gc compiler.
The test case was sent for the master repo as
https://golang.org/cl/91138.
Fixes golang/go#23620
Reviewed-on: https://go-review.googlesource.com/91139
From-SVN: r257300
Ian Lance Taylor [Thu, 1 Feb 2018 15:49:53 +0000 (15:49 +0000)]
net: declare lib_getaddrinfo as returning int32
Otherwise on a 64-bit system we will read the 32-bit value as a 64-bit
value. Since getaddrinfo returns negative numbers as error values,
these will be interpreted as numbers like 0xfffffffe rather than -2,
and the comparisons with values like syscall.EAI_NONAME will fail.
Fixes golang/go#23645
Reviewed-on: https://go-review.googlesource.com/91296
From-SVN: r257299
Paolo Carlini [Thu, 1 Feb 2018 15:36:04 +0000 (15:36 +0000)]
re PR c++/83796 (Abstract classes allowed to be instantiated when initialised as default parameter to function or constructor)
/cp
2018-02-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/83796
* call.c (convert_like_real): If w're initializing from {} explicitly
call abstract_virtuals_error_sfinae.
/testsuite
2018-02-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/83796
* g++.dg/cpp0x/abstract-default1.C: New.
From-SVN: r257298
Richard Sandiford [Thu, 1 Feb 2018 14:17:07 +0000 (14:17 +0000)]
Use range info in split_constant_offset (PR 81635)
This patch implements the original suggestion for fixing PR 81635:
use range info in split_constant_offset to see whether a conversion
of a wrapping type can be split. The range info problem described in:
https://gcc.gnu.org/ml/gcc-patches/2017-08/msg01002.html
seems to have been fixed.
The patch is part 1. There needs to be a follow-on patch to handle:
for (unsigned int i = 0; i < n; i += 4)
{
...[i + 2]...
...[i + 3]...
which the old SCEV test handles, but which the range check doesn't.
At the moment we record that the low two bits of "i" are clear,
but we still end up with a maximum range of 0xffffffff rather than
0xfffffffc.
2018-01-31 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
PR tree-optimization/81635
* tree-data-ref.c (split_constant_offset_1): For types that
wrap on overflow, try to use range info to prove that wrapping
cannot occur.
gcc/testsuite/
PR tree-optimization/81635
* gcc.dg/vect/bb-slp-pr81635-1.c: New test.
* gcc.dg/vect/bb-slp-pr81635-2.c: Likewise.
From-SVN: r257296
Renlin Li [Thu, 1 Feb 2018 13:02:24 +0000 (13:02 +0000)]
[PR83370][AARCH64]Use tighter register constraint for sibcall patterns.
In aarch64 backend, ip0/ip1 register will be used in the prologue/epilogue as
temporary register.
When the compiler is performing sibcall optimization. It has the chance to use
ip0/ip1 register for indirect function call to hold the address. However,
those two register might be clobbered by the epilogue code which makes the
last sibcall instruction invalid.
The patch here renames the register class CALLER_SAVE_REGS to TAILCALL_ADDR_REGS
to reflect its usage, and remove IP registers from this class.
gcc/
2018-02-01 Renlin Li <renlin.li@arm.com>
PR target/83370
* config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
TAILCALL_ADDR_REGS.
(aarch64_register_move_cost): Likewise.
* config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
TAILCALL_ADDR_REGS.
(REG_CLASS_NAMES): Likewise.
(REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
TAILCALL_ADDR_REGS. Remove IP registers.
* config/aarch64/aarch64.md (Ucs): Update register constraint.
gcc/testsuite/
2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
PR target/83370
* gcc.target/aarch64/pr83370.c: New.
From-SVN: r257294
Richard Biener [Thu, 1 Feb 2018 12:51:24 +0000 (12:51 +0000)]
domwalk.h (dom_walker::dom_walker): Add additional constructor for specifying RPO order and allow NULL for that.
2018-02-01 Richard Biener <rguenther@suse.de>
* domwalk.h (dom_walker::dom_walker): Add additional constructor
for specifying RPO order and allow NULL for that.
* domwalk.c (dom_walker::dom_walker): Likewise.
(dom_walker::walk): Handle NULL RPO order.
* tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
in RPO order.
(rewrite_update_dom_walker): Likewise.
(mark_def_dom_walker): Likewise.
* gcc.dg/graphite/pr35356-1.c: Adjust.
From-SVN: r257293
Richard Sandiford [Thu, 1 Feb 2018 11:04:58 +0000 (11:04 +0000)]
[AArch64] Fix SVE testsuite failures for ILP32 (PR 83846)
The SVE tests are split into code-quality compile tests and runtime
tests. A lot of the former are geared towards LP64. It would be
possible (but tedious!) to mark up every line that is expected to work
only for LP64, but I think it would be a constant source of problems.
Since the code has not been tuned for ILP32 yet, I think the best
thing is to select only the runtime tests for that combination.
They all pass on aarch64-elf and aarch64_be-elf except vec-cond-[34].c,
which are unsupported due to the lack of fenv support.
The patch also replaces uses of built-in types with stdint.h types
where possible. (This excludes tests that change the endianness,
since we can't assume that system header files work in that case.)
2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
gcc/testsuite/
PR testsuite/83846
* gcc.target/aarch64/sve/aarch64-sve.exp: Only do *_run tests
for ILP32.
* gcc.target/aarch64/sve/clastb_2_run.c (main): Use TYPE instead
of hard-coding the choice.
* gcc.target/aarch64/sve/clastb_4_run.c (main): Likewise.
* gcc.target/aarch64/sve/clastb_5_run.c (main): Likewise.
* gcc.target/aarch64/sve/clastb_3_run.c (main): Likewise. Generalize
memset call.
* gcc.target/aarch64/sve/const_pred_1.C: Include stdint.h and use
stdint.h types.
* gcc.target/aarch64/sve/const_pred_2.C: Likewise.
* gcc.target/aarch64/sve/const_pred_3.C: Likewise.
* gcc.target/aarch64/sve/const_pred_4.C: Likewise.
* gcc.target/aarch64/sve/load_const_offset_2.c: Likewise.
* gcc.target/aarch64/sve/logical_1.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_1.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_2.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_3.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_4.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_5.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_6.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_7.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_load_8.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_1.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_2.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_3.c: Likewise.
* gcc.target/aarch64/sve/mask_struct_store_4.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_1.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_2.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_2_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_3.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_3_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_4.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_4_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_7.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_8.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_8_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_9.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_9_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_10.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_10_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_11.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_11_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_12.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_12_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_13.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_13_run.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_14.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_18.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_19.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_20.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_21.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_22.c: Likewise.
* gcc.target/aarch64/sve/struct_vect_23.c: Likewise.
* gcc.target/aarch64/sve/popcount_1.c (popcount_64): Use
__builtin_popcountll rather than __builtin_popcountl.
Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
From-SVN: r257290
Richard Sandiford [Thu, 1 Feb 2018 11:04:28 +0000 (11:04 +0000)]
[AArch64] Handle SVE subregs that are effectively REVs
Subreg reads should be equivalent to storing the inner register to
memory and loading the appropriate memory bytes back, with subreg
writes doing the reverse. For the reasons explained in the comments,
this isn't what happens for big-endian SVE if we simply reinterpret
one vector register as having a different element size, so the
conceptual store and load is needed in the general case.
However, that obviously produces poor code if we do it too often.
The patch therefore adds a pattern for handling the operation in
registers. This copes with the important case of a VIEW_CONVERT
created by tree-vect-slp.c:duplicate_and_interleave.
It might make sense to tighten the predicates in aarch64-sve.md so
that such subregs are not allowed as operands to most instructions,
but that's future work.
This fixes the sve/slp_*.c tests on aarch64_be.
2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
(aarch64_maybe_expand_sve_subreg_move): Declare.
* config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
* config/aarch64/predicates.md (aarch64_any_register_operand): New
predicate.
* config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
that are semantically a reverse operation.
(*aarch64_sve_mov<mode>_subreg_be): New pattern.
* config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
(aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
functions.
(aarch64_can_change_mode_class): For big-endian, forbid changes
between two SVE modes if they have different element sizes.
Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
From-SVN: r257289
Richard Sandiford [Thu, 1 Feb 2018 11:04:00 +0000 (11:04 +0000)]
[AArch64] Prefer LD1RQ for big-endian SVE
This patch deals with cases in which a CONST_VECTOR contains a
repeating bit pattern that is wider than one element but narrower
than 128 bits. The current code:
* treats the repeating pattern as a single element
* uses the associated LD1R to load and replicate it (such as LD1RD
for 64-bit patterns)
* uses a subreg to cast the result back to the original vector type
The problem is that for big-endian targets, the final cast is
effectively a form of element reverse. E.g. say we're using LD1RD to load
16-bit elements, with h being the high parts and l being the low parts:
+-----+-----+-----+-----+-----+----
lanes | 0 | 1 | 2 | 3 | 4 | ...
+-----+-----+-----+-----+-----+----
memory bytes |h0 l0 h1 l1 h2 l2 h3 l3 h0 l0 ....
+----------------------------------
V V V V V V V V
----------+-----------------------+
register .... | 0 |
after ----------+-----------------------+ lsb
LD1RD .... h3 l3 h0 l0 h1 l1 h2 l2 h3 l3|
----------------------------------+
----+-----+-----+-----+-----+-----+
expected ... | 4 | 3 | 2 | 1 | 0 |
register ----+-----+-----+-----+-----+-----+ lsb
contents .... h0 l0 h3 l3 h2 l2 h1 l1 h0 l0|
----------------------------------+
A later patch fixes the handling of general subregs to account
for this, but it means that we need to do a REV instruction
after the load. It seems better to use LD1RQ[BHW] on a 128-bit
pattern instead, since that gets the endianness right without
a separate fixup instruction.
2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
the TImode handling for big-endian targets.
gcc/testsuite/
* gcc.target/aarch64/sve/slp_2.c: Expect LD1RQ to be used instead
of LD1R[HWD] for multi-element constants on big-endian targets.
* gcc.target/aarch64/sve/slp_3.c: Likewise.
* gcc.target/aarch64/sve/slp_4.c: Likewise.
Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
From-SVN: r257288
Richard Sandiford [Thu, 1 Feb 2018 11:03:36 +0000 (11:03 +0000)]
[AArch64] Use all SVE LD1RQ variants
The fallback way of handling a repeated 128-bit constant vector for SVE
is to force the 128 bits to the constant pool and use LD1RQ to load it.
Previously the code always used the byte variant of LD1RQ (LD1RQB),
with a preceding BSWAP for big-endian targets. However, that BSWAP
doesn't handle all cases correctly.
The simplest fix seemed to be to use the LD1RQ appropriate for the
element size.
This helps to fix some of the sve/slp_*.c tests for aarch64_be,
although a later patch is needed as well.
2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
(*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes,
not just bytes.
* config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
Remove BSWAP handing for big-endian targets and use the form of
LD1RQ appropariate for the mode.
gcc/testsuite/
* gcc.target/aarch64/sve/slp_2.c: Expect LD1RQD rather than LD1RQB.
* gcc.target/aarch64/sve/slp_3.c: Expect LD1RQW rather than LD1RQB.
* gcc.target/aarch64/sve/slp_4.c: Expect LD1RQH rather than LD1RQB.
Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
From-SVN: r257287
Richard Sandiford [Thu, 1 Feb 2018 11:03:17 +0000 (11:03 +0000)]
[AArch64] Generalise aarch64_simd_valid_immediate for SVE
The current aarch64_simd_valid_immediate code predates the move
to the new CONST_VECTOR representation, so for variable-length SVE
it only handles duplicates of single elements, rather than duplicates
of repeating patterns.
This patch removes the restriction. It means that the validity
of a duplicated constant depends only on the bit pattern, not on
the mode used to represent it.
The patch is needed by a later big-endian fix.
2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
duplicated element.
Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
From-SVN: r257286
Richard Sandiford [Thu, 1 Feb 2018 11:02:52 +0000 (11:02 +0000)]
[AArch64] Tighten aarch64_secondary_reload condition (PR 83845)
aarch64_secondary_reload enforced a secondary reload via
aarch64_sve_reload_be for memory and pseudo registers, but failed
to do the same for subregs of pseudo registers. To avoid this and
any similar problems, the patch instead tests for things that the move
patterns handle directly; if the operand isn't one of those, we should
use the reload pattern instead.
The patch fixes an ICE in sve/mask_struct_store_3.c for aarch64_be,
where the bogus target description was (rightly) causing LRA to cycle.
2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
PR tearget/83845
* config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
check for operands that need to go through aarch64_sve_reload_be.
Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
From-SVN: r257285
Jakub Jelinek [Thu, 1 Feb 2018 10:08:26 +0000 (11:08 +0100)]
re PR tree-optimization/81661 (ICE in gimplify_modify_expr, at gimplify.c:5638)
PR tree-optimization/81661
PR tree-optimization/84117
* tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
* tree-eh.c: Include gimplify.h.
(find_trapping_overflow, replace_trapping_overflow,
rewrite_to_non_trapping_overflow): New functions.
* tree-vect-loop.c: Include tree-eh.h.
(vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
* tree-data-ref.c: Include tree-eh.h.
(get_segment_min_max): Use rewrite_to_non_trapping_overflow.
* gcc.dg/pr81661.c: New test.
* gfortran.dg/pr84117.f90: New test.
From-SVN: r257284
Janne Blomqvist [Thu, 1 Feb 2018 07:41:03 +0000 (09:41 +0200)]
PR 83705 Repeat with large values
This patch fixes the regression by increasing the limit where we fall
back to runtime to 2**28 elements, which is the same limit where
previous releases failed. The are still bugs in the runtime
evaluation, so in many cases longer characters will still fail, so
print a warning message.
Regtested on x86_64-pc-linux-gnu.
gcc/fortran/ChangeLog:
2018-02-01 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/83705
* simplify.c (gfc_simplify_repeat): Increase limit for deferring
to runtime, print a warning message.
gcc/testsuite/ChangeLog:
2018-02-01 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/83705
* gfortran.dg/repeat_7.f90: Catch warning message.
From-SVN: r257281
Ian Lance Taylor [Thu, 1 Feb 2018 01:38:52 +0000 (01:38 +0000)]
compiler: check for nil receiver in value method
We already dereference the pointer to copy the value, but if the
method does not use the value then the pointer dereference may be
optimized away. Do an explicit nil check so that we get the panic
that is required.
Fixes golang/go#19806
Reviewed-on: https://go-review.googlesource.com/91275
* go.go-torture/execute/printnil.go: New test.
From-SVN: r257280
GCC Administrator [Thu, 1 Feb 2018 00:16:25 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r257279
Ian Lance Taylor [Wed, 31 Jan 2018 23:23:21 +0000 (23:23 +0000)]
elf.c (elf_add): Close descriptor if we use a debugfile.
* elf.c (elf_add): Close descriptor if we use a debugfile.
* btest.c (check_open_files): New static function.
(main): Call check_open_files.
From-SVN: r257275
Joseph Myers [Wed, 31 Jan 2018 22:54:39 +0000 (22:54 +0000)]
Update gcc .po files.
* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
zh_TW.po: Update.
From-SVN: r257274
Joseph Myers [Wed, 31 Jan 2018 22:52:47 +0000 (22:52 +0000)]
Update cpplib .po files.
* be.po, ca.po, da.po, de.po, el.po, eo.po, es.po, fi.po, fr.po,
id.po, ja.po, nl.po, pr_BR.po, ru.po, sr.po, sv.po, tr.po, uk.po,
vi.po, zh_CN.po, zh_TW.po: Update.
From-SVN: r257273
Rainer Orth [Wed, 31 Jan 2018 22:18:21 +0000 (22:18 +0000)]
Fix comdat_group check with Solaris as
* lib/target-supports.exp (check_effective_target_comdat_group):
Allow for Solaris as comdat syntax.
* g++.dg/debug/dwarf2/nested-4.C: Xfail scan-assembler-times on
Solaris with comdat_group support and as.
From-SVN: r257272
Marek Polacek [Wed, 31 Jan 2018 22:12:46 +0000 (22:12 +0000)]
re PR c/81779 (bool define from stdbool.h suppresses -Wdeclaration-after-statement)
PR c/81779
* c-parser.c (c_parser_compound_statement_nostart): Call
expansion_point_location_if_in_system_header.
* gcc.dg/pr81779.c: New test.
From-SVN: r257271
Uros Bizjak [Wed, 31 Jan 2018 21:37:54 +0000 (22:37 +0100)]
re PR rtl-optimization/84123 (internal compiler error: in gen_rtx_SUBREG, at emit-rtl.c:908, alpha linux.)
PR rtl-optimization/84123
* combine.c (change_zero_ext): Check if hard register satisfies
can_change_dest_mode before calling gen_lowpart_SUBREG.
From-SVN: r257270
Jakub Jelinek [Wed, 31 Jan 2018 20:47:48 +0000 (21:47 +0100)]
re PR fortran/84116 (ICE in gfc_match_omp_clauses, at fortran/openmp.c:1354)
PR fortran/84116
* openmp.c (gfc_match_omp_clauses): If all the linear
gfc_match_omp_variable_list calls failed, don't gfc_free_omp_namelist
nor set *head = NULL. Formatting fixes.
* gfortran.dg/gomp/pr84116.f90: New test.
From-SVN: r257266
Jason Merrill [Wed, 31 Jan 2018 20:46:36 +0000 (21:46 +0100)]
re PR c++/83993 (ICE: constant not recomputed when ADDR_EXPR changed)
PR c++/83993
* constexpr.c (cxx_eval_outermost_constant_expr): Build NOP_EXPR
around non-constant ADDR_EXPRs rather than clearing TREE_CONSTANT
on ADDR_EXPR.
* g++.dg/init/pr83993-2.C: New test.
From-SVN: r257265
Jakub Jelinek [Wed, 31 Jan 2018 20:45:41 +0000 (21:45 +0100)]
re PR c++/83993 (ICE: constant not recomputed when ADDR_EXPR changed)
PR c++/83993
* constexpr.c (diag_array_subscript): Emit different diagnostics
if TYPE_DOMAIN (arraytype) is NULL.
(cxx_eval_array_reference, cxx_eval_store_expression): For arrays
with NULL TYPE_DOMAIN use size_zero_node as nelts.
* g++.dg/init/pr83993-1.C: New test.
* g++.dg/cpp0x/pr83993.C: New test.
From-SVN: r257264
Paul Thomas [Wed, 31 Jan 2018 20:28:35 +0000 (20:28 +0000)]
re PR fortran/84088 ([nvptx] libgomp.oacc-fortran/declare-*.f90 execution fails)
2018-01-31 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84088
* trans-expr.c (gfc_conv_procedure_call): If the parm expr is
an address expression passed to an assumed rank dummy, convert
to an indirect reference.
2018-01-31 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84088
* gfortran.dg/pr84088.f90 : New test.
From-SVN: r257262
Thomas Koenig [Wed, 31 Jan 2018 20:20:54 +0000 (20:20 +0000)]
dump-parse-tree.c (write_proc): Use sym_name (which may be sym->binding_label) instead of sym->name.
2018-01-31 Thomas Koenig <tkoenig@gcc.gnu.org>
* dump-parse-tree.c (write_proc): Use sym_name (which may
be sym->binding_label) instead of sym->name.
From-SVN: r257260
Janne Blomqvist [Wed, 31 Jan 2018 19:44:47 +0000 (21:44 +0200)]
Use gfc_charlen_t instead of int in gfc_conv_string_init
Committed as obvious.
2018-01-31 Janne Blomqvist <jb@gcc.gnu.org>
* trans-const.c (gfc_conv_string_init): Use gfc_charlen_t instead
of int for slen.
From-SVN: r257258
Vladimir Makarov [Wed, 31 Jan 2018 19:03:11 +0000 (19:03 +0000)]
re PR target/82444 (ICE in ira_init_register_move_cost, at ira.c:1581)
2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
PR target/82444
* ira.c (ira_init_register_move_cost): Remove assert.
2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
PR target/82444
* gcc.target/i386/pr82444.c: New.
From-SVN: r257254
Will Schmidt [Wed, 31 Jan 2018 19:01:27 +0000 (19:01 +0000)]
altivec-13.c: Remove VSX-requiring built-ins.
[testsuite]
2018-01-31 Will Schmidt <will_schmidt@vnet.ibm.com>
* gcc.target/powerpc/altivec-13.c: Remove VSX-requiring built-ins.
* gcc.target/powerpc/vsx-13.c: New.
From-SVN: r257253
Ian Lance Taylor [Wed, 31 Jan 2018 18:35:58 +0000 (18:35 +0000)]
compiler: lower expression types in lowering pass
Ensure that array types with complicated length expressions are
handled correctly by lowering expression types in the lowering pass.
This required some adjustment of constant expression types to not
report too many errors for circular constant expressions. We now
record error types in the Named_constant type. If we find the
circularity due to lowering the Named_constant, we use that location
for the error message; this retains the error location we used to use.
Fixes golang/go#23545
Reviewed-on: https://go-review.googlesource.com/91035
From-SVN: r257250
Ian Lance Taylor [Wed, 31 Jan 2018 18:25:17 +0000 (18:25 +0000)]
runtime: fix type descriptor name in C code
I forgot to update the name of the map[string]bool type descriptor
used in go-fieldtrack.c. This didn't cause any errors because it's a
weak symbol, and the current testsuite has no field tracking tests.
Reviewed-on: https://go-review.googlesource.com/91096
From-SVN: r257249
Ian Lance Taylor [Wed, 31 Jan 2018 18:21:47 +0000 (18:21 +0000)]
gotest: accept symbols with leading dot
On AIX nm displays symbols with a leading dot; don't discard such
symbols.
While we're here stop doing fgrep -v '$', symbol names no longer
contain '$' anyhow.
Reviewed-on: https://go-review.googlesource.com/91095
From-SVN: r257247
Paolo Carlini [Wed, 31 Jan 2018 16:07:06 +0000 (16:07 +0000)]
re PR c++/84092 (ICE on C++14 code with variable template: in build_qualified_name, at cp/tree.c:2043)
/cp
2018-01-31 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/84092
* semantics.c (finish_qualified_id_expr): When handling an
UNBOUND_CLASS_TEMPLATE only adjust qualifying_class and expr.
/testsuite
2018-01-31 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/84092
* g++.dg/cpp1y/var-templ57.C: New.
From-SVN: r257242
Marek Polacek [Wed, 31 Jan 2018 15:37:18 +0000 (15:37 +0000)]
re PR c++/84138 (ICE folding broken constant)
PR c++/84138
* cp-gimplify.c (cp_fold): Check if X is an error node before
calling useless_type_conversion_p.
* g++.dg/diagnostic/pr84138.C: New test.
From-SVN: r257240
Eric Botcazou [Wed, 31 Jan 2018 15:01:40 +0000 (15:01 +0000)]
re PR rtl-optimization/84071 (wrong elimination of zero-extension after sign-extended load)
PR rtl-optimization/84071
* doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
* doc/tm.texi: Regenerate.
From-SVN: r257237
Ian Lance Taylor [Wed, 31 Jan 2018 14:43:37 +0000 (14:43 +0000)]
net: rename TestAddr6 to avoid gotest confusion
On ppc64 gotest treats data variables whose names begin with "Test" as
tests to run. This is to support the function descriptors used for
ppc64 ELF ABI v1. This causes gotest to think that TestAddr6 is a
test, when it is actually a variable. For a simple fix until we can
figure out how to write gotest properly, rename the variable.
Fixes golang/go#23623
Reviewed-on: https://go-review.googlesource.com/90995
From-SVN: r257235
Janne Blomqvist [Wed, 31 Jan 2018 14:16:22 +0000 (16:16 +0200)]
Use pointer sized array indices.
Using pointer sized variables (e.g. size_t / ptrdiff_t) when the
variables are used as array indices allows accessing larger arrays,
and can be a slight performance improvement due to no need for sign or
zero extending, or masking.
Regtested on x86_64-pc-linux-gnu.
libgfortran/ChangeLog:
2018-01-31 Janne Blomqvist <jb@gcc.gnu.org>
* generated/cshift1_16.c (cshift1): Regenerated.
* generated/cshift1_4.c (cshift1): Regenerated.
* generated/cshift1_8.c (cshift1): Regenerated.
* generated/eoshift1_16.c (eoshift1): Regenerated.
* generated/eoshift1_4.c (eoshift1): Regenerated.
* generated/eoshift1_8.c (eoshift1): Regenerated.
* generated/eoshift3_16.c (eoshift3): Regenerated.
* generated/eoshift3_4.c (eoshift3): Regenerated.
* generated/eoshift3_8.c (eoshift3): Regenerated.
* generated/in_pack_c10.c (internal_pack_c10): Regenerated.
* generated/in_pack_c16.c (internal_pack_c16): Regenerated.
* generated/in_pack_c4.c (internal_pack_c4): Regenerated.
* generated/in_pack_c8.c (internal_pack_c8): Regenerated.
* generated/in_pack_i1.c (internal_pack_1): Regenerated.
* generated/in_pack_i16.c (internal_pack_16): Regenerated.
* generated/in_pack_i2.c (internal_pack_2): Regenerated.
* generated/in_pack_i4.c (internal_pack_4): Regenerated.
* generated/in_pack_i8.c (internal_pack_8): Regenerated.
* generated/in_pack_r10.c (internal_pack_r10): Regenerated.
* generated/in_pack_r16.c (internal_pack_r16): Regenerated.
* generated/in_pack_r4.c (internal_pack_r4): Regenerated.
* generated/in_pack_r8.c (internal_pack_r8): Regenerated.
* generated/in_unpack_c10.c (internal_unpack_c10): Regenerated.
* generated/in_unpack_c16.c (internal_unpack_c16): Regenerated.
* generated/in_unpack_c4.c (internal_unpack_c4): Regenerated.
* generated/in_unpack_c8.c (internal_unpack_c8): Regenerated.
* generated/in_unpack_i1.c (internal_unpack_1): Regenerated.
* generated/in_unpack_i16.c (internal_unpack_16): Regenerated.
* generated/in_unpack_i2.c (internal_unpack_2): Regenerated.
* generated/in_unpack_i4.c (internal_unpack_4): Regenerated.
* generated/in_unpack_i8.c (internal_unpack_8): Regenerated.
* generated/in_unpack_r10.c (internal_unpack_r10): Regenerated.
* generated/in_unpack_r16.c (internal_unpack_r16): Regenerated.
* generated/in_unpack_r4.c (internal_unpack_r4): Regenerated.
* generated/in_unpack_r8.c (internal_unpack_r8): Regenerated.
* generated/reshape_c10.c (reshape_c10): Regenerated.
* generated/reshape_c16.c (reshape_c16): Regenerated.
* generated/reshape_c4.c (reshape_c4): Regenerated.
* generated/reshape_c8.c (reshape_c8): Regenerated.
* generated/reshape_i16.c (reshape_16): Regenerated.
* generated/reshape_i4.c (reshape_4): Regenerated.
* generated/reshape_i8.c (reshape_8): Regenerated.
* generated/reshape_r10.c (reshape_r10): Regenerated.
* generated/reshape_r16.c (reshape_r16): Regenerated.
* generated/reshape_r4.c (reshape_r4): Regenerated.
* generated/reshape_r8.c (reshape_r8): Regenerated.
* generated/shape_i1.c (shape_1): Regenerated.
* generated/shape_i16.c (shape_16): Regenerated.
* generated/shape_i2.c (shape_2): Regenerated.
* generated/shape_i4.c (shape_4): Regenerated.
* generated/shape_i8.c (shape_8): Regenerated.
* generated/spread_c10.c (spread_scalar_c10): Regenerated.
* generated/spread_c16.c (spread_scalar_c16): Regenerated.
* generated/spread_c4.c (spread_scalar_c4): Regenerated.
* generated/spread_c8.c (spread_scalar_c8): Regenerated.
* generated/spread_i1.c (spread_scalar_i1): Regenerated.
* generated/spread_i16.c (spread_scalar_i16): Regenerated.
* generated/spread_i2.c (spread_scalar_i2): Regenerated.
* generated/spread_i4.c (spread_scalar_i4): Regenerated.
* generated/spread_i8.c (spread_scalar_i8): Regenerated.
* generated/spread_r10.c (spread_scalar_r10): Regenerated.
* generated/spread_r16.c (spread_scalar_r16): Regenerated.
* generated/spread_r4.c (spread_scalar_r4): Regenerated.
* generated/spread_r8.c (spread_scalar_r8): Regenerated.
* intrinsics/random.c (jump): Use size_t for array index in loop.
(getosrandom): Likewise.
(arandom_r4): Make n an index_type.
(arandom_r8): Likewise.
(arandom_r10): Likewise.
(arandom_r16): Likewise.
(scramble_seed): Use size_t for array index in loop.
* m4/cshift1.m4: Make i an index_type.
* m4/eoshift1.m4: Likewise.
* m4/eoshift3.m4: Likewise.
* m4/in_pack.m4: Make n an index_type.
* m4/in_unpack.m4: Likewise.
* m4/reshape.m4: Make n and dim index_type's.
* m4/shape.m4: Make n an index_type.
* m4/spread.m4: Likewise, use index_type argument rather than
copying to int.
* runtime/bounds.c (bounds_ifunction_return): Make n an
index_type.
* runtime/in_pack_generic.c (internal_pack): Likewise.
* runtime/in_unpack_generic.c (internal_unpack): Make n and size
index_type's.
From-SVN: r257234
Janne Blomqvist [Wed, 31 Jan 2018 13:23:20 +0000 (15:23 +0200)]
PR 78534 Reinstate better string copy algorithm
As part of the change to larger character lengths, the string copy
algorithm was temporarily pessimized to get around some spurious
-Wstringop-overflow warnings. Having tried a number of variations of
this algorithm I have managed to get it down to one spurious warning,
only with -O1 optimization, in the testsuite. This patch reinstates
the optimized variant and modifies this one testcase to ignore the
warning.
Regtested on x86_64-pc-linux-gnu.
gcc/fortran/ChangeLog:
2018-01-31 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/78534
* trans-expr.c (fill_with_spaces): Use memset instead of
generating loop.
(gfc_trans_string_copy): Improve opportunity to use builtins with
constant lengths.
gcc/testsuite/ChangeLog:
2018-01-31 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/78534
* gfortran.dg/allocate_deferred_char_scalar_1.f03: Prune
-Wstringop-overflow warnings due to spurious warning with -O1.
* gfortran.dg/char_cast_1.f90: Update dump scan pattern.
* gfortran.dg/transfer_intrinsic_1.f90: Likewise.
From-SVN: r257233
Richard Biener [Wed, 31 Jan 2018 13:07:53 +0000 (13:07 +0000)]
re PR tree-optimization/84132 (tree-data-ref.c:3938: poor coding ?)
2018-01-31 Richard Biener <rguenther@suse.de>
PR tree-optimization/84132
* tree-data-ref.c (analyze_miv_subscript): Properly
check whether evolution_function_is_affine_multivariate_p
before calling gcd_of_steps_may_divide_p.
* g++.dg/torture/pr84132.C: New testcase.
From-SVN: r257232
Jan Hubicka [Wed, 31 Jan 2018 11:37:15 +0000 (12:37 +0100)]
pr81360.C: Drop unintended -O2 from dg-options and dg-final scan.
* g++.dg/torture/pr81360.C: Drop unintended -O2 from dg-options and
dg-final scan.
From-SVN: r257230
Julia Koval [Wed, 31 Jan 2018 11:06:20 +0000 (12:06 +0100)]
re PR target/83618 (_rdpid_u32 doesn't work on 64-bit targets as gas expects the 64-bit register)
PR target/83618
gcc/
* config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
* config/i386/i386.md (rdpid_rex64) New.
(rdpid): Make 32bit only.
gcc/testsuite/
* gcc.target/i386/rdpid.c: Remove "eax".
From-SVN: r257229
Aldy Hernandez [Wed, 31 Jan 2018 10:42:52 +0000 (10:42 +0000)]
re PR lto/84105 (Segmentation fault in pp_tree_identifier() during LTO)
PR lto/84105
* tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
an IDENTIFIER_NODE for FUNCTION_TYPE's.
From-SVN: r257228
Eric Botcazou [Wed, 31 Jan 2018 10:24:19 +0000 (10:24 +0000)]
Revert
2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
* config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
From-SVN: r257227
Kyrylo Tkachov [Wed, 31 Jan 2018 10:06:45 +0000 (10:06 +0000)]
[AArch64] PR tree-optimization/64946: XFAIL gcc.target/aarch64/vect-abs-compile.c
This test has been failing since forever, it has never passed AFAIK.
The PR details the vectoriser deficiency.
I propose we xfail this with a reference to the PR.
PR tree-optimization/64946
* gcc.target/aarch64/vect-abs-compile.c: XFAIL byte and half-word
scan-assembler checks.
From-SVN: r257225