François Dumont [Tue, 9 Jan 2018 21:05:10 +0000 (21:05 +0000)]
re PR libstdc++/83709 (Inserting duplicates into an unordered associative containers causes the container to invalidate iterators)
2018-01-09 François Dumont <fdumont@gcc.gnu.org>
PR libstdc++/83709
* include/bits/hashtable_policy.h
(__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
__first != __last.
(_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
(_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
Add false_type parameter.
(_Insert_base::insert): Adapt.
* include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
Adapt.
(_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
Add __n_elt parameter, defaulted to 1.
(_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
policy _M_need_rehash.
(_Hashtable::_M_merge_unique): Pass target number of elements to add to
produce only 1 rehash if necessary.
* testsuite/23_containers/unordered_map/insert/83709.cc: New.
* testsuite/23_containers/unordered_set/insert/83709.cc: New.
From-SVN: r256396
Carl Love [Tue, 9 Jan 2018 20:58:04 +0000 (20:58 +0000)]
altivec.md (p8_vmrgow): Add support for V2DI, V2DF, V4SI, V4SF types.
gcc/ChangeLog:
2018-01-09 Carl Love <cel@us.ibm.com>
* config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
V4SI, V4SF types.
(p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
* config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW.
* config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions.
* config/rs6000/rs6000-protos.h: Add extern defition for
rs6000_generate_float2_double_code.
* config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
function.
* config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
(float2_v2df): Add define_expand.
gcc/testsuite/ChangeLog:
2017-01-09 Carl Love <cel@us.ibm.com>
* gcc.target/powerpc/builtins-1.c (main): Add tests for vec_mergee and
vec_mergeo builtins with float, double, long long, unsigned long long,
bool long long arguments.
* gcc.target/powerpc/builtins-3-runnable.c (main): Add test for
vec_float2 with double arguments.
* gcc.target/powerpc/builtins-mergew-mergow.c: New runable test for the
vec_mergew and vec_mergow builtins.
From-SVN: r256395
Cherry Zhang [Tue, 9 Jan 2018 20:42:08 +0000 (20:42 +0000)]
compiler: add escape analysis debug hash
Add a flag -fgo-debug-escape-hash for debugging escape analysis.
It takes a binary string, optionally led by a "-", as argument.
When specified, the escape analysis runs only on functions whose
name is hashed to a value with matching suffix. The "-" sign
negates the match, i.e. the analysis runs only on functions with
non-matching hash.
Reviewed-on: https://go-review.googlesource.com/83878
* lang.opt (fgo-debug-escape-hash): New option.
* go-c.h (struct go_create_gogo_args): Add debug_escape_hash
field.
* go-lang.c (go_langhook_init): Set debug_escape_hash field.
* gccgo.texi (Invoking gccgo): Document -fgo-debug-escape-hash.
From-SVN: r256393
Aaron Sawdey [Tue, 9 Jan 2018 20:08:43 +0000 (14:08 -0600)]
Part of the fix for pr82190 got undone by my newer memcmp checkin.
From-SVN: r256392
Steven G. Kargl [Tue, 9 Jan 2018 19:49:25 +0000 (19:49 +0000)]
re PR fortran/83742 (ICE in gfc_is_simply_contiguous, at fortran/expr.c:5323)
2018-01-09 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/83742
* expr.c (gfc_is_simply_contiguous): Check for NULL pointer.
2018-01-09 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/83742
* gfortran.dg/contiguous_6.f90: New test.
From-SVN: r256391
Juraj Oršulić [Tue, 9 Jan 2018 18:49:57 +0000 (18:49 +0000)]
PR libstdc++/59253 Improve pretty printers for smart pointers
PR libstdc++/59253 (partial)
* python/libstdcxx/v6/printers.py (SmartPtrIterator): Common iterator
type for pointer stored by shared_ptr, weak_ptr and unique_ptr.
(SharedPointerPrinter, UniquePointerPrinter): Treat stored values as
children.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Update expected output
of unique_ptr printer.
* testsuite/libstdc++-prettyprinters/shared_ptr.cc: Update expected
output of shared_ptr printer.
From-SVN: r256390
Ian Lance Taylor [Tue, 9 Jan 2018 17:21:01 +0000 (17:21 +0000)]
compiler: use macro Unordered_map instead of std::unordered_map
Per gcc/go/go-system.h, this is what it is supposed to be, to
support wider platforms.
Reviewed-on: https://go-review.googlesource.com/85975
From-SVN: r256389
Aaron Sawdey [Tue, 9 Jan 2018 16:47:57 +0000 (10:47 -0600)]
Forgot to commit changelog entry:
2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
* config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
function.
(do_ifelse): New function.
(do_isel): New function.
(do_sub3): New function.
(do_add3): New function.
(do_load_mask_compare): New function.
(do_overlap_load_compare): New function.
(expand_compare_loop): New function.
(expand_block_compare): Call expand_compare_loop() when appropriate.
* config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
option description.
(-mblock-compare-inline-loop-limit): New option.
From-SVN: r256388
Uros Bizjak [Tue, 9 Jan 2018 16:27:11 +0000 (17:27 +0100)]
re PR rtl-optimization/83628 (performance regression when accessing arrays on alpha)
PR target/83628
* combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
op_mode in the force_to_mode call.
From-SVN: r256387
Richard Sandiford [Tue, 9 Jan 2018 14:31:55 +0000 (14:31 +0000)]
[AArch64] Use vec_perm_indices helper routines
This patch makes the AArch64 vec_perm_const code use the new
vec_perm_indices routines, instead of checking each element individually.
This means that they extend naturally to variable-length vectors.
Also, aarch64_evpc_dup was the only function that generated rtl when
testing_p is true, and that looked accidental. The patch adds the
missing check and then replaces the gen_rtx_REG/start_sequence/
end_sequence stuff with an assert that no rtl is generated.
2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
instead of checking each element individually.
(aarch64_evpc_uzp): Likewise.
(aarch64_evpc_zip): Likewise.
(aarch64_evpc_ext): Likewise.
(aarch64_evpc_rev): Likewise.
(aarch64_evpc_dup): Test the encoding for a single duplicated element,
instead of checking each element individually. Return true without
generating rtl if
(aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
whether all selected elements come from the same input, instead of
checking each element individually. Remove calls to gen_rtx_REG,
start_sequence and end_sequence and instead assert that no rtl is
generated.
From-SVN: r256385
Richard Sandiford [Tue, 9 Jan 2018 14:31:25 +0000 (14:31 +0000)]
[AArch64] Reject (high (const (plus anchor offset)))
The aarch64_legitimate_constant_p tests for HIGH and CONST seem
to be the wrong way round: (high (const ...)) is valid rtl that
could be passed in, but (const (high ...)) isn't. As it stands,
we disallow anchor+offset but allow (high anchor+offset).
2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
order of HIGH and CONST checks.
From-SVN: r256384
Richard Sandiford [Tue, 9 Jan 2018 14:30:27 +0000 (14:30 +0000)]
Fix permute handling when vectorising scatters
As mentioned in https://gcc.gnu.org/ml/gcc-patches/2017-11/msg01575.html ,
the scatter handling in vectorizable_store seems to be dead code at the
moment. Enabling it with the vect_analyze_data_ref_access part of
that patch triggered an ICE in the avx512f-scatter-*.c tests (which
previously didn't use scatters). The problem was that the NARROW
and WIDEN handling uses permute_vec_elements to marshal the inputs,
and permute_vec_elements expected the lhs of the stmt to be an SSA_NAME,
which of course it isn't for stores.
This patch makes permute_vec_elements create a fresh variable in this case.
2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
if the destination isn't an SSA_NAME.
From-SVN: r256383
Richard Biener [Tue, 9 Jan 2018 13:35:43 +0000 (13:35 +0000)]
re PR tree-optimization/83668 (wrong code with -O -fno-tree-dominator-opts -fgraphite-identity)
2018-01-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/83668
* graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
move prologue...
(canonicalize_loop_form): ... here, renamed from ...
(canonicalize_loop_closed_ssa_form): ... this and amended to
swap successor edges for loop exit blocks to make us use
the RPO order we need for initial schedule generation.
* gcc.dg/graphite/pr83668.c: New testcase.
From-SVN: r256381
Joseph Myers [Tue, 9 Jan 2018 13:25:38 +0000 (13:25 +0000)]
Fix folding of Inf/NaN comparisons for -ftrapping-math (PR tree-optimization/64811).
The folding of comparisons against Inf (to constants or comparisons
with the maximum finite value) has various cases where it introduces
or loses "invalid" exceptions for comparisons with NaNs.
Folding x > +Inf to 0 should not be about HONOR_SNANS - ordered
comparisons of both quiet and signaling NaNs should raise invalid.
x <= +Inf is not the same as x == x, because again that loses an
exception (equality comparisons don't raise exceptions except for
signaling NaNs).
x == +Inf is not the same as x > DBL_MAX, and a similar issue applies
with the x != +Inf case - that transformation causes a spurious
exception.
This patch fixes the conditionals on the folding to avoid such
introducing or losing exceptions.
Bootstrapped with no regressions on x86_64-pc-linux-gnu (where the
cases involving spurious exceptions wouldn't have failed anyway before
GCC 8 because of unordered comparisons wrongly always having formerly
been used by the back end). Also tested for powerpc-linux-gnu
soft-float that this fixes many glibc math/ test failures that arose
in that configuration because this folding affected the IBM long
double support in libgcc (no such failures appeared for hard-float
because of the bug of powerpc hard-float always using unordered
comparisons) - some failures remain, but I believe them to be
unrelated.
PR tree-optimization/64811
gcc:
* match.pd: When optimizing comparisons with Inf, avoid
introducing or losing exceptions from comparisons with NaN.
gcc/testsuite:
* gcc.dg/torture/inf-compare-1.c, gcc.dg/torture/inf-compare-2.c,
gcc.dg/torture/inf-compare-3.c, gcc.dg/torture/inf-compare-4.c,
gcc.dg/torture/inf-compare-5.c, gcc.dg/torture/inf-compare-6.c,
gcc.dg/torture/inf-compare-7.c, gcc.dg/torture/inf-compare-8.c:
New tests.
* gcc.c-torture/execute/ieee/fp-cmp-7.x: New file.
From-SVN: r256380
Martin Liska [Tue, 9 Jan 2018 11:47:26 +0000 (12:47 +0100)]
Add gcc_assert about stack alignment (PR sanitizer/82517).
2018-01-09 Martin Liska <mliska@suse.cz>
PR sanitizer/82517
* asan.c (shadow_mem_size): Add gcc_assert.
From-SVN: r256378
Georg-Johann Lay [Tue, 9 Jan 2018 11:27:34 +0000 (11:27 +0000)]
re PR target/79883 (avr i18n: untranslated "interrupt" or "signal")
PR target/79883
* gcc.target/avr/torture/pr57631.c (dg-warning): Quote 'signal'.
From-SVN: r256376
Tamar Christina [Tue, 9 Jan 2018 11:04:50 +0000 (11:04 +0000)]
re PR target/82641 (Unable to enable crc32 for a certain function with target attribute on ARM (aarch32))
2018-01-09 Tamar Christina <tamar.christina@arm.com>
PR target/82641
* gcc.target/arm/pragma_fpu_attribute.c: Rewrite to use
no NEON and require softfp or hard float-abi.
* gcc.target/arm/pragma_fpu_attribute_2.c: Likewise.
From-SVN: r256375
Georg-Johann Lay [Tue, 9 Jan 2018 10:40:06 +0000 (10:40 +0000)]
typo
From-SVN: r256374
Georg-Johann Lay [Tue, 9 Jan 2018 10:38:45 +0000 (10:38 +0000)]
Don't save registers in main().
gcc/
Don't save registers in main().
PR target/83737
* doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
* config/avr/avr.opt (-mmain-is-OS_task): New target option.
* config/avr/avr.c (avr_set_current_function): Don't error if
naked, OS_task or OS_main are specified at the same time.
(avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
OS_main.
(avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
attribute.
* common/config/avr/avr-common.c (avr_option_optimization_table):
Switch on -mmain-is-OS_task for optimizing compilations.
From-SVN: r256373
Richard Biener [Tue, 9 Jan 2018 08:55:26 +0000 (08:55 +0000)]
re PR tree-optimization/83572 ([graphite] ICE in verify_dominators, at dominance.c:1184 (error: dominator of 7 should be 15, not 13))
2018-01-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/83572
* graphite.c: Include cfganal.h.
(graphite_transform_loops): Connect infinite loops to exit
and remove fake edges at the end.
* gcc.dg/graphite/pr83572.c: New testcase.
From-SVN: r256372
Jan Hubicka [Tue, 9 Jan 2018 08:37:12 +0000 (09:37 +0100)]
* ipa-inline.c (edge_badness): Revert accidental checkin.
From-SVN: r256370
Jan Hubicka [Tue, 9 Jan 2018 08:22:28 +0000 (09:22 +0100)]
re PR c++/80763 (-O3 causes error: inline clone in same comdat group list)
PR ipa/80763
* ipa-comdats.c (set_comdat_group): Only set comdat group of real
symbols; not inline clones.
From-SVN: r256369
Jakub Jelinek [Tue, 9 Jan 2018 08:03:45 +0000 (09:03 +0100)]
re PR target/83507 (ICE in internal_dfa_insn_code_* for powerpc targets)
PR target/83507
* modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
hard registers. Formatting fixes.
* gcc.dg/sms-13.c: New test.
From-SVN: r256368
Jakub Jelinek [Tue, 9 Jan 2018 08:02:01 +0000 (09:02 +0100)]
re PR preprocessor/83722 (the ICE dumper doesn't comment-out some error messages)
PR preprocessor/83722
* gcc.c (try_generate_repro): Pass
&temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
&temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
do_report_bug.
From-SVN: r256367
Steven G. Kargl [Tue, 9 Jan 2018 01:26:17 +0000 (01:26 +0000)]
re PR fortran/83741 (ICE in gfc_match_allocate, at fortran/match.c:4074)
2018-01-08 Steven G. Kargl <kargl@gcc.gnu.org>
PR Fortran/83741
* gfortran.dg/allocate_assumed_charlen_3.f90: New test.
From-SVN: r256366
Ian Lance Taylor [Tue, 9 Jan 2018 01:23:08 +0000 (01:23 +0000)]
libgo: update to Go1.10beta1
Update the Go library to the 1.10beta1 release.
Requires a few changes to the compiler for modifications to the map
runtime code, and to handle some nowritebarrier cases in the runtime.
Reviewed-on: https://go-review.googlesource.com/86455
gotools/:
* Makefile.am (go_cmd_vet_files): New variable.
(go_cmd_buildid_files, go_cmd_test2json_files): New variables.
(s-zdefaultcc): Change from constants to functions.
(noinst_PROGRAMS): Add vet, buildid, and test2json.
(cgo$(EXEEXT)): Link against $(LIBGOTOOL).
(vet$(EXEEXT)): New target.
(buildid$(EXEEXT)): New target.
(test2json$(EXEEXT)): New target.
(install-exec-local): Install all $(noinst_PROGRAMS).
(uninstall-local): Uninstasll all $(noinst_PROGRAMS).
(check-go-tool): Depend on $(noinst_PROGRAMS). Copy down
objabi.go.
(check-runtime): Depend on $(noinst_PROGRAMS).
(check-cgo-test, check-carchive-test): Likewise.
(check-vet): New target.
(check): Depend on check-vet. Look at cmd_vet-testlog.
(.PHONY): Add check-vet.
* Makefile.in: Rebuild.
From-SVN: r256365
Steven G. Kargl [Tue, 9 Jan 2018 01:17:50 +0000 (01:17 +0000)]
match.c (gfc_match_allocate): Check for NULL pointer.
2018-01-08 Steven G. Kargl <kargl@gcc.gnu.org>
* match.c (gfc_match_allocate): Check for NULL pointer.
From-SVN: r256364
Jim Wilson [Tue, 9 Jan 2018 00:45:46 +0000 (16:45 -0800)]
RISC-V: Fix -msave-restore bug with sibcalls.
2018-01-08 Monk Chiang <sh.chiang04@gmail.com>
Kito Cheng <kito.cheng@gmail.com>
gcc/
* config/riscv/riscv.c (machine_function::is_leaf): Remove field.
(riscv_leaf_function_p): Delete.
(riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
2018-01-08 Chih-Mao Chen <pkmx.tw@gmail.com>
Monk Chiang <sh.chiang04@gmail.com>
gcc/testsuite/
* gcc.target/riscv/save-restore-1.c: New.
From-SVN: r256362
GCC Administrator [Tue, 9 Jan 2018 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r256361
Bill Schmidt [Mon, 8 Jan 2018 23:08:34 +0000 (23:08 +0000)]
re PR target/83677 (PPC: The xxpermr instruction is not generated correctly)
[gcc]
2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/83677
* config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
Reverse order of second and third operands in first alternative.
* config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
of first and second elements in UNSPEC_VPERMR vector.
(altivec_expand_vec_perm_le): Likewise.
[gcc/testsuite]
2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/83677
* gcc.target/powerpc/pr83677.c: New file.
From-SVN: r256358
Michael Meissner [Mon, 8 Jan 2018 22:11:24 +0000 (22:11 +0000)]
quad-float128.h (IBM128_TYPE): Explicitly use __ibm128, instead of trying to use long double.
2018-01-08 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/quad-float128.h (IBM128_TYPE): Explicitly use
__ibm128, instead of trying to use long double.
(CVT_FLOAT128_TO_IBM128): Use TFtype instead of __float128 to
accomidate -mabi=ieeelongdouble multilibs.
(CVT_IBM128_TO_FLOAT128): Likewise.
* config/rs6000/ibm-ldouble.c (IBM128_TYPE): New macro to define
the appropriate IBM extended double type.
(__gcc_qadd): Change all occurances of long double to IBM128_TYPE.
(__gcc_qsub): Likewise.
(__gcc_qmul): Likewise.
(__gcc_qdiv): Likewise.
(pack_ldouble): Likewise.
(__gcc_qneg): Likewise.
(__gcc_qeq): Likewise.
(__gcc_qne): Likewise.
(__gcc_qge): Likewise.
(__gcc_qle): Likewise.
(__gcc_stoq): Likewise.
(__gcc_dtoq): Likewise.
(__gcc_itoq): Likewise.
(__gcc_utoq): Likewise.
(__gcc_qunord): Likewise.
* config/rs6000/_mulkc3.c (toplevel): Include soft-fp.h and
quad-float128.h for the definitions.
(COPYSIGN): Use the f128 version instead of the q version.
(INFINITY): Likewise.
(__mulkc3): Use TFmode/TCmode for float128 scalar/complex types.
* config/rs6000/_divkc3.c (toplevel): Include soft-fp.h and
quad-float128.h for the definitions.
(COPYSIGN): Use the f128 version instead of the q version.
(INFINITY): Likewise.
(FABS): Likewise.
(__divkc3): Use TFmode/TCmode for float128 scalar/complex types.
* config/rs6000/extendkftf2-sw.c (__extendkftf2_sw): Likewise.
* config/rs6000/trunctfkf2-sw.c (__trunctfkf2_sw): Likewise.
From-SVN: r256354
Michael Meissner [Mon, 8 Jan 2018 21:49:37 +0000 (21:49 +0000)]
quad-float128.h (IBM128_TYPE): Explicitly use __ibm128, instead of trying to use long double.
2018-01-08 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/quad-float128.h (IBM128_TYPE): Explicitly use
__ibm128, instead of trying to use long double.
(CVT_FLOAT128_TO_IBM128): Use TFtype instead of __float128 to
accomidate -mabi=ieeelongdouble multilibs.
(CVT_IBM128_TO_FLOAT128): Likewise.
* config/rs6000/ibm-ldouble.c (IBM128_TYPE): New macro to define
the appropriate IBM extended double type.
(__gcc_qadd): Change all occurances of long double to IBM128_TYPE.
(__gcc_qsub): Likewise.
(__gcc_qmul): Likewise.
(__gcc_qdiv): Likewise.
(pack_ldouble): Likewise.
(__gcc_qneg): Likewise.
(__gcc_qeq): Likewise.
(__gcc_qne): Likewise.
(__gcc_qge): Likewise.
(__gcc_qle): Likewise.
(__gcc_stoq): Likewise.
(__gcc_dtoq): Likewise.
(__gcc_itoq): Likewise.
(__gcc_utoq): Likewise.
(__gcc_qunord): Likewise.
* config/rs6000/_mulkc3.c (toplevel): Include soft-fp.h and
quad-float128.h for the definitions.
(COPYSIGN): Use the f128 version instead of the q version.
(INFINITY): Likewise.
(__mulkc3): Use TFmode/TCmode for float128 scalar/complex types.
* config/rs6000/_divkc3.c (toplevel): Include soft-fp.h and
quad-float128.h for the definitions.
(COPYSIGN): Use the f128 version instead of the q version.
(INFINITY): Likewise.
(FABS): Likewise.
(__divkc3): Use TFmode/TCmode for float128 scalar/complex types.
* config/rs6000/extendkftf2-sw.c (__extendkftf2_sw): Likewise.
* config/rs6000/trunctfkf2-sw.c (__trunctfkf2_sw): Likewise.
From-SVN: r256353
Steven G. Kargl [Mon, 8 Jan 2018 20:48:26 +0000 (20:48 +0000)]
expr.c (gfc_check_pointer_assign): Fix typo in comment.
2018-01-08 Steven G. Kargl <kargl@gcc.gnu.org>
* expr.c (gfc_check_pointer_assign): Fix typo in comment.
From-SVN: r256352
Aaron Sawdey [Mon, 8 Jan 2018 19:37:33 +0000 (13:37 -0600)]
rs6000-string.c (do_load_for_compare_from_addr): New function.
2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
* config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
function.
(do_ifelse): New function.
(do_isel): New function.
(do_sub3): New function.
(do_add3): New function.
(do_load_mask_compare): New function.
(do_overlap_load_compare): New function.
(expand_compare_loop): New function.
(expand_block_compare): Call expand_compare_loop() when appropriate.
* config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
option description.
(-mblock-compare-inline-loop-limit): New option.
From-SVN: r256351
Jeff Law [Mon, 8 Jan 2018 18:20:21 +0000 (11:20 -0700)]
re PR rtl-optimization/81308 (ICE in calc_dfs_tree, at dominance.c:458)
PR rtl-optimizatin/81308
* tree-switch-conversion.c (cfg_altered): New file scoped static.
(process_switch): If group_case_labels makes a change, then set
cfg_altered.
(pass_convert_switch::execute): If a switch is converted, then
set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true.
PR rtl-optimizatin/81308
* g++.dg/pr81308-1.C: New test.
* g++.dg/pr81308-2.C: New test.
From-SVN: r256349
Jeff Law [Mon, 8 Jan 2018 18:17:51 +0000 (11:17 -0700)]
re PR rtl-optimization/81308 (ICE in calc_dfs_tree, at dominance.c:458)
PR rtl-optimization/81308
* recog.c (split_all_insns): Conditionally cleanup the CFG after
splitting insns.
From-SVN: r256348
Aaron Sawdey [Mon, 8 Jan 2018 16:35:31 +0000 (10:35 -0600)]
rs6000.c (rs6000_legitimate_combined_insn): Updated with the new names of the branch decrement patterns...
* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
with the new names of the branch decrement patterns, and added the
names of the branch decrement conditional patterns.
From-SVN: r256347
Vidya Praveen [Mon, 8 Jan 2018 16:24:49 +0000 (16:24 +0000)]
PR target/83663 - Revert r255946
gcc/
2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
PR target/83663 - Revert r255946
* config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
generation for cases where splatting a value is not useful.
* simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
across a vec_duplicate and a paradoxical subreg forming a vector
mode to a vec_concat.
gcc/testsuite/
2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
PR target/83663 - Revert r255946
* gcc.target/aarch64/vect-slp-dup.c: New.
From-SVN: r256346
Kyrylo Tkachov [Mon, 8 Jan 2018 15:15:08 +0000 (15:15 +0000)]
[arm] Add -march=armv8.3-a and dotprod multilib selection rules
We don't have the t-aprofile, t-multilib and t-arm-elf mapping
rules for multilibs when using the variants of -march=armv8.3-a
and the dotproduct extension.
This patch adds them. -march=armv8.3-a behaves in the same
way as -march=armv8.2-a in this regard.
Bootstrapped and tested with the aprofile multilib list.
Checked that --print-multi-directory gives sensible results
with armv8.3-a options and extensions.
I've also added some armv8.3-a, fp16 and dotprod
combination tests to multilib.exp
* config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
-march=armv8.3-a variants.
* config/arm/t-multilib: Likewise.
* config/arm/t-arm-elf: Likewise. Handle dotprod extension.
* gcc.target/arm/multilib.exp: Add fp16, dotprod and armv8.3-a
combination tests.
From-SVN: r256345
Aaron Sawdey [Mon, 8 Jan 2018 15:07:06 +0000 (15:07 +0000)]
rs6000.md (cceq_ior_compare): Remove * so I can use it to generate rtl.
2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
* config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
to generate rtl.
(cceq_ior_compare_complement): Give it a name so I can use it, and
change boolean_or_operator predicate to boolean_operator so it can
be used to generate a crand.
(eqne): New code iterator.
(bd/bd_neg): New code_attrs.
(<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
a single define_insn.
(<bd>tf_<mode>): A new insn pattern for the conditional form branch
decrement (bdnzt/bdnzf/bdzt/bdzf).
* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
with the new names of the branch decrement patterns, and added the
names of the branch decrement conditional patterns.
From-SVN: r256344
Richard Biener [Mon, 8 Jan 2018 15:04:53 +0000 (15:04 +0000)]
re PR tree-optimization/83563 ([graphite] ICE: Segmentation fault (in instantiate_scev_r))
2018-01-08 Richard Biener <rguenther@suse.de>
PR tree-optimization/83563
* graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
cache.
* gcc.dg/graphite/pr83563.c: New testcase.
From-SVN: r256343
Richard Biener [Mon, 8 Jan 2018 13:24:38 +0000 (13:24 +0000)]
re PR c++/83713 (ICE in do_narrow at gcc/convert.c:474)
2018-01-08 Richard Biener <rguenther@suse.de>
PR middle-end/83713
* convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
* g++.dg/torture/pr83713.C: New testcase.
From-SVN: r256341
Tom de Vries [Mon, 8 Jan 2018 13:23:38 +0000 (13:23 +0000)]
Xfail ssa-dom-cse-2.c for nvptx
2018-01-08 Tom de Vries <tom@codesourcery.com>
* gcc.dg/tree-ssa/ssa-dom-cse-2.c: Xfail scan for nvptx.
From-SVN: r256340
Richard Biener [Mon, 8 Jan 2018 13:22:56 +0000 (13:22 +0000)]
re PR tree-optimization/83685 (ICE: SSA corruption)
2018-01-08 Richard Biener <rguenther@suse.de>
PR tree-optimization/83685
* tree-ssa-pre.c (create_expression_by_pieces): Do not insert
references to abnormals.
* gcc.dg/torture/pr83685.c: New testcase.
From-SVN: r256339
Richard Biener [Mon, 8 Jan 2018 13:13:48 +0000 (13:13 +0000)]
re PR lto/83719 (ICE (segfault) in hash_table<indirect_string_hasher, xcallocator>::elements())
2018-01-08 Richard Biener <rguenther@suse.de>
PR lto/83719
* dwarf2out.c (output_indirect_strings): Handle empty
skeleton_debug_str_hash.
(dwarf2out_early_finish): Index strings for -gsplit-dwarf.
* gcc.dg/lto/pr83719_0.c: New testcase.
From-SVN: r256338
Janne Blomqvist [Mon, 8 Jan 2018 12:12:05 +0000 (14:12 +0200)]
PR 78534 Regression on 32-bit targets
By switching from int to size_t in order to handle larger values,
r256322 introduced a bug that manifested itself on 32-bit
targets. Fixed by using the correct type to store the result of a
next_array_record call.
Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu, committed to
trunk as obvious.
libgfortran/ChangeLog:
2018-01-08 Janne Blomqvist <jb@gcc.gnu.org>
PR 78534, bugfix for r256322
* io/transfer.c (next_record_w): Use correct type for return value
of next_array_record.
From-SVN: r256337
Tom de Vries [Mon, 8 Jan 2018 11:50:14 +0000 (11:50 +0000)]
Require stack size for some test-cases
2018-01-08 Tom de Vries <tom@codesourcery.com>
* gcc.dg/graphite/interchange-7.c: Add dg-require-stack-size.
* gcc.dg/graphite/run-id-1.c: Same.
* gcc.dg/tree-ssa/loop-interchange-4.c: Same.
From-SVN: r256336
Paul Thomas [Mon, 8 Jan 2018 11:20:33 +0000 (11:20 +0000)]
re PR fortran/83611 ([PDT] Assignment of parameterized types causes double free error in runtime)
2018-01-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/83611
* decl.c (gfc_get_pdt_instance): If parameterized arrays have
an initializer, convert the kind parameters and add to the
component if the instance.
* trans-array.c (structure_alloc_comps): Add 'is_pdt_type' and
use it with case COPY_ALLOC_COMP. Call 'duplicate_allocatable'
for parameterized arrays. Clean up typos in comments. Convert
parameterized array initializers and copy into the array.
* trans-expr.c (gfc_trans_scalar_assign): Do a deep copy for
parameterized types.
*trans-stmt.c (trans_associate_var): Deallocate associate vars
as necessary, when they are PDT function results for example.
PR fortran/83731
* trans-array.c (structure_alloc_comps): Only compare len parms
when they are declared explicitly.
2018-01-08 Paul Thomas <pault@gcc.gnu.org>
PR fortran/83611
* gfortran.dg/pdt_15.f03 : Bump count of 'n.data = 0B' to 8.
* gfortran.dg/pdt_26.f03 : Bump count of '_malloc' to 9.
* gfortran.dg/pdt_27.f03 : New test.
PR fortran/83731
* gfortran.dg/pdt_28.f03 : New test.
From-SVN: r256335
Claudiu Zissulescu [Mon, 8 Jan 2018 10:49:14 +0000 (11:49 +0100)]
[ARC] Revamp trampoline implementation
The new implementation attempts to clean up the existing trampoline
implementation for ARC making it to work for linux type of systems.
gcc/
2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
(emit_store_direct): Likewise.
(arc_trampoline_adjust_address): Likewise.
(arc_asm_trampoline_template): New function.
(arc_initialize_trampoline): Use asm_trampoline_template.
(TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
* config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
*config/arc/arc.md (flush_icache): Delete pattern.
From-SVN: r256334
Claudiu Zissulescu [Mon, 8 Jan 2018 10:49:01 +0000 (11:49 +0100)]
[ARC] Enable unaligned access.
Use munaligned-access to control if we can have unaligned accesses. For ARC
HS family unaligned access is always on.
2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
* config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
* config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
munaligned-access.
From-SVN: r256333
Tom de Vries [Mon, 8 Jan 2018 09:59:13 +0000 (09:59 +0000)]
Require alloca for some test-cases
2018-01-08 Tom de Vries <tom@codesourcery.com>
* c-c++-common/builtins.c: Require effective target alloca.
* gcc.dg/Wrestrict.c: Same.
* gcc.dg/tree-ssa/loop-interchange-15.c: Same.
From-SVN: r256332
Sebastian Huber [Mon, 8 Jan 2018 09:17:20 +0000 (09:17 +0000)]
epiphany: Enable Ada run-time build
gcc/
PR target/83681
* config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
by not USED_FOR_TARGET.
(make_pass_resolve_sw_modes): Likewise.
From-SVN: r256331
Sebastian Huber [Mon, 8 Jan 2018 09:15:16 +0000 (09:15 +0000)]
nios2: Enable Ada run-time build
gcc/
* config/nios2/nios2.h (nios2_section_threshold): Guard by not
USED_FOR_TARGET.
From-SVN: r256330
Richard Biener [Mon, 8 Jan 2018 08:24:51 +0000 (08:24 +0000)]
re PR tree-optimization/83580 (Wrong code caused by vectorization)
2018-01-08 Richard Biener <rguenther@suse.de>
PR middle-end/83580
* tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
* gcc.dg/torture/pr83580.c: New testcase.
From-SVN: r256329
Richard Biener [Mon, 8 Jan 2018 08:16:19 +0000 (08:16 +0000)]
re PR tree-optimization/83517 (Missed optimization in math expression: (x+x)/x == 2)
2018-01-08 Richard Biener <rguenther@suse.de>
PR middle-end/83517
* match.pd ((t * 2) / 2) -> t): Add missing :c.
* gcc.dg/pr83517.c: New testcase.
From-SVN: r256328
GCC Administrator [Mon, 8 Jan 2018 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r256327
Thomas Koenig [Sun, 7 Jan 2018 14:11:11 +0000 (14:11 +0000)]
libgfortran.h (GFC_DTYPE_COPY): New macro.
2018-01-07 Thomas Koenig <tkoenig@gcc.gnu.org>
* libgfortran.h (GFC_DTYPE_COPY): New macro.
(GFC_DTYPE_COPY_SETRANK): New macro.
(GFC_DTYPE_IS_UNSET): New macro.
* intrinsics/cshift0.c (cshift0): Use new macros.
* intrinsics/eoshift0.c (eoshift0): Likewise.
* intrinsics/eoshift2.c (eoshift2): Likewise.
* intrinsics/move_alloc.c (move_alloc): Likewise.
* intrinsics/reshape_generic.c (reshape_internal): Likewise.
* intrinsics/spread_generic.c (spread_internal): Likewise.
* intrinsics/spread_generic.c (spread_scalar): Likewise.
* intrinsics/spread_generic.c (spread_char_scalar): Likewise.
* intrinsics/spread_generic.c (spread_char4_scalar): Likewise.
* intrinsics/unpack_generic.c (unpack0): Likewise.
* intrinsics/unpack_generic.c (unpack0_char): Likewise.
* intrinsics/unpack_generic.c (unpack0_char4): Likewise.
* m4/cshift1.m4 (cshift1): Likewise.
* m4/eoshift1.m4 (eoshift1): Likewise.
* m4/eoshift3.m4 (eoshift3): Likewise.
* m4/iforeach-s.m4: Likewise.
* m4/iforeach.m4: Likewise.
* m4/ifunction-s.m4: Likewise.
* m4/ifunction-s2.m4: Likewise.
* m4/ifunction.m4: Likewise.
* m4/ifunction_logical.m4: Likewise.
* m4/reshape.m4: Likewise.
* m4/spread.m4: Likewise.
* generated/all_l1.c : Regenerated.
* generated/all_l16.c : Regenerated.
* generated/all_l2.c : Regenerated.
* generated/all_l4.c : Regenerated.
* generated/all_l8.c : Regenerated.
* generated/any_l1.c : Regenerated.
* generated/any_l16.c : Regenerated.
* generated/any_l2.c : Regenerated.
* generated/any_l4.c : Regenerated.
* generated/any_l8.c : Regenerated.
* generated/count_16_l.c : Regenerated.
* generated/count_1_l.c : Regenerated.
* generated/count_2_l.c : Regenerated.
* generated/count_4_l.c : Regenerated.
* generated/count_8_l.c : Regenerated.
* generated/cshift1_16.c : Regenerated.
* generated/cshift1_4.c : Regenerated.
* generated/cshift1_8.c : Regenerated.
* generated/eoshift1_16.c : Regenerated.
* generated/eoshift1_4.c : Regenerated.
* generated/eoshift1_8.c : Regenerated.
* generated/eoshift3_16.c : Regenerated.
* generated/eoshift3_4.c : Regenerated.
* generated/eoshift3_8.c : Regenerated.
* generated/iall_i1.c : Regenerated.
* generated/iall_i16.c : Regenerated.
* generated/iall_i2.c : Regenerated.
* generated/iall_i4.c : Regenerated.
* generated/iall_i8.c : Regenerated.
* generated/iany_i1.c : Regenerated.
* generated/iany_i16.c : Regenerated.
* generated/iany_i2.c : Regenerated.
* generated/iany_i4.c : Regenerated.
* generated/iany_i8.c : Regenerated.
* generated/iparity_i1.c : Regenerated.
* generated/iparity_i16.c : Regenerated.
* generated/iparity_i2.c : Regenerated.
* generated/iparity_i4.c : Regenerated.
* generated/iparity_i8.c : Regenerated.
* generated/maxloc0_16_i1.c : Regenerated.
* generated/maxloc0_16_i16.c : Regenerated.
* generated/maxloc0_16_i2.c : Regenerated.
* generated/maxloc0_16_i4.c : Regenerated.
* generated/maxloc0_16_i8.c : Regenerated.
* generated/maxloc0_16_r10.c : Regenerated.
* generated/maxloc0_16_r16.c : Regenerated.
* generated/maxloc0_16_r4.c : Regenerated.
* generated/maxloc0_16_r8.c : Regenerated.
* generated/maxloc0_16_s1.c : Regenerated.
* generated/maxloc0_16_s4.c : Regenerated.
* generated/maxloc0_4_i1.c : Regenerated.
* generated/maxloc0_4_i16.c : Regenerated.
* generated/maxloc0_4_i2.c : Regenerated.
* generated/maxloc0_4_i4.c : Regenerated.
* generated/maxloc0_4_i8.c : Regenerated.
* generated/maxloc0_4_r10.c : Regenerated.
* generated/maxloc0_4_r16.c : Regenerated.
* generated/maxloc0_4_r4.c : Regenerated.
* generated/maxloc0_4_r8.c : Regenerated.
* generated/maxloc0_4_s1.c : Regenerated.
* generated/maxloc0_4_s4.c : Regenerated.
* generated/maxloc0_8_i1.c : Regenerated.
* generated/maxloc0_8_i16.c : Regenerated.
* generated/maxloc0_8_i2.c : Regenerated.
* generated/maxloc0_8_i4.c : Regenerated.
* generated/maxloc0_8_i8.c : Regenerated.
* generated/maxloc0_8_r10.c : Regenerated.
* generated/maxloc0_8_r16.c : Regenerated.
* generated/maxloc0_8_r4.c : Regenerated.
* generated/maxloc0_8_r8.c : Regenerated.
* generated/maxloc0_8_s1.c : Regenerated.
* generated/maxloc0_8_s4.c : Regenerated.
* generated/maxloc1_16_i1.c : Regenerated.
* generated/maxloc1_16_i16.c : Regenerated.
* generated/maxloc1_16_i2.c : Regenerated.
* generated/maxloc1_16_i4.c : Regenerated.
* generated/maxloc1_16_i8.c : Regenerated.
* generated/maxloc1_16_r10.c : Regenerated.
* generated/maxloc1_16_r16.c : Regenerated.
* generated/maxloc1_16_r4.c : Regenerated.
* generated/maxloc1_16_r8.c : Regenerated.
* generated/maxloc1_16_s1.c : Regenerated.
* generated/maxloc1_16_s4.c : Regenerated.
* generated/maxloc1_4_i1.c : Regenerated.
* generated/maxloc1_4_i16.c : Regenerated.
* generated/maxloc1_4_i2.c : Regenerated.
* generated/maxloc1_4_i4.c : Regenerated.
* generated/maxloc1_4_i8.c : Regenerated.
* generated/maxloc1_4_r10.c : Regenerated.
* generated/maxloc1_4_r16.c : Regenerated.
* generated/maxloc1_4_r4.c : Regenerated.
* generated/maxloc1_4_r8.c : Regenerated.
* generated/maxloc1_4_s1.c : Regenerated.
* generated/maxloc1_4_s4.c : Regenerated.
* generated/maxloc1_8_i1.c : Regenerated.
* generated/maxloc1_8_i16.c : Regenerated.
* generated/maxloc1_8_i2.c : Regenerated.
* generated/maxloc1_8_i4.c : Regenerated.
* generated/maxloc1_8_i8.c : Regenerated.
* generated/maxloc1_8_r10.c : Regenerated.
* generated/maxloc1_8_r16.c : Regenerated.
* generated/maxloc1_8_r4.c : Regenerated.
* generated/maxloc1_8_r8.c : Regenerated.
* generated/maxloc1_8_s1.c : Regenerated.
* generated/maxloc1_8_s4.c : Regenerated.
* generated/maxval1_s1.c : Regenerated.
* generated/maxval1_s4.c : Regenerated.
* generated/maxval_i1.c : Regenerated.
* generated/maxval_i16.c : Regenerated.
* generated/maxval_i2.c : Regenerated.
* generated/maxval_i4.c : Regenerated.
* generated/maxval_i8.c : Regenerated.
* generated/maxval_r10.c : Regenerated.
* generated/maxval_r16.c : Regenerated.
* generated/maxval_r4.c : Regenerated.
* generated/maxval_r8.c : Regenerated.
* generated/minloc0_16_i1.c : Regenerated.
* generated/minloc0_16_i16.c : Regenerated.
* generated/minloc0_16_i2.c : Regenerated.
* generated/minloc0_16_i4.c : Regenerated.
* generated/minloc0_16_i8.c : Regenerated.
* generated/minloc0_16_r10.c : Regenerated.
* generated/minloc0_16_r16.c : Regenerated.
* generated/minloc0_16_r4.c : Regenerated.
* generated/minloc0_16_r8.c : Regenerated.
* generated/minloc0_16_s1.c : Regenerated.
* generated/minloc0_16_s4.c : Regenerated.
* generated/minloc0_4_i1.c : Regenerated.
* generated/minloc0_4_i16.c : Regenerated.
* generated/minloc0_4_i2.c : Regenerated.
* generated/minloc0_4_i4.c : Regenerated.
* generated/minloc0_4_i8.c : Regenerated.
* generated/minloc0_4_r10.c : Regenerated.
* generated/minloc0_4_r16.c : Regenerated.
* generated/minloc0_4_r4.c : Regenerated.
* generated/minloc0_4_r8.c : Regenerated.
* generated/minloc0_4_s1.c : Regenerated.
* generated/minloc0_4_s4.c : Regenerated.
* generated/minloc0_8_i1.c : Regenerated.
* generated/minloc0_8_i16.c : Regenerated.
* generated/minloc0_8_i2.c : Regenerated.
* generated/minloc0_8_i4.c : Regenerated.
* generated/minloc0_8_i8.c : Regenerated.
* generated/minloc0_8_r10.c : Regenerated.
* generated/minloc0_8_r16.c : Regenerated.
* generated/minloc0_8_r4.c : Regenerated.
* generated/minloc0_8_r8.c : Regenerated.
* generated/minloc0_8_s1.c : Regenerated.
* generated/minloc0_8_s4.c : Regenerated.
* generated/minloc1_16_i1.c : Regenerated.
* generated/minloc1_16_i16.c : Regenerated.
* generated/minloc1_16_i2.c : Regenerated.
* generated/minloc1_16_i4.c : Regenerated.
* generated/minloc1_16_i8.c : Regenerated.
* generated/minloc1_16_r10.c : Regenerated.
* generated/minloc1_16_r16.c : Regenerated.
* generated/minloc1_16_r4.c : Regenerated.
* generated/minloc1_16_r8.c : Regenerated.
* generated/minloc1_16_s1.c : Regenerated.
* generated/minloc1_16_s4.c : Regenerated.
* generated/minloc1_4_i1.c : Regenerated.
* generated/minloc1_4_i16.c : Regenerated.
* generated/minloc1_4_i2.c : Regenerated.
* generated/minloc1_4_i4.c : Regenerated.
* generated/minloc1_4_i8.c : Regenerated.
* generated/minloc1_4_r10.c : Regenerated.
* generated/minloc1_4_r16.c : Regenerated.
* generated/minloc1_4_r4.c : Regenerated.
* generated/minloc1_4_r8.c : Regenerated.
* generated/minloc1_4_s1.c : Regenerated.
* generated/minloc1_4_s4.c : Regenerated.
* generated/minloc1_8_i1.c : Regenerated.
* generated/minloc1_8_i16.c : Regenerated.
* generated/minloc1_8_i2.c : Regenerated.
* generated/minloc1_8_i4.c : Regenerated.
* generated/minloc1_8_i8.c : Regenerated.
* generated/minloc1_8_r10.c : Regenerated.
* generated/minloc1_8_r16.c : Regenerated.
* generated/minloc1_8_r4.c : Regenerated.
* generated/minloc1_8_r8.c : Regenerated.
* generated/minloc1_8_s1.c : Regenerated.
* generated/minloc1_8_s4.c : Regenerated.
* generated/minval1_s1.c : Regenerated.
* generated/minval1_s4.c : Regenerated.
* generated/minval_i1.c : Regenerated.
* generated/minval_i16.c : Regenerated.
* generated/minval_i2.c : Regenerated.
* generated/minval_i4.c : Regenerated.
* generated/minval_i8.c : Regenerated.
* generated/minval_r10.c : Regenerated.
* generated/minval_r16.c : Regenerated.
* generated/minval_r4.c : Regenerated.
* generated/minval_r8.c : Regenerated.
* generated/norm2_r10.c : Regenerated.
* generated/norm2_r16.c : Regenerated.
* generated/norm2_r4.c : Regenerated.
* generated/norm2_r8.c : Regenerated.
* generated/parity_l1.c : Regenerated.
* generated/parity_l16.c : Regenerated.
* generated/parity_l2.c : Regenerated.
* generated/parity_l4.c : Regenerated.
* generated/parity_l8.c : Regenerated.
* generated/product_c10.c : Regenerated.
* generated/product_c16.c : Regenerated.
* generated/product_c4.c : Regenerated.
* generated/product_c8.c : Regenerated.
* generated/product_i1.c : Regenerated.
* generated/product_i16.c : Regenerated.
* generated/product_i2.c : Regenerated.
* generated/product_i4.c : Regenerated.
* generated/product_i8.c : Regenerated.
* generated/product_r10.c : Regenerated.
* generated/product_r16.c : Regenerated.
* generated/product_r4.c : Regenerated.
* generated/product_r8.c : Regenerated.
* generated/reshape_c10.c : Regenerated.
* generated/reshape_c16.c : Regenerated.
* generated/reshape_c4.c : Regenerated.
* generated/reshape_c8.c : Regenerated.
* generated/reshape_i16.c : Regenerated.
* generated/reshape_i4.c : Regenerated.
* generated/reshape_i8.c : Regenerated.
* generated/reshape_r10.c : Regenerated.
* generated/reshape_r16.c : Regenerated.
* generated/reshape_r4.c : Regenerated.
* generated/reshape_r8.c : Regenerated.
* generated/spread_c10.c : Regenerated.
* generated/spread_c16.c : Regenerated.
* generated/spread_c4.c : Regenerated.
* generated/spread_c8.c : Regenerated.
* generated/spread_i1.c : Regenerated.
* generated/spread_i16.c : Regenerated.
* generated/spread_i2.c : Regenerated.
* generated/spread_i4.c : Regenerated.
* generated/spread_i8.c : Regenerated.
* generated/spread_r10.c : Regenerated.
* generated/spread_r16.c : Regenerated.
* generated/spread_r4.c : Regenerated.
* generated/spread_r8.c : Regenerated.
* generated/sum_c10.c : Regenerated.
* generated/sum_c16.c : Regenerated.
* generated/sum_c4.c : Regenerated.
* generated/sum_c8.c : Regenerated.
* generated/sum_i1.c : Regenerated.
* generated/sum_i16.c : Regenerated.
* generated/sum_i2.c : Regenerated.
* generated/sum_i4.c : Regenerated.
* generated/sum_i8.c : Regenerated.
* generated/sum_r10.c : Regenerated.
* generated/sum_r16.c : Regenerated.
* generated/sum_r4.c : Regenerated.
* generated/sum_r8.c : Regenerated.
From-SVN: r256323
Janne Blomqvist [Sun, 7 Jan 2018 10:17:52 +0000 (12:17 +0200)]
PR 78534, 83704 Handle large formatted I/O
In order to handle large characters when doing formatted I/O, use
size_t and ptrdiff_t for lengths. Compared to the previous patch,
based on discussions on IRC use size_t for sizes that don't need to be
negative rather than ptrdiff_t everywhere.
Regtested on x86_64-pc-linux-gnu, approved as part of the PR 78534
approval, committed to trunk.
libgfortran/ChangeLog:
2018-01-07 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/78534
PR fortran/83704
* io/fbuf.c (fbuf_init): Use size_t instead of int for length.
(fbuf_debug): Convert debug output to unsigned long.
(fbuf_reset): Use ptrdiff_t for return value.
(fbuf_alloc): Use size_t for length argument.
(fbuf_flush): Handle large buffers.
(fbuf_flush_list): Likewise.
(fbuf_seek): Use ptrdiff_t for offset and return value.
(fbuf_read): Use size_t for length argument.
(fbuf_getc_refill): Use size_t to match fbuf_read.
* io/fbuf.h (struct fbuf): Use size_t for lengths.
(fbuf_init): Use size_t instead of int for length.
(fbuf_reset): Use ptrdiff_t for return value.
(fbuf_alloc): Use size_t for length argument.
(fbuf_seek): Use ptrdiff_t for offset and return value.
(fbuf_read): Use size_t for length argument.
* io/io.h (read_block_form): Likewise.
(read_block_form4): Likewise.
(write_block): Likewise.
(read_a): Likewise.
(read_a_char4): Likewise.
(read_x): Likewise.
(write_a): Likewise.
(write_a_char4): Likewise.
* io/list_read.c (list_formatted_read_scalar): Use size_t to
handle large buffers.
* io/read.c (read_l): Likewise.
(read_utf8): Likewise.
(read_utf8_char1): Likewise.
(read_default_char1): Likewise.
(read_utf8_char4): Likewise.
(read_default_char4): Likewise.
(read_a): Likewise.
(read_a_char4): Likewise.
(eat_leading_spaces): Likewise.
(next_char): Likewise.
(read_decimal): Likewise.
(read_radix): Likewise.
(read_f): Likewise.
(read_x): Likewise.
* io/transfer.c (read_sf_internal): Likewise.
(read_sf): Likewise.
(read_block_form): Likewise.
(read_block_form4): Likewise.
(write_block): Likewise.
(formatted_transfer_scalar_write): Likewise.
(next_record_w): Likewise.
* io/unix.c (mem_alloc_r): Likewise.
(mem_alloc_r4): Likewise.
(mem_alloc_w): Likewise.
(mem_alloc_w4): Likewise.
(mem_read): Likewise.
(mem_read4): Likewise.
(mem_write): Likewise.
(mem_write4): Likewise.
(open_internal): Likewise.
(open_internal4): Likewise.
* io/unix.h (open_internal): Likewise.
(open_internal4): Likewise.
(mem_alloc_w): Likewise.
(mem_alloc_r): Likewise.
(mem_alloc_w4): Likewise.
(mem_alloc_r4): Likewise.
* io/write.c (write_check_cc): Likewise.
(write_cc): Likewise.
(write_a): Likewise.
(write_a_char4): Likewise.
From-SVN: r256322
Jeff Law [Sun, 7 Jan 2018 07:43:27 +0000 (00:43 -0700)]
Commit right version
From-SVN: r256321
Aldy Hernandez [Sun, 7 Jan 2018 05:31:51 +0000 (05:31 +0000)]
re PR middle-end/81897 (spurious -Wmaybe-uninitialized warning)
PR middle-end/81897
* tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
basic blocks with a small number of successors.
(convert_control_dep_chain_into_preds): Improve handling of
forwarder blocks.
(dump_predicates): Split apart into...
(dump_pred_chain): ...here...
(dump_pred_info): ...and here.
(can_one_predicate_be_invalidated_p): Add debugging printfs.
(can_chain_union_be_invalidated_p): Improve check for invalidation
of paths.
(uninit_uses_cannot_happen): Avoid unnecessary if
convert_control_dep_chain_into_preds yielded nothing.
PR middle-end/81897
* gcc.dg/uninit-pr81897.c: New test.
From-SVN: r256320
Martin Sebor [Sun, 7 Jan 2018 04:19:35 +0000 (04:19 +0000)]
re PR tree-optimization/83640 (ICE in generic_overlap, at gimple-ssa-warn-restrict.c:814)
2018-01-06 Martin Sebor <msebor@redhat.com>
PR tree-optimization/83640
* gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
subtracting negative offset from size.
(builtin_access::overlap): Adjust offset bounds of the access to fall
within the size of the object if possible.
PR tree-optimization/83640
* gcc.dg/Wrestrict-6.c: New test.
* gcc.dg/pr83640.c: New test.
From-SVN: r256319
Richard Sandiford [Sun, 7 Jan 2018 03:59:54 +0000 (03:59 +0000)]
re PR middle-end/83699 (Many 64-bit SPARC gcc.dg/vect tests FAIL)
PR rtl-optimization/83699
* expmed.c (extract_bit_field_1): Restrict the vector usage of
extract_bit_field_as_subreg to cases in which the extracted
value is also a vector.
From-SVN: r256318
GCC Administrator [Sun, 7 Jan 2018 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r256317
Janne Blomqvist [Sat, 6 Jan 2018 19:16:55 +0000 (21:16 +0200)]
Remove unused variable
2018-01-06 Janne Blomqvist <jb@gcc.gnu.org>
* io/write.c (namelist_write): Remove unused variable "i".
From-SVN: r256314
Dominique d'Humieres [Sat, 6 Jan 2018 19:09:52 +0000 (20:09 +0100)]
PR 83704 Use size_t in write_character
For printing long characters, we need to use size_t instead of int in
the argument to write_character.
Regtested on x86_64-pc-linux-gnu, approved in the PR, committed to
trunk.
libgfortran/ChangeLog:
2018-01-06 Dominique d'Humieres <dominiq@lps.ens.fr>
Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/83704
* io/write.c (write_character): Use size_t instead of int for
length.
Co-Authored-By: Janne Blomqvist <jb@gcc.gnu.org>
From-SVN: r256313
Richard Sandiford [Sat, 6 Jan 2018 11:07:53 +0000 (11:07 +0000)]
Tighten LRA cycling check
LRA has code to try to prevent cycling, by avoiding reloads that
look too similar to the instruction being reloaded. E.g. if we
have a R<-C move for some constant C, reloading the source with
another R<-C move is unlikely to be a good idea.
However, this safeguard unnecessarily triggered in tests like
the one in the patch. We started with instructions like:
(insn 12 9 13 5 (set (reg:DI 0 x0)
(reg/f:DI 459)) "reg-alloc-1.c":18 47 {*movdi_aarch64}
(expr_list:REG_EQUAL (symbol_ref:DI ("x00") [flags 0xc0] <var_decl 0x7f3c03c1f510 x00>)
(nil)))
where r459 didn't get allocated a register and is equivalent to
constant x00. LRA would then handle it like this:
Changing pseudo 459 in operand 1 of insn 12 on equiv `x00'
1 Non-pseudo reload: reject+=2
1 Non input pseudo reload: reject++
-------> Cycle danger: overall += LRA_MAX_REJECT
alt=0,overall=609,losers=1,rld_nregs=1
[...]
alt=13,overall=9,losers=1,rld_nregs=1
[...]
Choosing alt 13 in insn 12: (0) r (1) w {*movdi_aarch64}
In other words, to avoid loading the constant x00 into another GPR,
LRA decided instead to move it into a floating-point register,
then move that floating-point register into x0:
Creating newreg=630, assigning class FP_REGS to r630
Set class ALL_REGS for r631
12: x0:DI=r630:DI
REG_EQUAL `x00'
Inserting insn reload before:
815: r631:DI=high(`x00')
816: r630:DI=r631:DI+low(`x00')
REG_EQUAL `x00'
That's inefficient and doesn't really help to resolve a cycling
problem, since the r630 destination of 816 needs to be reloaded into
a GPR anyway.
The cycling check already had an exception for source values that are
the result of an elimination. This patch extends it to include the
result of equivalence substitution.
2018-01-06 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* lra-constraints.c (process_alt_operands): Test for the equivalence
substitutions when detecting a possible reload cycle.
gcc/testsuite/
* gcc.target/aarch64/reg-alloc-1.c: New test.
From-SVN: r256312
Janne Blomqvist [Sat, 6 Jan 2018 10:42:57 +0000 (12:42 +0200)]
PR 78534 libgfortran ChangeLog
The libgfortran/ChangeLog entry was accidentally not included in
r256284.
From-SVN: r256311
Janne Blomqvist [Sat, 6 Jan 2018 10:41:03 +0000 (12:41 +0200)]
PR 50892 Latent bug in char pointer assignment
Due to r256284 (PR 78534) there was a latent bug that reared it's head
due to different character length types in the pointer
assignment. Fixed by this patch, which also adds a reduced testcase.
Regtested on x86_64-pc-linux-gnu, committed to trunk as obvious.
gcc/fortran/ChangeLog:
2018-01-06 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/50892
* trans-expr.c (gfc_trans_pointer_assignment): fold_convert rhs to
lhs type.
gcc/testsuite/ChangeLog:
2018-01-06 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/50892
* gfortran.dg/char_pointer_assign_icb_1.f90: New test.
From-SVN: r256310
Jakub Jelinek [Sat, 6 Jan 2018 07:48:31 +0000 (08:48 +0100)]
re PR debug/83480 (ICE in create_block_for_bookkeeping, at sel-sched.c:4557)
PR debug/83480
* toplev.c (process_options): Don't enable debug_nonbind_markers_p
by default if flag_selective_schedling{,2}. Formatting fixes.
* gcc.dg/pr83480.c: New test.
From-SVN: r256309
Jakub Jelinek [Sat, 6 Jan 2018 07:47:32 +0000 (08:47 +0100)]
re PR rtl-optimization/83682 (ICE in simplify_subreg, at simplify-rtx.c:6296)
PR rtl-optimization/83682
* rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
if it has non-VECTOR_MODE element mode.
(vec_duplicate_p): Likewise.
* gcc.target/i386/pr83682.c: New test.
From-SVN: r256308
Jakub Jelinek [Sat, 6 Jan 2018 07:46:39 +0000 (08:46 +0100)]
re PR debug/83694 (New test case gcc.dg/pr83666.c from r256232 ICEs)
PR middle-end/83694
* cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
From-SVN: r256307
Ian Lance Taylor [Sat, 6 Jan 2018 01:17:29 +0000 (01:17 +0000)]
libgo: fix GOARCH_CACHELINESIZE on ia64
Reviewed-on: https://go-review.googlesource.com/85256
From-SVN: r256306
Ian Lance Taylor [Sat, 6 Jan 2018 01:11:33 +0000 (01:11 +0000)]
go-gcc.cc (Gcc_backend::Gcc_backend): Correct math_function_type_long to take one argument.
* go-gcc.cc (Gcc_backend::Gcc_backend): Correct
math_function_type_long to take one argument.
From-SVN: r256305
GCC Administrator [Sat, 6 Jan 2018 00:16:17 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r256304
Jonathan Wakely [Fri, 5 Jan 2018 23:51:22 +0000 (23:51 +0000)]
PR libstdc++/83626 simplify filesystem::remove and filesystem::remove_all
PR libstdc++/83626
* src/filesystem/ops.cc (remove(const path&, error_code&)): Remove
unnecessary symlink_status call.
(remove_all(const path&, error_code&)): Use filesystem::remove.
* src/filesystem/std-ops.cc: Likewise.
From-SVN: r256301
Jonathan Wakely [Fri, 5 Jan 2018 21:43:56 +0000 (21:43 +0000)]
PR libstdc++/83279 Use non-null offset argument for sendfile
PR libstdc++/83279
* src/filesystem/std-ops.cc (do_copy_file): Use non-null offset with
sendfile.
From-SVN: r256289
Janne Blomqvist [Fri, 5 Jan 2018 19:01:12 +0000 (21:01 +0200)]
PR 78534 Change character length from int to size_t
In order to handle large character lengths on (L)LP64 targets, switch
the GFortran character length from an int to a size_t.
This is an ABI change, as procedures with character arguments take
hidden arguments with the character length.
I also changed the _size member in vtables from int to size_t, as
there were some cases where character lengths and sizes were
apparently mixed up and caused regressions otherwise. Although I
haven't tested, this might enable very large derived types as well.
Also, as there are some places in the frontend were negative character
lengths are used as special flag values, in the frontend the character
length is handled as a signed variable of the same size as a size_t,
although in the runtime library it really is size_t.
I haven't changed the character length variables for the co-array
intrinsics, as this is something that may need to be synchronized with
OpenCoarrays.
This is v5 of the patch. v4 was applied but caused breakage on big
endian targets. These have been fixed and tested, thanks to access to
the GCC compile farm.
Overview of v4 of the patch: v3 was applied but had to reverted due to
breaking bootstrap. The fix is in resolve.c:resolve_charlen, where
it's necessary to check that an expression is constant before using
mpz_sgn.
Overview of v3 of the patch: All the issues pointed out by FX's review
of v2 have been fixed. In particular, there are now new functions
gfc_mpz_get_hwi and gfc_mpz_set_hwi, similar to the GMP functions
mpz_get_si and mpz_set_si, except that they get/set a HOST_WIDE_INT
instead of a long value. Similarly, gfc_get_int_expr now takes a
HOST_WIDE_INT instead of a long, gfc_extract_long is replaced by
gfc_extract_hwi. Also, the preliminary work to handle
gfc_charlen_type_node being unsigned has been removed.
Regtested on x86_64-pc-linux-gnu, i686-pc-linux-gnu and
powerpc64-unknown-linux-gnu. Also regtested all three targets by
modifying gfortran-dg.exp to also test with "-g -flto", no new
failures observed.
frontend:
2018-01-05 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/78534
PR fortran/66310
* array.c (got_charlen): Use gfc_charlen_int_kind.
* class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of
hardcoded kind.
(find_intrinsic_vtab): Likewise.
* decl.c (match_char_length): Use gfc_charlen_int_kind.
(add_init_expr_to_sym): Use gfc_charlen_t and gfc_charlen_int_kind.
(gfc_match_implicit): Use gfc_charlen_int_kind.
* dump-parse-tree.c (show_char_const): Use gfc_charlen_t and size_t.
(show_expr): Use HOST_WIDE_INT_PRINT_DEC.
* expr.c (gfc_get_character_expr): Length parameter of type
gfc_charlen_t.
(gfc_get_int_expr): Value argument of type HOST_WIDE_INT.
(gfc_extract_hwi): New function.
(simplify_const_ref): Make string_len of type gfc_charlen_t.
(gfc_simplify_expr): Use HOST_WIDE_INT for substring refs.
* frontend-passes.c (optimize_trim): Use gfc_charlen_int_kind.
* gfortran.h (gfc_mpz_get_hwi): New prototype.
(gfc_mpz_set_hwi): Likewise.
(gfc_charlen_t): New typedef.
(gfc_expr): Use gfc_charlen_t for character lengths.
(gfc_size_kind): New extern variable.
(gfc_extract_hwi): New prototype.
(gfc_get_character_expr): Use gfc_charlen_t for character length.
(gfc_get_int_expr): Use HOST_WIDE_INT type for value argument.
* gfortran.texi: Update description of hidden string length argument.
* iresolve.c (check_charlen_present): Use gfc_charlen_int_kind.
(gfc_resolve_char_achar): Likewise.
(gfc_resolve_repeat): Pass string length directly without
temporary, use gfc_charlen_int_kind.
(gfc_resolve_transfer): Use gfc_charlen_int_kind.
* match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen.
* misc.c (gfc_mpz_get_hwi): New function.
(gfc_mpz_set_hwi): New function.
* module.c (atom_int): Change type from int to HOST_WIDE_INT.
(parse_integer): Don't complain about large integers.
(write_atom): Use HOST_WIDE_INT for integers.
(mio_integer): Handle integer type mismatch.
(mio_hwi): New function.
(mio_intrinsic_op): Use HOST_WIDE_INT.
(mio_array_ref): Likewise.
(mio_expr): Likewise.
* primary.c (match_substring): Use gfc_charlen_int_kind.
* resolve.c (resolve_substring_charlen): Use gfc_charlen_int_kind.
(resolve_character_operator): Likewise.
(resolve_assoc_var): Likewise.
(resolve_select_type): Use HOST_WIDE_INT for charlen, use snprintf.
(resolve_charlen): Use mpz_sgn to determine sign.
* simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t
instead of long.
* symbol.c (generate_isocbinding_symbol): Use gfc_charlen_int_kind.
* target-memory.c (size_character): Length argument of type
gfc_charlen_t.
(gfc_encode_character): Likewise.
(gfc_interpret_character): Use gfc_charlen_t.
* target-memory.h (gfc_encode_character): Modify prototype.
* trans-array.c (gfc_trans_array_ctor_element): Use existing type.
(get_array_ctor_var_strlen): Use gfc_conv_mpz_to_tree_type.
(trans_array_constructor): Use existing type.
(get_array_charlen): Likewise.
* trans-const.c (gfc_conv_mpz_to_tree_type): New function.
* trans-const.h (gfc_conv_mpz_to_tree_type): New prototype.
* trans-decl.c (gfc_trans_deferred_vars): Use existing type.
(add_argument_checking): Likewise.
* trans-expr.c (gfc_class_len_or_zero_get): Build const of type
gfc_charlen_type_node.
(gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of
4, fold_convert to correct type.
(gfc_conv_class_to_class): Build const of type size_type_node for
size.
(gfc_copy_class_to_class): Likewise.
(gfc_conv_string_length): Use same type in expression.
(gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen.
(gfc_conv_string_tmp): Make sure len is of the right type.
(gfc_conv_concat_op): Use same type in expression.
(gfc_conv_procedure_call): Likewise.
(fill_with_spaces): Comment out memset() block due to spurious
-Wstringop-overflow warnings.
(gfc_trans_string_copy): Use gfc_charlen_type_node.
(alloc_scalar_allocatable_for_subcomponent_assignment):
fold_convert to right type.
(gfc_trans_subcomponent_assign): Likewise.
(trans_class_vptr_len_assignment): Build const of correct type.
(gfc_trans_pointer_assignment): Likewise.
(alloc_scalar_allocatable_for_assignment): fold_convert to right
type in expr.
(trans_class_assignment): Build const of correct type.
* trans-intrinsic.c (gfc_conv_associated): Likewise.
(gfc_conv_intrinsic_repeat): Do calculation in sizetype.
* trans-io.c (gfc_build_io_library_fndecls): Use
gfc_charlen_type_node for character lengths.
(set_string): Convert to right type in assignment.
* trans-stmt.c (gfc_trans_label_assign): Build const of
gfc_charlen_type_node.
(trans_associate_var): Likewise.
(gfc_trans_character_select): Likewise.
(gfc_trans_allocate): Likewise, don't typecast strlen result.
(gfc_trans_deallocate): Don't typecast strlen result.
* trans-types.c (gfc_size_kind): New variable.
(gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind
from size_type_node.
* trans-types.h: Fix comment.
testsuite:
2018-01-05 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/78534
PR fortran/66310
* gfortran.dg/char_cast_1.f90: Update scan pattern.
* gfortran.dg/dependency_49.f90: Likewise.
* gfortran.dg/repeat_4.f90: Use integers of kind C_SIZE_T.
* gfortran.dg/repeat_7.f90: New test for PR 66310.
* gfortran.dg/scan_2.f90: Handle potential cast in assignment.
* gfortran.dg/string_1.f90: Limit to ilp32 targets.
* gfortran.dg/string_1_lp64.f90: New test.
* gfortran.dg/string_3.f90: Limit to ilp32 targets.
* gfortran.dg/string_3_lp64.f90: New test.
libgfortran:
2019-01-05 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/78534
* intrinsics/args.c (getarg_i4): Use gfc_charlen_type.
(get_command_argument_i4): Likewise.
(get_command_i4): Likewise.
* intrinsics/chmod.c (chmod_internal): Likewise.
* intrinsics/env.c (get_environment_variable_i4): Likewise.
* intrinsics/extends_type_of.c (struct vtype): Use size_t for size
member.
* intrinsics/gerror.c (gerror): Use gfc_charlen_type.
* intrinsics/getlog.c (getlog): Likewise.
* intrinsics/hostnm.c (hostnm_0): Likewise.
* intrinsics/string_intrinsics_inc.c (string_len_trim): Rework to
work if gfc_charlen_type is unsigned.
(string_scan): Likewise.
* io/transfer.c (transfer_character): Modify prototype.
(transfer_character_write): Likewise.
(transfer_character_wide): Likewise.
(transfer_character_wide_write): Likewise.
(transfer_array): Typecast to avoid signed-unsigned comparison.
* io/unit.c (is_trim_ok): Use gfc_charlen_type.
* io/write.c (namelist_write): Likewise.
* libgfortran.h (gfc_charlen_type): Change typedef to size_t.
From-SVN: r256284
Jonathan Wakely [Fri, 5 Jan 2018 18:02:18 +0000 (18:02 +0000)]
PR libstdc++/83626 handle ENOENT due to filesystem race
PR libstdc++/83626
* src/filesystem/ops.cc (remove(const path&, error_code&)): Do not
report an error for ENOENT.
(remove_all(const path&)): Fix type of result variable.
(remove_all(const path&, error_code&)): Use non-throwing increment
for directory iterator. Call POSIX remove directly to avoid redundant
calls to symlink_status. Do not report errors for ENOENT.
* src/filesystem/std-ops.cc: Likewise.
* testsuite/27_io/filesystem/operations/remove_all.cc: Test throwing
overload.
* testsuite/experimental/filesystem/operations/remove_all.cc:
Likewise.
From-SVN: r256283
Jakub Jelinek [Fri, 5 Jan 2018 16:40:24 +0000 (17:40 +0100)]
re PR target/83604 (ICE in copy_to_mode_reg, at explow.c:630)
PR target/83604
* config/i386/i386-builtin.def
(__builtin_ia32_vgf2p8affineinvqb_v64qi,
__builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
Require also OPTION_MASK_ISA_AVX512F in addition to
OPTION_MASK_ISA_GFNI.
(__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
__builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
to OPTION_MASK_ISA_GFNI.
(__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
OPTION_MASK_ISA_AVX512BW.
(__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
addition to OPTION_MASK_ISA_GFNI.
(__builtin_ia32_vgf2p8affineinvqb_v16qi,
__builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
to OPTION_MASK_ISA_GFNI.
* config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
a requirement for all ISAs rather than any of them with a few
exceptions.
(ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
processing.
(ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
bitmasks to be enabled with 3 exceptions, instead of requiring any
enabled ISA with lots of exceptions.
* config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
Change avx512bw in isa attribute to avx512f.
* config/i386/sgxintrin.h: Add license boilerplate.
* config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F
to __AVX512F__ and __AVX512VL to __AVX512VL__.
(_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
_mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
defined.
* config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
_mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
temporarily sse2 rather than sse if not enabled already.
* gcc.target/i386/sse-26.c: New test.
From-SVN: r256281
Jakub Jelinek [Fri, 5 Jan 2018 16:38:17 +0000 (17:38 +0100)]
re PR target/83604 (ICE in copy_to_mode_reg, at explow.c:630)
PR target/83604
* config/i386/sse.md (VI248_VLBW): Rename to ...
(VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW.
(vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
mode iterator instead of VI248_VLBW.
* gcc.target/i386/pr83604.c: New test.
From-SVN: r256280
Jan Hubicka [Fri, 5 Jan 2018 15:57:04 +0000 (16:57 +0100)]
ipa-fnsummary.c (record_modified_bb_info): Add OP.
* ipa-fnsummary.c (record_modified_bb_info): Add OP.
(record_modified): Skip clobbers; add debug output.
(param_change_prob): Use sreal frequencies.
From-SVN: r256279
Richard Sandiford [Fri, 5 Jan 2018 13:49:46 +0000 (13:49 +0000)]
Revert DECL_USER_ALIGN part of r241959
r241959 included code to stop the vectoriser increasing the alignment of
a "user-aligned" variable. This wasn't the main purpose of the patch,
but was done for consistency with pass_increase_alignment, and was
needed to make the testcase work.
The documentation for the aligned attribute says:
This attribute specifies a minimum alignment for the variable or
structure field, measured in bytes.
so I think it's reasonable for the vectoriser to increase the
alignment further, if that helps us to vectorise code. It's also
useful if the "user" alignment actually came from an earlier pass
rather than the source code.
A possible counterexample came up when this was discussed on the lists.
Users who are trying to collate things from several translation units
into a single section can use:
__attribute__((section ("whatever"), aligned(N)))
and would not want extra padding. It turns out that the supported way
of doing that is to add a "used" attribute, which works even when no
"aligned" attribute is given.
2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
punt for user-aligned variables.
gcc/testsuite/
* gcc.dg/vect/vect-align-4.c: New test.
* gcc.dg/vect/vect-nb-iter-ub-2.c (cc): Remove alignment attribute
and redefine as a structure with an unaligned member "b".
(foo): Update accordingly.
From-SVN: r256277
Richard Sandiford [Fri, 5 Jan 2018 13:38:49 +0000 (13:38 +0000)]
Make chrec_contains_symbols true for POLY_INT_CST
2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* tree-chrec.c (chrec_contains_symbols): Return true for
POLY_INT_CST.
From-SVN: r256276
Sudakshina Das [Fri, 5 Jan 2018 10:45:37 +0000 (10:45 +0000)]
[PATCH PR82439][simplify-rtx] Simplify (x | y) == x -> (y & ~x) == 0
This patch add support for the missing transformation of
(x | y) == x -> (y & ~x) == 0. The transformation for (x & y) == x case
already exists in simplify-rtx.c since 2014 as of r218503 and this patch
only adds a couple of extra patterns for the IOR case. This benefits
targets that have the BICS instruction to generate better code. For
targets that do not have the BICS instructions, it still results in
no worse code generation and gives out 2 instructions.
ChangeLog Entries:
*** gcc/ChangeLog ***
2018-01-05 Sudakshina Das <sudi.das@arm.com>
PR target/82439
* simplify-rtx.c (simplify_relational_operation_1): Add simplifications
of (x|y) == x for BICS pattern.
*** gcc/testsuite/ChangeLog ***
2018-01-05 Sudakshina Das <sudi.das@arm.com>
PR target/82439
* gcc.target/aarch64/bics_5.c: New test.
* gcc.target/arm/bics_5.c: Likewise.
From-SVN: r256275
Jakub Jelinek [Fri, 5 Jan 2018 08:51:32 +0000 (09:51 +0100)]
re PR tree-optimization/83605 (ICE: verify_gimple failed (error: dead STMT in EH table))
PR tree-optimization/83605
* gimple-ssa-strength-reduction.c: Include tree-eh.h.
(find_candidates_dom_walker::before_dom_children): Ignore stmts that
can throw.
* gcc.dg/pr83605.c: New test.
From-SVN: r256274
Sebastian Huber [Fri, 5 Jan 2018 06:17:22 +0000 (06:17 +0000)]
RTEMS/EPIPHANY: Add RTEMS support
gcc/
* config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
* config/epiphany/rtems.h: New file.
libgcc/
* config.host (epiphany-*-elf*): Add (epiphany-*-rtems*)
configuration.
From-SVN: r256273
GCC Administrator [Fri, 5 Jan 2018 00:16:18 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r256272
Jonathan Wakely [Thu, 4 Jan 2018 22:58:59 +0000 (22:58 +0000)]
PR libstdc++/83626 Don't throw for remove("") and remove_all("")
PR libstdc++/83626
* src/filesystem/ops.cc (remove(const path&, error_code&))): Remove
redundant call to ec.clear().
(remove_all(const path&, error_code&))): Do not return an error for
non-existent paths.
* src/filesystem/std-ops.cc: Likewise.
* testsuite/27_io/filesystem/operations/remove.cc: New test.
* testsuite/27_io/filesystem/operations/remove_all.cc: Fix expected
results for non-existent paths.
* testsuite/experimental/filesystem/operations/remove.cc: New test.
* testsuite/experimental/filesystem/operations/remove_all.cc: Fix
expected results for non-existent paths.
From-SVN: r256269
Jakub Jelinek [Thu, 4 Jan 2018 21:54:23 +0000 (22:54 +0100)]
re PR target/83554 (ICE: in ix86_mitigate_rop, at config/i386/i386.c:41274 with -mmitigate-rop)
PR target/83554
* config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
QIreg_operand instead of register_operand predicate.
* config/i386/i386.c (ix86_rop_should_change_byte_p,
set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
comments instead of -fmitigate[-_]rop.
* gcc.target/i386/pr83554.c: New test.
Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>
From-SVN: r256268
Rainer Orth [Thu, 4 Jan 2018 21:47:35 +0000 (21:47 +0000)]
Avoid Solaris/SPARC comparison failures with Solaris as (PR bootstrap/81926)
PR bootstrap/81926
* cgraphunit.c (symbol_table::compile): Switch to text_section
before calling assembly_start debug hook.
* run-rtl-passes.c (run_rtl_passes): Likewise.
Include output.h.
From-SVN: r256267
Jakub Jelinek [Thu, 4 Jan 2018 21:13:17 +0000 (22:13 +0100)]
re PR other/82352 (comdat-local function called by void h::i() outside its comdat)
PR ipa/82352
* g++.dg/ipa/pr82352.C (size_t): Define to __SIZE_TYPE__ instead of
long unsigned int.
From-SVN: r256266
Thomas Koenig [Thu, 4 Jan 2018 21:04:23 +0000 (21:04 +0000)]
re PR fortran/83683 (eoshift accepts wrong-length boundary)
2018-01-04 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/83683
PR fortran/45689
* check.c (gfc_check_eoshift): Check for string length and
for conformance of boundary.
* intrinsic.c (add_functions): Add gfc_simplify_eoshift.
* intrinsic.h: Add prototype for gfc_simplify_eoshift.
* simplify.c (gfc_simplify_eoshift): New function.
2018-01-04 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/83683
PR fortran/45689
* gfortran.dg/eoshift_8.f90: New test.
* gfortran.dg/simplify_eoshift_1.f90: New test.
From-SVN: r256265
Richard Sandiford [Thu, 4 Jan 2018 19:13:55 +0000 (19:13 +0000)]
Protect second call to extract_range_from_multiplicative_op_1
Following on from:
* tree-vrp.c (extract_range_from_multiplicative_op_1): Assert
for VR_RANGE only; don't allow VR_ANTI_RANGE.
(extract_range_from_binary_expr_1): Don't call
extract_range_from_multiplicative_op_1 if !range_int_cst_p.
there was a later call to extract_range_from_multiplicative_op_1 too,
that used a negative test for a symbolic (!is_gimple_min_invariant)
range rather than a positive test for an integer range.
2017-11-04 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* tree-vrp.c (extract_range_from_binary_expr_1): Check
range_int_cst_p rather than !symbolic_range_p before calling
extract_range_from_multiplicative_op_1.
From-SVN: r256262
Jeff Law [Thu, 4 Jan 2018 18:54:02 +0000 (11:54 -0700)]
tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove redundant test in assertion.
* tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
redundant test in assertion.
From-SVN: r256260
Richard Sandiford [Thu, 4 Jan 2018 18:05:30 +0000 (18:05 +0000)]
Document machine_mode wrapper classes
2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* doc/rtl.texi: Document machine_mode wrapper classes.
From-SVN: r256259
Richard Sandiford [Thu, 4 Jan 2018 18:05:10 +0000 (18:05 +0000)]
Add tree_fits_uhwi_p tests to BIT_FIELD_REF folder
The first BIT_FIELD_REF folding pattern assumed without checking that
operands satisfy tree_fits_uhwi_p. The second pattern does check this:
/* On constants we can use native encode/interpret to constant
fold (nearly) all BIT_FIELD_REFs. */
if (CONSTANT_CLASS_P (arg0)
&& can_native_interpret_type_p (type)
&& BITS_PER_UNIT == 8
&& tree_fits_uhwi_p (op1)
&& tree_fits_uhwi_p (op2))
so this patch adds the checks to the first pattern too. This is needed
for POLY_INT_CST bit positions.
2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
using tree_to_uhwi.
From-SVN: r256258
Richard Sandiford [Thu, 4 Jan 2018 18:04:54 +0000 (18:04 +0000)]
Allow VEC_PERM_EXPR folding to fail
tree-ssa-forwprop.c was asserting that a VEC_PERM_EXPR fold on three
VECTOR_CSTs would always succeed, but it's possible for it to fail
with variable-length vectors.
2017-12-22 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
the VEC_PERM_EXPR fold to fail.
From-SVN: r256257
Jakub Jelinek [Thu, 4 Jan 2018 17:47:55 +0000 (18:47 +0100)]
re PR debug/83585 (Assembler messages: Error: can't resolve `.text' {.text section} - `.LCOLDB0' {.text.unlikely section})
PR debug/83585
* bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
to switched_sections.
* gcc.dg/pr83585.c: New test.
From-SVN: r256256
Nathan Sidwell [Thu, 4 Jan 2018 15:49:28 +0000 (15:49 +0000)]
[PR c++/83667] Fix tree_dump ICE
https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00218.html
PR c++/83667
* g++.dg/ipa/pr83667.C: Fix regex, require alias.
From-SVN: r256254
Richard Sandiford [Thu, 4 Jan 2018 14:39:03 +0000 (14:39 +0000)]
PR83680: Inverted test in arm_vectorize_vec_perm_const
2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
PR target/83680
* config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
test for d.testing.
From-SVN: r256251