1. 11 Jul, 2019 39 commits
    • Define std::atomic_ref and std::atomic<floating-point> for C++20 · a90fe12c
      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
      Jonathan Wakely committed
    • i386: Add AVX512 unaligned intrinsics · 4c98bdad
      __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
      Sunil K Pandey committed
    • rs6000: Adjust comment for the Modula-2 traceback lang · 998175f6
      
      	* config/rs6000/rs6000-logue.c: Add Modula-2 to comment.
      
      From-SVN: r273413
      Segher Boessenkool committed
    • rs6000: Handle Modula-2 in the traceback table · e617512f
      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
      Segher Boessenkool committed
    • re PR target/91124 (gcc.target/i386/avx512vl-vpshldvd-2.c etc. FAIL) · 946732df
      	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
      Jakub Jelinek committed
    • re PR target/91124 (gcc.target/i386/avx512vl-vpshldvd-2.c etc. FAIL) · 491b0b40
      	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
      Jakub Jelinek committed
    • [Ada] Use high-level wrappers for Lib.Units.Table · 674dbc20
      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
      Piotr Trojanek committed
    • [Ada] Minor refactoring · 929d5203
      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
      Piotr Trojanek committed
    • [Ada] Avoid spurious errors on dimensionality checking in GNATprove · 8b727104
      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
      Yannick Moy committed
    • [Ada] Flip the meaning of debug switch -gnatdF · d99ef225
      2019-07-11  Yannick Moy  <moy@adacore.com>
      
      gcc/ada/
      
      	* debug.adb: Flip meaning of debug switch -gnatdF.
      
      From-SVN: r273404
      Yannick Moy committed
    • [Ada] Avoid spurious warning on assertions with Loop_Entry · 708fb956
      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
      Yannick Moy committed
    • [Ada] Refactor ownership pointer checking in SPARK as a generic · a8fa1b3d
      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
      Claire Dross committed
    • [Ada] Minimal binder · be04e8ed
      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
      Patrick Bernardi committed
    • [Ada] Makefile.rtl: add a warning about compilation flags · 49d7a324
      2019-07-11  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* Makefile.rtl: Add warning note about compilation flags and
      	capitalize.
      
      From-SVN: r273400
      Eric Botcazou committed
    • [Ada] Crash on protected type with self-referential component · a13a714e
      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
      Ed Schonberg committed
    • [Ada] GNAT.Sockets: support ICMP, IGMP and RAW IP protocol levels · 810097a7
      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
      Dmitriy Anisimkov committed
    • [Ada] Memory corruption when using formal hashed sets or maps · 1048a183
      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
      Claire Dross committed
    • [Ada] errno.c: remove obsolete support for MaRTE OS · 9d80f439
      2019-07-11  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* errno.c: Remove obsolete support for MaRTE OS.
      
      From-SVN: r273396
      Arnaud Charlet committed
    • [Ada] Remove redundant predicate checks · 6ef13c4f
      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
      Ed Schonberg committed
    • [Ada] Elaboration order v4.0 and output of dependencies · 220dc4b2
      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
      Hristian Kirtchev committed
    • [Ada] GNAT.Sockets: add support for RAW sockets · d4ba738c
      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
      Dmitriy Anisimkov committed
    • [Ada] Pragma Unreferenced triggers undefined reference · ae59bda9
      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
      Justin Squirek committed
    • [Ada] Fix inconsistent documentation for gnatmetric · 4ae83b58
      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
      Bob Duff committed
    • [Ada] Document gnatpp's --spaces-only switch · 852c41d4
      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
      Bob Duff committed
    • [Ada] Infinite loop on illegal declaration · f9e5da46
      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
      Hristian Kirtchev committed
    • [Ada] Minor reformatting · 29c64a0f
      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
      Hristian Kirtchev committed
    • [Ada] Internal crash on illegal renaming · bce6accb
      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
      Hristian Kirtchev committed
    • [Ada] Compile-time evaluation of predicate checks · a081ded4
      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
      Ed Schonberg committed
    • [Ada] Link error due to negated intrinsic comparison · dd8b4c11
      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
      Hristian Kirtchev committed
    • [Ada] Fix crash on dynamic predicate when generating SCOs · e2a2d494
      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
      Thomas Quinot committed
    • [Ada] Missing finalization of private protected type · a3d1ca01
      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
      Hristian Kirtchev committed
    • [Ada] New Repinfo.Input unit to read back JSON representation info. · 6c165711
      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
      Eric Botcazou committed
    • [Ada] No warning for guaranteed accessibility check failures · ccf17305
      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
      Justin Squirek committed
    • [Ada] GNAT.Threads: Add a Get_Thread overload taking a Task_Id · a1a8b172
      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
      Arnaud Charlet committed
    • [Ada] Elaboration order v4.0 and infinite loops · 490ed9ba
      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
      Hristian Kirtchev committed
    • [Ada] Avoid spurious warning on wrong order of operator call arguments · a34badbd
      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
      Yannick Moy committed
    • Do not try to further refine a VR_UNDEFINED result when intersecting · 435a6d95
      value_ranges.
      
      From-SVN: r273377
      Aldy Hernandez committed
    • re PR middle-end/91131 (Bad bitfield coalescing) · 3e66e7b0
      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
      Richard Biener committed
    • Daily bump. · 639000e2
      From-SVN: r273375
      GCC Administrator committed
  2. 10 Jul, 2019 1 commit
    • predicates.md (cint34_operand): Update SIGNED_34BIT_OFFSET_P call. · 4ded6adc
      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
      Michael Meissner committed