1. 29 May, 2018 40 commits
    • re PR target/85950 (Unsafe-math-optimizations regresses optimization using SSE4.1 roundss) · 5d2e68ea
      	PR target/85950
      	* config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
      	Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
      	sequence.
      	(sse4_1_round<mode>2): Use nonimmediate_operand
      	for operand 1 predicate.
      
      testsuite/ChangeLog:
      
      	PR target/85950
      	* gcc.target/i386/pr85950.c: New test.
      
      From-SVN: r260903
      Uros Bizjak committed
    • PR middle-end/85888 - New test case c-c++-common/attr-nonstring-6.c from r260541… · 72930d9f
      PR middle-end/85888 - New test case c-c++-common/attr-nonstring-6.c from r260541 fails with excess errors
      
      2018-05-29  Martin Sebor  <msebor@redhat.com>
      	    Richard Biener  <rguenther@suse.de>
      
      	PR testsuite/85888
      	* calls.c (get_size_range): Call determine_value_range instead
      	of get_value_range..
      	* tree-vrp.h (determine_value_range): Declared new function.
      	* tree-vrp.c (determine_value_range_1, determine_value_range): New.
      
      Co-Authored-By: Richard Biener <rguenther@suse.de>
      
      From-SVN: r260902
      Martin Sebor committed
    • re PR c++/85883 (class template argument deduction fails in new-expression) · 009bb506
      	PR c++/85883
      	* init.c (build_new): Handle deducing a class with new
      	with more than one argument.
      
      	* g++.dg/cpp1z/class-deduction55.C: New test.
      	* g++.dg/cpp1z/class-deduction56.C: New test.
      	* g++.dg/cpp1z/class-deduction57.C: New test.
      
      From-SVN: r260901
      Marek Polacek committed
    • Qualify another call in <variant> · 5baa6f8e
      	* include/std/variant (__erased_dtor): Qualify call to __get.
      
      From-SVN: r260900
      Jonathan Wakely committed
    • re PR c++/85952 (Bogus -Wunused-but-set-variable warning with array structured binding) · 69ce0c8c
      	PR c++/85952
      	* init.c (build_aggr_init): For structured binding initialized from
      	array call mark_rvalue_use on the initializer.
      
      	* g++.dg/warn/Wunused-var-33.C: New test.
      
      From-SVN: r260899
      Jakub Jelinek committed
    • tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make sure to use… · fec0bf30
      tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make sure to use non-pattern stmts for get_earlier_stmt arguments.
      
      2018-05-29  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
      	sure to use non-pattern stmts for get_earlier_stmt arguments.
      	* tree-vectorizer.h (get_earlier_stmt): Assert we do not get
      	called on pattern stmts.
      	(get_later_stmt): Likewise.
      
      From-SVN: r260896
      Richard Biener committed
    • libgcov: report about a different timestamp (PR gcov-profile/85759). · 0e8f29da
      2018-05-29  Martin Liska  <mliska@suse.cz>
      
              PR gcov-profile/85759
      	* doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
      	env variables.
      2018-05-29  Martin Liska  <mliska@suse.cz>
      
              PR gcov-profile/85759
      	* libgcov-driver-system.c (gcov_error): Introduce usage of
              GCOV_EXIT_AT_ERROR env. variable.
      	* libgcov-driver.c (merge_one_data): Print error that we
              overwrite a gcov file with a different timestamp.
      
      From-SVN: r260895
      Martin Liska committed
    • tree-cfg.c (verify_gimple_assign_unary): Add checking for VEC_UNPACK_*_EXPR. · e379122d
      	* tree-cfg.c (verify_gimple_assign_unary): Add checking for
      	VEC_UNPACK_*_EXPR.
      	(verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
      	VEC_PACK_*_EXPR.
      
      From-SVN: r260894
      Jakub Jelinek committed
    • re PR target/85918 (Conversions to/from [unsigned] long long are not vectorized… · 1bda738b
      re PR target/85918 (Conversions to/from [unsigned] long long are not vectorized for AVX512DQ target)
      
      	PR target/85918
      	* tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
      	VEC_PACK_FLOAT_EXPR): New tree codes.
      	* tree-pretty-print.c (op_code_prio): Handle
      	VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
      	(dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
      	VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
      	* tree-inline.c (estimate_operator_cost): Likewise.
      	* gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
      	* fold-const.c (const_binop): Likewise.
      	(const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
      	VEC_UNPACK_FIX_TRUNC_LO_EXPR.
      	* tree-cfg.c (verify_gimple_assign_unary): Likewise.
      	(verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
      	* cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
      	VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
      	* expr.c (expand_expr_real_2): Likewise.
      	* optabs.def (vec_packs_float_optab, vec_packu_float_optab,
      	vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
      	vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
      	optabs.
      	* optabs.c (expand_widen_pattern_expr): For
      	VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
      	sign from result type rather than operand's type.
      	(expand_binop_directly): For vec_packu_float_optab and
      	vec_packs_float_optab allow result type to be different from operand's
      	type.
      	* optabs-tree.c (optab_for_tree_code): Handle
      	VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
      	VEC_PACK_FLOAT_EXPR.  Formatting fixes.
      	* tree-vect-generic.c (expand_vector_operations_1):  Handle
      	VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
      	VEC_PACK_FLOAT_EXPR.
      	* tree-vect-stmts.c (supportable_widening_operation): Handle
      	FIX_TRUNC_EXPR.
      	(supportable_narrowing_operation): Handle FLOAT_EXPR.
      	* config/i386/i386.md (fixprefix, floatprefix): New code attributes.
      	* config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
      	(float<floatunssuffix>v2div2sf2): ... this.  Formatting fix.
      	(vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
      	mode attributes.
      	(vec_pack<floatprefix>_float_<mode>): New expander.
      	(vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
      	attributes.
      	(vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
      	vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
      	* doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
      	vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
      	vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
      	Document.
      	* doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
      	VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
      	(VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
      	VEC_PACK_FLOAT_EXPR): Document.
      
      	* gcc.target/i386/avx512dq-pr85918.c: Add -mprefer-vector-width=512
      	and -fno-vect-cost-model options.  Add aligned(64) attribute to the
      	arrays.  Add suffix 1 to all functions and use 4 iterations rather
      	than N.  Add functions with conversions to and from float.
      	Add new set of functions with 8 iterations and another one
      	with 16 iterations, expect 24 vectorized loops instead of just 4.
      	* gcc.target/i386/avx512dq-pr85918-2.c: New test.
      
      From-SVN: r260893
      Jakub Jelinek committed
    • tree-vectorizer.h (struct vec_info): Add stmt_vec_infos member. · f8c0baaf
      2018-05-29  Richard Biener  <rguenther@suse.de>
      
      	* tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
      	member.
      	(stmt_vec_info_vec): Make pointer.
      	(init_stmt_vec_info_vec): Remove.
      	(free_stmt_vec_info_vec): Likewise.
      	(set_stmt_vec_info_vec): New function.
      	(free_stmt_vec_infos): Likewise.
      	(vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
      	(set_vinfo_for_stmt): Likewise.
      	(get_earlier_stmt): Likewise.
      	(get_later_stmt): Likewise.
      	* tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
      	(vec_info::vec_info): Allocate stmt_vec_infos and set the global.
      	(vec_info::~vec_info): Free stmt_vec_infos.
      	(vectorize_loops): Set the global stmt_vec_info_vec to NULL.
      	Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
      	(pass_slp_vectorize::execute): Likewise.
      	* tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
      	(free_stmt_vec_info_vec): Likewise.
      	(set_stmt_vec_info_vec): New function.
      	(free_stmt_vec_infos): Likewise.
      	* tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
      	the global stmt_vec_info_vec.
      	* tree-parloops.c (gather_scalar_reductions): Use
      	set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
      	vector.
      
      From-SVN: r260892
      Richard Biener committed
    • dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE. · 092cb01c
      2018-05-29  Richard Biener  <rguenther@suse.de>
      
      	* dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
      
      From-SVN: r260891
      Richard Biener committed
    • Add vec::reverse. · c04f6480
      2018-05-29  Martin Liska  <mliska@suse.cz>
      	    David Malcolm  <dmalcolm@redhat.com>
      
      	* vec.c (test_reverse): New.
      	(vec_c_tests): Add new test.
      	* vec.h (vl_ptr>::reverse): New function.
      
      Co-Authored-By: David Malcolm <dmalcolm@redhat.com>
      
      From-SVN: r260890
      Martin Liska committed
    • [Ada] Adjust documentation of -gnatn switch · 86e74d58
      This changes the wording in the documentation of the -gnatn switch to make
      it use "units" rather than "modules" and also adjusts the usage message.
      
      No functional changes.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (Alphabetical
      	List of All Switches): Replace "modules" with "units".
      	(Subprogram Inlining Control): Likewise.
      	* gnat_ugn.texi: Regenerate.
      	* usage.adb (Usage): Fix description of -gnatn switch.
      
      From-SVN: r260889
      Eric Botcazou committed
    • [Ada] Fix typos in Makefile.in · 4f95a818
      2018-05-29  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* gcc-interface/Makefile.in: Fix typos.
      
      From-SVN: r260888
      Arnaud Charlet committed
    • [Ada] Attach reference to finalizers to tree · 795d0063
      2018-05-29  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_ch7.adb (Build_Finalizer_Call): Attach to tree the reference to
      	the finalizer procedure in the At_End handler, for use in LLVM
      	generation.
      
      From-SVN: r260887
      Ed Schonberg committed
    • [Ada] Wrong equality on untagged private type · 65641255
      When a private type declaration T1 is completed with a derivation of an
      untagged private type that overrides the predefined equality primitive, and the
      full view of T2 is a derivation of another private type T2 whose full view is a
      tagged type, the compiler may generate code that references the wrong equality
      primitive when processing comparisons of objects of type T1.
      
      2018-05-29  Javier Miranda  <miranda@adacore.com>
      
      gcc/ada/
      
      	* exp_ch4.adb (Expand_N_Op_Eq, Expand_Composite_Equality): Use the new
      	subprogram Inherits_From_Tagged_Full_View to identify more reliably
      	untagged private types completed with a derivation of an untagged
      	private whose full view is a tagged type.
      	* sem_util.ads, sem_util.adb (Inherits_From_Tagged_Full_View): New
      	subprogram.
      	(Collect_Primitive_Operations): Handle untagged private types completed
      	with a derivation of an untagged private type whose full view is a
      	tagged type. In such case, collecting the list of primitives we may
      	find two equality primitives: one associated with the untagged private
      	and another associated with the ultimate tagged type (and we must
      	remove from the returned list this latter one).
      
      gcc/testsuite/
      
      	* gnat.dg/equal2.adb: New testcase.
      
      From-SVN: r260886
      Javier Miranda committed
    • [Ada] Unnesting: handle statement sequences that include an At_End handler · 999acab6
      2018-05-29  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (Visit_Node): Handle statement sequences that include an
      	At_End handler.
      
      From-SVN: r260885
      Ed Schonberg committed
    • [Ada] Plug small hole in -gnatR output · 944e24a3
      The -gnatR switch outputs representation information for locally-defined
      types but it was skipping those defined in blocks without label, unlike
      those defined in named blocks.  This change plugs this small hole.
      
      The following procedure:
      
      procedure P is
      begin
        declare
          type R is record
            I : Integer;
          end record;
        begin
          null;
        end;
      end;
      
      must now generate the following output with -gnatR:
      
      Representation information for unit P (body)
      --------------------------------------------
      
      for B_1.R'Size use 32;
      for B_1.R'Alignment use 4;
      for B_1.R use record
         I at 0 range  0 .. 31;
      end record;
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb (List_Entities): Also recurse into blocks without label.
      
      From-SVN: r260884
      Eric Botcazou committed
    • [Ada] Unnesting: do not generate push/pop for exceptions · 3747db82
      2018-05-29  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_ch6.adb (Expand_N_Subprogram_Body): Do not generate push/pop for
      	exceptions if subprogram unnesting is in effect, because these branch
      	nodes are relevant only in the presence of nested subprograms.
      
      From-SVN: r260883
      Ed Schonberg committed
    • [Ada] Improper behavior of floating-point attributes · ef22a3b2
      This patch fixes an error in the handling of attributes Pred qnd Succ when
      applied to the limit values of a floating-point type. The RM mandates that
      such operations must raise constraint_error, but GNAT generated in most cases
      an infinite value, regardless of whether overflow checks were enabled.
      
      2018-05-29  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-fatgen.adb (Succ, Pred):  Raise Constraint_Error
      	unconditionally when applied to the largest positive (resp. largest
      	negative) value of a floating-point type.
      
      gcc/testsuite/
      
      	* gnat.dg/float_attributes_overflows.adb: New testcase.
      
      From-SVN: r260882
      Ed Schonberg committed
    • [Ada] Clarify use of Activation_Record_Component · 54e33e5f
      2018-05-29  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* einfo.ads, einfo.adb: Clarify use of Activation_Record_Component:
      	discriminants and exceptions are never components of such.  The flag
      	Needs_Activation_Record is set on subprogram types, not on access to
      	them.
      
      From-SVN: r260881
      Ed Schonberg committed
    • [Ada] Set scope of component of subtype · 895500a2
      2018-05-29  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* sem_ch3.adb: Set scope of component of subtype.
      
      From-SVN: r260880
      Ed Schonberg committed
    • [Ada] Unnesting: exclude selected components whose prefix carry no type · 14f8ba9a
      2018-05-29  Ed Schonberg  <schonberg@adacore.com>
      
      gcc/ada/
      
      	* exp_unst.adb (Visit_Node): Exclude selected components whose prefix
      	carry no type. Such selected components appear in unit names that are
      	child units, both in the specification and possibly in an end label for
      	the unit, and they do not contain any relevant uplevel references.
      
      From-SVN: r260879
      Ed Schonberg committed
    • [Ada] Turn Ada.Calendar.Epoch_Offset into a function · ec3b72c5
      2018-05-29  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* libgnat/a-calend.ads, libgnat/a-calend.adb (Epoch_Offset): Make it a
      	function.
      
      From-SVN: r260878
      Arnaud Charlet committed
    • [Ada] Add system-vxworks7 variants of system.ads files for Vx7 · 57dfb3ec
      Based on the Vx6 versions, using a different link spec to accomodate VxWorks 7
      specificities, in particular the ability in some configurations to rely on
      .ctor sections to trigger constructors in kernel modules.
      
      2018-05-29  Olivier Hainque  <hainque@adacore.com>
      
      gcc/ada/
      
      	* libgnat/system-vxworks7-ppc-rtp.ads: New file.
      	* libgnat/system-vxworks7-ppc-kernel.ads: New file.
      	* libgnat/system-vxworks7-e500-rtp.ads: New file.
      	* libgnat/system-vxworks7-e500-kernel.ads: New file.
      	* libgnat/system-vxworks7-x86-rtp.ads: New file.
      	* libgnat/system-vxworks-ppc64-kernel.ads: Rename as ...
      	* libgnat/system-vxworks7-ppc64-kernel.ads: and adjust name of
      	gnat-crtbe link spec to use the vx7 variant.
      
      From-SVN: r260877
      Olivier Hainque committed
    • [Ada] Tighten crtbegin files for VxWorks · 1f39fcd6
      Enforce a more explicit distinction of crtbegin objects holding
      either functions with ctor/dtor attributes or _ctors/_dtors arrays,
      or none of the two (no array, no attributes). Then allow/enforce
      different linking strategies for VxWorks 7.
      
      2018-05-29  Olivier Hainque  <hainque@adacore.com>
      
      gcc/ada/
      
      	* vx_crtbegin.inc: Use a consistent naming convention for the
      	registration/deregistration functions across RTP or kernel.  Remove the
      	ctor/dtor attribute setting based on RTP/kernel, expect the optional
      	attribute extension to be provided by includers instead.
      	* vx_crtbegin.c: Mere inclusion of vx_crtbegin.inc with empty attribute
      	extension for the registration/deregistration functions.
      	* vx_crtbegin_attr.c: New file. Include vx_crtbegin.inc with explicit
      	constructor/destructor attribute extensions.
      	* vx_crtbegin_array.c: New file. Include vx_crtbegin.inc with empty
      	attribute extensions and declare _ctors/_dtors arrays.
      	* vx_crtbegin_auto.c: Remove.
      	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Use
      	vxworks7-gnat-crtbe-link.spec.
      	* libgnat/system-vxworks7-aarch64.ads: Likewise.
      	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
      	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
      	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
      	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
      
      From-SVN: r260876
      Olivier Hainque committed
    • [Ada] Minor reformatting · 8f1edbd3
      2018-05-29  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* ali.adb: Minor reformatting.
      
      From-SVN: r260875
      Piotr Trojanek committed
    • [Ada] GNAT UGN: update package requirements for 32bit GNAT on x86_64-linux · c258a5b2
      2018-05-29  Joel Brobecker  <brobecker@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/platform_specific_information.rst: Update package
      	requirements for 32bit GNAT on x86_64-linux.
      	* gnat_ugn.texi: Regenerate.
      
      From-SVN: r260874
      Joel Brobecker committed
    • [Ada] Adjustment of behavior of new -gnatRj switch · de9b2a96
      This decouples -gnatRj from the destination, either standard output or file,
      so that it only toggles the format of the representation information.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (Debugging
      	Control): Adjust description of -gnatRj.
      	* gnat_ugn.texi: Regenerate.
      	* opt.ads (List_Representation_Info_To_JSON): Likewise.
      	* repinfo.adb (List_Rep_Info): Do not automatically create a file
      	if List_Representation_Info_To_JSON is true.
      	* switch-c.adb (Scan_Front_End_Switches) <R>: Remove incompatibility
      	check between -gnatRj and -gnatRs.
      	* usage.adb (Usage): Adjust description of -gnatRj.
      
      From-SVN: r260873
      Eric Botcazou committed
    • [Ada] Fix constraint error in Normalize_Pathname · ce09c3c0
      Fix Normalize_Pathname to avoid a constraint error.
      
      2018-05-29  Pascal Obry  <obry@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-os_lib.adb (Normalize_Pathname): Fix handling of ".." in
      	the root directory.
      
      gcc/testsuite/
      
      	* gnat.dg/normalize_pathname.adb: New testcase.
      
      From-SVN: r260872
      Pascal Obry committed
    • [Ada] System.Os_Lib: minor reformatting · ae3d5f11
      2018-05-29  Pascal Obry  <obry@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-os_lib.adb: Minor reformatting.
      
      From-SVN: r260871
      Pascal Obry committed
    • [Ada] New function to return nanoseconds from Unix Epoch · 35f5e2c1
      2018-05-29  Doug Rupp  <rupp@adacore.com>
      
      gcc/ada/
      
      	* libgnat/a-calend.adb (Epoch_Offset): Move from body to ...
      	* libgnat/a-calend.ads (Epoch_Offset): to private part of spec
      	* libgnat/a-calcon.ads (To_Unix_Nano_Time): New function spec.
      	* libgnat/a-calcon.adb (To_Unix_Nano_Time): New function body.
      
      From-SVN: r260870
      Doug Rupp committed
    • [Ada] Enhance output of discriminants with -gnatR in JSON mode · 0f9ca030
      This arranges for the Discriminant_Number of discriminants to be output
      by -gnatR in JSON mode.  This number is referenced in symbolic expressions
      present for offsets and sizes, so its definition is also required for the
      sake of completeness.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.ads (JSON format): Document new pair for components.
      	* repinfo.adb (Derived_Discriminant): New function.
      	(List_Structural_Record_Layout): Add Outer_Ent parameter and pass it
      	in recursive calls. If the record type is the parent of an extension,
      	find and list the derived discriminant from the extension, if any.
      	(List_Component_Layout): List the Discriminant_Number in JSON mode.
      	(List_Record_Info): Adjust call to List_Structural_Record_Layout.
      
      From-SVN: r260869
      Eric Botcazou committed
    • [Ada] Implement machine parsable format for -gnatR output · 1e7629b8
      This adds a new variant to the -gnatR switch, namely -gnatRj, which causes
      the compiler to output representation information to a file in the JSON
      data interchange format.  It can be combined with -gnatR0/1/2/3/m (but is
      incompatible with -gnaRe and -gnatRs).
      
      The information output in this mode is a superset of that output in the
      traditional -gnatR mode, but is otherwise equivalent for the common part.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (Alphabetical
      	List of All Switches): Document -gnatRj.
      	(Debugging Control): Likewise.
      	* gnat_ugn.texi: Regenerate.
      	* opt.ads (List_Representation_Info_To_JSON): New boolean variable.
      	* osint-c.adb (Create_Repinfo_File): Use the .json instead of .rep
      	extension if List_Representation_Info_To_JSON is true.
      	* repinfo.ads: Document the JSON output format.
      	* repinfo.adb (List_Location): New procedure.
      	(List_Array_Info): Add support for JSON output.
      	(List_Entities): Likewise.
      	(Unop): Likewise.
      	(Binop): Likewise.
      	(Print_Expr): Likewise.
      	(List_Linker_Section): Likewise.
      	(List_Mechanisms): Likewise.
      	(List_Name): Likewise.
      	(List_Object_Info): Likewise.
      	(List_Record_Info): Likewise.
      	(List_Component_Layout): Likewise.  Add Indent parameter.
      	(List_Structural_Record_Layout): New procedure.
      	(List_Attr): Add support for JSON output.
      	(List_Type_Info): Likewise.
      	(Write_Unknown_Val): Likewise.
      	* switch-c.adb (Scan_Front_End_Switches) <R>: Deal with 'j'.
      	* usage.adb (Usage): List -gnatRj.
      
      From-SVN: r260868
      Eric Botcazou committed
    • [Ada] Factor out worker procedure for -gnatR · 7883c42e
      This extracts a worker procedure for printing the layout of a single component
      from List_Record_Layout so as to make the next change more readable.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb (List_Component_Layout): New procedure extracted from...
      	(List_Record_Layout): ...here.  Invoke it.
      
      From-SVN: r260867
      Eric Botcazou committed
    • [Ada] Minor cleanup in repinfo unit · 76b382d9
      This factors out the various cases where a marker for an unknown value is
      output by the -gnatR switches.  No functional changes.
      
      2018-05-29  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* repinfo.adb (Write_Unknown_Val): New procedure.
      	(List_GCC_Expression): Call it.
      	(List_Record_Layout): Likewise.
      	(Write_Val): Likewise.
      
      From-SVN: r260866
      Eric Botcazou committed
    • [Ada] Clear Do_Overflow_Check when inserting code to do check · c35c40e7
      2018-05-29  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
      
      gcc/ada/
      
      	* exp_ch4.adb (Expand_N_Op_Abs): Clear Do_Overflow_Check when inserting
      	code to do check.
      
      From-SVN: r260865
      Richard Kenner committed
    • [Ada] Lib.Write: avoid use of System.Case_Util · ccec48c0
      2018-05-29  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* lib-writ.adb (Write_ALI): Do not use new function from s-casuti yet.
      	This breaks build of cross compilers with older versions of GNAT, so
      	better avoid it.
      
      From-SVN: r260864
      Arnaud Charlet committed
    • [Ada] Refine documentation of Monotonic_Clock to reflect reality · eda45984
      2018-05-29  Doug Rupp  <rupp@adacore.com>
      
      gcc/ada/
      
      	* libgnarl/s-taprop.ads (Monotonic_Clock): Refine documentation to
      	reflect reality.
      
      From-SVN: r260863
      Doug Rupp committed
    • [Ada] Always do range check against 'First · d8eb4ac4
      2018-05-29  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
      
      gcc/ada/
      
      	* exp_ch4.adb (Expand_N_Op_Abs): Always do range check against 'First.
      
      From-SVN: r260862
      Richard Kenner committed