Commit Graph

161833 Commits

Author SHA1 Message Date
Uros Bizjak 8b8003ed54 re PR target/85591 (__builtin_cpu_is() is not detecting bdver2 with Model = 0x02)
PR target/85591
	* config/i386/cpuinfo.c (get_amd_cpu): Return
	AMDFAM15H_BDVER2 for AMDFAM15H model 0x2.

From-SVN: r261036
2018-05-31 21:45:54 +02:00
Jonathan Wakely 9534a5e62d PR libstdc++/78870 support std::filesystem on Windows
PR libstdc++/78870 support std::filesystem on Windows
	* config.h.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Check for link, readlink and symlink.
	* include/bits/fs_path.h (path::operator/=(const path&)): Move
	definition out of class body.
	(path::is_absolute(), path::_M_append(path)): Likewise.
	(operator<<(basic_ostream, const path&)): Use std::quoted directly.
	(operator>>(basic_istream, path&)): Likewise.
	(u8path): Reorder definitions and fix Windows implementation.
	(path::is_absolute()): Define inline and fix for Windows.
	[!_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
	Define POSIX version inline.
	(path::_M_append(path)): Define inline.
	* include/experimental/bits/fs_path.h (path::is_absolute()): Move
	definition out of class body.
	(operator<<(basic_ostream, const path&)): Fix type of delimiter and
	escape characters.
	(operator>>(basic_istream, path&)): Likewise.
	(path::is_absolute()): Define inline and fix for Windows.
	* src/filesystem/dir-common.h (__gnu_posix): New namespace.
	(__gnu_posix::char_type, __gnu_posix::DIR, __gnu_posix::dirent)
	(__gnu_posix::opendir, __gnu_posix::readdir, __gnu_posix::closedir):
	Define as adaptors for Windows functions/types or as
	using-declarations for POSIX functions/types.
	(_Dir_base, get_file_type): Qualify names to use declarations from
	__gnu_posix namespace.
	(_Dir_base::is_dor_or_dotdot): New helper functions.
	* src/filesystem/dir.cc (_Dir, recursive_directory_iterator): Qualify
	names to use declarations from __gnu_posix namespace.
	* src/filesystem/ops-common.h (__gnu_posix): New nested namespace.
	(__gnu_posix::open, __gnu_posix::close, __gnu_posix::stat_type)
	(__gnu_posix::stat, __gnu_posix::lstat, __gnu_posix::mode_t)
	(__gnu_posix::chmod, __gnu_posix::mkdir, __gnu_posix::getcwd)
	(__gnu_posix::chdir, __gnu_posix::utimbuf, __gnu_posix::utime)
	(__gnu_posix::rename, __gnu_posix::truncate, __gnu_posix::char_type):
	Define as adaptors for Windows functions/types or as
	using-declarations for POSIX functions/types.
	(stat_type, do_copy_file): Qualify names to use declarations from
	__gnu_posix namespace.
	(do_space): Declare new function.
	(make_file_type): Only use S_ISLNK if defined.
	* src/filesystem/ops.cc (char_ptr, filesystem::canonical): Use
	path::value_type not char.
	(filesystem::copy, create_dir, filesystem::create_directory): Qualify
	names to use declarations from __gnu_posix namespace.
	(filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
	add implementation for Windows.
	(filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
	(filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
	[!_PC_PATH_MAX]: Don't use pathconf.
	[PATH_MAX]: Use if defined.
	(filesystem::current_path(const path&, error_code&))
	(filesystem::equivalent, do_stat, filesystem::hard_link_count)
	(filesystem::last_write_time, filesystem::permissions): Use names
	from __gnu_posix.
	(filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
	(filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
	implementation for Windows.
	(filesystem::rename, filesystem::resize_file): Use names from
	__gnu_posix.
	(filesystem::space): Use do_space.
	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Get absolute path to directory.
	(filesystem::status, filesystem::symlink_status): Use names from
	__gnu_posix.
	(filesystem::temp_directory_path): Add implementation for Windows.
	* src/filesystem/path.cc (dot): Define constant.
	(path::replace_extension): Use dot.
	(path::_M_find_extension): Likewise. Use path::string_type not
	std::string.
	(path::_M_split_cmpts): Use dot.
	(filesystem_error::_M_get_what): Use u8string() not native().
	* src/filesystem/std-dir.cc (_Dir, recursive_directory_iterator):
	Qualify names to use declarations from __gnu_posix namespace.
	* src/filesystem/std-ops.cc (filesystem::absolute(const path&)): Use
	correct error_code.
	(filesystem::absolute(const path&, error_code&)): Add implementation
	for Windows.
	(char_ptr, filesystem::canonical): Use path::value_type not char.
	(do_copy_file): Use names from __gnu_posix.
	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Do not use fchmod, fchmodat or
	sendfile.
	(filesystem::copy, create_dir, filesystem::create_directory): Qualify
	names to use declarations from __gnu_posix namespace.
	(filesystem::create_hard_link): Check HAVE_LINK autoconf macro and
	add implementation for Windows.
	(filesystem::create_symlink): Check HAVE_SYMLINK autoconf macro.
	(filesystem::current_path(error_code&)): Use __gnu_posix::getcwd.
	[!_PC_PATH_MAX]: Don't use pathconf.
	[PATH_MAX]: Use if defined.
	(filesystem::current_path(const path&, error_code&))
	(filesystem::equivalent, do_stat, filesystem::hard_link_count)
	(filesystem::last_write_time, filesystem::permissions): Use names
	from __gnu_posix.
	(filesystem::read_symlink): Check HAVE_READLINK autoconf macro.
	(filesystem::remove) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Add
	implementation for Windows.
	(filesystem::rename, filesystem::resize_file): Use names from
	__gnu_posix.
	(do_space): Define.
	(filesystem::space): Use do_space.
	(filesystem::status, filesystem::symlink_status): Use names from
	__gnu_posix.
	(filesystem::temp_directory_path): Add implementation for Windows.
	* src/filesystem/std-path.cc
	[_GLIBCXX_FILESYSTEM_IS_WINDOWS] (path::operator/=(const path&)):
	Define for Windows.
	(dot): Define constant.
	(path::replace_extension, is_dot): Use dot.
	(path::lexically_normal): Check _M_type instead of calling
	non-existent function.
	(path::_M_find_extension): Use dot. Use path::string_type not
	std::string.
	(path::_M_split_cmpts): Use dot.
	(filesystem_error::_M_get_what): Use u8string() not native().
	* testsuite/27_io/filesystem/iterators/directory_iterator.cc: Do not
	use symlinks.
	* testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
	Likewise.
	* testsuite/27_io/filesystem/operations/absolute.cc: Use
	__gnu_test::root_path() instead of "/" and add Windows-specific tests.
	* testsuite/27_io/filesystem/operations/canonical.cc: Use
	path::string() to get narrow string, not path::native().
	* testsuite/27_io/filesystem/operations/copy.cc: Construct fstreams
	with std::filesystem::path not std::basic_string.
	* testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
	* testsuite/27_io/filesystem/operations/exists.cc: Use
	__gnu_test::root_path() instead of "/".
	* testsuite/27_io/filesystem/operations/is_empty.cc: Construct
	fstreams with std::filesystem::path not std::basic_string.
	* testsuite/27_io/filesystem/operations/last_write_time.cc: Use
	path::string() to get narrow string.
	* testsuite/27_io/filesystem/operations/space.cc: Check results for
	errors, expect sensible values otherwise.
	* testsuite/27_io/filesystem/operations/temp_directory_path.cc: Add
	helpers for adjusting the environment on Windows.
	* testsuite/27_io/filesystem/path/append/path.cc: Test
	Windows-specific behaviour.
	* testsuite/27_io/filesystem/path/construct/format.cc: Fix creation
	of path::string_type objects.
	* testsuite/27_io/filesystem/path/construct/locale.cc: Compare native
	string to wide string on Windows.
	* testsuite/27_io/filesystem/path/decompose/root_directory.cc: Allow
	for backslash as root-directory.
	* testsuite/27_io/filesystem/path/decompose/stem.cc: Use
	path::string() to get narrow string.
	* testsuite/27_io/filesystem/path/itr/traversal.cc: Test Windows-style
	paths.
	* testsuite/27_io/filesystem/path/native/string.cc: Use string_type
	not std::string.
	* testsuite/27_io/filesystem/path/query/is_absolute.cc: Adjust for
	different definintion of absolute paths on Windows.
	* testsuite/experimental/filesystem/iterators/directory_iterator.cc:
	Do not use symlinks.
	* testsuite/experimental/filesystem/operations/absolute.cc: Test
	Windows behaviour.
	* testsuite/experimental/filesystem/operations/copy.cc: Construct
	fstreams with NTCTS not std::basic_string.
	* testsuite/experimental/filesystem/operations/copy_file.cc: Likewise.
	* testsuite/experimental/filesystem/operations/exists.cc: Use
	__gnu_test::root_path() instead of "/".
	* testsuite/experimental/filesystem/operations/is_empty.cc: Construct
	fstreams with NTCTS not std::basic_string.
	* testsuite/experimental/filesystem/operations/last_write_time.cc:
	Use path::string() to get narrow string.
	* testsuite/experimental/filesystem/operations/space.cc: Use
	__gnu_test::root_path() instead of "/".
	* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
	Add helpers for adjusting the environment on Windows.
	* testsuite/experimental/filesystem/path/append/path.cc: Use
	path::string() to get narrow strings for comparisons.
	* testsuite/experimental/filesystem/path/concat/path.cc: Likewise.
	* testsuite/experimental/filesystem/path/decompose/root_directory.cc:
	Likewise.
	* testsuite/experimental/filesystem/path/decompose/stem.cc: Likewise.
	* testsuite/experimental/filesystem/path/native/string.cc: Use
	string_type not std::string.
	* testsuite/experimental/filesystem/path/query/is_absolute.cc:
	Adjust for different definintion of absolute paths on Windows.
	* testsuite/util/testsuite_fs.h (__gnu_test::root_path()): New
	function.
	(__gnu_test::scoped_file): Construct fstreams with NTCTS not
	std::basic_string.

From-SVN: r261034
2018-05-31 20:20:24 +01:00
Uros Bizjak c931509704 sse.md (avx_vec_concat<mode>): Substitute concat_tg_mode mode attribute with xtg_mode.
* config/i386/sse.md (avx_vec_concat<mode>):
	Substitute concat_tg_mode mode attribute with xtg_mode.
	(<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
	(concat_tg_mode): Remove mode attribute.

From-SVN: r261031
2018-05-31 19:51:27 +02:00
Martin Sebor d258f4aa69 PR c/82063 - issues with arguments enabled by -Wall
gcc/c-family/ChangeLog:

	PR c/82063
	* c.opt (-Wno-alloc-size-larger-than): New option.
	* doc/invoke.texi (-Walloc-size-larger-than): Update.

gcc/ChangeLog:

	PR c/82063
	* calls.c (alloc_max_size): Correct a logic error/typo.
	Treat excessive arguments as infinite.  Warn for invalid arguments.

gcc/testsuite/ChangeLog:

	PR c/82063
	* gcc.dg/Walloc-size-larger-than-1.c: New test.
	* gcc.dg/Walloc-size-larger-than-10.c: New test.
	* gcc.dg/Walloc-size-larger-than-11.c: New test.
	* gcc.dg/Walloc-size-larger-than-12.c: New test.
	* gcc.dg/Walloc-size-larger-than-13.c: New test.
	* gcc.dg/Walloc-size-larger-than-14.c: New test.
	* gcc.dg/Walloc-size-larger-than-15.c: New test.
	* gcc.dg/Walloc-size-larger-than-16.c: New test.
	* gcc.dg/Walloc-size-larger-than-17.c: New test.
	* gcc.dg/Walloc-size-larger-than-2.c: New test.
	* gcc.dg/Walloc-size-larger-than-3.c: New test.
	* gcc.dg/Walloc-size-larger-than-4.c: New test.
	* gcc.dg/Walloc-size-larger-than-5.c: New test.
	* gcc.dg/Walloc-size-larger-than-6.c: New test.
	* gcc.dg/Walloc-size-larger-than-7.c: New test.
	* gcc.dg/Walloc-size-larger-than-8.c: New test.
	* gcc.dg/Walloc-size-larger-than-9.c: New test.
	* gcc.dg/Walloc-size-larger-than.c: New test.

From-SVN: r261030
2018-05-31 11:04:43 -06:00
H.J. Lu 3217e69485 x86: Re-enable partial_reg_dependency and movx for Haswell
r254152 disabled partial_reg_dependency and movx for Haswell and newer
Intel processors.  r258972 restored them for skylake-avx512.  For Haswell,
movx improves performance.  But partial_reg_stall may be better than
partial_reg_dependency in theory.  We will investigate performance impact
of partial_reg_stall vs partial_reg_dependency on Haswell for GCC 9.  In
the meantime, this patch restores both partial_reg_dependency and mox for
Haswell in GCC 8.

On Haswell, improvements for EEMBC benchmarks with

-mtune-ctrl=movx,partial_reg_dependency -Ofast -march=haswell

vs

-Ofast -mtune=haswell

are

automotive
=========
  aifftr01 (default) - goodperf: Runtime improvement of   2.6% (time).
  aiifft01 (default) - goodperf: Runtime improvement of   2.2% (time).

networking
=========
  ip_pktcheckb1m (default) - goodperf: Runtime improvement of   3.8% (time).
  ip_pktcheckb2m (default) - goodperf: Runtime improvement of   5.2% (time).
  ip_pktcheckb4m (default) - goodperf: Runtime improvement of   4.4% (time).
  ip_pktcheckb512k (default) - goodperf: Runtime improvement of   4.2% (time).

telecom
=========
  fft00data_1 (default) - goodperf: Runtime improvement of   8.4% (time).
  fft00data_2 (default) - goodperf: Runtime improvement of   8.6% (time).
  fft00data_3 (default) - goodperf: Runtime improvement of   9.0% (time).

	PR target/85829
	* config/i386/x86-tune.def: Re-enable partial_reg_dependency
	and movx for Haswell.

From-SVN: r261028
2018-05-31 08:37:22 -07:00
Chung-Lin Tang bd1cab35c5 re PR middle-end/85879 (ICE in expand_debug_locations, at cfgexpand.c:5405)
Fix PR middle-end/85879

	gcc/
	* gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
	when emitting error on private/firstprivate reductions.
	* omp-low.c (lower_omp_target): Avoid reference-type processing
	on pointers for firstprivate clause.

	gcc/testsuite/
	* gfortran.dg/goacc/pr77371-1.f90: New test.
	* gfortran.dg/goacc/pr77371-2.f90: New test.
	* gfortran.dg/goacc/pr85879.f90: New test.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>

From-SVN: r261025
2018-05-31 07:10:10 -07:00
Jonathan Wakely 22f1f4c790 PR libstdc++/85951 for make_signed/make_unsigned for character types
Because the wide character types are neither signed integer types nor
unsigned integer types they need to be transformed to an integral type
of the correct size and the lowest rank (which is not necessarily the
underlying type). Reuse the helpers for enumeration types to select the
correct integer.

The refactoring of __make_unsigned_selector and __make_signed_selector
slightly reduces the number of template instantiations and so reduces
memory usage.

	PR libstdc++/85951
	* include/std/type_traits [_GLIBCXX_USE_C99_STDINT_TR1]: Do not define
	uint_least16_t and uint_least32_t.
	(__make_unsigned<wchar_t>): Define unconditionally.
	(__make_unsigned_selector<_Tp, true, false>): Remove intermediate
	typedefs.
	(__make_unsigned_selector_base): New type to provide helper templates.
	(__make_unsigned_selector<_Tp, false, true>): Reimplement using
	__make_unsigned_selector_base helpers.
	(__make_unsigned<char16_t>, __make_unsigned<char32_t>): Define.
	(__make_signed_selector<_Tp, true, false>): Remove intermediate
	typedefs.
	(__make_signed<wchar_t>, __make_signed<char16_t>)
	(__make_signed<char32_t>)): Define unconditionally.
	* testsuite/20_util/make_signed/requirements/typedefs-3.cc: Check
	wchar_t, char16_t and char32_t are transformed correctly.
	* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust
	dg-error lineno.
	* testsuite/20_util/make_unsigned/requirements/typedefs-3.cc: Check
	wchar_t, char16_t and char32_t are transformed correctly.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Adjust
	dg-error lineno.

From-SVN: r261023
2018-05-31 13:18:19 +01:00
Eric Botcazou 2ae39fb2b0 stack_usage1.adb: Replace -fstack-usage with -Wstack-usage.
* gnat.dg/stack_usage1.adb: Replace -fstack-usage with -Wstack-usage.
	* gnat.dg/stack_usage1b.adb: Likewise.
	* gnat.dg/stack_usage1c.adb: Likewise.
	* gnat.dg/stack_usage3.adb: Likewise.
	* gnat.dg/stack_usage1_pkg.adb: Delete.

From-SVN: r261021
2018-05-31 11:30:46 +00:00
Eric Botcazou 78668dd094 store_merging_10.c: Turn dg-do compile into dg-do run.
* gcc.dg/store_merging_10.c: Turn dg-do compile into dg-do run.
	* gcc.dg/store_merging_11.c: Likewise.
	* gcc.dg/store_merging_13.c: Likewise.
	* gcc.dg/store_merging_14.c: Likewise.
	* gcc.dg/store_merging_15.c: Likewise.
	* gcc.dg/store_merging_16.c: Likewise.  Remove local variable.

From-SVN: r261019
2018-05-31 11:20:34 +00:00
Pierre-Marie de Rodat 7b1e3952de [Ada] Remove obsolete figure in documentation
2018-05-31  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/ada/

	* doc/gnat_ugn/project-manager-figure.png: Delete.

From-SVN: r261018
2018-05-31 10:47:50 +00:00
Pierre-Marie de Rodat 76bce685d7 [Ada] Add missing spec files for VxWorks runtimes
2018-05-31  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/ada/

	* vxworks-arm-link.spec, vxworks-e500-link.spec,
	vxworks-gnat-crtbe-link.spec, vxworks-smp-arm-link.spec,
	vxworks-smp-e500-link.spec, vxworks-smp-ppc-link.spec,
	vxworks-smp-x86-link.spec: New files.

From-SVN: r261017
2018-05-31 10:47:45 +00:00
Pierre-Marie de Rodat 986bd14e3a [Ada] Minor copyright header adjustments
2018-05-31  Pierre-Marie de Rodat  <derodat@adacore.com>

gcc/ada/

	* gnatvsn.adb: Re-center the copyright header.
	* indepsw-darwin.adb: Adjust the starting copyright year to 2011.

From-SVN: r261016
2018-05-31 10:47:39 +00:00
Fedor Rybin 9200846e06 [Ada] Document Stubs_Subdir in gnattest section on user guide
2018-05-31  Fedor Rybin  <frybin@adacore.com>

gcc/ada/

	* doc/gnat_ugn/gnat_utility_programs.rst: Document Stubs_Subdir in
	gnattest section on user guide.

From-SVN: r261015
2018-05-31 10:47:34 +00:00
Ed Schonberg 2a35a4ca14 [Ada] Static predicate check on characters of a string literal
This patch implements the rule given in R< 4.2 (11): if the component type of
a string literal is a character type with a static predicate, that predicate
must be applied to each character in the string.

Compiling the example below must yield:

   gcc -c -gnata main.adb

  main.adb:4:23: warning: static expression fails static predicate check on "C"
  main.adb:4:23: warning: expression is no longer considered static
  main.adb:4:24: warning: static expression fails static predicate check on "C"
  main.adb:4:24: warning: expression is no longer considered static
  main.adb:4:25: warning: static expression fails static predicate check on "C"
  main.adb:4:25: warning: expression is no longer considered static

Execution must yield:

  raised SYSTEM.ASSERTIONS.ASSERT_FAILURE :
                                        Static_Predicate failed at main.adb:4
----

procedure Main is
   subtype C is Character with Static_Predicate => C in 'A' | 'B' | 'C';
   type S is array (Positive range <>) of C;
   X : constant S := "abc";
begin
   null;
end;

2018-05-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_String_Literal): If the type is a string type
	whose component subtype has a static predicate, ensure that the
	predicate is applied to each character by expanding the string into the
	equivalent aggregate. This is also done if the component subtype is
	constrained.

From-SVN: r261014
2018-05-31 10:47:29 +00:00
Eric Botcazou d989848305 [Ada] Remove obsolete code in trans.c
2018-05-31  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* gcc-interface/trans.c (Call_to_gnu): Remove obsolete code.

From-SVN: r261013
2018-05-31 10:47:24 +00:00
Piotr Trojanek 0562ed3104 [Ada] Detect returning procedures annotated with No_Return
GNAT was emitting a warning about procedures with No_Return aspect on the
spec and a returning body, but failed to handle similar procedures with
no explicit spec. Now fixed.

This was also affecting GNATprove, where an undetected mismatch between
No_Return aspect and the body was a soundness bug, i.e. GNATprove was
silently accept code that raise a runtime exception.

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

procedure P (X : Boolean) with No_Return is
begin
   if X then
      raise Program_Error;
   end if;
end;

-----------------
-- Compilation --
-----------------

$ gcc -c p.adb
p.adb:3:04: warning: implied return after this statement will raise
                     Program_Error
p.adb:3:04: warning: procedure "P" is marked as No_Return

2018-05-31  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_ch6.adb (Check_Missing_Return): Handle procedures with no
	explicit spec.

From-SVN: r261012
2018-05-31 10:47:19 +00:00
Eric Botcazou 6e03839f3d [Ada] Fix wrong value returned for unconstrained packed array
2018-05-31  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* gcc-interface/trans.c (Call_to_gnu): In the by-reference case, if
	the type of the parameter is an unconstrained array type, convert
	to the type of the actual before the type of the formal only if the
	conversion was suppressed earlier.  Use in_param and gnu_actual_type
	local variables throughout, and uniform spelling for In Out or Out.
	Also remove dead code in the component-by-reference case.

From-SVN: r261011
2018-05-31 10:47:14 +00:00
Frederic Konrad fe1db400ad [Ada] Fix __gnat_backtrace for VxWorks7 on x86
A STORAGE ERROR is raised in __gnat_backtrace:

adainit: 0x00400DBC

Execution of ce.vxe terminated by unhandled exception
raised STORAGE_ERROR : SIGSEGV: possible stack overflow
Call stack traceback locations:
0x4082f1 0x408323 0x4080c9

It was passing with vxsim because the WRS_RTP_BASE is set to a different
place hence the (CURRENT) < (TOP_STACK) was stopping the backtrace at the
right time. So let's stop at the main symbol when RTS=rtp.

2018-05-31  Frederic Konrad  <konrad@adacore.com>

gcc/ada/

	* tracebak.c (STOP_FRAME): Harden condition.
	(is_return_from, EXTRA_STOP_CONDITION): New helpers for VxWorks in RTP
	mode.

From-SVN: r261010
2018-05-31 10:47:08 +00:00
Ed Schonberg 6ae40af30c [Ada] Illegal copy of limited object
This patch fixes a spurious copy of a limited object, when that object
is a discriminated record component of a limited type LT, and the enclosing
record is initialized by means of an aggregate, one of whose components is a
call to a build-in-place function that returns an unconstrained object of
type T.

2018-05-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* checks.adb (Apply_Discriminant_Check): Do not apply discriminant
	check to a call to a build-in-place function, given that the return
	object is limited and cannot be copied.

gcc/testsuite/

	* gnat.dg/limited1.adb, gnat.dg/limited1_inner.adb,
	gnat.dg/limited1_inner.ads, gnat.dg/limited1_outer.adb,
	gnat.dg/limited1_outer.ads: New testcase.

From-SVN: r261009
2018-05-31 10:47:03 +00:00
Olivier Hainque c9f3576882 [Ada] Update comment on __atomic_compare_exchange in s-atomic_primitives
Remove mention of unavailability, long obsolete, and reword suggestion of use
to indicate that we might want to switch to an internal interface using them.
The current wording suggests just that we should bind the current
Sync_Compare_And_Swap Ada subprograms to __atomic_compare builtins instead of
__sync_compare, which would be highly confusing.

2018-05-31  Olivier Hainque  <hainque@adacore.com>

gcc/ada/

	* libgnat/s-atopri.ads: Update comment on __atomic_compare_exchange
	builtins.

From-SVN: r261008
2018-05-31 10:46:58 +00:00
Eric Botcazou 1b6f8e9778 [Ada] Fix internal error on allocator with function call
2018-05-31  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* gcc-interface/trans.c (Call_to_gnu): If this is a function call and
	there is no target, also create a temporary for the return value for
	an allocator if the type is an unconstrained record type with default
	discriminant.

From-SVN: r261007
2018-05-31 10:46:52 +00:00
Hristian Kirtchev 3c5d07ab05 [Ada] Spurious tampering check failure
This patch modifies the transient scope mechanism to create a scope when the
condition of an iteration scheme returns a controlled result or involves the
secondary stack. As a result, a while loop which iterates over a container
properly manages the tampering bit at each iteration of the loop.

2018-05-31  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* exp_ch7.adb (Find_Transient_Context): An iteration scheme is a valid
	boudary for a transient scope.

gcc/testsuite/

	* gnat.dg/tampering_check1.adb, gnat.dg/tampering_check1_ivectors.ads,
	gnat.dg/tampering_check1_trim.adb, gnat.dg/tampering_check1_trim.ads:
	New testcase.

From-SVN: r261006
2018-05-31 10:46:48 +00:00
Valentine Reboul 9977c78567 [Ada] Rename "GPL" version to "Community"
2018-05-31  Valentine Reboul  <reboul@adacore.com>

gcc/ada/

	* gnatvsn.ads: Rename "GPL" version to "Community".

From-SVN: r261005
2018-05-31 10:46:43 +00:00
Ed Schonberg 446ac3e5da [Ada] Minor comment improvement
2018-05-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* einfo.ads: Improve documentation for the Is_Unsigned_Type entity
	flag.

From-SVN: r261004
2018-05-31 10:46:39 +00:00
Piotr Trojanek 7ae795f7b6 [Ada] Simplify call to Unique_Defining_Entity on protected entry declarations
Calling Unique_Defining_Entity on protectected entry declarations is
equivalent to calling a simpler Defining_Entity; use the simpler routine.

Simplification only; semantics unaffected, so no test provided.

2018-05-31  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_prag.adb (Analyze_Pragma): Replace call to Unique_Defining_Entity
	with a semantically equivalent call to Defining_Entity.

From-SVN: r261003
2018-05-31 10:46:34 +00:00
Piotr Trojanek 7366d29a54 [Ada] Set Etype on rewriteen Max_Queue_Length expressions
Rewriting of Max_Queue_Length expression into N_Integer_Literal should probably
be done in expansion and not in analysis, but anyway it should not strip the
expression from its Etype because backends (e.g. GNATprove) expect that Etype
to be present.

No frontend test is provided, because GNAT doesn't care about the missing
Etype decoration. This patch allows to simplify AST processing in GNATprove.

2018-05-31  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_prag.adb (Analyze_Pragma): Set Etype on the rewritten
	Max_Queue_Length expression.

From-SVN: r261002
2018-05-31 10:46:17 +00:00
Sergey Rybin 81a95941f9 [Ada] Update gnatelim documentation wrt. compilation of main unit
2018-05-31  Sergey Rybin  <rybin@adacore.com>

gcc/ada/

	* doc/gnat_ugn/gnat_and_program_execution.rst: gnatelim does not need
	that the main unit to be built before the call, now it computes the
	closure of the main unit itself.
	* gnat_ugn.texi: Regenerate.

From-SVN: r261001
2018-05-31 10:46:12 +00:00
Eric Botcazou 9104d201d5 [Ada] Fix tracking of the first item in Repinfo
2018-05-31  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* repinfo.adb (List_Structural_Record_Layout): Set First to false
	after having listed the fields of the parent type, if any.

From-SVN: r261000
2018-05-31 10:46:07 +00:00
Eric Botcazou 21afc4facd [Ada] Fix strange behavior of Object_Size for packed array subtype
2018-05-31  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* gcc-interface/decl.c (gnat_to_gnu_entity) <discrete_type>: Do not
	deal with the ___XP suffix for packed array types here...
	<E_Array_Subtype>: ...or here when processing the implementation type
	but when processing the original type instead.  Do not reuse the DECL
	of the implementation type for the original type.  Tidy up.

From-SVN: r260999
2018-05-31 10:46:02 +00:00
Eric Botcazou 42e4b796dc [Ada] Post warning on object size clause for subtype
This ensures that a warning for an object size clause present on a subtype
is posted on the clause and not on a size clause present on the type.

2018-05-31  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* einfo.ads (Object_Size_Clause): Declare.
	* einfo.adb (Object_Size_Clause): New function.
	* gcc-interface/utils.c (maybe_pad_type): Test Has_Size_Clause before
	retrieving Size_Clause and post the warning on the object size clause
	if Has_Object_Size_Clause is true.

gcc/testsuite/

	* gnat.dg/size_clause1.adb: New testcase.

From-SVN: r260998
2018-05-31 10:45:57 +00:00
Javier Miranda 59f7c7167a [Ada] Fix compiler crash for tagged private types
2018-05-31  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* sem_util.ads, sem_util.adb (Find_Primitive_Eq): New subprogram.
	* exp_ch4.adb (Expand_Composite_Equality): Use the new subprogram
	Find_Primitive_Eq to search for the primitive of types whose underlying
	type is a tagged type.

gcc/testsuite/

	* gnat.dg/tagged1.adb, gnat.dg/tagged1.ads: New testcase.

From-SVN: r260997
2018-05-31 10:45:51 +00:00
Yannick Moy 01f481c77e [Ada] Fix check on placement of multiple loop (in)variant pragmas
Loop (in)variants should appear next to each other, which is checked by GNAT
frontend. As statements inserted during expansion may break this contiguity,
GNAT recognizes specially such statements which originate in loop pragmas. In
some cases, this special treatment was not properly put in place, which lead to
spurious errors being issued.

2018-05-31  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_prag.adb (Analyze_Pragma.Check_Loop_Pragma_Placement): Inverse
	order of treatment between nodes recognized as loop pragmas (or
	generated from one) and block statements.

From-SVN: r260996
2018-05-31 10:45:05 +00:00
Doug Rupp 4cfb305e9c [Ada] Posix 2008: reimplement System.OS_Primitives.Clock using clock_gettime
gettimeofday is deprecated in Posix 2008, clock_gettime is the recommended
replacement.

2018-05-31  Doug Rupp  <rupp@adacore.com>

gcc/ada/

	* libgnat/s-osprim__posix2008.adb (Clock): Implement using
	clock_gettime.

From-SVN: r260995
2018-05-31 10:44:56 +00:00
Ed Schonberg ade649b2bf [Ada] Unnesting: add a predicate to help expansion of task and protected types
2018-05-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_unst.ads, exp_unst.adb (In_Synchronized_Unit): New predicate to
	mark subprograms that cannot be eliminated because they must be treated
	as reachable from outside the current unit. This includes entry bodies
	and protected operations.

From-SVN: r260994
2018-05-31 10:44:51 +00:00
Ed Schonberg dfd2da005e [Ada] Convert operands of generated code to Standard.Unsigned for modular ops.
2018-05-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_ch4.adb (Expand_Modular_Addition, Expand_Modular_Subtraction):
	Convert all operands of the generated code to Standard.Unsigned, to
	prevent spurious visibility errors. This is needed when the generated
	expansion involves a modular index type of an array type, and the index
	type is not immediately visible.

From-SVN: r260993
2018-05-31 10:44:45 +00:00
Matthias Klose 5b87c1fe09 re PR sanitizer/86012 (libsanitizer build failure on sparc64-linux-gnu)
2018-05-31  Matthias Klose  <doko@ubuntu.com>

        PR sanitizer/86012
        * sanitizer_common/sanitizer_platform_limits_posix.cc: Define
        SIZEOF_STRUCT_USTAT for 32bit sparc.

From-SVN: r260990
2018-05-31 09:57:33 +00:00
Sameera Deshpande 568421baa5 Patch implementing vld1_*_x3, vst1_*_x2 and vst1_*_x3 intrinsics for AARCH64 for all types.
From-SVN: r260989
2018-05-31 14:16:20 +05:30
GCC Administrator 5328e74a17 Daily bump.
From-SVN: r260988
2018-05-31 00:16:46 +00:00
Jozef Lawrynowicz 786b5b8722 msp430.c (msp430_output_labelref): Prepend user_label_prefix to name.
* config/msp430/msp430.c (msp430_output_labelref): Prepend
	user_label_prefix to name.

From-SVN: r260983
2018-05-30 17:33:49 -06:00
Jozef Lawrynowicz 98c112851b tree-core.h: Update comment about the format of NAME string passed to handler in attribute_spec.
* tree-core.h: Update comment about the format of NAME string
	passed to handler in attribute_spec.

From-SVN: r260982
2018-05-30 17:32:31 -06:00
Jozef Lawrynowicz 525213a53d msp430.md: Remove erroneous subreg expression from zero_extendqisi2 insn pattern.
* gcc/config/msp430/msp430.md: Remove erroneous subreg expression from
	zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
	zero_extend{q,h}isi2.

From-SVN: r260981
2018-05-30 17:26:03 -06:00
Rasmus Villemoes bbdf026f43 * crtstuff.c: Remove declaration of _Jv_RegisterClasses.
From-SVN: r260980
2018-05-30 17:21:48 -06:00
Jonathan Wakely d72a3672c5 PR c++/77777 improve location for diagnostic
Pass in the location of the invalid expression, not the next input
location (which might be a comma or closing parenthesis on a different
line).

gcc/cp:

	PR c++/77777
	* call.c (resolve_args): Use location of expression, not current input
	location.

gcc/testsuite:

	PR c++/77777
	* g++.dg/diagnostic/pr77777.C: New test.

From-SVN: r260979
2018-05-31 00:13:48 +01:00
David Pagan b67b9225f7 re PR c/55976 (-Werror=return-type should error on returning a value from a void function)
2018-05-30  David Pagan  <dave.pagan@oracle.com>

	PR c/55976
	* c-decl.c (grokdeclarator): Update check for return type warnings.
	(start_function): Likewise.
	(finish_function): Likewise.
	* c-typeck.c (c_finish_return): Update check for return type warnings.
	Pass OPT_Wreturn_type to pedwarn when appropriate.

	PR c/55976
	* c-opts.c (c_common_post_options): Set default for warn_return_type
	for C++/C++ with ObjC extensions only. For C, makes it possible to
	differentiate between default (no option), -Wreturn-type, and
	-Wno-return-type.

	PR c/55976
	* gcc.dg/noncompile/pr55976-1.c: New test.
	* gcc.dg/noncompile/pr55976-2.c: New test.

From-SVN: r260978
2018-05-30 16:55:38 -06:00
Borislav Petkov e91c9fe500 extend.texi: Document some architecture specific constraints and sort entries.
* doc/extend.texi: Document some architecture specific
	constraints and sort entries.

From-SVN: r260977
2018-05-30 16:49:25 -06:00
Martin Sebor 3ce4cdb2f7 PR middle-end/85369 - no -Wstringop-overflow for a strcpy / stpcpy call with a nonstring pointer when providing movstr pattern
gcc/ChangeLog:

	PR middle-end/85369
	* builtins.c (expand_builtin_stpcpy_1): New function.
	(expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
	only if the former succeeds.

From-SVN: r260976
2018-05-30 16:24:43 -06:00
Jason Merrill 1ba9c854bb ChangeLog fix
From-SVN: r260974
2018-05-30 15:42:52 -04:00
Ville Voutilainen 752e7593b0 Do not warn about zero-as-null when NULL is used.
gcc/cp/

Do not warn about zero-as-null when NULL is used.
* call.c (conversion_null_warnings): Check for pointer
types converted from zero constants.
(convert_like_real): Add a warning sentinel at the end.
* tree.c (maybe_warn_zero_as_null_pointer_constant): Also
check null_node_p.

testsuite/

Do not warn about zero-as-null when NULL is used.
* g++.dg/warn/Wzero-as-null-pointer-constant-7.C: New.

From-SVN: r260973
2018-05-30 22:33:38 +03:00
Jason Merrill 298434c916 PR c++/85807 - ICE with call in template NSDMI.
* init.c (get_nsdmi): Use push_to/pop_from_top_level.
	* tree.c (bot_manip): Don't set_flags_from_callee in a template.

From-SVN: r260972
2018-05-30 15:31:11 -04:00
Sameera Deshpande fbf5c1c64c patch to add support of ARMv8.4 in saphira
From-SVN: r260971
2018-05-31 00:10:03 +05:30