Commit Graph

161725 Commits

Author SHA1 Message Date
Jonathan Wakely
5baa6f8ebd Qualify another call in <variant>
* include/std/variant (__erased_dtor): Qualify call to __get.

From-SVN: r260900
2018-05-29 18:21:31 +01:00
Jakub Jelinek
69ce0c8c77 re PR c++/85952 (Bogus -Wunused-but-set-variable warning with array structured binding)
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
2018-05-29 19:07:57 +02:00
Richard Biener
fec0bf3084 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
2018-05-29 14:35:28 +00:00
Martin Liska
0e8f29daae libgcov: report about a different timestamp (PR gcov-profile/85759).
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
2018-05-29 12:11:21 +00:00
Jakub Jelinek
e379122d1f tree-cfg.c (verify_gimple_assign_unary): Add checking for VEC_UNPACK_*_EXPR.
* 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
2018-05-29 14:01:26 +02:00
Jakub Jelinek
1bda738bab 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
2018-05-29 13:58:24 +02:00
Richard Biener
f8c0baaf31 tree-vectorizer.h (struct vec_info): Add stmt_vec_infos member.
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
2018-05-29 11:49:44 +00:00
Richard Biener
092cb01cbf dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
2018-05-29  Richard Biener  <rguenther@suse.de>

	* dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.

From-SVN: r260891
2018-05-29 11:44:16 +00:00
Martin Liska
c04f64807e Add vec::reverse.
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
2018-05-29 09:55:02 +00:00
Eric Botcazou
86e74d5869 [Ada] Adjust documentation of -gnatn switch
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
2018-05-29 09:42:50 +00:00
Arnaud Charlet
4f95a81816 [Ada] Fix typos in Makefile.in
2018-05-29  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* gcc-interface/Makefile.in: Fix typos.

From-SVN: r260888
2018-05-29 09:42:45 +00:00
Ed Schonberg
795d00637d [Ada] Attach reference to finalizers to tree
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
2018-05-29 09:42:39 +00:00
Javier Miranda
656412552b [Ada] Wrong equality on untagged private type
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
2018-05-29 09:42:34 +00:00
Ed Schonberg
999acab61b [Ada] Unnesting: handle statement sequences that include an At_End handler
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
2018-05-29 09:42:29 +00:00
Eric Botcazou
944e24a31a [Ada] Plug small hole in -gnatR output
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
2018-05-29 09:42:16 +00:00
Ed Schonberg
3747db827d [Ada] Unnesting: do not generate push/pop for exceptions
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
2018-05-29 09:42:11 +00:00
Ed Schonberg
ef22a3b269 [Ada] Improper behavior of floating-point attributes
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
2018-05-29 09:42:05 +00:00
Ed Schonberg
54e33e5f6a [Ada] Clarify use of Activation_Record_Component
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
2018-05-29 09:41:59 +00:00
Ed Schonberg
895500a2ae [Ada] Set scope of component of subtype
2018-05-29  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch3.adb: Set scope of component of subtype.

From-SVN: r260880
2018-05-29 09:41:52 +00:00
Ed Schonberg
14f8ba9ad1 [Ada] Unnesting: exclude selected components whose prefix carry no type
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
2018-05-29 09:41:45 +00:00
Arnaud Charlet
ec3b72c55d [Ada] Turn Ada.Calendar.Epoch_Offset into a function
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
2018-05-29 09:41:40 +00:00
Olivier Hainque
57dfb3eca0 [Ada] Add system-vxworks7 variants of system.ads files for Vx7
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
2018-05-29 09:41:34 +00:00
Olivier Hainque
1f39fcd651 [Ada] Tighten crtbegin files for VxWorks
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
2018-05-29 09:41:02 +00:00
Piotr Trojanek
8f1edbd3ac [Ada] Minor reformatting
2018-05-29  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* ali.adb: Minor reformatting.

From-SVN: r260875
2018-05-29 09:40:37 +00:00
Joel Brobecker
c258a5b2fa [Ada] GNAT UGN: update package requirements for 32bit GNAT on x86_64-linux
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
2018-05-29 09:40:15 +00:00
Eric Botcazou
de9b2a969e [Ada] Adjustment of behavior of new -gnatRj switch
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
2018-05-29 09:39:44 +00:00
Pascal Obry
ce09c3c07f [Ada] Fix constraint error in Normalize_Pathname
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
2018-05-29 09:39:11 +00:00
Pascal Obry
ae3d5f110d [Ada] System.Os_Lib: minor reformatting
2018-05-29  Pascal Obry  <obry@adacore.com>

gcc/ada/

	* libgnat/s-os_lib.adb: Minor reformatting.

From-SVN: r260871
2018-05-29 09:38:41 +00:00
Doug Rupp
35f5e2c14a [Ada] New function to return nanoseconds from Unix Epoch
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
2018-05-29 09:38:17 +00:00
Eric Botcazou
0f9ca0303e [Ada] Enhance output of discriminants with -gnatR in JSON mode
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
2018-05-29 09:37:43 +00:00
Eric Botcazou
1e7629b8a2 [Ada] Implement machine parsable format for -gnatR output
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
2018-05-29 09:36:51 +00:00
Eric Botcazou
7883c42e3f [Ada] Factor out worker procedure for -gnatR
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
2018-05-29 09:36:34 +00:00
Eric Botcazou
76b382d9a0 [Ada] Minor cleanup in repinfo unit
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
2018-05-29 09:35:57 +00:00
Richard Kenner
c35c40e7f6 [Ada] Clear Do_Overflow_Check when inserting code to do check
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
2018-05-29 09:35:25 +00:00
Arnaud Charlet
ccec48c0a4 [Ada] Lib.Write: avoid use of System.Case_Util
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
2018-05-29 09:34:47 +00:00
Doug Rupp
eda45984f4 [Ada] Refine documentation of Monotonic_Clock to reflect reality
2018-05-29  Doug Rupp  <rupp@adacore.com>

gcc/ada/

	* libgnarl/s-taprop.ads (Monotonic_Clock): Refine documentation to
	reflect reality.

From-SVN: r260863
2018-05-29 09:33:50 +00:00
Richard Kenner
d8eb4ac457 [Ada] Always do range check against 'First
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
2018-05-29 09:31:00 +00:00
Eric Botcazou
28cfa26975 [Ada] Fix irregular output with -gnatRm
The information displayed by -gnatRm was using slightly different naming
and formatting conventions than the rest of the -gnatR information with
no justification, so this adjusts it for the sake of consistency.

For the following package:

package P is

  function F (I : Integer) return Integer;

  type Rec is limited record
    I : Integer;
  end record;

  procedure P1 (R : Rec; I : out Integer);

  procedure P2 (R : Rec; I : out Integer);
  pragma Linker_Section (P2, ".my_section");

  package Inner is

    procedure P3;

  end Inner;

end P;

package body P is

  function F (I : Integer) return Integer is
  begin
    return I;
  end;

  procedure P1 (R : Rec; I : out Integer) is
  begin
    I := R.I;
  end;

  procedure P2 (R : Rec; I : out Integer) is
  begin
    I := R.I;
  end;

  package body Inner is

     procedure P3 is
     begin
       null;
     end;

  end Inner;

end P;

the output of -gnatRm must be:

Representation information for unit P (body)
--------------------------------------------

Representation information for unit P (spec)
--------------------------------------------

function F declared at p7.ads:3:12
convention : Ada
   I : passed by copy
returns by copy

for Rec'Size use 32;
for Rec'Alignment use 4;
for Rec use record
   I at 0 range  0 .. 31;
end record;

procedure P1 declared at p7.ads:9:13
convention : Ada
   R : passed by reference
   I : passed by copy

procedure P2 declared at p7.ads:11:13
convention : Ada
   R : passed by reference
   I : passed by copy
pragma Linker_Section (P2, ".my_section");

procedure Inner.P3 declared at p7.ads:16:15
convention : Ada

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

gcc/ada/

	* repinfo.adb (List_Entities): Do not list the Linker_Section for
	subprograms here...
	(List_Mechanisms): ...but here instead.  Use consistent name output
	and formatting conventions.

From-SVN: r260861
2018-05-29 09:29:28 +00:00
Bob Duff
9f4b346b0b [Ada] Preliminary work to avoid full pathnames in ALI files
Normally, ALI files refer to source files using simple names. This allows files
to be moved around without disturbing things (causing extra recompilations,
etc). However, for configuration files, the full pathname is stored. This patch
preparates the code base to store the simple name in this case.

2018-05-29  Bob Duff  <duff@adacore.com>

gcc/ada/

	* lib-writ.adb (Write_ALI): Cleanup: avoid use of global var; call new
	To_Lower function.
	* libgnat/s-casuti.ads, libgnat/s-casuti.adb (To_Upper, To_Lower,
	To_Mixed): New functions.
	* osint.adb: Cleanup: use Is_Directory_Separator, which correctly
	allows both '\' and '/' on Windows.

From-SVN: r260860
2018-05-29 09:28:59 +00:00
Tom de Vries
0c46b4263c [testsuite] Fix "too few/many" error messages in scan-*-times procs
2018-05-29  Tom de Vries  <tom@codesourcery.com>

	* lib/scanasm.exp (scan-assembler-times): Use proc name in error
	message.
	* lib/scanipa.exp (scan-ipa-dump-times): Same.
	* lib/scanrtl.exp (scan-rtl-dump-times): Same.
	* lib/scantree.exp (scan-tree-dump-times): Same.

From-SVN: r260859
2018-05-29 07:08:34 +00:00
Tom de Vries
e79182bb71 [testsuite] Use correct proc names in scanasm.exp
2018-05-29  Tom de Vries  <tom@codesourcery.com>

	* lib/scanasm.exp (scan-stack-usage, scan-stack-usage-not)
	(scan-ada-spec, scan-ada-spec-not, scan-lto-assembler):
	Use proc name as first argument to dg-scan.

From-SVN: r260858
2018-05-29 07:08:23 +00:00
Tom de Vries
b4d0b1a7e6 [testsuite] Fix error message in scan-hidden/scan-not-hidden
2018-05-29  Tom de Vries  <tom@codesourcery.com>

	* lib/scanasm.exp (scan-hidden, scan-not-hidden): Handle being called
	with no arguments.

From-SVN: r260857
2018-05-29 07:08:11 +00:00
GCC Administrator
240e12d031 Daily bump.
From-SVN: r260856
2018-05-29 00:16:38 +00:00
Gerald Pfeifer
1eae45747a config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
* config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.

	* config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
	and later.

From-SVN: r260852
2018-05-28 23:20:15 +00:00
Jerry DeLisle
1f161c48ed re PR fortran/85840 (Memory leak in write.c)
2018-05-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/85840
	* io/write.c (write_real, write_real_g0, write_complex): Use
	separate local variables for the float string length.

From-SVN: r260851
2018-05-28 21:55:31 +00:00
Bernd Edlinger
b0c31bc65b splay-tree.h (splay_tree_compare_strings, [...]): Declare new utility functions.
include:
2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * splay-tree.h (splay_tree_compare_strings,
        splay_tree_delete_pointers): Declare new utility functions.

libiberty:
2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * splay-tree.c (splay_tree_compare_strings,
        splay_tree_delete_pointers): New utility functions.

gcc:
2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * tree-dump.c (dump_node): Use splay_tree_delete_pointers.

c-family:
2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * c-lex.c (get_fileinfo): Use splay_tree_compare_strings and
        splay_tree_delete_pointers.

cp:
2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * decl2.c (start_static_storage_duration_function): Use
        splay_tree_delete_pointers.

From-SVN: r260850
2018-05-28 18:21:23 +00:00
Richard Biener
3b1cffccce re PR middle-end/85933 (FAIL: gcc.dg/sso/p8.c -O3 -finline-functions (internal compiler error))
2018-05-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/85933
	* tree-vect-data-refs.c (vect_record_base_alignments): Only
	look at stmts marked as vectorizable.

From-SVN: r260848
2018-05-28 10:31:46 +00:00
Richard Biener
b29502e735 re PR tree-optimization/85934 (ICE: verify_gimple failed (error: type mismatch in vector pack expression))
2018-05-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/85934
	* tree-vect-generic.c (expand_vector_operations_1): Hoist
	vector boolean check before scalar optimization.

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

From-SVN: r260847
2018-05-28 10:28:38 +00:00
Jakub Jelinek
533aa46a86 invoke.texi (ARM Options): Use @item instead of @itemx for armv5te.
* doc/invoke.texi (ARM Options): Use @item instead of @itemx
	for armv5te.

From-SVN: r260846
2018-05-28 12:20:56 +02:00
Mark Wielaard
7728669d4b DWARF: Handle expressions containing "-1" in dw2_asm_output_delta_uleb128.
In dwarf2out.c dwarf2out_var_location () we create loclabels that might
contain -1 (for example ".LVL5-1"). Technically those are expressions,
not just plain labels. But they work fine everywhere we use them, except
when calculating an uleb128 delta between two labels.

For example we might create the following DWARF5 location list entry:

        .byte   0x3     # DW_LLE_startx_length (*.LLST0)
        .uleb128 0x6    # Location list range start index (*.LVL5-1)
        .uleb128 .LFE1-.LVL5-1        # Location list length (*.LLST0)
        .uleb128 0x1    # Location expression size
        .byte   0x54    # DW_OP_reg4
        .byte   0       # DW_LLE_end_of_list (*.LLST0)

Note the length is calculated using .uleb128 .LFE1-.LVL5-1. This is
wrong, since both .LVL5 and 1 are substracted from .LFE1, instead of
1 being subtracted from .LVL5 first, before substracting from .LFE1.

This happens because dw2_asm_output_delta_uleb128 expects two plain
labels and simply inserts a minus sign between them. To fix this we
simply look if the second label is actually an expression containing
a minus sign and then add brackets around it. That will emit the
correct .uleb128 expression:

        .uleb128 .LFE1-(.LVL5-1)        # Location list length (*.LLST0)

We cannot simply generate the loclabel containing brackets directly
because we do use them also in contexts that don't take a full
expression (for example we use them with .quad too).

gcc/

	* dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around
	lab2 if it is an expression containing a minus sign.

From-SVN: r260845
2018-05-28 09:06:02 +00:00