Commit Graph

165742 Commits

Author SHA1 Message Date
Jakub Jelinek
26b57b93b3 re PR target/88465 (AVX512: optimize loading of constant values to kN registers)
PR target/88465
	* config/i386/i386.md (*movdi_internal, *movsi_internal,
	*movhi_internal, *movqi_internal): Add alternative(s) to load
	0 or -1 into k registers using kxor or kxnoq instructions.

	* gcc.target/i386/avx512f-pr88465.c: New test.
	* gcc.target/i386/avx512dq-pr88465.c: New test.

From-SVN: r267078
2018-12-13 09:08:22 +01:00
Jakub Jelinek
e00199d7b7 re PR target/88461 (AVX512: gcc should keep value in kN registers if possible)
PR target/88461
	* config/i386/sse.md (VI1248_AVX512VLBW, AVX512ZEXTMASK): New
	mode iterators.
	(<avx512>_testm<mode>3<mask_scalar_merge_name>,
	<avx512>_testnm<mode>3<mask_scalar_merge_name>): Merge patterns
	with VI12_AVX512VL and VI48_AVX512VL iterators into ones with
	VI1248_AVX512VLBW iterator.
	(*<avx512>_testm<VI1248_AVX512VLBW:mode>3_zext,
	*<avx512>_testm<VI1248_AVX512VLBW:mode>3_zext_mask,
	*<avx512>_testnm<VI1248_AVX512VLBW:mode>3_zext,
	*<avx512>_testnm<VI1248_AVX512VLBW:mode>3_zext_mask): New
	define_insns.

	* gcc.target/i386/pr88461.c: New test.

From-SVN: r267077
2018-12-13 09:00:42 +01:00
Jakub Jelinek
87d570a022 re PR target/88461 (AVX512: gcc should keep value in kN registers if possible)
PR target/88461
	* config/i386/i386.md (*zero_extendsidi2, zero_extend<mode>di2,
	*zero_extend<mode>si2, *zero_extendqihi2): Add =*k, *km alternatives.

From-SVN: r267076
2018-12-13 08:58:42 +01:00
GCC Administrator
401069dab8 Daily bump.
From-SVN: r267074
2018-12-13 00:16:35 +00:00
Ian Lance Taylor
e7db55f636 runtime: handle DW_EH_PE_absptr in type table encoding
The type table encoding can be DW_EH_PE_absptr, but this case
    was missing, which was causing abort on ARM32 EABI. Add the
    missing case.
    
    Reviewed-on: https://go-review.googlesource.com/c/153857

From-SVN: r267070
2018-12-12 23:26:58 +00:00
Jakub Jelinek
7a289b7d0a re PR fortran/88463 (Rejects conforming source, OpenMP Parallel region Default(None) reference to module parameter array, separate source)
PR fortran/88463
	* trans-openmp.c (gfc_omp_predetermined_sharing): Handle TREE_READONLY
	VAR_DECLs with DECL_EXTERNAL like those with TREE_STATIC.

	* testsuite/libgomp.fortran/pr88463-1.f90: New test.
	* testsuite/libgomp.fortran/pr88463-2.f90: New test.

From-SVN: r267069
2018-12-12 23:49:35 +01:00
Ian Lance Taylor
44cacba39d os/signal: increase deliver time for signal testcase
This increases the time to wait for signals to be delivered in the
    TestAtomicStop testcase. When running gccgo tests on ppc64 or ppc64le,
    there are intermittent failures in this test because the wait time is
    too small.
    
    Updates golang/go#29046
    
    Reviewed-on: https://go-review.googlesource.com/c/153879

From-SVN: r267068
2018-12-12 22:48:46 +00:00
Jakub Jelinek
a6ef2ac9d9 omp-builtins.def (BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_START, [...]): Fix up function types - remove one argument.
* omp-builtins.def (BUILT_IN_GOMP_LOOP_NONMONOTONIC_RUNTIME_START,
	BUILT_IN_GOMP_LOOP_MAYBE_NONMONOTONIC_RUNTIME_START,
	BUILT_IN_GOMP_LOOP_ULL_NONMONOTONIC_RUNTIME_START,
	BUILT_IN_GOMP_LOOP_ULL_MAYBE_NONMONOTONIC_RUNTIME_START,
	BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME,
	BUILT_IN_GOMP_PARALLEL_LOOP_MAYBE_NONMONOTONIC_RUNTIME): Fix up
	function types - remove one argument.

	* testsuite/libgomp.c-c++-common/for-16.c: New test.

From-SVN: r267067
2018-12-12 23:47:55 +01:00
Paolo Carlini
77a2428600 decl.c (grokdeclarator): Fix location of error message about static data member definition.
/cp
2018-12-12  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Fix location of error message about
	static data member definition.

/testsuite
2018-12-12  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/other/static5.C: New.

From-SVN: r267066
2018-12-12 21:36:26 +00:00
Martin Sebor
293267bcdf extend.texi (attribute copy): Fix typos.
gcc/ChangeLog:

	* doc/extend.texi (attribute copy): Fix typos.

From-SVN: r267065
2018-12-12 14:02:41 -07:00
Martin Sebor
348846ff36 extend.texi (Function Attributes): Clarify C++ aspects.
gcc/ChangeLog:

	* doc/extend.texi (Function Attributes): Clarify C++ aspects.
	(Variable Attributes): Same.
	(Type Attributes): Same.

From-SVN: r267064
2018-12-12 13:48:00 -07:00
Segher Boessenkool
c46eb97906 Fix independent-cloneids-1.c testcase (PR88318)
The testcase uses REs like {(?n)\m_*bar[.$_]constprop[.$_]0:} to find
what functions are defined.  But, this also matches lines like
.L.bar.constprop.0:(which are used on powerpc64-linux).
The "(?n)" doesn't do anything here either.  We should use "^" here
instead of just "\m".


	PR testsuite/88318
	* gcc.dg/independent-cloneids-1.c: Use ^ not \m.

From-SVN: r267063
2018-12-12 20:45:45 +01:00
Olivier Hainque
6881e3c13e Add support for SUBTARGET_OVERRIDE_OPTIONS on aarch64
* config/aarch64/aarch64.c (aarch64_override_options): Once arch,
	cpu and tune were validated, insert SUBTARGET_OVERRIDE_OPTIONS if
	defined.

From-SVN: r267060
2018-12-12 17:12:25 +00:00
Olivier Hainque
8921ccbb04 Use REGNUM macros in the definitions of aarch64 PROBE_STACK regs
* config/aarch64/aarch64.c (PROBE_STACK_FIRST_REG) : Redefine as
	R9_REGNUM instead of 9.
	(PROBE_STACK_SECOND_REG): Redefine as R10_REGNUM instead of 10.

From-SVN: r267059
2018-12-12 17:10:44 +00:00
Richard Earnshaw
7bd0ca1100 Fix PR number in my last commit
From-SVN: r267058
2018-12-12 16:31:12 +00:00
Jonathan Wakely
9e16052644 Overload std::distance and std::advance for path::iterator
Although filesystem::path::iterator is only a bidirectional iterator,
the underlying sequence has random access iterators (specifically, raw
pointers). This means std::distance and std::advance can be implemented
more efficiently than the generic versions which apply ++ and --
repeatedly.

	PR libstdc++/71044 (partial)
	* include/bits/fs_path.h (__path_iter_distance, __path_iter_advance):
	New friend functions to implement std::distance and std::advance more
	efficiently.
	(distance, advance): Add overloads for path::iterator.
	* testsuite/27_io/filesystem/path/itr/components.cc: Test new
	overload.

From-SVN: r267057
2018-12-12 16:13:49 +00:00
Jonathan Wakely
6b7c0b5559 PR libstdc++/80762 avoid ambiguous __constructible_from<void, void>
Ensure we don't try to instantiate __is_constructible_from<void, void>,
because there are two partial specializations that are equally good
matches.

	PR libstdc++/80762
	* include/bits/fs_path.h (path::_Path): Use remove_cv_t and is_void.
	* include/experimental/bits/fs_path.h (path::_Path): Likewise.
	* testsuite/27_io/filesystem/path/construct/80762.cc: New test.
	* testsuite/experimental/filesystem/path/construct/80762.cc: New test.

From-SVN: r267056
2018-12-12 16:13:43 +00:00
Joel Brobecker
5da5fefeeb require profiling support for gcc.dg/lto/20100430-1_0.c test
This test currently fails unexpectedly if GCC is configured with
--disable-gcov, because it requires -fprofile-arcs. This patch
fixes the issue by requiring profiling support in order to run
this test.

Tested with two compilers, one built with --disable-gcov, resulting
in the test reporting an UNSUPPORTED result; and one built with gcov
support, resulting in 2 PASS tests.

gcc/testsuite/ChangeLog:

        * gcc.dg/lto/20100430-1_0.c: Add dg-require-profiling requirement.

From-SVN: r267055
2018-12-12 14:22:37 +00:00
Tom de Vries
d665cd9b13 [libbacktrace] Add allocfail.sh test-case
Add test-case that forces alloc.c functions to fail, and check whether fail
handling is robust.

This is the test-case for "[libbacktrace] Fix segfault upon allocation
failure".  Without that patch, this test-case fails like this:
...
allocfail.sh: line 71: 26041 Segmentation fault      (core dumped) \
  ./allocfail $i > /dev/null 2>&1
Unallowed fail found: 13
FAIL allocfail.sh (exit status: 1)
...

This is a seperate patch because the test-case is nontrivial.

Bootstrapped and reg-tested on x86_64.

2018-12-12  Tom de Vries  <tdevries@suse.de>

	* Makefile.am (TESTS): Add allocfail.sh.
	(check_PROGRAMS): Add allocfail.
	* Makefile.in: Regenerate.
	* instrumented_alloc.c: New file.  Redefine malloc and realloc.
	Include alloc.c.
	* allocfail.c: New file.
	* allocfail.sh: New file.

From-SVN: r267054
2018-12-12 13:50:51 +00:00
Eric Botcazou
bf4eca2e56 re PR target/86806 (SPARC port needs updating for CVE-2017-5753)
PR target/86806
	* config/sparc/sparc.md (unspecv): Add UNSPECV_SPECULATION_BARRIER.
	(speculation_barrier): New instruction for V9.

From-SVN: r267053
2018-12-12 11:40:28 +00:00
Andreas Schwab
9c47a01994 Don't mark stack pointer as clobbered in asm
* config/linux/ia64/futex.h (sys_futex0): Don't mark r12 as
clobbered.

From-SVN: r267052
2018-12-12 11:22:42 +00:00
Rasmus Villemoes
5a2580b6ad libgcc: rs6000: tramp.S: fix placement of .cfi_endproc for __trampoline_setup
Currently, .cfi_endproc and FUNC_END(__trampoline_setup) are placed
inside the #else branch of an "#if defined (__VXWORKS__) ...", so
non-pic vxworks does not get proper CFI nor a .size directive for
__trampoline_setup. I assume there's no magic reason for that (which
would warrant a comment), so move them outside.

From-SVN: r267051
2018-12-12 10:12:36 +00:00
Iain Sandoe
0c1342dfad rs6000 - add missed hunk
This add the hunk
	(macho_call_template): Remove.

missed from r267049

From-SVN: r267050
2018-12-12 09:25:13 +00:00
Segher Boessenkool
be611c9c5a rs6000 - Fix PR target/88343
The PR is about unnecessary saves of the pic base register, it shows on m32 Linux and m32/m64 Darwin.

The fix is to check that we are in a pic mode and that the picbase has actually been used.
As a bonus, some #ifdef’d TARGET_MACHO code is no longer required.

2018-12-12 Segher Boessenkool  <segher@kernel.crashing.org>
	   Iain Sandoe  <iain@sandoe.co.uk>

	PR target/88343
	* config/rs6000/rs6000.c (save_reg_p): Do not save the picbase reg
	unless it has been used.
	(first_reg_to_save): Remove dead code.


Co-Authored-By: Iain Sandoe <iain@sandoe.co.uk>

From-SVN: r267049
2018-12-12 08:53:49 +00:00
Iain Sandoe
aa3a2eca42 rs6000, update Darwin call handling to latest scheme.
This patch mormalises Darwin's call handling to match the scheme
recently introduced and gives it target-specific call expanders.

2018-12-12  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/rs6000-protos.h (rs6000_call_darwin): New.
	(rs6000_sibcall_darwin): New. (macho_call_template): Remove.
	* config/rs6000/rs6000.c (get_prev_label): Forward declaration. 
	(rs6000_call_template_1): Handle Darwin.
	(macho_call_template): Remove.
	(rs6000_call_sysv): Remove handling for Darwin.
	(rs6000_call_darwin_1, rs6000_call_darwin): New
	(rs6000_sibcall_darwin): New.
	* config/rs6000/rs6000.md (define_expand “call”): Handle Darwin
	with its own expander. (define_expand “call_value”): Likewise.
	(define_expand “sibcall”): Likewise.
	(define_expand “sibcall_value”): Likewise.
	(call_nonlocal_sysv): Remove Darwin special-casing.
	(call_value_nonlocal_sysv): Likewise.

From-SVN: r267048
2018-12-12 08:47:16 +00:00
Jakub Jelinek
13de99bc7d re PR c++/88446 (__builtin_is_constant_evaluated rejects some converted constant expressions.)
PR c++/88446
	* cp-tree.h (maybe_constant_value): Add manifestly_const_eval
	argument.
	* constexpr.c (struct constexpr_call): Rename pretend_const_required
	member to manifestly_const_eval.
	(struct constexpr_ctx): Likewise.
	(constexpr_call_hasher::equal): Adjust users.
	(cxx_eval_builtin_function_call): Likewise.  Formatting fix.
	(cxx_eval_call_expression): Adjust users.
	(cxx_eval_outermost_constant_expr, maybe_constant_init_1,
	maybe_constant_init): Rename pretend_const_required argument to
	manifestly_const_eval, adjust function comments.
	(maybe_constant_value): Add manifestly_const_eval argument.  If true,
	don't cache and call cxx_eval_outermost_constant_expr with true as
	manifestly_const_eval.
	* decl.c (compute_array_index_type_loc): Call maybe_constant_value
	with true as manifestly_const_eval.

	* g++.dg/cpp2a/is-constant-evaluated3.C: New test.

From-SVN: r267047
2018-12-12 09:44:27 +01:00
Iain Sandoe
66e30545db rs6000, darwin - fix bootstrap.
Recent changes to the lowerings for call handling in rs6000
have broken bootstrap for powerpc-darwin.  This patch modifies
the calls to handle Darwin asa subset, a subsequent patch will
split Darwin out.

2018-12-12  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/darwin.md (call_indirect_nonlocal_darwin64): Remove.
	(call_nonlocal_darwin64): Remove.
	(call_value_indirect_nonlocal_darwin64): Remove.
	(call_value_nonlocal_darwin64): Remove.
	* config/rs6000/rs6000.c (rs6000_call_template_1): Handle Darwin with
	the same asm output as AIX/ELFv2.  (rs6000_call_sysv): Preserve the
	CALL_LONG flag when needed for Darwin.
	* config/rs6000/rs6000.md (define expand “call”): Expand Darwin as
	per sysv.
	(define_expand “call_value”): Likewise.
	(define_expand “sibcall”): Likewise.
	(define_expand “sibcall_value”): Likewise.
	(call_indirect_nonlocal_sysv): Mark the clobber mode P.
	(call_nonlocal_sysv): Likewise.
	(call_nonlocal_sysv_secure): Likewise.
	(call_value_indirect_nonlocal_sysv): Likewise.
	(call_value_nonlocal_sysv): Likewise.
	(call_value_nonlocal_sysv_secure): Likewise.
	(call_local64): Mark the clobber DI.
	(call_value_local64): Likewise.

From-SVN: r267046
2018-12-12 08:42:28 +00:00
Jakub Jelinek
0d7924f2e7 P0595R2 - is_constant_evaluated
P0595R2 - is_constant_evaluated
	* include/bits/c++config (_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED):
	Define if __builtin_is_constant_evaluated is available.
	* include/std/type_traits (std::is_constant_evaluated): New constexpr
	inline function.
	* testsuite/20_util/is_constant_evaluated/1.cc: New test.
	* testsuite/20_util/is_constant_evaluated/noexcept.cc: New test.

From-SVN: r267045
2018-12-12 09:31:01 +01:00
Jakub Jelinek
cce3ae91f2 re PR c++/88449 (__builtin_is_constant_evaluated misbehaves due to constexpr call caching)
PR c++/88449
	* constexpr.c (struct constexpr_call): Add pretend_const_required
	member.
	(constexpr_call_hasher::equal): Return false if pretend_const_required
	members differ.
	(cxx_eval_call_expression): Adjust new_call initialization.  Hash in
	ctx->pretend_const_required.

	* g++.dg/cpp2a/is-constant-evaluated1.C: Change from dg-do compile
	to dg-do run.
	(e): Adjust comment with correct expected value.
	(main): Expect e == 1.
	* g++.dg/cpp2a/is-constant-evaluated2.C: New test.

From-SVN: r267044
2018-12-12 09:28:43 +01:00
Steven G. Kargl
2f00fb3d0b re PR fortran/88155 (ICE in gfc_format_decoder, at fortran/error.c:947)
2018-12-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88155
	* primary.c (gfc_match_structure_constructor):  Set the locus of
	an expression to avoid a NULL pointer dereference.

2018-12-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88155
	* gfortran.dg/pr70870_1.f90: Update testcase to use -std=gnu.
	* gfortran.dg/pr88155.f90: New test.

From-SVN: r267041
2018-12-12 00:53:08 +00:00
GCC Administrator
85c223fa12 Daily bump.
From-SVN: r267040
2018-12-12 00:16:18 +00:00
Steven G. Kargl
3d07fb21d2 re PR fortran/88249 (ICE in gfc_resolve_filepos, at fortran/io.c:2853)
2018-12-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88249
	* gfortran.h: Update prototype for gfc_resolve_filepos().
	* io.c (gfc_resolve_filepos): Check for UNIT number if ERR= is present.
	Use passed in locus for error message.
	* resolve.c (gfc_resolve_code): Pass locus in gfc_resolve_filepos()
	call.

2018-12-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88249
	* gfortran.dg/pr88249.f90: New test.

From-SVN: r267035
2018-12-11 23:13:19 +00:00
Eric Botcazou
3b31a90608 re PR ada/88429 (libada build fails with --disable-shared)
libada/
	PR ada/88429
	* configure.ac (default_gnatlib_target): Set to gnatlib instead of
	gnatlib-plain if --disable-shared.
	* configure: Regenerate.
	* Makefile.in (all): Replace gnatlib prerequisite with libada.
	(ADA_RTS_SUBDIR): Delete.
	(libada): New target, renamed from...
	(gnatlib): ...this.  Merge with other library targets.
	(gnatlib-plain): Delete.
	(install-gnatlib): Rename to...
	(install-libada): ...this.
	(install): Replace install-gnatlib prerequisite with install-libada.
gcc/ada/
	PR ada/88429
	* gcc-interface/Makefile.in (./stamp-gnatlib1-$(RTSDIR)): Also pass
	MULTISUBDIR to sub-make and add quotes around $(THREAD_KIND).
	(gnatlib-shared-dual): Also pass PICFLAG_FOR_TARGET to sub-make.
	(gnatlib-sjlj): Also pass MULTISUBDIR to sub-make, but do not pass
	PICFLAG_FOR_TARGET.
	(gnatlib-zcx): Likewise.

From-SVN: r267034
2018-12-11 23:04:39 +00:00
Ian Lance Taylor
be68937be2 runtime: use _URC_FAILURE on ARM32
ARM32 EABI unwinder does not define _URC_NORMAL_STOP. Instead,
    it has _URC_FAILURE. Use _URC_FAILURE there.
    
    Should fix ARM32 build.
    
    Reviewed-on: https://go-review.googlesource.com/c/153417

From-SVN: r267033
2018-12-11 20:50:59 +00:00
Jakub Jelinek
582d2481f7 re PR c++/87861 (ICE in output_constructor_regular_field, at varasm.c:5165)
PR c++/87861
	* class.c (build_vtbl_initializer): For TARGET_VTABLE_USES_DESCRIPTORS
	bump index for each added word.
	* constexpr.c (find_array_ctor_elt): Add forward declaration.
	(cxx_eval_call_expression): Handle TARGET_VTABLE_USES_DESCRIPTORS
	vtable calls.
	(cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Divide token
	by TARGET_VTABLE_USES_DESCRIPTORS if non-zero.

From-SVN: r267032
2018-12-11 21:37:53 +01:00
Jakub Jelinek
3c0517a653 re PR tree-optimization/80520 (Performance regression from missing if-conversion)
PR tree-optimization/80520
	* gcc.dg/tree-ssa/split-path-11.c (foo): Make the test ilp32 target
	clean.

From-SVN: r267031
2018-12-11 21:28:35 +01:00
Marek Polacek
3c393a2c01 PR c++/86608 - reading constexpr volatile variable.
* constexpr.c (potential_constant_expression_1): Check want_rval
	instead of checking if we have a decl.
	* decl2.c (decl_maybe_constant_var_p): Don't consider volatile
	constexpr variables as maybe constant.

	* g++.dg/cpp0x/constexpr-volatile2.C: New test.
	* g++.dg/cpp0x/pr65327.C: Add dg-error.

From-SVN: r267030
2018-12-11 18:53:03 +00:00
Paolo Carlini
6b9ef867ec decl.c (grokvardecl): Add location_t parameter and use it in build_lang_decl_loc and build_decl calls.
/cp
2018-12-11  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokvardecl): Add location_t parameter and use it
	in build_lang_decl_loc and build_decl calls.
	(grokdeclarator): Move up loc declaration and use it in the
	grokvardecl call too.

/testsuite
2018-12-11  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/pr53037-4.C: Test the first two locations too.

From-SVN: r267029
2018-12-11 17:47:56 +00:00
Paolo Carlini
f214a6415a decl.c (grokvardecl): Add location_t parameter and use it in build_lang_decl_loc and build_decl calls.
/cp
2018-12-11  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokvardecl): Add location_t parameter and use it
	in build_lang_decl_loc and build_decl calls.
	(grokdeclarator): Move up loc declaration and use it in the
	grokvardecl call too.

/testsuite
2018-12-11  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/pr53037-4.C: Test the first two locations too.

From-SVN: r267028
2018-12-11 17:47:47 +00:00
Paolo Carlini
296e379a50 decl2.c (grokvardecl): Add location_t parameter and use it in build_lang_decl_loc and build_decl calls.
/cp
2018-12-11  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl2.c (grokvardecl): Add location_t parameter and use it
	in build_lang_decl_loc and build_decl calls.
	(grokdeclarator): Move up loc declaration and use it in the
	grokvardecl call too.

/testsuite
2018-12-11  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/pr53037-4.C: Test the first two locations too.

From-SVN: r267027
2018-12-11 17:46:42 +00:00
Jakub Jelinek
ccef67160c re PR tree-optimization/88444 (ICE: tree check: expected ssa_name, have integer_cst in live_on_edge, at tree-vrp.c:468; or ICE: tree check: expected ssa_name, have integer_cst in get_value_range, at vr-values.c:84)
PR tree-optimization/88444
	* tree-vrp.c (register_edge_assert_for_2): Only register assertions
	for conversions if rhs1 is a SSA_NAME.

	* gcc.dg/pr88444.c: New test.

From-SVN: r267026
2018-12-11 18:16:48 +01:00
Dimitar Dimitrov
5b238a4591 cfgexpand.c (asm_clobber_reg_is_valid): Also produce error when stack pointer is clobbered.
gcc/
2018-12-11  Dimitar Dimitrov  <dimitar@dinux.eu>

	* cfgexpand.c (asm_clobber_reg_is_valid): Also produce
	error when stack pointer is clobbered.
	(expand_asm_stmt): Refactor clobber check in separate function.

gcc/testsuite/
2018-12-11  Dimitar Dimitrov  <dimitar@dinux.eu>

	* gcc.target/i386/pr52813.c: New test.

From-SVN: r267025
2018-12-11 15:50:51 +00:00
Eric Botcazou
f9d4d3cf93 Fix stack offsets and alloca alignments on ppc-vxworks
* config/rs6000/vxworks.h (RS6000_STARTING_FRAME_OFFSET): Define,
	accounting for STACK_BOUNDARY 128 regardless of TARGET_ALTIVEC/VSX.
	(STACK_DYNAMIC_OFFSET): Likewise.

From-SVN: r267024
2018-12-11 15:03:29 +00:00
Jakub Jelinek
61d1d9a664 re PR target/88425 (suboptimal code for a<imm?-1:0)
PR target/88425
	* config/i386/i386.md (*x86_mov<SWI48:mode>cc_0_m1_neg_leu<SWI:mode>):
	New define_insn_and_split.

	* gcc.target/i386/pr88425.c: New test.

From-SVN: r267023
2018-12-11 15:50:22 +01:00
Jakub Jelinek
6d9391732b re PR sanitizer/88426 (Compiler crash if use special code with command line switch -fsanitize=float-cast-overflow)
PR sanitizer/88426
	* c-convert.c (convert): Call c_fully_fold before calling
	ubsan_instrument_float_cast.

	* c-c++-common/ubsan/float-cast-overflow-11.c: New test.

From-SVN: r267022
2018-12-11 14:51:44 +01:00
Richard Biener
ef9fc3ba34 re PR middle-end/88448 (gnat.dg/opt66.adb etc. FAIL)
2018-12-11  Richard Biener  <rguenther@suse.de>

	PR middle-end/88448
	PR middle-end/88415
	* gimple.c (gimple_assign_set_rhs_with_ops): Revert previous
	change.
	* tree-complex.c (update_complex_assignment): Properly transfer
	or clean EH info around gimple_assign_set_rhs_with_ops.

From-SVN: r267021
2018-12-11 13:00:49 +00:00
Nick Clifton
921a4c3057 Fix a failure in the libiberty testsuite by increasing the demangle recursion limit to 2048.
PR 88409
	* demangle.h (DEMANGLE_RECURSION_LIMIT): Increase to 2048.

From-SVN: r267020
2018-12-11 11:59:53 +00:00
Richard Earnshaw
315fdae8f9 [aarch64] PR target/87369 Prefer bsl/bit/bif for copysign
The copysign operations will almost always be performed on values in
floating-point registers.  As such, we do not want the compiler to
simplify the operations into code sequences that can only be done
using the general-purpose register set.  Unfortunately, this is what
is currently happening.

Fortunately, it seems quite unlikely that copysign() will be
subsequently followed by other logical operations on the values
involved, so I think it is acceptable to use an unspec here.  This
allows us to preserve the operation in a form that allows the register
allocator to make the right choice later on, without limitation on the
final form of the operation (well, if we do end up using the gp
register bank, we get a dead constant load that we cannot easily
eliminate at a late stage).

	PR target/37369
	* config/aarch64/iterators.md (sizem1): Add sizes for SFmode and DFmode.
	(Vbtype): Add SFmode mapping.
	* config/aarch64/aarch64.md (copysigndf3, copysignsf3): Delete.
	(copysign<GPF:mode>3): New expand pattern.
	(copysign<GPF:mode>3_insn): New insn pattern.

From-SVN: r267019
2018-12-11 11:26:15 +00:00
Piotr Trojanek
c47fb5d9da [Ada] Add "Global => null" contracts to Ada.Calendar routines
Routines in Ada.Real_Time are already annotated with Global => null
contracts to suppress spurious warnings from the flow analysis in
GNATprove. This patch adds such contracts to Ada.Calendar. No change in
runtime behavior expected.

2018-12-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* libgnat/a-calend.ads: Add "Global => null" contracts to pure
	routines.

From-SVN: r267018
2018-12-11 11:12:41 +00:00
Hristian Kirtchev
921186579c [Ada] Spurious error with pragma Thread_Local_Storage
The following patch modifies the checks related to pragma
Thread_Local_Storage to correct a confusion in semantics which led to
spurious errors.

------------
-- Source --
------------

--  pack.ads

package Pack is
   type Arr is array (1 .. 5) of Boolean;

   type Arr_With_Default is array (1 .. 5) of Boolean
     with Default_Component_Value => False;

   type Int is new Integer range 1 .. 5;

   type Int_With_Default is new Integer range 1 .. 5
     with Default_Value => 1;

   protected type Prot_Typ is
      entry E;
   end Prot_Typ;

   type Rec_1 is record
      Comp : Integer;
   end record;

   type Rec_2 is record
      Comp : Int;
   end record;

   type Rec_3 is record
      Comp : Int_With_Default;
   end record;

   task type Task_Typ is
      entry E;
   end Task_Typ;
end Pack;

--  pack.adb

package body Pack is
   function F (Val : Int) return Int is
   begin
      if Val <= 1 then
         return 1;
      else
         return F (Val - 1) * Val;
      end if;
   end F;

   function F (Val : Int_With_Default) return Int_With_Default is
   begin
      if Val <= 1 then
         return 1;
      else
         return F (Val - 1) * Val;
      end if;
   end F;

   function F (Val : Integer) return Integer is
   begin
      if Val <= 1 then
         return 1;
      else
         return F (Val - 1) * Val;
      end if;
   end F;

   protected body Prot_Typ is
      entry E when True is begin null; end E;
   end Prot_Typ;

   task body Task_Typ is
   begin
      accept E;
   end Task_Typ;

   Obj_1 : Arr;                                                      --  OK
   pragma Thread_Local_Storage (Obj_1);

   Obj_2 : Arr := (others => True);                                  --  OK
   pragma Thread_Local_Storage (Obj_2);

   Obj_3 : Arr := (others => F (2) = Integer (3));                   --  ERROR
   pragma Thread_Local_Storage (Obj_3);

   Obj_4 : Arr_With_Default;                                         --  ERROR
   pragma Thread_Local_Storage (Obj_4);

   Obj_5 : Arr_With_Default := (others => True);                     --  OK
   pragma Thread_Local_Storage (Obj_5);

   Obj_6 : Arr_With_Default := (others => F (2) = Integer (3));      --  ERROR
   pragma Thread_Local_Storage (Obj_6);

   Obj_7 : Integer;                                                  --  OK
   pragma Thread_Local_Storage (Obj_7);

   Obj_8 : Integer := 1;                                             --  OK
   pragma Thread_Local_Storage (Obj_8);

   Obj_9 : Integer := F (2);                                         --  ERROR
   pragma Thread_Local_Storage (Obj_9);

   Obj_10 : Int;                                                     --  OK
   pragma Thread_Local_Storage (Obj_10);

   Obj_11 : Int := 1;                                                --  OK
   pragma Thread_Local_Storage (Obj_11);

   Obj_12 : Int := F (2);                                            --  ERROR
   pragma Thread_Local_Storage (Obj_12);

   Obj_13 : Int_With_Default;                                        --  ERROR
   pragma Thread_Local_Storage (Obj_13);

   Obj_14 : Int_With_Default := 1;                                   --  OK
   pragma Thread_Local_Storage (Obj_14);

   Obj_15 : Int_With_Default := F (2);                               --  ERROR
   pragma Thread_Local_Storage (Obj_15);

   Obj_16 : Prot_Typ;                                                --  ERROR
   pragma Thread_Local_Storage (Obj_16);

   Obj_17 : Rec_1;                                                   --  OK
   pragma Thread_Local_Storage (Obj_17);

   Obj_18 : Rec_1 := (others => 1);                                  --  OK
   pragma Thread_Local_Storage (Obj_18);

   Obj_19 : Rec_1 := (others => F (2));                              --  ERROR
   pragma Thread_Local_Storage (Obj_19);

   Obj_20 : Rec_2;                                                   --  OK
   pragma Thread_Local_Storage (Obj_20);

   Obj_21 : Rec_2 := (others => 1);                                  --  OK
   pragma Thread_Local_Storage (Obj_21);

   Obj_22 : Rec_2 := (others => F (2));                              --  ERROR
   pragma Thread_Local_Storage (Obj_22);

   Obj_23 : Rec_3;                                                   --  ERROR
   pragma Thread_Local_Storage (Obj_23);

   Obj_24 : Rec_3 := (others => 1);                                  --  OK
   pragma Thread_Local_Storage (Obj_24);

   Obj_25 : Rec_3 := (others => F (2));                              --  ERROR
   pragma Thread_Local_Storage (Obj_25);

   Obj_26 : Task_Typ;                                                --  ERROR
   pragma Thread_Local_Storage (Obj_26);
end Pack;

----------------------------
-- Compilation and output --
----------------------------

$ gcc -c pack.adb
pack.adb:47:04: Thread_Local_Storage variable "Obj_4" is improperly
  initialized
pack.adb:47:04: only allowed initialization is explicit "null", static
  expression or static aggregate
pack.adb:62:04: Thread_Local_Storage variable "Obj_9" is improperly
  initialized
pack.adb:62:04: only allowed initialization is explicit "null", static
  expression or static aggregate
pack.adb:71:04: Thread_Local_Storage variable "Obj_12" is improperly
  initialized
pack.adb:71:04: only allowed initialization is explicit "null", static
  expression or static aggregate
pack.adb:74:04: Thread_Local_Storage variable "Obj_13" is improperly
  initialized
pack.adb:74:04: only allowed initialization is explicit "null", static
  expression or static aggregate
pack.adb:80:04: Thread_Local_Storage variable "Obj_15" is improperly
  initialized
pack.adb:80:04: only allowed initialization is explicit "null", static
  expression or static aggregate
pack.adb:83:04: Thread_Local_Storage variable "Obj_16" is improperly
  initialized
pack.adb:83:04: only allowed initialization is explicit "null", static
  expression or static aggregate
pack.adb:92:04: Thread_Local_Storage variable "Obj_19" is improperly
  initialized
pack.adb:92:04: only allowed initialization is explicit "null", static
  expression or static aggregate
pack.adb:101:04: Thread_Local_Storage variable "Obj_22" is improperly
  initialized
pack.adb:101:04: only allowed initialization is explicit "null", static
  expression or static aggregate
pack.adb:104:04: Thread_Local_Storage variable "Obj_23" is improperly
  initialized
pack.adb:104:04: only allowed initialization is explicit "null", static
  expression or static aggregate
pack.adb:110:04: Thread_Local_Storage variable "Obj_25" is improperly
  initialized
pack.adb:110:04: only allowed initialization is explicit "null", static
  expression or static aggregate
pack.adb:113:04: Thread_Local_Storage variable "Obj_26" is improperly
  initialized
pack.adb:113:04: only allowed initialization is explicit "null", static
  expression or static aggregate

2018-12-11  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* freeze.adb (Check_Pragma_Thread_Local_Storage): Use the
	violating set to diagnose detect an illegal initialization,
	rather than the complement of the OK set.
	(Freeze_Object_Declaration): Factorize code in
	Has_Default_Initialization.
	(Has_Default_Initialization, Has_Incompatible_Initialization):
	New routines.

From-SVN: r267017
2018-12-11 11:12:37 +00:00