Commit Graph

169947 Commits

Author SHA1 Message Date
Jonathan Wakely
f6822be73a Improve docs for --enable-libstdcxx-time=rt
* doc/xml/manual/configure.xml: Improve documentation of
	--enable-libstdcxx-time option.

From-SVN: r273421
2019-07-11 20:43:32 +01:00
Jonathan Wakely
a90fe12c80 Define std::atomic_ref and std::atomic<floating-point> for C++20
This adds the new atomic types from C++2a, as proposed by P0019 and
P0020. To reduce duplication the calls to the compiler's atomic
built-ins are wrapped in new functions in the __atomic_impl namespace.
These functions are currently only used by std::atomic<floating-point>
and std::atomic_ref but could also be used for all other specializations
of std::atomic.

	* include/bits/atomic_base.h (__atomic_impl): New namespace for
	wrappers around atomic built-ins.
	(__atomic_float, __atomic_ref): New class templates for use as base
	classes.
	* include/std/atomic (atomic<float>, atomic<double>)
	(atomic<long double>): New explicit specializations.
	(atomic_ref): New class template.
	(__cpp_lib_atomic_ref): Define.
	* include/std/version (__cpp_lib_atomic_ref): Define.
	* testsuite/29_atomics/atomic/60695.cc: Adjust dg-error.
    	* testsuite/29_atomics/atomic_float/1.cc: New test.
    	* testsuite/29_atomics/atomic_float/requirements.cc: New test.
    	* testsuite/29_atomics/atomic_ref/deduction.cc: New test.
    	* testsuite/29_atomics/atomic_ref/float.cc: New test.
    	* testsuite/29_atomics/atomic_ref/generic.cc: New test.
    	* testsuite/29_atomics/atomic_ref/integral.cc: New test.
    	* testsuite/29_atomics/atomic_ref/pointer.cc: New test.
    	* testsuite/29_atomics/atomic_ref/requirements.cc: New test.

From-SVN: r273420
2019-07-11 20:43:25 +01:00
Sunil K Pandey
4c98bdadcb i386: Add AVX512 unaligned intrinsics
__m512i _mm512_loadu_epi64( void * sa);
void _mm512_storeu_epi64(void * d, __m512i a);
__m512i _mm512_loadu_epi32( void * sa);
void _mm512_storeu_epi32(void * d, __m512i a);
void _mm256_storeu_epi64(void * d, __m256i a);
void _mm_storeu_epi64(void * d, __m128i a);
void _mm256_storeu_epi32(void * d, __m256i a);
void _mm_storeu_epi32(void * d, __m128i a);

Tested on x86-64.

2019-07-11  Sunil K Pandey  <sunil.k.pandey@intel.com>

gcc/

	PR target/90980
	* config/i386/avx512fintrin.h (_mm512_loadu_epi64): New.
	(_mm512_storeu_epi64): Likewise.
	(_mm512_loadu_epi32): Likewise.
	(_mm512_storeu_epi32): Likewise.
	* config/i386/avx512vlintrin.h (_mm256_storeu_epi64): New.
	(_mm_storeu_epi64): Likewise.
	(_mm256_storeu_epi32): Likewise.
	(_mm_storeu_epi32): Likewise.

gcc/testsuite/

	PR target/90980
	* gcc.target/i386/pr90980-1.c: New test.
	* gcc.target/i386/pr90980-2.c: Likewise.
	* gcc.target/i386/pr90980-3.c: Likewise.

From-SVN: r273416
2019-07-11 12:09:37 -07:00
Segher Boessenkool
998175f646 rs6000: Adjust comment for the Modula-2 traceback lang
* config/rs6000/rs6000-logue.c: Add Modula-2 to comment.

From-SVN: r273413
2019-07-11 20:51:23 +02:00
Segher Boessenkool
e617512f4a rs6000: Handle Modula-2 in the traceback table
This patch recognises Modula-2 as language for the traceback table,
fixing the problem shown in
https://gcc.gnu.org/ml/gcc-patches/2019-07/msg00848.html .


	* config/rs6000/rs6000-logue.c (rs6000_output_function_epilogue):
	Handle Modula-2.

From-SVN: r273411
2019-07-11 20:36:48 +02:00
Jakub Jelinek
946732df90 re PR target/91124 (gcc.target/i386/avx512vl-vpshldvd-2.c etc. FAIL)
PR target/91124
	* config/i386/sse.md (sse2_cvtpd2dq<mask_name>): Change into ...
	(sse2_cvtpd2dq): ... this.  Remove mask substitution macros.
	(sse2_cvtpd2dq_mask, sse2_cvtpd2dq_mask_1): New define_insns.
	(ufix_notruncv2dfv2si2<mask_name>): Change into ...
	(ufix_notruncv2dfv2si2): ... this.  Remove mask substitution macros.
	(ufix_notruncv2dfv2si2_mask, ufix_notruncv2dfv2si2_mask_1): New
	define_insns.
	(ufix_truncv2dfv2si2<mask_name>): Change into ...
	(ufix_truncv2dfv2si2): ... this.  Remove mask substitution macros.
	(ufix_truncv2dfv2si2_mask, ufix_truncv2dfv2si2_mask_1): New
	define_insns.
	(sse2_cvttpd2dq<mask_name>): Change into ...
	(sse2_cvttpd2dq): ... this.  Remove mask substitution macros.
	(sse2_cvttpd2dq_mask, sse2_cvttpd2dq_mask_1): New define_insns.
	(*sse2_cvtpd2dq<mask_name>): Change into ...
	(*sse2_cvtpd2dq): ... this.  Remove mask substitution macros.
	Add "C" constraint to const0_operand.
	(*sse2_cvtpd2dq_mask, *sse2_cvtpd2dq_mask_1): New define_insns.
	(sse2_cvtpd2ps_mask): Adjust expand to match *sse2_cvtpd2ps_mask
	changes.

From-SVN: r273409
2019-07-11 10:31:51 +02:00
Jakub Jelinek
491b0b4015 re PR target/91124 (gcc.target/i386/avx512vl-vpshldvd-2.c etc. FAIL)
PR target/91124
	* config/i386/i386-builtin-types.def
	(V32HI_FTYPE_V32HI_V32HI_V32HI_INT,
	V16HI_FTYPE_V16HI_V16HI_V16HI_INT, V8HI_FTYPE_V8HI_V8HI_V8HI_INT,
	V8SI_FTYPE_V8SI_V8SI_V8SI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT,
	V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V16SI_FTYPE_V16SI_V16SI_V16SI_INT,
	V2DI_FTYPE_V2DI_V2DI_V2DI_INT, V4SI_FTYPE_V4SI_V4SI_V4SI_INT): Remove.
	* config/i386/i386-builtin.def (__builtin_ia32_vpshrdv_v32hi_mask,
	__builtin_ia32_vpshrdv_v32hi_maskz, __builtin_ia32_vpshrdv_v16hi_mask,
	__builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi_mask,
	__builtin_ia32_vpshrdv_v8hi_maskz, __builtin_ia32_vpshrdv_v16si_mask,
	__builtin_ia32_vpshrdv_v16si_maskz, __builtin_ia32_vpshrdv_v8si_mask,
	__builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si_mask,
	__builtin_ia32_vpshrdv_v4si_maskz, __builtin_ia32_vpshrdv_v8di_mask,
	__builtin_ia32_vpshrdv_v8di_maskz, __builtin_ia32_vpshrdv_v4di_mask,
	__builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di_mask,
	__builtin_ia32_vpshrdv_v2di_maskz, __builtin_ia32_vpshldv_v32hi_mask,
	__builtin_ia32_vpshldv_v32hi_maskz, __builtin_ia32_vpshldv_v16hi_mask,
	__builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi_mask,
	__builtin_ia32_vpshldv_v8hi_maskz, __builtin_ia32_vpshldv_v16si_mask,
	__builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si_mask,
	__builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si_mask,
	__builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di_mask,
	__builtin_ia32_vpshldv_v8di_maskz, __builtin_ia32_vpshldv_v4di_mask,
	__builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di_mask,
	__builtin_ia32_vpshldv_v2di_maskz, __builtin_ia32_vpdpbusd_v16si_mask,
	__builtin_ia32_vpdpbusd_v16si_maskz, __builtin_ia32_vpdpbusd_v8si_mask,
	__builtin_ia32_vpdpbusd_v8si_maskz, __builtin_ia32_vpdpbusd_v4si_mask,
	__builtin_ia32_vpdpbusd_v4si_maskz,
	__builtin_ia32_vpdpbusds_v16si_mask,
	__builtin_ia32_vpdpbusds_v16si_maskz,
	__builtin_ia32_vpdpbusds_v8si_mask,
	__builtin_ia32_vpdpbusds_v8si_maskz,
	__builtin_ia32_vpdpbusds_v4si_mask,
	__builtin_ia32_vpdpbusds_v4si_maskz,
	__builtin_ia32_vpdpwssd_v16si_mask,
	__builtin_ia32_vpdpwssd_v16si_maskz, __builtin_ia32_vpdpwssd_v8si_mask,
	__builtin_ia32_vpdpwssd_v8si_maskz, __builtin_ia32_vpdpwssd_v4si_mask,
	__builtin_ia32_vpdpwssd_v4si_maskz,
	__builtin_ia32_vpdpwssds_v16si_mask,
	__builtin_ia32_vpdpwssds_v16si_maskz,
	__builtin_ia32_vpdpwssds_v8si_mask,
	__builtin_ia32_vpdpwssds_v8si_maskz,
	__builtin_ia32_vpdpwssds_v4si_mask,
	__builtin_ia32_vpdpwssds_v4si_maskz): Use *_USI, *_UHI or *_UQI
	suffixed types rather than *_INT.
	* config/i386/i386-expand.c (ix86_expand_args_builtin): Don't handle
	V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT,
	V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT,
	V4DI_FTYPE_V4DI_V4DI_V4DI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI_INT,
	V16SI_FTYPE_V16SI_V16SI_V16SI_INT, V2DI_FTYPE_V2DI_V2DI_V2DI_INT
	and V4SI_FTYPE_V4SI_V4SI_V4SI_INT.

From-SVN: r273408
2019-07-11 10:31:19 +02:00
Piotr Trojanek
674dbc204d [Ada] Use high-level wrappers for Lib.Units.Table
2019-07-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* lib-writ.adb (Ensure_System_Dependency,
	Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access
	to table with a high-level query.

From-SVN: r273407
2019-07-11 08:03:33 +00:00
Piotr Trojanek
929d520369 [Ada] Minor refactoring
2019-07-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* checks.adb: Fix typo in comment.
	* sem.adb (Semantics): Avoid repeated calls to
	In_Extended_Main_Source_Unit by reusing an already-cached
	result.
	* sem_util.adb (First_Global): Fix style.

From-SVN: r273406
2019-07-11 08:03:28 +00:00
Yannick Moy
8b72710481 [Ada] Avoid spurious errors on dimensionality checking in GNATprove
In the special GNATprove mode of the frontend, automatic inlining is
performed, which may lead to spurious errors on dimensionality checking.
Avoid performing this checking on inlined code, which has already been
checked for dimensionality errors.

There is no impact on compilation.

2019-07-11  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Call): Do not perform dimensionality
	checking on inlined bodies.

From-SVN: r273405
2019-07-11 08:03:24 +00:00
Yannick Moy
d99ef225ac [Ada] Flip the meaning of debug switch -gnatdF
2019-07-11  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* debug.adb: Flip meaning of debug switch -gnatdF.

From-SVN: r273404
2019-07-11 08:03:19 +00:00
Yannick Moy
708fb956d9 [Ada] Avoid spurious warning on assertions with Loop_Entry
When the Loop_Entry attribute is used inside a loop invariant or another
assertion where it is allowed, it may lead to spurious warnings on
conditions that are detected to be always valid. Now fixed.

2019-07-11  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_eval.adb (Is_Same_Value): Add special case for rewritten
	Loop_Entry attribute.

gcc/testsuite/

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

From-SVN: r273403
2019-07-11 08:03:14 +00:00
Claire Dross
a8fa1b3d08 [Ada] Refactor ownership pointer checking in SPARK as a generic
Ownership checking as done in SPARK should be applied only to SPARK
code, which requires GNATprove knowledge of the SPARK_Mode boundary.
Transform the checking unit into a generic to allow passing in the
knowledge from GNATprove to that unit in GNAT sources.

Keeping the code in GNAT sources makes it possible in the future to
adapt it further (or simply instantiate it differently) to be used on
Ada code, independently of GNATprove.

There is no impact on compilation.

2019-07-11  Claire Dross  <dross@adacore.com>

gcc/ada/

	* gnat1drv.adb: SPARK checking rules for pointer aliasing are
	moved to GNATprove backend.
	* sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic
	unit. Takes as parameters:
	 - Retysp which is used to query the most underlying type
	   visible in SPARK. We do not introduce aliasing checks for
	   types which are not visibly deep.
	 - Component_Is_Visible_In_SPARK is used to avoid doing pointer
	   aliasing checks on components which are not visible in SPARK.
	 - Emit_Messages returns True in the second phase of SPARK
	   analysis. Error messages for failed aliasing checks are only
	   output in this case.
	Additionally, errors on constructs not supported in SPARK are
	removed as duplicates of marking errors. Components are stored
	in the permission map using their original component to avoid
	inconsistencies between components of different views of the
	same type.
	(Check_Expression): Handle delta constraints.
	(Is_Deep): Exported so that we can check for SPARK restrictions
	on deep types inside SPARK semantic checkings.
	(Is_Traversal_Function): Exported so that we can check for SPARK
	restrictions on traversal functions inside SPARK semantic
	checkings.
	(Check_Call_Statement, Read_Indexes): Check wether we are
	dealing with a subprogram pointer type before querying called
	entity.
	(Is_Subpath_Expression): Image attribute can appear inside a
	path.
	(Check_Loop_Statement): Correct order of statements in the loop.
	(Check_Node): Ignore raise nodes.
	(Check_Statement): Use Last_Non_Pragma to get the object
	declaration in an extended return statement.

From-SVN: r273402
2019-07-11 08:03:09 +00:00
Patrick Bernardi
be04e8eda3 [Ada] Minimal binder
The new minimal binder option ("-minimal") suppresses the generation of
binder objects that are not strictly required for program operation.
This option is suitable for space constrained applications and comes
with the restriction that programs can no longer be debugged using GDB.

2019-07-11  Patrick Bernardi  <bernardi@adacore.com>

gcc/ada/

	* bindgen.adb (Gen_Main): Do not generate a reference to
	Ada_Main_Program_Name when the Minimal_Binder flag is set.
	(Gen_Output_File_Ada): Do not output GNAT_Version and
	Ada_Main_Program_Name info if Minimal_Binder flag is set.
	* bindusg.adb: Add documentation for new -minimal switch.
	* gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch.
	* opt.ads: Add new global flag Minimal_Binder to indicate if the
	binder should not produce global variables.
	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
	Update documentation with new binder -minimal switch.
	* gnat_ugn.texi: Regenerate.

From-SVN: r273401
2019-07-11 08:03:04 +00:00
Eric Botcazou
49d7a32459 [Ada] Makefile.rtl: add a warning about compilation flags
2019-07-11  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* Makefile.rtl: Add warning note about compilation flags and
	capitalize.

From-SVN: r273400
2019-07-11 08:02:58 +00:00
Ed Schonberg
a13a714e71 [Ada] Crash on protected type with self-referential component
This patch fixes a compiler abort on a declarastion for a protected type
PT when one of its private component is of type access PT.

2019-07-11  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New
	subsidiary routine Replace_Access_Definition, to handle properly
	a protected type PT one of whose private components is of type
	access PT.

gcc/testsuite/

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

From-SVN: r273399
2019-07-11 08:02:53 +00:00
Dmitriy Anisimkov
810097a72d [Ada] GNAT.Sockets: support ICMP, IGMP and RAW IP protocol levels
2019-07-11  Dmitriy Anisimkov  <anisimko@adacore.com>

gcc/ada/

	* libgnat/g-socket.ads (Level_Type): Add enumerators for
	IP_Protocol_For_ICMP, IP_Protocol_For_IGMP,
	IP_Protocol_For_RAW_Level.
	* libgnat/g-socket.adb (Levels): Handle them.
	* s-oscons-tmplt.c: Import socket protocols defined in
	netinet/in.h.

From-SVN: r273398
2019-07-11 08:02:49 +00:00
Claire Dross
1048a1839f [Ada] Memory corruption when using formal hashed sets or maps
Add a check to avoid causing a buffer overflow when the map is empty

2019-07-11  Claire Dross  <dross@adacore.com>

gcc/ada/

	* libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not
	reset the Has_Element flag if no element is freed.

From-SVN: r273397
2019-07-11 08:02:44 +00:00
Arnaud Charlet
9d80f43913 [Ada] errno.c: remove obsolete support for MaRTE OS
2019-07-11  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* errno.c: Remove obsolete support for MaRTE OS.

From-SVN: r273396
2019-07-11 08:02:40 +00:00
Ed Schonberg
6ef13c4ff9 [Ada] Remove redundant predicate checks
This patch removes redundant dynamic predicate checks generated by type
conversions in various contexts. The patch also recognizes additional
such checks that can be evaluated statically when applied to constant
values.

No simple test available.

2019-07-11  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check
	is generated, analyze it with range check suppressed, because
	that check has been previously applied.
	* exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a
	type conversion to the type of the LHS, do not apply a predicate
	check to the RHS because it will have been generated already
	during its expansion.
	* exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to
	handle a predicate check on a constant entity whose value is
	static.

From-SVN: r273395
2019-07-11 08:02:35 +00:00
Hristian Kirtchev
220dc4b282 [Ada] Elaboration order v4.0 and output of dependencies
This patch adds a missing case to the mechanism that outputs the
elaboration order dependencies of units.

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

--  pack.ads

package Pack is
   procedure Force_Body;
end Pack;

--  pack.adb

package body Pack is
   procedure Force_Body is null;
end Pack;

--  main.adb

with Pack;

procedure Main is begin null; end Main;

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

$ gnatmake -q main.adb -bargs -e

ELABORATION ORDER DEPENDENCIES

   unit "pack (spec)" must be elaborated before unit "main (body)"
     reason: unit "main (body)" has with clause for unit "pack (spec)"
   unit "pack (spec)" must be elaborated before unit "pack (body)"
     reason: spec must be elaborated before body

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* bindo.adb: Remove the documentation of switch -d_N because it
	is no longer in use.
	* bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge):
	New routine.
	* bindo-writers.adb (Write_Dependency_Edge): Add the missing
	case of a spec-before-body edge.

From-SVN: r273394
2019-07-11 08:02:30 +00:00
Dmitriy Anisimkov
d4ba738c67 [Ada] GNAT.Sockets: add support for RAW sockets
2019-07-11  Dmitriy Anisimkov  <anisimko@adacore.com>

gcc/ada/

	* libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator.
	* libgnat/g-socket.adb (Modes): Handle Socket_Raw.

From-SVN: r273393
2019-07-11 08:02:26 +00:00
Justin Squirek
ae59bda92b [Ada] Pragma Unreferenced triggers undefined reference
This patch corrects the generation of protected body declarations so
that instances of pragma Unreferenced applied to formals don't falsly
trigger undefined references.

2019-07-11  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* exp_ch9.adb (Build_Private_Protected_Declaration): Add
	exception for the moving of pragmas to internally generated
	specs for pragma Unreferenced.

gcc/testsuite/

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

From-SVN: r273392
2019-07-11 08:02:21 +00:00
Bob Duff
4ae83b58d2 [Ada] Fix inconsistent documentation for gnatmetric
One part said all metrics are enabled by default (which is now true),
and another part said the coupling metrics are disabled by default
(which is no longer true).

2019-07-11  Bob Duff  <duff@adacore.com>

gcc/ada/

	* doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent
	documentation for gnatmetric.
	* gnat_ugn.texi: Regenerate.

From-SVN: r273391
2019-07-11 08:02:17 +00:00
Bob Duff
852c41d488 [Ada] Document gnatpp's --spaces-only switch
2019-07-11  Bob Duff  <duff@adacore.com>

gcc/ada/

	* doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's
	--spaces-only switch.

From-SVN: r273390
2019-07-11 08:02:12 +00:00
Hristian Kirtchev
f9e5da46f7 [Ada] Infinite loop on illegal declaration
This patch updates predicate Null_Status to prevent an infinite
recursion when the argument is an illegal object declaration of an
access type.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* sem_util.adb (Null_Status): Assume that an erroneous construct
	has an undefined null status.

gcc/testsuite/

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

From-SVN: r273389
2019-07-11 08:02:07 +00:00
Hristian Kirtchev
29c64a0f6d [Ada] Minor reformatting
2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb,
	sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting.

From-SVN: r273388
2019-07-11 08:02:03 +00:00
Hristian Kirtchev
bce6accb66 [Ada] Internal crash on illegal renaming
This patch updates the retrieval of the renamed object name of an object
renaming declaration to handle various name forms.

No need for a test because one already exists, and reproducing requires
a compiler built with assertions.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being
	renamed using routine Get_Object_Name which takes care of
	various name forms.
	(Get_Object_Name): New routine.

From-SVN: r273387
2019-07-11 08:01:58 +00:00
Ed Schonberg
a081ded4df [Ada] Compile-time evaluation of predicate checks
This patch recognizes case of dynamic predicates on integer subtypes
that are simple enough to be evaluated statically when the argument is
itself a literal. Even though in many cases such predicate checks will
be removed by the back-end with any level of optimization, it is
preferable to perform this constant folding in the front-end, wich also
cleans up the output of CCG, as well as producing explicit warnings when
the test will fail.

2019-07-11  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_ch6.adb (Can_Fold_Predicate_Call): New function,
	subsidiary of Expand_Call_Helper, to compute statically a
	predicate check when the argument is a static integer.

gcc/testsuite/

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

From-SVN: r273386
2019-07-11 08:01:54 +00:00
Hristian Kirtchev
dd8b4c118e [Ada] Link error due to negated intrinsic comparison
This patch corrects the resolution of operator "not" when the expression
being negated is an equality operator to prevent the transformation of
an intrinsic equality operator into a function call.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Op_Not): Do not rewrite an equality
	operator into a function call when the operator is intrinsic.

gcc/testsuite/

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

From-SVN: r273385
2019-07-11 08:01:49 +00:00
Thomas Quinot
e2a2d49440 [Ada] Fix crash on dynamic predicate when generating SCOs
A pragma Check for Dynamic_Predicate does not correspond to any source
construct that has a provisionally-disabled SCO.

2019-07-11  Thomas Quinot  <quinot@adacore.com>

gcc/ada/

	* sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call
	Set_SCO_Pragma_Enabled for the dynamic predicate case.

gcc/testsuite/

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

From-SVN: r273384
2019-07-11 08:01:44 +00:00
Hristian Kirtchev
a3d1ca0127 [Ada] Missing finalization of private protected type
This patch updates the analysis of protected types to properly mark the
type as having controlled components when it contains at least one such
component. This in turn marks a potential partial view as requiring
finalization actions.

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

--  types.ads

with Ada.Finalization; use Ada.Finalization;

package Types is
   type Ctrl_Typ is new Controlled with null record;
   procedure Finalize (Obj : in out Ctrl_Typ);

   type Prot_Typ is limited private;

private
   protected type Prot_Typ is
   private
      Comp : Ctrl_Typ;
   end Prot_Typ;
end Types;

--  types.adb

with Ada.Text_IO; use Ada.Text_IO;

package body Types is
   procedure Finalize (Obj : in out Ctrl_Typ) is
   begin
      Put_Line ("finalize");
   end Finalize;

   protected body Prot_Typ is
   end Prot_Typ;
end Types;

--  main.adb

with Types; use Types;

procedure Main is
   Obj : Prot_Typ;
begin
   null;
end Main;

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* exp_util.ads, exp_util.adb (Needs_Finalization): Move to
	Sem_Util.
	* sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark
	the protected type as having controlled components when it
	contains at least one such component.
	* sem_util.ads, sem_util.adb (Needs_Finalization): New
	function.

From-SVN: r273383
2019-07-11 08:01:39 +00:00
Eric Botcazou
6c1657116a [Ada] New Repinfo.Input unit to read back JSON representation info.
For some time the Repinfo unit has been able to output the
representation information in the JSON data interchange format in
addition to the usual text and binary formats.

The new Repinfo.Input unit makes it possible to read back this
information under this format and make it available to clients, the main
one being ASIS.

The big advantage of using this approach over manipulating a binary blob
is that the writer and the reader of the JSON representation need not be
binary compatible, i.e. in practice need not be the same version of the
compiler or ASIS for the same target.

The patch also adds a -gnatd_j switch to read back the information in
the compiler itself, which makes it easy to keep the writer and the
reader in sync using only one tool, namely the compiler.  The typical
usage is:

  gcc -c p.ads -gnatR4js
  gcc -c p.ads -gnatd_j

to exercise respectively the writer and the reader from the compiler.

2019-07-11  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* alloc.ads (Rep_JSON_Table_Initial): New constant.
	(Rep_JSON_Table_Increment): Likewise.
	* debug.adb: Document -gnatd_j switch.
	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
	repinfo-input.o.
	* gnat1drv.adb: Add with clause for Repinfo.Input.
	Add with and use clauses for Sinput.
	(Read_JSON_Files_For_Repinfo): New procedure.
	(Gnat1drv1): Deal with -gnatd_j switch.
	* repinfo-input.ad[sb]: New unit.
	* snames.ads-tmpl (Name_Discriminant): New constant.
	(Name_Operands): Likewise.

From-SVN: r273382
2019-07-11 08:01:35 +00:00
Justin Squirek
ccf1730596 [Ada] No warning for guaranteed accessibility check failures
This patch corrects the generation of dynamic accessibility checks which
are guaranteed to trigger errors during run time so as to give the user
proper warning during unit compiliation.

2019-07-11  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* checks.adb (Apply_Accessibility_Check): Add check for constant
	folded conditions on accessibility checks.

gcc/testsuite/

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

From-SVN: r273381
2019-07-11 08:01:30 +00:00
Arnaud Charlet
a1a8b1726c [Ada] GNAT.Threads: Add a Get_Thread overload taking a Task_Id
2019-07-11  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread):
	Update comments. Add new version taking a Task_Id.

From-SVN: r273380
2019-07-11 08:01:25 +00:00
Hristian Kirtchev
490ed9ba84 [Ada] Elaboration order v4.0 and infinite loops
This patch introduces binder switch -d_S which prompts the various
phases of the elaboration order mechanism to output a short message
concerning their commencement and completion. The output is useful when
trying to determine whether a phase is stuck in an infinite loop.

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

--  main.adb

procedure Main is begin null; end Main;

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

$ gnatmake -q main.adb -bargs -d_S -d_V
elaborating units...
collecting units...
units collected.
constructing library graph...
validating library graph...
library graph validated.
library graph constructed.
constructing invocation graph...
validating invocation graph...
invocation graph validated.
invocation graph constructed.
augmenting library graph...
library graph augmented.
discovering components...
components discovered.
validating elaboration order...
elaboration order validated.
units elaborated.

2019-07-11  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

	* bindo.adb: Update the section of switches and debugging
	elaboration issues.
	* bindo.ads: Add type Elaboration_Phase.
	* bindo-augmentors.adb: Add use clause for
	Bindo.Writers.Phase_Writers.
	(Augment_Library_Graph): Signal the start and end of the
	aubmentation phase.
	* bindo-builders.adb: Add with and use clause for Bindo.Writers.
	Add use clause for Bindo.Writers.Phase_Writers.
	(Build_Invocation_Graph): Signal the start and end of the
	invocation graph construction phase.
	(Build_Library_Graph): Signal the start and end of the library
	graph construction phase.
	* bindo-diagnostics.adb: Add use clause for
	Bindo.Writers.Phase_Writers.
	(Diagnose_Cycle): Signal the start and end of the cycle
	diagnostic phase.
	* bindo-elaborators.adb: Add use clause for
	Bindo.Writers.Phase_Writers.
	(Elaborate_Units): Signal the start and end of the unit
	elaboration phase.
	* bindo-graphs.adb: Add use clause for
	Bindo.Writers.Phase_Writers.
	(Find_Components): Signal the start and end of the component
	discovery phase.
	(Find_Cycles): Signal the start and end of the cycle discovery
	phase.
	* bindo-units.adb: Add with and use clause for Bindo.Writers.
	Add use clause for Bindo.Writers.Phase_Writers.
	(Collect_Elaborable_Units): Signal the start and end of the unit
	collection phase.
	* bindo-validators.adb: Add with and use clause for
	Bindo.Writers.  Add use clause for Bindo.Writers.Phase_Writers.
	(Validate_Cycles, Validate_Elaboration_Order,
	Validate_Invocation_Graph, Validate_Library_Graph): Signal the
	start and end of the libray graph validation phase.
	* bindo-writers.ads, bindo-writers.adb: Add new nested package
	Phase_Writers.
	* debug.adb: Update the documentation of switch d_S.

From-SVN: r273379
2019-07-11 08:01:21 +00:00
Yannick Moy
a34badbdf0 [Ada] Avoid spurious warning on wrong order of operator call arguments
GNAT issues a warning under -gnatwa when actuals for a call are named
like the formals, but in a different order. This is inappropriate for
calls to operators in infix form, when e.g. Right <= Left is in general
the intended order. Special case calls to operators to avoid that
spurious warning.

2019-07-11  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_res.adb (Check_Argument_Order): Special case calls to
	operators.

gcc/testsuite/

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

From-SVN: r273378
2019-07-11 08:01:07 +00:00
Aldy Hernandez
435a6d9580 Do not try to further refine a VR_UNDEFINED result when intersecting
value_ranges.

From-SVN: r273377
2019-07-11 07:50:58 +00:00
Richard Biener
3e66e7b0d1 re PR middle-end/91131 (Bad bitfield coalescing)
2019-07-11  Richard Biener  <rguenther@suse.de>

	PR middle-end/91131
	* gimplify.c (gimplify_compound_literal_expr): Force a temporary
	when the object is volatile and we have not cleared it even though
	there are no nonzero elements.

	* gcc.target/i386/pr91131.c: New testcase.

From-SVN: r273376
2019-07-11 07:32:04 +00:00
GCC Administrator
639000e212 Daily bump.
From-SVN: r273375
2019-07-11 00:16:15 +00:00
Michael Meissner
4ded6adc51 predicates.md (cint34_operand): Update SIGNED_34BIT_OFFSET_P call.
2019-07-10  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/predicates.md (cint34_operand): Update
	SIGNED_34BIT_OFFSET_P call.
	(pcrel_address): Update SIGNED_34BIT_OFFSET_P call.
	(pcrel_external_address): Update SIGNED_34BIT_OFFSET_P call.
	* config/rs6000/rs6000.c (rs6000_prefixed_address): Update
	SIGNED_16BIT_OFFSET_P and SIGNED_34BIT_OFFSET_P calls.
	* config/rs6000/rs6000.h (SIGNED_16BIT_OFFSET_P): Remove EXTRA
	argument.
	(SIGNED_34BIT_OFFSET_P): Remove EXTRA argument.
	(SIGNED_16BIT_OFFSET_EXTRA_P): New macro, like
	SIGNED_16BIT_OFFSET_P with an EXTRA argument.
	(SIGNED_34BIT_OFFSET_EXTRA_P): New macro, like
	SIGNED_34BIT_OFFSET_P with an EXTRA argument.

From-SVN: r273370
2019-07-10 19:34:03 +00:00
Iain Sandoe
4b5c539184 [Darwin, PPC] Collate the system library spec into one expression.
There's no need to redefine this dependent on the target header (that only
works in the case that we have self-hosting which is less and less likely
for the older system versions).

Actually, what we need is for the correct library set to be used based
on the SDK(s) that can target the chosen system.

gcc/ChangeLog:

2019-07-10  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/darwin.h (LIB_SPEC): Collate this spec here.
	* config/rs6000/darwin7.h (LIB_SPEC): Remove.
	* config/rs6000/darwin8.h (LIB_SPEC): Remove.
	(DEF_MIN_OSX_VERSION): New.

From-SVN: r273369
2019-07-10 19:29:56 +00:00
Richard Sandiford
2cb7362310 Fix folding of vector EQ/NE
For vector1 != vector2, we returned false if any elements were equal,
rather than if all elements were equal.

2019-07-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* fold-const.c (fold_relational_const): Fix folding of
	vector-to-scalar NE_EXPRs.
	(test_vector_folding): Add more tests.

From-SVN: r273366
2019-07-10 18:41:51 +00:00
Richard Sandiford
8ba8ebffc4 [arm] Fix BE index for single-var vector initialisers (PR91060)
If a vector constructor has a single nonconstant element,
neon_expand_vector_init loads the constant lanes and then inserts the
nonconstant value.  The problem was that it was doing the insertion
using the arm_neon.h neon_vset_lane<mode> patterns, which use
architectural lane numbering rather than GCC lane numbering.

2019-07-10  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR target/91060
	* config/arm/iterators.md (V2DI_ONLY): New mode iterator.
	* config/arm/neon.md (vec_set<mode>_internal): Add a '@' prefix.
	(vec_setv2di_internal): Reexpress as...
	(@vec_set<V2DI_ONLY:mode>_internal): ...this.
	* config/arm/arm.c (neon_expand_vector_init): Use gen_vec_set_internal
	rather than gen_neon_vset_lane<mode>.

From-SVN: r273365
2019-07-10 18:41:44 +00:00
Ian Lance Taylor
4b8d9b2337 compiler: finalize methods when importing types
This patch changes the compiler to be more aggressive about finalizing
    methods on imported types, to avoid problems with interface types that
    are imported but remain unreachable until a later stage in the compilation.
    
    The normal pattern prior to this change was that the import process would
    leave imported interface types alone, and rely on Gogo::finalize_methods
    to locate and finalize all interface types at a later point. This way
    of doing things was not working in all cases due to the fact that we can
    import an interface type that is only reachable from the body of an
    inlinable function, meaning that we can't "find" the type during
    the methods finalize phase.
    
    The importer's Import::read_types() now makes a pass over all imported
    types to finalize methods on any newly imported type, which takes care
    of the issue.
    
    New test case for this problem in CL 185517.
    
    Fixes golang/go#33013
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/185518

From-SVN: r273364
2019-07-10 18:12:54 +00:00
Ian Lance Taylor
41112d9519 compiler: add break label in 1,2-case select statement lowering
CL 184998 added optimizations for one- and two-case select
    statements. But it didn't handle break statement in the select
    case correctly. Specifically, it didn't add the label definition,
    so it could result in a dangling goto. This CL fixes this, by
    adding the label definition.
    
    A test case is CL 185520.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/185519

From-SVN: r273359
2019-07-10 17:56:40 +00:00
Martin Sebor
b59ff58620 PR testsuite/91132 - test gcc.dg/strlenopt-67.c in r273317 fails
gcc/testsuite/ChangeLog:
	* gcc.dg/strlenopt-67.c: Removed second copy of test.

From-SVN: r273358
2019-07-10 10:15:52 -06:00
Vladimir Makarov
613caed2fe re PR target/91102 (aarch64 ICE on Linux kernel with -Os starting with r270266)
2019-07-10  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/91102
	* lra-constraints.c (process_alt_operands): Don't match user
	defined regs only if they are early clobbers.

2019-07-10  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/91102
	* gcc.target/aarch64/pr91102.c: New test.

From-SVN: r273357
2019-07-10 16:07:10 +00:00
Marc Glisse
12bb04368e Fix wi::lshift
2019-07-10  Marc Glisse  <marc.glisse@inria.fr>

	* wide-int.h (wi::lshift): Reject negative values for the fast path.

From-SVN: r273356
2019-07-10 15:16:12 +00:00
Richard Biener
95efa22791 re PR tree-optimization/91126 (Incorrect constant propagation of BIT_FIELD_REF)
2019-07-10  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/91126
	* tree-ssa-sccvn.c (n_walk_cb_data::push_partial_def): Adjust
	native encoding offset for BYTES_BIG_ENDIAN.
	(vn_reference_lookup_3): Likewise.

	* gcc.dg/torture/pr91126.c: New testcase.

From-SVN: r273355
2019-07-10 13:40:12 +00:00