Commit Graph

163122 Commits

Author SHA1 Message Date
Richard Sandiford 4fbeb36361 [06/46] Add vec_info::add_stmt
This patch adds a vec_info function for allocating and setting
stmt_vec_infos.  It's the start of a long process of removing
the global stmt_vec_info array.

2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vectorizer.h (stmt_vec_info): Move typedef earlier in file.
	(vec_info::add_stmt): Declare.
	* tree-vectorizer.c (vec_info::add_stmt): New function.
	* tree-vect-data-refs.c (vect_create_data_ref_ptr): Use it.
	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Likewise.
	(vect_create_epilog_for_reduction, vectorizable_reduction): Likewise.
	(vectorizable_induction): Likewise.
	* tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Likewise.
	* tree-vect-stmts.c (vect_finish_stmt_generation_1): Likewise.
	(vectorizable_simd_clone_call, vectorizable_store): Likewise.
	(vectorizable_load): Likewise.
	* tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
	(vect_recog_bool_pattern, vect_recog_mask_conversion_pattern)
	(vect_recog_gather_scatter_pattern): Likewise.
	(append_pattern_def_seq): Likewise.  Remove a check that is
	performed by add_stmt itself.

From-SVN: r263121
2018-07-31 14:21:37 +00:00
Richard Sandiford 79cc8302f7 [05/46] Fix make_ssa_name call in vectorizable_reduction
The usual vectoriser dance to create new assignments is:

    new_stmt = gimple_build_assign (vec_dest, ...);
    new_temp = make_ssa_name (vec_dest, new_stmt);
    gimple_assign_set_lhs (new_stmt, new_temp);

but one site in vectorizable_reduction used:

    new_temp = make_ssa_name (vec_dest, new_stmt);

before creating new_stmt.

This method of creating statements probably needs cleaning up, but
that's for another day...

2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-loop.c (vectorizable_reduction): Fix an instance in
	which make_ssa_name was called with new_stmt before new_stmt
	had been created.

From-SVN: r263120
2018-07-31 14:21:32 +00:00
Richard Sandiford 83a400d0a5 [04/46] Factor out the test for a valid reduction input
vect_is_slp_reduction and vect_is_simple_reduction had two instances
each of:

              && (is_gimple_assign (def_stmt)
                  || is_gimple_call (def_stmt)
                  || STMT_VINFO_DEF_TYPE (vinfo_for_stmt (def_stmt))
                           == vect_induction_def
                  || (gimple_code (def_stmt) == GIMPLE_PHI
                      && STMT_VINFO_DEF_TYPE (vinfo_for_stmt (def_stmt))
                                  == vect_internal_def
                      && !is_loop_header_bb_p (gimple_bb (def_stmt)))))

This patch splits it out in a subroutine.

2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-loop.c (vect_valid_reduction_input_p): New function,
	split out from...
	(vect_is_slp_reduction): ...here...
	(vect_is_simple_reduction): ...and here.  Remove repetition of tests
	that are already known to be false.

From-SVN: r263119
2018-07-31 14:21:28 +00:00
Richard Sandiford 6e2dd807c2 [03/46] Remove unnecessary update of NUM_SLP_USES
vect_free_slp_tree had:

  gimple *stmt;
  FOR_EACH_VEC_ELT (SLP_TREE_SCALAR_STMTS (node), i, stmt)
    /* After transform some stmts are removed and thus their vinfo is gone.  */
    if (vinfo_for_stmt (stmt))
      {
	gcc_assert (STMT_VINFO_NUM_SLP_USES (vinfo_for_stmt (stmt)) > 0);
	STMT_VINFO_NUM_SLP_USES (vinfo_for_stmt (stmt))--;
      }

But after transform this update is redundant even for statements that do
exist, so it seems better to skip this loop for the final teardown.

2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vectorizer.h (vect_free_slp_instance): Add a final_p parameter.
	* tree-vect-slp.c (vect_free_slp_tree): Likewise.  Don't update
	STMT_VINFO_NUM_SLP_USES when it's true.
	(vect_free_slp_instance): Add a final_p parameter and pass it to
	vect_free_slp_tree.
	(vect_build_slp_tree_2): Update call to vect_free_slp_instance.
	(vect_analyze_slp_instance): Likewise.
	(vect_slp_analyze_operations): Likewise.
	(vect_slp_analyze_bb_1): Likewise.
	* tree-vectorizer.c (vec_info): Likewise.
	* tree-vect-loop.c (vect_transform_loop): Likewise.

From-SVN: r263118
2018-07-31 14:21:23 +00:00
Richard Sandiford ac1359be3a [02/46] Remove dead vectorizable_reduction code
vectorizable_reduction has old code to cope with cases in which the
given statement belongs to a reduction group but isn't the first statement.
That can no longer happen, since all statements in the group go into the
same SLP node, and we only check the first statement in each node.

The point is to remove the only path through vectorizable_reduction
in which stmt and stmt_info refer to different statements.

2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-loop.c (vectorizable_reduction): Assert that the
	function is not called for second and subsequent members of
	a reduction group.

From-SVN: r263117
2018-07-31 14:21:17 +00:00
Richard Sandiford 0847049dc7 [01/46] Move special cases out of get_initial_def_for_reduction
This minor clean-up avoids repeating the test for double reductions
and also moves the vect_get_vec_def_for_operand call to the same
function as the corresponding vect_get_vec_def_for_stmt_copy.

2018-07-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-loop.c (get_initial_def_for_reduction): Move special
	cases for nested loops from here to ...
	(vect_create_epilog_for_reduction): ...here.  Only call
	vect_is_simple_use for inner-loop reductions.

From-SVN: r263116
2018-07-31 14:21:11 +00:00
Jakub Jelinek 686dca7612 P1008R1 - prohibit aggregates with user-declared constructors
P1008R1 - prohibit aggregates with user-declared constructors
	* class.c (check_bases_and_members): For C++2a set
	CLASSTYPE_NON_AGGREGATE based on TYPE_HAS_USER_CONSTRUCTOR rather than
	type_has_user_provided_or_explicit_constructor.

	* g++.dg/ext/is_aggregate.C: Add tests with deleted or defaulted ctor.
	* g++.dg/cpp0x/defaulted1.C (main): Ifdef out for C++2a B b = {1};.
	* g++.dg/cpp0x/deleted2.C: Expect error for C++2a.
	* g++.dg/cpp2a/aggr1.C: New test.
	* g++.dg/cpp2a/aggr2.C: New test.

From-SVN: r263115
2018-07-31 16:19:26 +02:00
Segher Boessenkool 8810325ff6 arm: Testcase for PR86640
gcc/testsuite/
	PR target/86640
	* gcc.target/arm/pr86640.c: New testcase.

From-SVN: r263114
2018-07-31 16:01:29 +02:00
Martin Liska e2844b1358 GCOV: add cache for streamed locations.
2018-07-31  Martin Liska  <mliska@suse.cz>

        PR gcov-profile/85338
        PR gcov-profile/85350
        PR gcov-profile/85372
        * profile.c (struct location_triplet): New.
	(struct location_triplet_hash): Likewise.
	(output_location): Do not output a BB that
        is already recorded for a line.
	(branch_prob): Use streamed_locations.
2018-07-31  Martin Liska  <mliska@suse.cz>

        PR gcov-profile/85338
        PR gcov-profile/85350
        PR gcov-profile/85372
	* gcc.misc-tests/gcov-pr85338.c: New test.
	* gcc.misc-tests/gcov-pr85350.c: New test.
	* gcc.misc-tests/gcov-pr85372.c: New test.

From-SVN: r263113
2018-07-31 10:34:36 +00:00
Martin Liska 80dde427a0 Fix target clones (PR gcov-profile/85370).
2018-07-31  Martin Liska  <mliska@suse.cz>

        PR gcov-profile/85370
	* coverage.c (coverage_begin_function): Do not mark target
        clones as artificial functions.

From-SVN: r263112
2018-07-31 10:34:02 +00:00
Martin Liska 102fcf94e6 Fix GCOV CFG related issues.
2018-07-31  Martin Liska  <mliska@suse.cz>

        PR gcov-profile/83813
        PR gcov-profile/84758
        PR gcov-profile/85217
        PR gcov-profile/85332
	* profile.c (branch_prob): Do not record GOTO expressions
        for GIMPLE statements which locations are already streamed.
2018-07-31  Martin Liska  <mliska@suse.cz>

        PR gcov-profile/83813
        PR gcov-profile/84758
        PR gcov-profile/85217
        PR gcov-profile/85332
	* gcc.misc-tests/gcov-pr83813.c: New test.
	* gcc.misc-tests/gcov-pr84758.c: New test.
	* gcc.misc-tests/gcov-pr85217.c: New test.
	* gcc.misc-tests/gcov-pr85332.c: New test.

From-SVN: r263111
2018-07-31 10:33:21 +00:00
Martin Liska 5dbc3940fc Fix an UBSAN error in cp/parse.c (PR c++/86653).
2018-07-31  Martin Liska  <mliska@suse.cz>

        PR c++/86653
	* parser.c (cp_parser_condition): Initialize non_constant_p
        to false.

From-SVN: r263110
2018-07-31 10:32:13 +00:00
Arnaud Charlet ae71d81b18 [Ada] Various code clean-ups from CodePeer messages
2018-07-31  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* clean.adb, gnatchop.adb, gnatfind.adb, gnatls.adb,
	gnatmake.ads, gnatxref.adb, make.adb, make.ads, make_util.ads,
	sfn_scan.adb, vxaddr2line.adb, xeinfo.adb, xoscons.adb,
	xr_tabls.adb, xref_lib.adb: Address CodePeer messages.

From-SVN: r263108
2018-07-31 09:56:59 +00:00
Arnaud Charlet 1c0b35aac9 [Ada] Fix potential Constraint_Error if Library_Version is too long
2018-07-31  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* gnatlink.adb: Fix potential Constraint_Error if
	Library_Version is too long.

From-SVN: r263107
2018-07-31 09:56:53 +00:00
Arnaud Charlet fa9f3f8c44 [Ada] Sem_Elab: remove duplicate condition
2018-07-31  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* sem_elab.adb: Remove duplicate condition detected by CodePeer.

From-SVN: r263106
2018-07-31 09:56:48 +00:00
Ed Schonberg 0d756922b0 [Ada] Unnesting: improve support for entries in protected objects
2018-07-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_unst.adb (Subp_Index): In the case of a protected
	operation, the relevant entry is the generated
	protected_subprogram_body into which the original body is
	rewritten. Assorted cleanup and optimizations.

From-SVN: r263105
2018-07-31 09:56:43 +00:00
Ed Schonberg 948071faa6 [Ada] Refine generation of range checks to happen in front end
2018-07-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_attr.adb (Expand_Attribute, case Fixed_Value): Set the
	base type of the result to ensure that proper overflow and range
	checks are generated.  If the target is a fixed-point tyoe,
	generate the required overflow and range checks explicitly,
	rather than relying on Apply_Type_Conversion_Checks, which might
	simply set the Do_Range_Check flag and rely on the backend to
	add the check.

From-SVN: r263104
2018-07-31 09:56:36 +00:00
Hristian Kirtchev 51d4bdfb56 [Ada] Secondary stack leak with access-to-subprogram
This patch modifies call resolution to recognize when the designated type of
an access-to-subprogram requires secondary stack management, and establish
the proper transient block.

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

--  leak7.adb

procedure Leak7 is
   Max_Iterations : constant := 10_000;

   function Func return String is
   begin
      return "Will this leak? Or will it dry?";
   end Func;

   type Func_Ptr is access function return String;

   procedure Anonymous_Leak (Func : access function return String) is
   begin
      for Iteration in 1 .. Max_Iterations loop
         declare
            Val : constant String := Func.all;
         begin null; end;
      end loop;
   end Anonymous_Leak;

   procedure Named_Leak (Func : Func_Ptr) is
   begin
      for Iteration in 1 .. Max_Iterations loop
         declare
            Val : constant String := Func.all;
         begin null; end;
      end loop;
   end Named_Leak;

begin
   Anonymous_Leak (Func'Access);
   Named_Leak     (Func'Access);
end Leak7;

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

$ gnatmake -q leak7.adb
$ valgrind ./leak7 >& leak7.txt
$ grep -c "still reachable" leak7.txt
0

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

gcc/ada/

	* sem_res.adb (Resolve_Call): Establish a transient scope to
	manage the secondary stack when the designated type of an
	access-to-subprogram requires it.

From-SVN: r263103
2018-07-31 09:56:31 +00:00
Ed Schonberg 51f2fc7d76 [Ada] Unnesting: find local subps in nested stmt sequences
2018-07-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada

	* exp_ch7.adb (Check_Unnesting_Elaboration_Code): To find local
	subprograms in the elaboration code for a package body, recurse
	through nested statement sequences because a compiler-generated
	procedure may appear within a condition statement.

From-SVN: r263102
2018-07-31 09:56:26 +00:00
Ed Schonberg 6cdce5064b [Ada] Spurious error on default parameter in protected operation
This patch fixes a spurious compiler error on a call to a protected
operation whose profile includes a defaulted in-parameter that is a call
to another protected function of the same object.

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

gcc/ada/

	* exp_ch6.adb (Expand_Protected_Subprogram_Call): Handle
	properly a protected call that includes a default parameter that
	is a call to a protected function of the same type.

gcc/testsuite/

	* gnat.dg/prot5.adb, gnat.dg/prot5_pkg.adb,
	gnat.dg/prot5_pkg.ads: New testcase.

From-SVN: r263101
2018-07-31 09:56:21 +00:00
Justin Squirek c992e2e4bd [Ada] GNATmake fails to detect missing body
This patch corrects an issue whereby building a multi-unit compilation with
missing sources resulted in a cryptic "code generation" error instead of the
appropriate file not found error.

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

--  main.adb

with Types;
procedure Main is
begin
   null;
end;

--  types.ads

package Types is
  procedure Force;
end;

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

& gnatmake -q main.adb
gnatmake: "types.adb" not found

2018-07-31  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* lib-writ.adb (Write_With_Lines): Modfiy the generation of
	dependencies within ali files so that source unit bodies are
	properly listed even if said bodies are missing.  Perform legacy
	behavior in GNATprove mode.
	* lib-writ.ads: Modify documentation to reflect current behavior.

From-SVN: r263100
2018-07-31 09:56:15 +00:00
Eric Botcazou a6ed513cb8 [Ada] Fix alignment of mutex_t and cond_t type on 32-bit SPARC/Solaris
The alignment of the couple of types from System.OS_Interface was wrongly
set to 4 (32-bit) instead of 8 (64-bit) in 32-bit mode.

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

gcc/ada/

	*  libgnarl/s-osinte__solaris.ads (upad64_t): New private type.
	(mutex_t): Use it for 'lock' and 'data' components.
	(cond_t): Likewise for 'data' and use single 'flags' component.

From-SVN: r263099
2018-07-31 09:56:10 +00:00
Justin Squirek a7576e1356 [Ada] Wrong value after assignment of overlain record objects
This patch corrects an issue whereby objects of a record type with a
representation clause which are overlain by address would fail to get
assigned values properly when one or both of said objects were marked
volatile.

2018-07-31  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* exp_ch5.adb (Make_Field_Assign): Force temporarily generated
	objects for assignment of overlaid user objects to be renamings
	instead of constant declarations.

gcc/testsuite/

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

From-SVN: r263098
2018-07-31 09:56:04 +00:00
Hristian Kirtchev 007443a0c1 [Ada] Spurious error on the placement of aspect Global
This patch modifies the expansion of stand-alone subprogram bodies that appear
in the body of a protected type to properly associate aspects and pragmas to
the newly created spec for the subprogram body. As a result, the annotations
are properly associated with the initial declaration of the subprogram.

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

gcc/ada/

	* exp_ch9.adb (Analyze_Pragmas): New routine.
	(Build_Private_Protected_Declaration): Code clean up. Relocate
	relevant aspects and pragmas from the stand-alone body to the
	newly created spec.  Explicitly analyze any pragmas that have
	been either relocated or produced by the analysis of the
	aspects.
	(Move_Pragmas): New routine.
	* sem_prag.adb (Find_Related_Declaration_Or_Body): Recognize the
	case where a pragma applies to the internally created spec for a
	stand-along subprogram body declared in a protected body.

gcc/testsuite/

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

From-SVN: r263097
2018-07-31 09:55:59 +00:00
Gary Dismukes 76ed5f08f4 [Ada] Compiler failure on an extended_return_statement in a block
When compiling with an assertion-enabled compiler, Assert_Failure can be
raised when expanded an extended_return_statement whose enclosing scope
is not a function (such as when it's a block_statement). The simple fix
is to change the Assert to test Current_Subprogram rather than Current_Scope.
Three such Assert pragmas are corrected in this way.

2018-07-31  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Replace
	calls to Current_Scope in three assertions with calls to
	Current_Subprogram.

gcc/testsuite/

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

From-SVN: r263096
2018-07-31 09:55:53 +00:00
Ed Schonberg c4a2e585d3 [Ada] Spurious warning on iteration over range of 64-bit modular type
This patch suppresses a spurious warning on the use of a 64-bit modular type
in a quantified expression, where the range of iteration will include a bound
that appears larger than the run-time representation of Universal_Integer'last.

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

gcc/ada/

	* sem_eval.adb (Check_Non_Static_Context): Do not warn on an
	integer literal greater than the upper bound of
	Universal_Integer'Last when expansion is disabled, to avoid a
	spurious warning over ranges involving 64-bit modular types.

gcc/testsuite/

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

From-SVN: r263095
2018-07-31 09:55:48 +00:00
Arnaud Charlet 1e739bf78e [Ada] Print the Is_Activation_Record flag
2018-07-31  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* einfo.adb (Write_Entity_Flags): Also print
	Is_Activation_Record flag.

From-SVN: r263094
2018-07-31 09:55:43 +00:00
Piotr Trojanek bb6a856baf [Ada] Replace low-level calls to Ekind with high-level calls to Is_Formal
High-level wrappers are easier to read. This change came up while reading
some code related to GNATprove, but then uniformly applied to the entire
frontend. For the few remaining membership tests that could be replaced
by Is_Formal it is not obvious whether the high-level routine makes the
code better.

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

gcc/ada/

	* exp_aggr.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb,
	repinfo.adb, sem_ch9.adb: Minor replace Ekind membership tests
	with a wrapper routine.

From-SVN: r263093
2018-07-31 09:55:37 +00:00
Piotr Trojanek e8723e7441 [Ada] Deconstruct 'F' as a prefix for an ALI data
In GNATprove we used to store a variant of cross-reference information in
the ALI file in lines that started with an 'F' letter. This is no longer
the case, so the letter can be returned to the pool of unused prefixes.

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

gcc/ada/

	* ali.adb (Known_ALI_Lines): Remove 'F' as a prefix for lines
	related to the FORMAL analysis done by GNATprove.

From-SVN: r263092
2018-07-31 09:55:32 +00:00
Javier Miranda b09a237ab8 [Ada] Fix a freezing issue
2018-07-31  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* sem.ads (Inside_Preanalysis_Without_Freezing): New global
	counter.
	* sem.adb (Semantics): This subprogram has now the
	responsibility of resetting the counter before analyzing a unit,
	and restoring its previous value before returning.
	* freeze.adb (Freeze_Entity): Do not freeze if we are
	preanalyzing without freezing.
	* sem_res.adb (Preanalyze_And_Resolve): Set & restore
	In_Preanalysis_Without_Freezing.

From-SVN: r263091
2018-07-31 09:55:26 +00:00
Ed Schonberg 3bb9bd7dcc [Ada] Fix resolution of class-wide operations that are generic actuals
2018-07-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch4.adb (Traverse_Homonyms): Consider generic actuals that
	may rename a matching class-wide operation only if the renaming
	declaration for that actual is in an enclosing scope (i.e.
	within the corrresponding instance).

From-SVN: r263090
2018-07-31 09:55:21 +00:00
Hristian Kirtchev 617709748b [Ada] Minor reformattings
2018-07-31  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada

	* checks.adb, contracts.adb, exp_aggr.adb, exp_ch5.adb,
	exp_disp.adb, make.adb, sem_ch4.adb, sem_eval.adb, sem_res.adb,
	usage.adb: Minor reformatting.

From-SVN: r263089
2018-07-31 09:55:16 +00:00
Bob Duff e78c79ff53 [Ada] Spurious error -- "allocation from empty storage pool"
This patch fixes a bug in which if "pragma Default_Storage_Pool (null);"
is given, then a build-in-place function will get an incorrect error
message "allocation from empty storage pool" even though there is no
such allocation in the source program.

2018-07-31  Bob Duff  <duff@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Allocator): Do not complain about the
	implicit allocator that occurs in the expansion of a return
	statement for a build-in-place function.

From-SVN: r263088
2018-07-31 09:55:11 +00:00
Olivier Hainque 1102fd64db Improve specs processing to allow %* in function arguments
2018-07-31  Olivier Hainque  <hainque@adacore.com>

	* gcc.c (handle_spec_function): Accept a soft_matched_part
	argument, as do_spec_1.  Pass it down to ...
	(eval_spec_function): Accept a soft_matched_part argument,
	and pass it down to ...
	(do_spec_2): Accept a soft_matched_part argument, and pass
	it down to do_spec_1.
	(do_spec_1): Pass soft_matched_part to handle_spec_function.
	(handle_braces): Update call to handle_spec_function.
	(driver::set_up_specs): Update calls to do_spec_2.
	(compare_debug_dump_opt_spec_function): Likewise.
	(compare_debug_self_opt_spec_function): Likewise.

From-SVN: r263087
2018-07-31 09:44:48 +00:00
Olivier Hainque f37866e818 Add support for -nolibc
2018-06-07  Olivier Hainque  <hainque@adacore.com>

	* common.opt (nolibc): New option.
	* doc/invoke.texi (Link Options): Document it.
	* gcc.c (LINK_GCC_C_SEQUENCE_SPEC): Honor nolibc.
	* config/alpha/linux.h: Likewise.
	* config/arc/elf.h: Likewise.
	* config/arm/uclinux-elf.h: Likewise.
	* config/arm/unknown-elf.h: Likewise.
	* config/avr/avrlibc.h: Likewise.
	* config/bfin/bfin.h: Likewise.
	* config/bfin/linux.h: Likewise.
	* config/bfin/uclinux.h: Likewise.
	* config/darwin.h: Likewise.
	* config/darwin10.h: Likewise.
	* config/darwin12.h: Likewise.
	* config/gnu-user.h: Likewise.
	* config/lm32/uclinux-elf.h: Likewise.
	* config/pa/pa-hpux11.h: Likewise.
	* config/pa/pa64-hpux.h: Likewise.
	* config/sparc/sparc.h: Likewise.

From-SVN: r263083
2018-07-31 09:24:41 +00:00
Andre Vieira 1d4a51cf50 Reverting 'AsyncI/O patch committed' as it is breaking bare-metal builds.
2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	Revert 'AsyncI/O patch committed'
	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
		Thomas Koenig <tkoenig@gcc.gnu.org>

	PR fortran/25829
	* gfortran.texi: Add description of asynchronous I/O.
	* trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
	as volatile.
	* trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
	st_wait_async and change argument spec from ".X" to ".w".
	(gfc_trans_wait): Pass ID argument via reference.

2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	Revert 'AsyncI/O patch committed'
	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
		Thomas Koenig <tkoenig@gcc.gnu.org>

	PR fortran/25829
	* gfortran.dg/f2003_inquire_1.f03: Add write statement.
	* gfortran.dg/f2003_io_1.f03: Add wait statement.

2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	Revert 'AsyncI/O patch committed'
	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
		Thomas Koenig <tkoenig@gcc.gnu.org>

	PR fortran/25829
	* Makefile.am: Add async.c to gfor_io_src.
	Add async.h to gfor_io_headers.
	* Makefile.in: Regenerated.
	* gfortran.map: Add _gfortran_st_wait_async.
	* io/async.c: New file.
	* io/async.h: New file.
	* io/close.c: Include async.h.
	(st_close): Call async_wait for an asynchronous unit.
	* io/file_pos.c (st_backspace): Likewise.
	(st_endfile): Likewise.
	(st_rewind): Likewise.
	(st_flush): Likewise.
	* io/inquire.c: Add handling for asynchronous PENDING
	and ID arguments.
	* io/io.h (st_parameter_dt): Add async bit.
	(st_parameter_wait): Correct.
	(gfc_unit): Add au pointer.
	(st_wait_async): Add prototype.
	(transfer_array_inner): Likewise.
	(st_write_done_worker): Likewise.
	* io/open.c: Include async.h.
	(new_unit): Initialize asynchronous unit.
	* io/transfer.c (async_opt): New struct.
	(wrap_scalar_transfer): New function.
	(transfer_integer): Call wrap_scalar_transfer to do the work.
	(transfer_real): Likewise.
	(transfer_real_write): Likewise.
	(transfer_character): Likewise.
	(transfer_character_wide): Likewise.
	(transfer_complex): Likewise.
	(transfer_array_inner): New function.
	(transfer_array): Call transfer_array_inner.
	(transfer_derived): Call wrap_scalar_transfer.
	(data_transfer_init): Check for asynchronous I/O.
	Perform a wait operation on any pending asynchronous I/O
	if the data transfer is synchronous. Copy PDT and enqueue
	thread for data transfer.
	(st_read_done_worker): New function.
	(st_read_done): Enqueue transfer or call st_read_done_worker.
	(st_write_done_worker): New function.
	(st_write_done): Enqueue transfer or call st_read_done_worker.
	(st_wait): Document as no-op for compatibility reasons.
	(st_wait_async): New function.
	* io/unit.c (insert_unit): Use macros LOCK, UNLOCK and TRYLOCK;
	add NOTE where necessary.
	(get_gfc_unit): Likewise.
	(init_units): Likewise.
	(close_unit_1): Likewise. Call async_close if asynchronous.
	(close_unit): Use macros LOCK and UNLOCK.
	(finish_last_advance_record): Likewise.
	(newunit_alloc): Likewise.
	* io/unix.c (find_file): Likewise.
	(flush_all_units_1): Likewise.
	(flush_all_units): Likewise.
	* libgfortran.h (generate_error_common): Add prototype.
	* runtime/error.c: Include io.h and async.h.
	(generate_error_common): New function.

2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	Revert 'AsyncI/O patch committed'.
	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
		Thomas Koenig <tkoenig@gcc.gnu.org>

	PR fortran/25829
	* testsuite/libgomp.fortran/async_io_1.f90: New test.
	* testsuite/libgomp.fortran/async_io_2.f90: New test.
	* testsuite/libgomp.fortran/async_io_3.f90: New test.
	* testsuite/libgomp.fortran/async_io_4.f90: New test.
	* testsuite/libgomp.fortran/async_io_5.f90: New test.
	* testsuite/libgomp.fortran/async_io_6.f90: New test.
	* testsuite/libgomp.fortran/async_io_7.f90: New test.

From-SVN: r263082
2018-07-31 08:42:21 +00:00
Olivier Hainque 58691d4a04 getenv_spec_function to prepend / to value for undef var
So the value can be used in places where an absolute path
is expected.

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

        * gcc.c (getenv_spec_function): Prepend '/' to value for
	allowed undefined variables.

From-SVN: r263081
2018-07-31 08:30:41 +00:00
GCC Administrator c89b64d7eb Daily bump.
From-SVN: r263080
2018-07-31 00:16:35 +00:00
Segher Boessenkool 8f953899e3 arm: Generate correct const_ints (PR86640)
In arm_block_set_aligned_vect 8-bit constants are generated as zero-
extended const_ints, not sign-extended as required.  Fix that.


	PR target/86640
	* config/arm/arm.c (arm_block_set_aligned_vect): Use gen_int_mode
	instead of GEN_INT.

From-SVN: r263075
2018-07-30 19:50:26 +02:00
Jonathan Wakely a64ede727f PR libstdc++/86734 make reverse_iterator::operator-> more robust
Implement the proposed resolution from LWG 1052, which also resolves
DR 2118 by avoiding taking the address in the first place.

	PR libstdc++/86734
	* include/bits/stl_iterator.h (reverse_iterator::operator->): Call
	_S_to_pointer (LWG 1052, LWG 2118).
	(reverse_iterator::_S_to_pointer): Define overloaded helper functions.
	* testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
	* testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.

From-SVN: r263074
2018-07-30 18:13:05 +01:00
Jonathan Wakely 1b3b888d11 Add workaround for aligned_alloc bug on AIX
20_util/memory_resource/2.cc FAILs on AIX 7.2.0.0, because aligned_alloc
incorrectly requires the alignment to be a multiple of sizeof(void*).

This adds a workaround to the operator new overload taking an alignment
value, to increase the alignment (and size) if needed.

	* libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
	workaround for aligned_alloc bug on AIX.
	* testsuite/18_support/new_aligned.cc: New test.

From-SVN: r263073
2018-07-30 18:12:44 +01:00
Segher Boessenkool 81bdfc1e29 testcase for 2-2 combine
gcc/testsuite/
	PR rtl-optimization/85160
	* gcc.target/powerpc/combine-2-2.c: New testcase.

From-SVN: r263072
2018-07-30 18:11:44 +02:00
Joseph Myers fd5d859302 * de.po, sv.po: Update.
From-SVN: r263070
2018-07-30 16:31:04 +01:00
Tom Tromey 6ef4752bc9 cplus-dem.c (remember_Btype): Don't call memcpy with LEN==0.
2018-07-30  Tom Tromey  <tom@tromey.com>

	* cplus-dem.c (remember_Btype): Don't call memcpy with LEN==0.

From-SVN: r263069
2018-07-30 13:47:01 +00:00
Bernd Edlinger cff431d2d9 tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL terminated string literal.
2018-07-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
        terminated string literal.

From-SVN: r263068
2018-07-30 13:26:25 +00:00
Segher Boessenkool c4c5ad1d6d combine: Allow combining two insns to two insns
This patch allows combine to combine two insns into two.  This helps
in many cases, by reducing instruction path length, and also allowing
further combinations to happen.  PR85160 is a typical example of code
that it can improve.

This patch does not allow such combinations if either of the original
instructions was a simple move instruction.  In those cases combining
the two instructions increases register pressure without improving the
code.  With this move test register pressure does no longer increase
noticably as far as I can tell.

(At first I also didn't allow either of the resulting insns to be a
move instruction.  But that is actually a very good thing to have, as
should have been obvious).


	PR rtl-optimization/85160
	* combine.c (is_just_move): New function.
	(try_combine): Allow combining two instructions into two if neither of
	the original instructions was a move.

From-SVN: r263067
2018-07-30 15:18:17 +02:00
Christophe Lyon b74159752d [ARM] libgcc: Fix comment for code working on architectures >= 4.
2018-07-30  Christophe Lyon  <christophe.lyon@linaro.org>

	* config/arm/ieee754-df.S: Fix comment for code working on
	architectures >= 4.
	* config/arm/ieee754-sf.S: Likewise.

From-SVN: r263066
2018-07-30 14:51:42 +02:00
Alexander Monakov 4cc035143d doc: discourage const/volatile on register variables (PR 86673)
PR target/86673
	* doc/extend.texi (Global Register Variables): Discourage use of type
	qualifiers.
	(Local Register Variables): Likewise.

From-SVN: r263065
2018-07-30 15:26:37 +03:00
Richard Sandiford 1dcadcf01d Resync inline implementation of ceil_log2 (PR 86506)
In r262961 I only updated the out-of-line copy of ceil_log2.  This patch
applies the same change to the other (inline) one.

2018-07-30  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR tree-optimization/86506
	* hwint.h (ceil_log2): Resync with hwint.c implementation.

From-SVN: r263064
2018-07-30 11:23:26 +00:00
Ilya Leoshkevich dc843a8597 lra: consider clobbers when selecting hard_regno to spill
The idea behind the rclass loop in spill_hard_reg_in_range() seems to
be: find a hard_regno, which in general conflicts with reload regno,
but does not do so between `from` and `to`, and then do the live range
splitting based on this information. To check the absence of conflicts,
we make use of insn_bitmap, which does not contain insns which clobber
the hard_regno.

gcc/ChangeLog:

2018-07-30  Ilya Leoshkevich  <iii@linux.ibm.com>

        PR target/86547
	* lra-constraints.c (spill_hard_reg_in_range): When selecting the
	hard_regno, make sure no insn between `from` and `to` clobbers it.

From-SVN: r263063
2018-07-30 08:30:06 +00:00