Commit Graph

158781 Commits

Author SHA1 Message Date
Carl Love
19d22f7c90 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
2018-01-09 20:58:04 +00:00
Cherry Zhang
594d0e51b7 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
2018-01-09 20:42:08 +00:00
Aaron Sawdey
f4f867ca3c Part of the fix for pr82190 got undone by my newer memcmp checkin.
From-SVN: r256392
2018-01-09 14:08:43 -06:00
Steven G. Kargl
d4319ef830 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
2018-01-09 19:49:25 +00:00
Juraj Oršulić
d2dfcf823c 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
2018-01-09 18:49:57 +00:00
Ian Lance Taylor
1eac10b39f 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
2018-01-09 17:21:01 +00:00
Aaron Sawdey
888e79a7c2 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
2018-01-09 10:47:57 -06:00
Uros Bizjak
49bb43bef3 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
2018-01-09 17:27:11 +01:00
Richard Sandiford
326ac20ea3 [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
2018-01-09 14:31:55 +00:00
Richard Sandiford
509bb9b647 [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
2018-01-09 14:31:25 +00:00
Richard Sandiford
7ad429a4de 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
2018-01-09 14:30:27 +00:00
Richard Biener
82c066f587 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
2018-01-09 13:35:43 +00:00
Joseph Myers
e96a5786c7 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
2018-01-09 13:25:38 +00:00
Martin Liska
aa5bfa8d5d 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
2018-01-09 11:47:26 +00:00
Georg-Johann Lay
684684c628 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
2018-01-09 11:27:34 +00:00
Tamar Christina
f676330e22 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
2018-01-09 11:04:50 +00:00
Georg-Johann Lay
1f1229d542 typo
From-SVN: r256374
2018-01-09 10:40:06 +00:00
Georg-Johann Lay
dcbe917013 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
2018-01-09 10:38:45 +00:00
Richard Biener
b25f84d0ff 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
2018-01-09 08:55:26 +00:00
Jan Hubicka
b1a0199b64 * ipa-inline.c (edge_badness): Revert accidental checkin.
From-SVN: r256370
2018-01-09 08:37:12 +00:00
Jan Hubicka
6291062f31 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
2018-01-09 08:22:28 +00:00
Jakub Jelinek
3a123ed751 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
2018-01-09 09:03:45 +01:00
Jakub Jelinek
5190f1f98d 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
2018-01-09 09:02:01 +01:00
Steven G. Kargl
5e884ae3bd 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
2018-01-09 01:26:17 +00:00
Ian Lance Taylor
1a2f01efa6 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
2018-01-09 01:23:08 +00:00
Steven G. Kargl
8799df67f2 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
2018-01-09 01:17:50 +00:00
Jim Wilson
c8a0c7b660 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
2018-01-08 16:45:46 -08:00
GCC Administrator
b48ae4b080 Daily bump.
From-SVN: r256361
2018-01-09 00:16:20 +00:00
Bill Schmidt
a25811c885 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
2018-01-08 23:08:34 +00:00
Michael Meissner
68df9882b2 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
2018-01-08 22:11:24 +00:00
Michael Meissner
d5eea0f7cc 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
2018-01-08 21:49:37 +00:00
Steven G. Kargl
a4f759de23 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
2018-01-08 20:48:26 +00:00
Aaron Sawdey
5ec3397e38 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
2018-01-08 13:37:33 -06:00
Jeff Law
5a2a87e1e2 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
2018-01-08 11:20:21 -07:00
Jeff Law
b9a4d2ba48 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
2018-01-08 11:17:51 -07:00
Aaron Sawdey
7f047768f2 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
2018-01-08 10:35:31 -06:00
Vidya Praveen
647c61f1c4 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
2018-01-08 16:24:49 +00:00
Kyrylo Tkachov
a00a42220e [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
2018-01-08 15:15:08 +00:00
Aaron Sawdey
8f2c602304 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
2018-01-08 09:07:06 -06:00
Richard Biener
b33086c0a7 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
2018-01-08 15:04:53 +00:00
Richard Biener
87c4dace91 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
2018-01-08 13:24:38 +00:00
Tom de Vries
960c02b84e 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
2018-01-08 13:23:38 +00:00
Richard Biener
e207c07997 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
2018-01-08 13:22:56 +00:00
Richard Biener
131a0e78b0 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
2018-01-08 13:13:48 +00:00
Janne Blomqvist
4135a21f4d 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
2018-01-08 14:12:05 +02:00
Tom de Vries
4c035a2394 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
2018-01-08 11:50:14 +00:00
Paul Thomas
0b627b5844 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
2018-01-08 11:20:33 +00:00
Claudiu Zissulescu
efcc2e303f [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
2018-01-08 11:49:14 +01:00
Claudiu Zissulescu
85e5629fd5 [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
2018-01-08 11:49:01 +01:00
Tom de Vries
b5da8f9483 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
2018-01-08 09:59:13 +00:00