gcc.git
6 years ago* ChangeLog: Add missing PR number.
Uros Bizjak [Wed, 26 Sep 2018 15:00:00 +0000 (17:00 +0200)]
* ChangeLog: Add missing PR number.

From-SVN: r264646

6 years agore PR target/87439 (ICE in ix86_mode_needed, at config/i386/i386.c:18907)
Uros Bizjak [Wed, 26 Sep 2018 14:55:59 +0000 (16:55 +0200)]
re PR target/87439 (ICE in ix86_mode_needed, at config/i386/i386.c:18907)

PR target/87439
* config/i386/i386.h (NUM_MODES_FOR_MODE_SWITCHING): Update
for removed I387_MASK_PM entity.

From-SVN: r264645

6 years agoRevert
Jeff Law [Wed, 26 Sep 2018 14:50:03 +0000 (08:50 -0600)]
Revert
2018-09-26  Alexey Neyman  <stilor@att.net>

* graphite.h: Include <isl/id.h> and <isl/space.h>; these
headers are no longer pulled in by <isl/val.h>.

From-SVN: r264644

6 years agore PR debug/87443 (GCC mixes abstract and concrete instances in abstract origins...
Richard Biener [Wed, 26 Sep 2018 14:35:48 +0000 (14:35 +0000)]
re PR debug/87443 (GCC mixes abstract and concrete instances in abstract origins for inlines)

2018-09-26  Richard Biener  <rguenther@suse.de>

PR debug/87443
* dwarf2out.c (gen_lexical_block_die): Do not equate inline
or concrete instance DIE to the tree.  Create abstract origin
attributes also for concrete instances.

* gcc.dg/debug/dwarf2/inline5.c: New testcase.

From-SVN: r264643

6 years agographite.h: Include <isl/id.h> and <isl/space.h>...
Alexey Neyman [Wed, 26 Sep 2018 14:09:03 +0000 (14:09 +0000)]
graphite.h: Include <isl/id.h> and <isl/space.h>...

* graphite.h: Include <isl/id.h> and <isl/space.h>; these
headers are no longer pulled in by <isl/val.h>.

From-SVN: r264642

6 years agoIgnore chmod errors during mostlyclean-local, check-go-tool
Rainer Orth [Wed, 26 Sep 2018 12:56:09 +0000 (12:56 +0000)]
Ignore chmod errors during mostlyclean-local, check-go-tool

* Makefile.am (mostlyclean-local): Ignore chmod errors.
(check-go-tool): Likewise.
* Makefile.in: Regenerate.

From-SVN: r264641

6 years ago[PR 87347] Prevent segfaults if TYPE_ARG_TYPES is NULL
Martin Jambor [Wed, 26 Sep 2018 11:58:18 +0000 (13:58 +0200)]
[PR 87347] Prevent segfaults if TYPE_ARG_TYPES is NULL

2018-09-26  Martin Jambor  <mjambor@suse.cz>

PR c/87347
c/
* c-parser.c (warn_for_abs): Bail out if TYPE_ARG_TYPES is NULL.  Fix
        comment.

testsuite/
* gcc.dg/pr87347.c: New test.

From-SVN: r264640

6 years agore PR c++/71131 ([concepts] Ill-formed code declaring a variable with a template...
Paolo Carlini [Wed, 26 Sep 2018 09:59:56 +0000 (09:59 +0000)]
re PR c++/71131 ([concepts] Ill-formed code declaring a variable with a template concept not rejected)

2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71131
* g++.dg/concepts/pr71131.C: New.

2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/71127
* g++.dg/concepts/pr71127.C: New.

From-SVN: r264639

6 years agore PR c++/67655 ([concepts] expression constraints and variadic expansions)
Paolo Carlini [Wed, 26 Sep 2018 09:23:00 +0000 (09:23 +0000)]
re PR c++/67655 ([concepts] expression constraints and variadic expansions)

2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/67655
* g++.dg/concepts/pr67655.C: New.

From-SVN: r264638

6 years ago[Ada] SPARK: minor error message enhancement
Elisa Barboni [Wed, 26 Sep 2018 09:20:10 +0000 (09:20 +0000)]
[Ada] SPARK: minor error message enhancement

2018-09-26  Elisa Barboni  <barboni@adacore.com>

gcc/ada/

* sem_prag.adb (Check_Refined_Global_Item): Improve error
message.

From-SVN: r264637

6 years ago[Ada] Fix inheritance of representation items defined as aspects
Thomas Quinot [Wed, 26 Sep 2018 09:20:05 +0000 (09:20 +0000)]
[Ada] Fix inheritance of representation items defined as aspects

When a representation item is defined by a pragma or attribute
definition clause, the entity it applies to is that of the Name of the
representation item. But when it is defined by an aspect definition, the
entity is directly denoted by the Entity attribute of the represenation
item. The circuitry that inherits representation items for derived types
or subtypes must account for these two possible cases.

2018-09-26  Thomas Quinot  <quinot@adacore.com>

gcc/ada/

* sem_ch13.adb (Inherit_Aspects_At_Freeze_Point): For a
representation item that is an N_Aspect_Definition, retrieve the
entity it applies to using the Entity attribute.

gcc/testsuite/

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

From-SVN: r264636

6 years ago[Ada] Spurious ineffective use_clause warning
Justin Squirek [Wed, 26 Sep 2018 09:19:53 +0000 (09:19 +0000)]
[Ada] Spurious ineffective use_clause warning

This patch fixes an issue whereby user-defined subprograms used as
generic actuals with corresponding formals containing other formal types
led to spurious ineffective use_clause warnings.

2018-09-26  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* sem_ch8.adb (Analyze_Subprogram_Renaming): Add extra condition
to check for unmarked subprogram references coming from
renamings.

gcc/testsuite/

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

From-SVN: r264635

6 years ago[Ada] Store -G xxx switches
Arnaud Charlet [Wed, 26 Sep 2018 09:19:47 +0000 (09:19 +0000)]
[Ada] Store -G xxx switches

2018-09-26  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* back_end.adb (Scan_Compiler_Arguments): Store -G xxx switches.

From-SVN: r264634

6 years ago[Ada] Issue info message on inlined subprograms in GNATprove mode
Yannick Moy [Wed, 26 Sep 2018 09:19:43 +0000 (09:19 +0000)]
[Ada] Issue info message on inlined subprograms in GNATprove mode

Issue a positive message that inlining was performed in GNATprove mode,
when corresponding debug switch -gnatd_f is set.

2018-09-26  Yannick Moy  <moy@adacore.com>

gcc/ada/

* errout.ads: Update comment for insertion character '?'.
* inline.adb: Use simple insertion character '?' for GNATprove
info messages.
* sem_res.adb (Resolve_Call): Issue an info message on inlining
in GNATprove mode.

From-SVN: r264633

6 years ago[Ada] Missing front-end code for constraint checks on fixed point exprs
Ed Schonberg [Wed, 26 Sep 2018 09:19:38 +0000 (09:19 +0000)]
[Ada] Missing front-end code for constraint checks on fixed point exprs

This patch ensures that the front-end generates constraint checks for
some operations that previously depended on gigi for the corresponding
check. The patch also resets the Do_Range_Check flag so that it never
appears in the tree presented to gigi.

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* checks.adb (Apply_Type_Conversion_Checks): Do not generate a
range check on the expression of the conversion if it involves a
fixed-point type, as such conversions are handled specially
during expansion.
* exp_ch4.adb (Expand_N_Type_Conversion): In a conversion from
Fixed to Integer, use the base type of the expression to ensure
that the caller will generate the proper constraint check when
needed.

From-SVN: r264632

6 years ago[Ada] SPARK: fix a bug related to loop exit environment
Maroua Maalej [Wed, 26 Sep 2018 09:19:33 +0000 (09:19 +0000)]
[Ada] SPARK: fix a bug related to loop exit environment

2018-09-26  Maroua Maalej  <maalej@adacore.com>

gcc/ada/

* sem_spark.adb (Check_Loop_Statement): Fix a bug related to
loop exit environment.
(Check_Statement): fixing a bug when comparing the source and
target in an assignment statement.

From-SVN: r264631

6 years ago[Ada] Spurious elaboration issue due to inlining
Hristian Kirtchev [Wed, 26 Sep 2018 09:19:28 +0000 (09:19 +0000)]
[Ada] Spurious elaboration issue due to inlining

This patch ensures that the full compilation context is captured prior
to package or subprogram instantiation/inlining and restored after the
action takes place.

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* sem_ch12.adb (Instantiate_Package_Body): Capture and restore
the full compilation context.
(Instantiate_Subprogram_Body): Capture and restore the full
compilation context.

gcc/testsuite/

* gnat.dg/elab7.adb, gnat.dg/elab7_pkg1.adb,
gnat.dg/elab7_pkg1.ads, gnat.dg/elab7_pkg2.adb,
gnat.dg/elab7_pkg2.ads: New testcase.

From-SVN: r264630

6 years ago[Ada] Do not issue by default info messages for inlining in GNATprove
Yannick Moy [Wed, 26 Sep 2018 09:19:12 +0000 (09:19 +0000)]
[Ada] Do not issue by default info messages for inlining in GNATprove

Info messages about lack of inlining for analysis in GNATprove may be
confusing to users. They are now only issued when GNATprove is called
with switch --info, which it passes on to gnat2why with switch -gnatd_f.

There is no effect on compilation.

2018-09-26  Yannick Moy  <moy@adacore.com>

gcc/ada/

* debug.adb: Add use for -gnatd_f switch.
* inline.adb (Cannot_Inline): Only issue info message for
failure to inline in GNATprove mode when switch -gnatd_f is
used.

From-SVN: r264629

6 years ago[Ada] Spurious error on interface conversion under ZFP
Javier Miranda [Wed, 26 Sep 2018 09:19:04 +0000 (09:19 +0000)]
[Ada] Spurious error on interface conversion under ZFP

The frontend reports an error under ZFP when performing the type
conversion of a tagged object to one of its covered interface types.

2018-09-26  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* exp_disp.adb (Expand_Interface_Conversion): No displacement of
the pointer needed when the type of the operand is an interface
type that maches the target type and we are compiling under
configurable runtime. Adding also documentation explaining why
this cannot be done when compiling with the full runtime.
* exp_intr.adb: Update comment.

gcc/testsuite/

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

From-SVN: r264628

6 years ago[Ada] Add a No_Return annotation to ease static analysis
Hristian Kirtchev [Wed, 26 Sep 2018 09:18:58 +0000 (09:18 +0000)]
[Ada] Add a No_Return annotation to ease static analysis

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* sem_ch5.adb (Wrap_Loop_Statement): Annotate as No_Return.

From-SVN: r264627

6 years ago[Ada] Spurious error on private extension with predicate
Ed Schonberg [Wed, 26 Sep 2018 09:18:52 +0000 (09:18 +0000)]
[Ada] Spurious error on private extension with predicate

This patch fixes a spurious error involving a private extension whose
full view includes a dynamic predicate, when the parent type is itself
private at the point of the predicate check.  The conversion is known to
be legal so no extra conversion checks are required.

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_util.adb (Make_Predicate_Call): Use OK_Convert_To when
applying a predicate check to prevent spurious errors when
private ancestors are involved.

gcc/testsuite/

* gnat.dg/predicate2-containers.ads,
gnat.dg/predicate2-project-name_values.ads,
gnat.dg/predicate2-project-registry-attribute.ads,
gnat.dg/predicate2-project-registry.ads,
gnat.dg/predicate2-project-typ-set.ads,
gnat.dg/predicate2-project-typ.ads,
gnat.dg/predicate2-project.ads,
gnat.dg/predicate2-source_reference.ads, gnat.dg/predicate2.ads,
gnat.dg/predicate2_main.adb: New testcase.

From-SVN: r264626

6 years ago[Ada] Spurious dependency on secondary stack
Hristian Kirtchev [Wed, 26 Sep 2018 09:18:35 +0000 (09:18 +0000)]
[Ada] Spurious dependency on secondary stack

This patch reimplements the handling of the secondary stack when the
iteration scheme of a loop statement requires this support.

Prior to this modification, an iterator loop over a container was
assumed to require unconditional secondary stack management. This is
however not always true because of user-defined iterator types, where
routines First and Next return an iterator that does require the
secondary stack.

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

--  gnat.adc

pragma Restrictions (No_Secondary_Stack);

--  test.ads

package Test is
   type Test_Type is private
   with
      Default_Initial_Condition,
      Iterable => (First       => First_Element,
                   Next        => Next_Element,
                   Has_Element => Has_Element,
                   Element     => Element);

   type Cursor_Type is private;

   function First_Element (T : Test_Type) return Cursor_Type;

   function Next_Element (T : Test_Type; C : Cursor_Type) return Cursor_Type;

   function Has_Element (T : Test_Type; C : Cursor_Type) return Boolean;

   function Element (T : Test_Type; C : Cursor_Type) return Natural;

private
   type Cursor_Type is new Natural;

   type Test_Type is record
      null;
   end record;

   function First_Element (T : Test_Type) return Cursor_Type
   is (0);

   function Next_Element (T : Test_Type; C : Cursor_Type) return Cursor_Type
   is (0);

   function Has_Element (T : Test_Type; C : Cursor_Type) return Boolean
   is (False);

   function Element (T : Test_Type; C : Cursor_Type) return Natural
   is (0);
end Test;

--  main.adb

with Test; use Test;

procedure Main is
   F : Boolean;
   M : Test_Type;

begin
   for Elem of M loop
      null;
   end loop;

   F := (for all C of M => C = 1);
   F := (for all C in M => True);
end Main;

-----------------
-- Compilation --
-----------------

$ gnatmake -q --RTS=zfp -nostdlib main.adb

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* exp_ch4.adb (Expand_N_Allocator): Ensure that the use of the
secondary stack does not clash with restriction
No_Secondary_Stack.
* exp_ch6.adb (Expand_N_Extended_Return_Statement): Ensure that
the use of the secondary stack does not clash with restriction
No_Secondary_Stack.
* sem_ch5.adb (Analyze_Loop_Statement): Wrap the loop in a block
prior to analysis in order to either provide a local scope for
an iterator, or ensure that the secondary stack is properly
managed.
(Check_Call): Account for the case where the tree may be
unanalyzed or contain prior errors.
(Has_Call_Using_Secondary_Stack): Renamed to Has_Sec_Stack_Call.
Update all uses of the subprogram.
(Prepare_Loop_Statement): New routine.

From-SVN: r264625

6 years ago[Ada] Mimic the C++ ABI when passing class-wide conversion actuals
Javier Miranda [Wed, 26 Sep 2018 09:18:29 +0000 (09:18 +0000)]
[Ada] Mimic the C++ ABI when passing class-wide conversion actuals

This patch does not affect the behavior of Ada-only code but improves
consistency with the code generated by the C++ compiler.

2018-09-26  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Actuals): If the formal is a class-wide
type conversion then do not skip resolving and expanding the
conversion; required to displace the pointer to the object and
reference the dispatch table associated with the target
interface type.

From-SVN: r264624

6 years ago[Ada] Pair miscount in Dynamic_HTable.Put
Hristian Kirtchev [Wed, 26 Sep 2018 09:18:23 +0000 (09:18 +0000)]
[Ada] Pair miscount in Dynamic_HTable.Put

This patch corrects the logic of GNAT.Dynamic_HTables.Dynamic_HTable.Put to
update the number of key-value pairs in the hash table only when the put is
adding a new pair, rather than updating the value of an existing pair.

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* libgnat/g-dynhta.adb (Prepend_Or_Replace): Update the number
of key-value pairs in the hash table only when adding a brand
new pair.

gcc/testsuite/

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

From-SVN: r264623

6 years ago[Ada] Add notes about processing of aggregate projects
Sergey Rybin [Wed, 26 Sep 2018 09:18:16 +0000 (09:18 +0000)]
[Ada] Add notes about processing of aggregate projects

2018-09-26  Sergey Rybin  <rybin@adacore.com>

gcc/ada/

* doc/gnat_ugn/gnat_utility_programs.rst: Add note about
processing of aggregate projects in gnatmetric and gnatstub.

From-SVN: r264622

6 years ago[Ada] Minor reformattings
Hristian Kirtchev [Wed, 26 Sep 2018 09:18:09 +0000 (09:18 +0000)]
[Ada] Minor reformattings

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* contracts.adb, exp_unst.adb, exp_util.adb, gnat1drv.adb,
opt.ads, par-prag.adb, sem_ch3.adb, sem_ch5.adb, sem_prag.adb,
sinfo.ads, snames.ads-tmpl: Minor reformatting.

From-SVN: r264621

6 years ago[Ada] New unit GNAT.Sets
Hristian Kirtchev [Wed, 26 Sep 2018 09:18:02 +0000 (09:18 +0000)]
[Ada] New unit GNAT.Sets

This patch implements unit GNAT.Sets which currently offers a general purpose
membership set. The patch also streamlines GNAT.Dynamic_HTables and GNAT.Lists
to use parts of the same API, types, and exceptions as those used by GNAT.Sets.

2018-09-26  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* gcc-interface/Make-lang.in: Add unit GNAT.Sets to the list of
front end sources.
* impunit.adb: Add unit GNAT.Sets to the list of predefined
units.
* Makefile.rtl: Add unit GNAT.Sets to the list of non-tasking
units.
* libgnat/g-sets.adb: New unit.
* libgnat/g-sets.ads: New unit.
* libgnat/g-dynhta.adb (Minimum_Size): Decrease to 8 in order to
allow for small sets.  Update all occurrences of Table_Locked to
Iterated.
(Ensure_Unlocked): Query the number of iterators.
(Find_Node): Use the supplied equality.
(Is_Empty): New routine.
(Lock): Update the number of iterators.
(Prepend_Or_Replace): Use the supplied equality.
(Size): Update the return type.
(Unlock): Update the number of iterators.
* libgnat/g-dynhta.ads: Update all occurrences of Table_Locked
to Iterated.  Rename formal subprogram Equivalent_Keys to "=".
(Bucket_Range_Type, Pair_Count_Type): Remove types.
(Not_Created, Table_Locked, Iterator_Exhausted): Remove
exceptions.
(Hash_Table): Update to store the number of iterators rather
than locks.
(Is_Empty): New routine.
(Size): Update the return type.
* libgnat/g-lists.adb: Update all occurrences of List_Locked to
Iterated.
(Ensure_Unlocked): Query the number of iterators.
(Length): Remove.
(Lock): Update the number of iterators.
(Size): New routine.
(Unlock): Update the number of iterators.
* libgnat/g-lists.ads: Update all occurrences of List_Locked to
Iterated.
(Element_Count_Type): Remove type.
(Not_Created, Table_Locked, Iterator_Exhausted): Remove
exceptions.
(Linked_List): Update type to store the number of iterators
rather than locks.
(Length): Remove.
(Size): New routine.
* libgnat/gnat.ads (Bucket_Range_Type): New type.
(Iterated, Iterator_Exhausted, and Not_Created): New exceptions.

gcc/testsuite/

* gnat.dg/sets1.adb: New testcase.
* gnat.dg/dynhash.adb, gnat.dg/linkedlist.adb: Update testcases
to new API.

From-SVN: r264620

6 years ago[Ada] ICE on mix of tagged and limited interfaces
Javier Miranda [Wed, 26 Sep 2018 09:17:56 +0000 (09:17 +0000)]
[Ada] ICE on mix of tagged and limited interfaces

2018-09-26  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* checks.adb (Install_Null_Excluding_Check): Do not add
null-excluding checks when the tree may not be fully decorated.
This patch cascade errors.

From-SVN: r264619

6 years ago[Ada] Illegal formal objects associated with anonymous acc-to-subp args
Gary Dismukes [Wed, 26 Sep 2018 09:17:51 +0000 (09:17 +0000)]
[Ada] Illegal formal objects associated with anonymous acc-to-subp args

The compiler was incorrectly accepting generic instantiations with
formal objects of named access-to-subprogram types associated with an
actual of an anonymous access-to-subprogram type.
Analyze_Object_Declaration tests for objects initialized anonymous
access-to-subprogram values, and wraps a conversion around the argument,
which normally will result in error checks during resolution in
Valid_Conversion, but the conversion was only created when the
initialization expression Comes_From_Source, which prevented the
conversion wrapping from happening for constant declarations resulting
from generic expansion. The test for Comes_From_Source was removed.

The following test must report the error output given further below for
the three constructs marked as errors when compiled with this command:

gcc -c -gnatj70 bad_anon_access_instance.adb

procedure Bad_Anon_Access_Instance (Anon_Acc : access procedure) is

   type Ref is access procedure;

   Ref_1 : Ref := Anon_Acc;           -- ERROR (flagged by GNAT)

   Ref_2 : constant Ref := Anon_Acc;  -- ERROR (flagged by GNAT)

   generic
      Formal_Ref : Ref;
   package Gen is
   end Gen;

   package Inst
     is new Gen (Formal_Ref => Anon_Acc); -- ERROR (but not flagged by GNAT)

begin
   null;
end Bad_Anon_Access_Instance;

-------------
Error output:
-------------

bad_anon_access_instance.adb:4:19: illegal attempt to store anonymous
                                   access to subprogram, value has
                                   deeper accessibility than any
                                   master (RM 3.10.2 (13)), use named
                                   access type for "Anon_Acc" instead
                                   of access parameter
bad_anon_access_instance.adb:6:28: illegal attempt to store anonymous
                                   access to subprogram, value has
                                   deeper accessibility than any
                                   master (RM 3.10.2 (13)), use named
                                   access type for "Anon_Acc" instead
                                   of access parameter
bad_anon_access_instance.adb:14:32: illegal attempt to store
                                    anonymous access to subprogram,
                                    value has deeper accessibility
                                    than any master (RM 3.10.2 (13)),
                                    use named access type for
                                    "Anon_Acc" instead of access
                                    parameter

2018-09-26  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

* sem_ch3.adb (Analyze_Object_Declaration): Remove test for
Comes_From_Source, which prevented implicit conversions from
being applied to anonymous access-to-subprogram formals in
constant declartions that arise from instance associations for
generic formal objects.  Add RM and AARM references to comment.

From-SVN: r264618

6 years ago[Ada] Front-end support for OpenACC pragmas
Olivier Hainque [Wed, 26 Sep 2018 09:17:46 +0000 (09:17 +0000)]
[Ada] Front-end support for OpenACC pragmas

This patch introduces the upper part of the Ada front-end support for a first
set of OpenACC directives (Acc_Kernels, Acc_Loop, Acc_Parallel, Acc_Data) and
their clauses.

The pragmas syntax is documented, pragmas are recognized and checked for
syntactic correctness, keyed on -fopenacc. A couple of new flags are defined
on loop statements in the GNAT tree.

2018-09-26  Olivier Hainque  <hainque@adacore.com>

gcc/ada/

* opt.ads (OpenAcc_Enabled): New flag. False by default. True
when OpenACC pragmas are requested to be honored, when -fopenacc
is found on the command line.
* back_end.adb (Scan_Compiler_Arguments): Set OpenACC_Enabled if
-fopenacc is seen on the command line.
* sinfo.adb, sinfo.ads (Is_OpenAcc_Environment): New
flag/predicate on Loop statements which embed an Acc_Kernels,
Acc_Parallel or Acc_Data pragma.
(Is_OpenAcc_Loop): New flag/predicate on Loop statements which
embed an Acc_Loop pragma.
(Set_Is_OpenAcc_Environment, Set_Is_OpenAcc_Loop): Setters for
the new flags.
* par-prag.adb (Prag): Handle Acc_Data, Acc_Loop, Acc_Parallel
and Acc_Kernels pragmas.  Nothing to do here, all handled by
sem_prag.
* sem_prag.adb (Acc_First, Acc_Next,
Validate_Acc_Condition_Clause, Validate_Acc_Data_Clause,
Validate_Acc_Int_Expr_Clause, Validate_Acc_Int_Expr_List_Clause,
Validate_Acc_Loop_Collapse, Validate_Acc_Loop_Gang,
Validate_Acc_Loop_Vector, Validate_Acc_Loop_Worker,
Validate_Acc_Name_Reduction, Validate_Acc_Size_Expressions): New
helper for Analyze_Pragma, to handle OpenACC pragmas.
(Analyze_Pragma): Handle Acc_Data, Acc_Loop, Acc_Parallel and
Acc_Kernels pragmas.
* sem_ch5.adb (Disable_Constant): Unset Is_True_Constant on
variable entity, action for ...
(Disable_Constants): Helper for Analyze_Loop_Statement, to ...
(Analyze_Loop_Statement): Disable True_Constant on variables
referenced within an OpenACC environment.
* snames.ads-tmpl: Declare Name_Ids for the OpenACC directives
and clauses we can handle. Remove an exraneous whitespace before
columns, preventing line length overflow in the generated spec
with Ids now reaching beyond 999.
* doc/gnat_rm/implementation_defined_pragmas.rst: Document
pragma Acc_Parallel, Acc_Loop, Acc_Kernels and Acc_Data.
* gnat_rm.texi: Regenerate.

From-SVN: r264617

6 years ago[Ada] Missing error on non-limited derived type with limited component
Ed Schonberg [Wed, 26 Sep 2018 09:17:41 +0000 (09:17 +0000)]
[Ada] Missing error on non-limited derived type with limited component

This patch fixes a missing error on a type extension with limited
components, when the parent type is a derived limited interface. This
may allow the unit to improperly compile, but may lead to bind-time
errors when compiling a client of that unit.

Compiling p.adb must yield:

 keys.ads:8:06: extension of nonlimited type cannot have limited components
 keys.ads:8:06: limitedness is not inherited from limited interface
 keys.ads:8:06: add "limited" to type indication

----
with Keys;
procedure P is
begin
  null;
end;
----
with GNAT.Semaphores;
package Keys is

  type Ref0 is limited interface;
  type Ref2 is limited interface and Ref0;

  type Object is new Ref2 with record
     Lock : aliased GNAT.Semaphores.Binary_Semaphore
       (True, GNAT.Semaphores.Default_Ceiling);
  end record;

end;

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch3.adb (Is_Onown_Limited): A derived type whose parent P
is a derived limited record is not itself limited if P is a
derived limited interface.

From-SVN: r264616

6 years ago[Ada] Inlining of renamed subprogram instances in package body
Eric Botcazou [Wed, 26 Sep 2018 09:17:36 +0000 (09:17 +0000)]
[Ada] Inlining of renamed subprogram instances in package body

This fixes a small discrepancy in the handling of renamed subprograms
declared in a package body, between those originally a regular
subprogram and those an instance of a generic subprogram, the latter
being slightly hindered.

The difference comes from the setting of the Is_Public flag, which was
more conservative in the latter case because instantiations of generic
subprograms are done in compiler-generated local packages.

It is eliminated by allowing Has_Referencer to recurse into nested
packages, but only if they are themselves not instances of generic
packages.

The compiler must now fully inline Doit_I into Doit at -O2 in:

package P is

  generic procedure Doit_G;

  procedure Doit;
end P;

package body P is

  N : Natural := 0;

  procedure Doit_G is
  begin
    N := 1;
  end Doit_G;

  procedure Doit_I is new Doit_G;

  procedure Doit renames Doit_I;

end P;

2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* sem_ch7.adb (Has_Referencer): Remove Top_Level parameter and
add In_Nested_Instance and
Has_Outer_Referencer_Of_Non_Subprograms parameters.  Rename
Has_Non_Subprograms_Referencer variable into
Has_Referencer_Of_Non_Subprograms and initialize it with the new
third parameter.  Adjust recursive calls and to the renaming.
Replace test on Top_Level with test on In_Nested_Instance to
decide whether to clear the Is_Public flag on entities.
(Hide_Public_Entities): Adjust call to Has_Referencer.

From-SVN: r264615

6 years ago[Ada] Preparation for new description of interface thunks
Eric Botcazou [Wed, 26 Sep 2018 09:17:31 +0000 (09:17 +0000)]
[Ada] Preparation for new description of interface thunks

This adjusts and exposes a couple of functions of the front-end used for the
generation of interface thunks so as to make them callable from gigi.  This
also propagates the debug info setting from the targets to the thunks so as
to make stepping into primitives work better in the debugger.

2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* exp_disp.adb (Expand_Interface_Conversion): Use Present test.
(Expand_Interface_Thunk): Propagate debug info setting from
target.
* exp_util.ads (Find_Interface_Tag): Adjust comment.
* exp_util.adb (Find_Interface_Tag): Remove assertions of
success.
* sem_util.adb (Is_Variable_Size_Record): Only look at
components and robustify the implementation.
* fe.h (Find_Interface_Tag): Declare.
(Is_Variable_Size_Record): Likewise.

From-SVN: r264614

6 years ago[Ada] Propagate bit order and SSO from root to classwide equivalent type
Thomas Quinot [Wed, 26 Sep 2018 09:17:26 +0000 (09:17 +0000)]
[Ada] Propagate bit order and SSO from root to classwide equivalent type

2018-09-26  Thomas Quinot  <quinot@adacore.com>

gcc/ada/

* exp_util.adb (Make_CW_Equivalent_Type): Propagate bit order
and scalar storage order from root type to classwide equivalent
type, to prevent rejection of the equivalent type by the
freezing circuitry.

gcc/testsuite/

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

From-SVN: r264613

6 years ago[Ada] Crash on expression functions within quantified expressions
Justin Squirek [Wed, 26 Sep 2018 09:17:21 +0000 (09:17 +0000)]
[Ada] Crash on expression functions within quantified expressions

This patch fixes an issue whereby using a call to an expression function
as the domain of iteration for a loop would trigger a crash due to the
function not being frozen appropriately.

2018-09-26  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* sem_ch5.adb (Analyze_Iterator_Specification): Add conditional
to freeze called functions within iterator specifications during
full analysis.
(Preanalyze_Range): Minor typo fix.

gcc/testsuite/

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

From-SVN: r264612

6 years ago[Ada] Missing predicate check on return value
Ed Schonberg [Wed, 26 Sep 2018 09:17:16 +0000 (09:17 +0000)]
[Ada] Missing predicate check on return value

The semantics of the return statement includes an implicit conversion of
the value to the return type of the funcction. This conversion, as
elsewhere, entails a predicate check if the return type has a predicate
aspect.

We do not apply the check to a case expression because in the context of
a return statement it will be expanded into a series of return
statements, each of which will receive a predicate check.

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch6.adb (Analyze_Function_Return): If the return type has
a dynamic_predicate, apply a Predicate_Check to the expression,
given that it is implicitly converted to the return type.
Exclude case expressions from the check, because in this context
the expression is expanded into individual return statements.

gcc/testsuite/

* gnat.dg/predicate3.adb, gnat.dg/predicate3_pkg.ads: New
testcase.

From-SVN: r264611

6 years ago[Ada] ICE on array of task type with -gnatct
Eric Botcazou [Wed, 26 Sep 2018 09:17:10 +0000 (09:17 +0000)]
[Ada] ICE on array of task type with -gnatct

2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Task_Type>: In
-gnatct mode, process the discriminants only for a definition.

From-SVN: r264610

6 years ago[Ada] Fix assertion failure on record subtype with -gnatRj
Eric Botcazou [Wed, 26 Sep 2018 09:17:05 +0000 (09:17 +0000)]
[Ada] Fix assertion failure on record subtype with -gnatRj

The JSON output of the -gnatR machinery was choking on record subtypes
and the change fixes this oversight.

The following package must now compile properly with -gnatRj:

package P is

  type Rec (D : Integer) is record
      C : Integer;

      case D is
         when 1 =>
            S : String (1 .. 20);
         when 2 =>
            B : Boolean;
         when others =>
            Ch1 : Character;
            F   : Float;
            Ch2 : Character;
      end case;

   end record;

   subtype Rec1 is Rec (1);

end P;

2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* repinfo.adb (List_Record_Layout): Be prepared for JSON output.
(List_Record_Info): Use the flat representation for record
subtypes in the JSON format.

From-SVN: r264609

6 years ago[Ada] Regression in partial compilation of RCI units
Justin Squirek [Wed, 26 Sep 2018 09:16:59 +0000 (09:16 +0000)]
[Ada] Regression in partial compilation of RCI units

This patch fixes an issue whereby the compilation of partial sources
(packages without bodies that require them) would not occur when said
sources were remote call interfaces. This is required because such
interfaces may have bodies that only exist on the server side or vice
versa

2018-09-26  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* lib-writ.adb, lib-writ.ads (Write_With_Lines): Add
documentation and an extra conditional check for RCI units so
that generated ali files will list the spec only instead of a
body when a body is not found.

From-SVN: r264608

6 years ago[Ada] Set Current_Error_Node directly
Eric Botcazou [Wed, 26 Sep 2018 09:16:54 +0000 (09:16 +0000)]
[Ada] Set Current_Error_Node directly

This changes gigi to set Current_Error_Node directly, which should
result in a more robust error handling.

2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* gcc-interface/gigi.h (error_gnat_node): Delete.
* gcc-interface/trans.c (error_gnat_node): Likewise.
(gigi): Replace it with Current_Error_Node.
(gnat_to_gnu): Likewise.
* gcc-interface/utils.c (rest_of_subprog_body_compilation):
Likewise.
* gcc-interface/misc.c (internal_error_function): Do not set it.

From-SVN: r264607

6 years ago[Ada] Wrong handling of address clause for limited record type
Eric Botcazou [Wed, 26 Sep 2018 09:16:49 +0000 (09:16 +0000)]
[Ada] Wrong handling of address clause for limited record type

2018-09-26  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Adjust
code retrieving the address when a clause has already been
processed.
* gcc-interface/trans.c (gnat_to_gnu)
<N_Attribute_Definition_Clause>: For an object with a Freeze
node, build a meaningful expression.

gcc/testsuite/

* gnat.dg/addr12.adb, gnat.dg/addr12_a.adb,
gnat.dg/addr12_a.ads, gnat.dg/addr12_b.adb,
gnat.dg/addr12_b.ads, gnat.dg/addr12_c.ads: New testcase.

From-SVN: r264606

6 years ago[Ada] Introduce -gnatd_A to set Opt.Disable_ALI_File
Arnaud Charlet [Wed, 26 Sep 2018 09:16:44 +0000 (09:16 +0000)]
[Ada] Introduce -gnatd_A to set Opt.Disable_ALI_File

This will allow us to remove the import of flag_compare_debug in
lib-writ.adb in a second stage.

2018-09-26  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* gnat1drv.adb (Adjust_Global_Switches): -gnatd_A sets
Opt.Disable_ALI_File.
* debug.adb: Update debug flags documentation.

From-SVN: r264605

6 years ago[Ada] Disable special handling for preconditions specified by pragmas
Ed Schonberg [Wed, 26 Sep 2018 09:16:39 +0000 (09:16 +0000)]
[Ada] Disable special handling for preconditions specified by pragmas

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* contracts.adb (Analyze_Entry_Or_Subprogram_Contract): The
analysis of preconditions specified by pragmas (rather than
aspects) is not delayed, and therefore expressions functions
that are completions do not need special handling during
expansion.

From-SVN: r264604

6 years ago[Ada] Unnesting: fix handling of up level refs for entries
Ed Schonberg [Wed, 26 Sep 2018 09:16:33 +0000 (09:16 +0000)]
[Ada] Unnesting: fix handling of up level refs for entries

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_unst.adb: Fix handling of up level references for entries.

From-SVN: r264603

6 years ago[Ada] Fix ICE related to type freezing
Ed Schonberg [Wed, 26 Sep 2018 09:16:28 +0000 (09:16 +0000)]
[Ada] Fix ICE related to type freezing

2018-09-26  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* contracts.adb (Expand_Subprogram_Contract,
Process_Preconditions_For): Apply Freeze_Expr_Types to the
expression for a precondition of an expression function that is
a completion, when the completion appears in the private part
and the declaration it completes is in the visible part of the
same package.
* freeze.adb (Freeze_Expr_Types): Do not establish the scope of
the operation if it is already installed, as will be the case
when called to analyze the contract oc the subprogram (which
happens when generating code inside the subprogram body).

From-SVN: r264602

6 years ago[Ada] SPARK: update borrowing effects for IN parameters
Maroua Maalej [Wed, 26 Sep 2018 09:16:23 +0000 (09:16 +0000)]
[Ada] SPARK: update borrowing effects for IN parameters

2018-09-26  Maroua Maalej  <maalej@adacore.com>

gcc/ada/

* sem_spark.adb (Check_Param_In, Setup_Parameter_Or_Global):
Change the operation associated to assigning to an IN parameter.
In SPARK, IN access-to-variable is an observe operation for a
function, and borrow operation for a procedure.

From-SVN: r264601

6 years ago[Ada] Vxlink: minor reformatting
Arnaud Charlet [Wed, 26 Sep 2018 09:16:18 +0000 (09:16 +0000)]
[Ada] Vxlink: minor reformatting

2018-09-26  Arnaud Charlet  <charlet@adacore.com>

gcc/ada

* vxlink.adb: Minor reformatting.

From-SVN: r264600

6 years ago[Ada] Fix miscellaneous typos
Gary Dismukes [Wed, 26 Sep 2018 09:15:48 +0000 (09:15 +0000)]
[Ada] Fix miscellaneous typos

2018-09-26  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

* exp_ch9.adb, layout.adb, sem_attr.adb, sem_res.adb: Fix
miscellaneous typos.

From-SVN: r264599

6 years agoA few places in the arm and aarch64 backends check whether an atomic operation needs...
Matthew Malcomson [Wed, 26 Sep 2018 09:13:18 +0000 (09:13 +0000)]
A few places in the arm and aarch64 backends check whether an atomic operation needs acquire or release semantics.

A few places in the arm and aarch64 backends check whether an atomic
operation needs acquire or release semantics.
This is generally done with a check like

(is_mm_relaxed (model)
  || is_mm_consume (model)
  || is_mm_release (model))

In this patch we introduce two helper functions to make things a little
tidier.

There are a few places in the arm/ backend that check whether an
operation needs memory model semantics with an idiom that can now be
replaced with the new aarch_mm_needs_* functions, so we make that
replacement.

There is also some backslash removal to make things a little tidier.

Full bootstrap and regression test plus cross-compilation regression tests done
on arm-none-linux-gnueabihf.
Ok for trunk?

gcc/ChangeLog:

2018-09-20  Matthew Malcomson  <matthew.malcomson@arm.com>

* config/arm/arm.c (arm_split_compare_and_swap, arm_split_atomic_op):
Use new helper functions.
* config/arm/sync.md (atomic_load<mode>, atomic_store<mode>):
Use new helper functions.
* config/arm/aarch-common-protos.h (aarch_mm_needs_acquire,
aarch_mm_needs_release): New declarations.
* config/arm/aarch-common.c (aarch_mm_needs_acquire,
aarch_mm_needs_release): New.

From-SVN: r264598

6 years ago[Ada] Vxlink: kill a CodePeer warning
Jerome Lambourg [Wed, 26 Sep 2018 09:13:03 +0000 (09:13 +0000)]
[Ada] Vxlink: kill a CodePeer warning

2018-09-26  Jerome Lambourg  <lambourg@adacore.com>

gcc/ada/

* vxlink.adb: Kill a CodePeer warning.

From-SVN: r264597

6 years agore PR c++/67656 ([concepts] matched variadics in expression constraint report as...
Paolo Carlini [Wed, 26 Sep 2018 09:08:24 +0000 (09:08 +0000)]
re PR c++/67656 ([concepts] matched variadics in expression constraint report as unmatched)

2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/67656
* g++.dg/concepts/pr67656.C: New.

From-SVN: r264596

6 years agoarm.c (arm_reorg): Skip Thumb reorg pass for thunks.
Eric Botcazou [Wed, 26 Sep 2018 07:36:45 +0000 (07:36 +0000)]
arm.c (arm_reorg): Skip Thumb reorg pass for thunks.

* config/arm/arm.c (arm_reorg): Skip Thumb reorg pass for thunks.
(arm32_output_mi_thunk): Deal with long calls.

From-SVN: r264595

6 years agore PR debug/87428 ("Missed" inline instances cause bogus DWARF to be emitted)
Richard Biener [Wed, 26 Sep 2018 07:05:01 +0000 (07:05 +0000)]
re PR debug/87428 ("Missed" inline instances cause bogus DWARF to be emitted)

2018-09-26  Richard Biener  <rguenther@suse.de>

PR debug/87428
PR debug/87362
* tree-inline.c (expand_call_inline): When the location
of the call is UNKNOWN_LOCATION use DECL_SOURCE_LOCATION
or BUILTINS_LOCATION for the BLOCK_SOURCE_LOCATION of
the inserted BLOCK to make inlined_function_outer_scope_p
recognize it.
* dwarf2out.c (add_call_src_coords_attributes): Do not add
coords for reserved locations.

From-SVN: r264594

6 years agoruntime, os: fix the build on Solaris
Ian Lance Taylor [Wed, 26 Sep 2018 03:29:07 +0000 (03:29 +0000)]
runtime, os: fix the build on Solaris

    Reviewed-on: https://go-review.googlesource.com/137535

From-SVN: r264593

6 years agoDaily bump.
GCC Administrator [Wed, 26 Sep 2018 00:16:57 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264592

6 years agors6000: Use set_attr_alternative in some places
Segher Boessenkool [Tue, 25 Sep 2018 23:42:28 +0000 (01:42 +0200)]
rs6000: Use set_attr_alternative in some places

Some code is much neater if it uses set_attr_alternative than if it
does everything by hand.  Change some patterns to use this shorthand.

* config/rs6000/rs6000.md (*movcc_internal1): Use set_attr_alternative.
(*call_indirect_nonlocal_sysv<mode>): Ditto.
(*call_value_indirect_nonlocal_sysv<mode>): Ditto.
(*sibcall_nonlocal_sysv<mode>): Ditto.
(*sibcall_value_nonlocal_sysv<mode>): Ditto.
(<bd>_<mode>): Ditto.
(<bd>tf_<mode>): Ditto.

From-SVN: r264588

6 years agors6000: Simplify "switch (which_alternative)" patterns
Segher Boessenkool [Tue, 25 Sep 2018 23:31:22 +0000 (01:31 +0200)]
rs6000: Simplify "switch (which_alternative)" patterns

A few of the rs6000 patterns use C code as output control string, where
that code is just a "switch (which_alternative)" with all alternatives
returning a constant string or just the result of a function call as
template.
Write such cases as just a list of templates, with the few pieces that
are C code preceded by "*".

* config/rs6000/altivec.md (*altivec_mov<mode>): Write the output
control string as a list of templates instead of as C code.
(*altivec_movti): Ditto.
* config/rs6000/darwin.md (movdf_low_di): Ditto.

From-SVN: r264587

6 years agoRISC-V: Fix weak symbols with medany and explicit relocs.
Jim Wilson [Tue, 25 Sep 2018 22:52:38 +0000 (22:52 +0000)]
RISC-V: Fix weak symbols with medany and explicit relocs.

gcc/
* config/riscv/riscv.c (riscv_split_symbol): Mark auipc label as weak
when target symbol is weak.

gcc/testsuite/
* gcc.target/riscv/weak-1.c: New.

From-SVN: r264586

6 years agore PR c/87387 (trunk/gcc/builtins.c:585:7: warning: -Wself-assign problem)
Jeff Law [Tue, 25 Sep 2018 22:17:45 +0000 (16:17 -0600)]
re PR c/87387 (trunk/gcc/builtins.c:585:7: warning: -Wself-assign problem)

PR c/87387
        * builtins.c (unterminated_array): Simplify.
* expr.c (string_constant): Handle SSA_NAME.  Add more exceptions
where pointer arithmetic is safe.

* gcc.dg/warn-stpcpy-no-nul.c: Drop unnecessary xfails.
* gcc.dg/warn-stplen-no-nul.c: Likewise.

From-SVN: r264585

6 years agors6000: Do not allow out of range immediate in vsplt[bhw] (PR86987)
Segher Boessenkool [Tue, 25 Sep 2018 22:09:38 +0000 (00:09 +0200)]
rs6000: Do not allow out of range immediate in vsplt[bhw] (PR86987)

The original AltiVec manuals had the immediate lane number in the
splat instructions as a 5-bit number, but anything too big has no
defined meaning, and gas will choke on it too.  This patch disallows
it in the instruction patterns as well as in the builtins.  This
solves PR86987.

PR target/86987
* config/rs6000/altivec.md (altivec_vspltb): Use
const_0_to_15_operand instead of u5bit_cint_operand.
(*altivec_vspltb_internal): Ditto.
(altivec_vspltb_direct): Ditto.
(altivec_vsplth): Use const_0_to_7_operand instead of
u5bit_cint_operand.
(*altivec_vsplth_internal): Ditto.
(altivec_vsplth_direct): Ditto.
(altivec_vspltw): Use const_0_to_3_operand instead of
u5bit_cint_operand.
(*altivec_vspltw_internal): Ditto.
(altivec_vspltw_direct): Ditto.
(altivec_vspltsf): Ditto.
(*altivec_vspltsf_internal): Ditto.
* config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Handle the
various splats with the proper size immediate.  Reorder the various
cases by ascending size of immediate, and put all such together.

From-SVN: r264584

6 years agoadjust dinst.adb's expectations for location views
Alexandre Oliva [Tue, 25 Sep 2018 19:04:44 +0000 (19:04 +0000)]
adjust dinst.adb's expectations for location views

The testcase failed when the compiler used .loc view syntax, because
it expected discriminators at the end of the .loc lines.

for  gcc/testsuite/ChangeLog

* gnat.dg/dinst.adb: Adjust for locviews.

From-SVN: r264583

6 years agoaltivec-6.C: Updated vec_splat() calls.
Will Schmidt [Tue, 25 Sep 2018 18:34:06 +0000 (18:34 +0000)]
altivec-6.C: Updated vec_splat() calls.

[testsuite]

2018-09-25  Will Schmidt  <will_schmidt@vnet.ibm.com>

    * g++.dg/ext/altivec-6.C: Updated vec_splat() calls.
    * gcc.target/powerpc/fold-vec-splat-char.c: Remove invalid
    vec_splat calls from recently added tests. Update instruction counts.
    * gcc.target/powerpc/fold-vec-splat-floatdouble.c: Same.
    * gcc.target/powerpc/fold-vec-splat-int.c: Same.
    * gcc.target/powerpc/fold-vec-splat-longlong.c: Same.
    * gcc.target/powerpc/fold-vec-splat-pixel.c: Same.
    * gcc.target/powerpc/fold-vec-splat-short.c: Same.

From-SVN: r264582

6 years agore PR c++/87425 (ICE with virtual assignment operator)
Marek Polacek [Tue, 25 Sep 2018 18:02:47 +0000 (18:02 +0000)]
re PR c++/87425 (ICE with virtual assignment operator)

PR c++/87425
* g++.dg/cpp2a/constexpr-virtual12.C: New test.

From-SVN: r264581

6 years agore PR c++/87398 (g++ ICE on valid code: tree check: expected record_type or union_typ...
Jakub Jelinek [Tue, 25 Sep 2018 16:40:57 +0000 (18:40 +0200)]
re PR c++/87398 (g++ ICE on valid code: tree check: expected record_type or union_type or qual_union_type, have array_type in cxx_eval_constant_expression, at cp/constexpr.c:4820)

PR c++/87398
* constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Only
look through COMPONENT_REFs with DECL_FIELD_IS_BASE FIELD_DECLs.

* g++.dg/other/pr87398.C: New test.
* g++.dg/cpp2a/constexpr-virtual10.C: New test.
* g++.dg/cpp2a/constexpr-virtual11.C: New test.

From-SVN: r264580

6 years ago[PR 87339] Fix failure of gcc.dg/warn-abs-1.c on some targets
Martin Jambor [Tue, 25 Sep 2018 16:28:40 +0000 (18:28 +0200)]
[PR 87339] Fix failure of gcc.dg/warn-abs-1.c on some targets

2018-09-25  Martin Jambor  <mjambor@suse.cz>

PR testsuite/87339
* gcc.dg/warn-abs-1.c: Do not test _Float128.  Remove dg-skip-if and
float125 target.
* gcc.target/i386/warn-abs-3.c: New test.

From-SVN: r264579

6 years ago* config/i386/i386.md: Move nearbyint patterns closer to rint.
Uros Bizjak [Tue, 25 Sep 2018 16:06:36 +0000 (18:06 +0200)]
* config/i386/i386.md: Move nearbyint patterns closer to rint.

From-SVN: r264578

6 years agore PR c++/81246 (ICE on invalid C++ code (with a non-type template parameter having...
Paolo Carlini [Tue, 25 Sep 2018 16:05:48 +0000 (16:05 +0000)]
re PR c++/81246 (ICE on invalid C++ code (with a non-type template parameter having type 'float'): Segmentation fault)

2018-09-25  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/81246
* g++.dg/cpp0x/pr81246.C: New.

From-SVN: r264577

6 years agoUse steady_clock to implement condition_variable::wait_for with predicate
Mike Crowe [Tue, 25 Sep 2018 14:59:27 +0000 (14:59 +0000)]
Use steady_clock to implement condition_variable::wait_for with predicate

In r263225 (d2e378182a12d68fe5caeffae681252662a2fe7b), I fixed
condition_variable::wait_for to use std::chrono::steady_clock for the wait.
Unfortunately, I failed to spot that the same fix is required for the
wait_for variant that takes a predicate too.

2018-09-25  Mike Crowe  <mac@mcrowe.com>

* include/std/condition_variable (condition_variable::wait_for): Use
steady clock in overload that uses a predicate.

From-SVN: r264575

6 years agoPR libstdc++/87431 optimise valueless_by_exception()
Jonathan Wakely [Tue, 25 Sep 2018 14:59:16 +0000 (15:59 +0100)]
PR libstdc++/87431 optimise valueless_by_exception()

If a std::variant can never get into valueless state then we don't need
to do a runtime check for a valid alternative.

PR libstdc++/87431
* include/std/variant (_Variant_storage<true, _Types...>::_M_valid):
Avoid runtime test when all alternatives are scalars and so cannot
throw during initialization.

From-SVN: r264574

6 years agore PR debug/83941 (Debug info generated with -flto contains useless forwarders)
Richard Biener [Tue, 25 Sep 2018 14:51:39 +0000 (14:51 +0000)]
re PR debug/83941 (Debug info generated with -flto contains useless forwarders)

2018-09-25  Richard Biener  <rguenther@suse.de>

PR debug/83941
* dwarf2out.c (add_AT_external_die_ref): Remove now redundant
GC-ification.
(maybe_create_die_with_external_ref): Do not create
DW_TAG_imported_unit here.
(add_abstract_origin_attribute): Handle external BLOCK refs.
(dwarf2out_abstract_function): Simplify LTO case.
(dwarf2out_early_finish): Create DW_TAG_imported_unit explicitely
rather than using maybe_create_die_with_external_ref.

From-SVN: r264573

6 years agointernal/bytealg, internal/cpu, internal/poll: portability fixes
Ian Lance Taylor [Tue, 25 Sep 2018 14:31:57 +0000 (14:31 +0000)]
internal/bytealg, internal/cpu, internal/poll: portability fixes

    In internal/bytealg correct a +build tag to never build indexbyte_generic.go
    for the gofrontend, where we always use indexbyte_native.go.

    For internal/cpu let the Makefile define CacheLineSize using goarch.sh,
    rather than trying to enumerate all the possibilities in cpu_ARCH.go files.

    In internal/poll call the C fcntl function rather than using SYS_FCNTL.
    Change mksysinfo.sh to ensure that F_GETPIPE_SZ is always defined,
    and check that in internal/poll.

    Reviewed-on: https://go-review.googlesource.com/137256

From-SVN: r264572

6 years agoi386.md (frndintxf2_mask_pm): Remove.
Uros Bizjak [Tue, 25 Sep 2018 14:26:11 +0000 (16:26 +0200)]
i386.md (frndintxf2_mask_pm): Remove.

* config/i386/i386.md (frndintxf2_mask_pm): Remove.
(frndintxf2_mask_pm_i387): Ditto.
(nearbyintxf2): Rewrite expander pattern to match rintxf2.
Enable for !flag_trapping_math.
(nearbyint<mode>2): Enable x87 modes for !flag_trapping_math.
Enable SSE modes for TARGET_SSE4_1 and expand them with round insn.
Change operand 1 predicate to nonimmediate_operand.
(attr "i387_cw"): Remove mask_pm.
* config/i386/i386.h (enum ix86_stack_slot): Remove SLOT_CW_MASK_PM.
(enum ix86_entity): Remove I387_MASK_PM.
* config/i386/i386.c (ix86_i387_mode_needed): Do not
handle I387_MASK_PM.
(ix86_mode_needed): Ditto.
(ix86_mode_after): Ditto.
(ix86_mode_entry): Ditto.
(ix86_mode_exit): Ditto.
(emit_i387_cw_initialization): Do not handle I387_CW_MASK_PM.

From-SVN: r264571

6 years agocmd/go: pass down testing gccgo in TestScript
Ian Lance Taylor [Tue, 25 Sep 2018 14:16:32 +0000 (14:16 +0000)]
cmd/go: pass down testing gccgo in TestScript

    This permits TestScript to work when gccgo is not installed.
    Previous testing was using a previously installed gccgo, not the newly
    built one.

    This revealed that the testing of whether an internal package is
    permitted was incorrect for standard library packages, since the
    uninstalled gccgo can see internal packages in the uninstalled libgo.
    Fix the internal package tests.

    This permitted removing a couple of gccgo-specific changes in the
    testsuite.

    Reviewed-on: https://go-review.googlesource.com/137255

From-SVN: r264570

6 years agoi386: Compile pr82699-5.c and pr82699-6.c with -fno-pic
H.J. Lu [Tue, 25 Sep 2018 13:51:45 +0000 (13:51 +0000)]
i386: Compile pr82699-5.c and pr82699-6.c with -fno-pic

Compile pr82699-5.c and pr82699-6.c with -fno-pic to avoid

FAIL: gcc.target/i386/pr82699-5.c (test for excess errors)
Excess errors:
cc1: sorry, unimplemented: -mfentry isn't supported for 32-bit in combination with -fpic
FAIL: gcc.target/i386/pr82699-6.c (test for excess errors)
Excess errors:
cc1: error: -mnop-mcount is not implemented for -fPIC
cc1: sorry, unimplemented: -mfentry isn't supported for 32-bit in combination with -fpic

when running GCC testsuite with --target_board='unix{-fpic\ -m32,-fpic}'.

PR target/82699
* gcc.target/i386/pr82699-5.c: Add -fno-pic for ia32.
* gcc.target/i386/pr82699-6.c: Add -fno-pic.

From-SVN: r264569

6 years agocoarray_lock_7.f90: Adjust scan-tree-dump-times for ILP32.
Jakub Jelinek [Tue, 25 Sep 2018 13:21:44 +0000 (15:21 +0200)]
coarray_lock_7.f90: Adjust scan-tree-dump-times for ILP32.

* gfortran.dg/coarray_lock_7.f90: Adjust scan-tree-dump-times for
ILP32.

From-SVN: r264568

6 years agovr-values.c (vr_values::vr_values): Initialize to_remove_edges and to_update_switch_s...
Jakub Jelinek [Tue, 25 Sep 2018 13:18:06 +0000 (15:18 +0200)]
vr-values.c (vr_values::vr_values): Initialize to_remove_edges and to_update_switch_stmts to vNULL instead of...

* vr-values.c (vr_values::vr_values): Initialize to_remove_edges and
to_update_switch_stmts to vNULL instead of calling create on them
immediately.

From-SVN: r264567

6 years agore PR tree-optimization/87402 (ICE in set_ssa_val_to, at tree-ssa-sccvn.c:3645)
Richard Biener [Tue, 25 Sep 2018 12:51:57 +0000 (12:51 +0000)]
re PR tree-optimization/87402 (ICE in set_ssa_val_to, at tree-ssa-sccvn.c:3645)

2018-09-25  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87402
* tree-ssa-sccvn.c (SSA_VISITED): Remove unused function.
(visit_phi): Re-instantiate handling of supposed to be VARYING
but non-VARYING backedge value.

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

From-SVN: r264566

6 years agoCheck pie_enabled target in PIC tests
H.J. Lu [Tue, 25 Sep 2018 12:25:44 +0000 (12:25 +0000)]
Check pie_enabled target in PIC tests

We need to check pie_enabled target in PIC tests to support GCC where
PIE is enabled by default when configured with --enable-default-pie.

PR testsuite/70150
* gcc.dg/20020312-2.c (dg-additional-options): Set to "-no-pie"
for pie_enabled target.
* gcc.dg/uninit-19.c: Check pie_enabled for PIC.
* gcc.target/i386/pr34256.c: Likewise.

From-SVN: r264565

6 years agore PR debug/83941 (Debug info generated with -flto contains useless forwarders)
Richard Biener [Tue, 25 Sep 2018 07:30:56 +0000 (07:30 +0000)]
re PR debug/83941 (Debug info generated with -flto contains useless forwarders)

2018-09-25  Richard Biener  <rguenther@suse.de>

PR debug/83941
* dwarf2out.c (struct sym_off_pair): New.
(external_die_map): New global.
(lookup_decl_die): When in LTO create DIEs lazily from the
external_die_map.
(lookup_block_die): New function, create DIEs lazily in LTO.
(equate_block_to_die): New function.
(dwarf2out_die_ref_for_decl): During WPA get the association
from the external DIE map.
(dwarf2out_register_external_die): Record mapping into the
external DIE map.
(maybe_create_die_with_external_ref): New function split out from
DIE generation part of old dwarf2out_register_external_die.
(add_abstract_origin_attribute): Do not return the DIE.  When
in LTO reference externals directly.
(dwarf2out_abstract_function): When in LTO ignore calls for
decls with external DIEs (already present abstract instances).
(gen_call_site_die): Adjust.
(add_high_low_attributes): Likewise.
(gen_lexical_block_die): Likewise.
(gen_inlined_subroutine_die): Likewie.
(gen_block_die): Likewise.
(dwarf2out_inline_entry): Likewise.
(dwarf2out_early_finish): In LTRANS phase create DW_TAG_imported_unit
DIEs.

From-SVN: r264564

6 years agoFix scaling of a sreal number.
Martin Liska [Tue, 25 Sep 2018 07:14:38 +0000 (09:14 +0200)]
Fix scaling of a sreal number.

2018-09-25  Martin Liska  <mliska@suse.cz>

* ipa-fnsummary.c (estimate_node_size_and_time): Scale by two
integers and not by a float value.

From-SVN: r264563

6 years agoFix small coding style issues (PR fortran/87394).
Martin Liska [Tue, 25 Sep 2018 07:13:59 +0000 (09:13 +0200)]
Fix small coding style issues (PR fortran/87394).

2018-09-25  Martin Liska  <mliska@suse.cz>

PR fortran/87394
* dbgcnt.c (dbg_cnt_process_single_pair): Return false
instead of NULL.
* dumpfile.c (dump_enable_all): Remove extra parenthesis.
* gcov-tool.c: Declare the function with ATTRIBUTE_NORETURN.
* godump.c (go_format_type): Remove extra parenthesis.
2018-09-25  Martin Liska  <mliska@suse.cz>

PR fortran/87394
* decl.c (add_hidden_procptr_result): Simplify condition
as we are in branch witch 'case1 || case2'.

From-SVN: r264562

6 years agoRemove unused functions and fields.
Martin Liska [Tue, 25 Sep 2018 07:13:40 +0000 (09:13 +0200)]
Remove unused functions and fields.

2018-09-25  Martin Liska  <mliska@suse.cz>

* alias.c (set_dest_equal_p): Remove unused function.
* config/i386/i386.c (def_builtin_pure2): Likewise.
* diagnostic-show-locus.c (class layout): Remove
unused field.
(layout::layout): Likewise here.
* dump-context.h (class temp_dump_context): Likewise.
* dwarf2out.c (add_AT_fde_ref): Remove unused function.
(add_AT_loclistsptr): Likewise.
(add_AT_offset): Likewise.
(get_AT_hi_pc): Likewise.
(is_comdat_die): Likewise.
(type_is_enum): Likewise.
(ceiling): Likewise.
(add_AT_vms_delta): Likewise.
(is_class_die): Likewise.
* edit-context.c (class line_event): Remove unused field.
* graphite-sese-to-poly.c (tree_int_to_gmp): Remove
unused function.
* ipa-cp.c (ipa_get_vr_lat): Likewise.
* lra-constraints.c (ok_for_index_p_nonstrict): Likewise.
(ok_for_base_p_nonstrict): Likewise.
* tree-chrec.c (is_not_constant_evolution): Likewise.
(chrec_fold_poly_cst): Likewise.
* tree-if-conv.c (has_pred_critical_p): Likewise.
* tree-ssa-coalesce.c (print_exprs): Likewise.
* tree-ssa-pre.c (bitmap_set_contains_expr): Likewise.
* tree-ssa-uninit.c (is_and_or_or_p): Likewise.
* tree-vrp.c (value_ranges_intersect_p): Likewise.
(value_range_nonnegative_p): Likewise.
2018-09-25  Martin Liska  <mliska@suse.cz>

* name-lookup.c (namespace_scope_ht_size): Remove
unused function.
* parser.c (cp_lexer_next_token_is_not_keyword): Likewise.
2018-09-25  Martin Liska  <mliska@suse.cz>

* trans.c (remove_suffix): Remove
unused function.
2018-09-25  Martin Liska  <mliska@suse.cz>

* gofrontend/escape.cc (Gogo::analyze_escape): Remove
usage of a parameter.
(Gogo::assign_connectivity): Likewise.
(class Escape_analysis_tag): Likewise.
(Gogo::tag_function): Likewise.
* gofrontend/expressions.cc (Call_expression::do_type): Likewise.
* gofrontend/gogo.h (class Gogo): Likewise.
* gofrontend/types.cc (class Call_multiple_result_type): Likewise.
(Type::make_call_multiple_result_type): Likewise.
* gofrontend/types.h (class Type): Likewise.
* gofrontend/wb.cc (class Check_escape): Likewise.
(Gogo::add_write_barriers): Likewise.

From-SVN: r264561

6 years agoAdd filter-rtags-warnings.py script.
Martin Liska [Tue, 25 Sep 2018 07:12:52 +0000 (09:12 +0200)]
Add filter-rtags-warnings.py script.

2018-09-25  Martin Liska  <mliska@suse.cz>

* filter-rtags-warnings.py: New file.

From-SVN: r264560

6 years agoRemove Pascal-related entries in code and comments.
Martin Liska [Tue, 25 Sep 2018 07:11:05 +0000 (09:11 +0200)]
Remove Pascal-related entries in code and comments.

2018-09-25  Martin Liska  <mliska@suse.cz>

* config/powerpcspe/powerpcspe.c (rs6000_output_function_epilogue):
Do not handle "GNU Pascal".
* config/rs6000/rs6000.c (rs6000_output_function_epilogue):
Likewise.
* config/sparc/sparc.c (sparc_pass_by_reference): Remove Pascal
from documentation. Likewise.
* dbxout.c (dbxout_range_type): Likewise.
* doc/cpp.texi: Likewise.
* doc/extend.texi: Likewise.
* doc/frontends.texi: Likewise.
* doc/invoke.texi: Remove Pascal entry.
* tree.def (CLEANUP_POINT_EXPR): Likewise.
* doc/rtl.texi (MODE_FUNCTION): Remove not used entry.
2018-09-25  Martin Liska  <mliska@suse.cz>

* c-common.c (c_common_truthvalue_conversion):
Remove Pascal from documentation.

From-SVN: r264559

6 years agoDocument all param values and remove defaults (PR middle-end/86078).
Martin Liska [Tue, 25 Sep 2018 07:08:44 +0000 (09:08 +0200)]
Document all param values and remove defaults (PR middle-end/86078).

2018-09-25  Martin Liska  <mliska@suse.cz>

PR middle-end/86078
* doc/invoke.texi: Document all parameters and remove default
of the parameters.
2018-09-25  Martin Liska  <mliska@suse.cz>

PR middle-end/86078
* check-params-in-docs.py: New file.

From-SVN: r264558

6 years agoFix EQ_ATTR_ALT size calculation (PR bootstrap/87417)
Ilya Leoshkevich [Tue, 25 Sep 2018 06:38:20 +0000 (06:38 +0000)]
Fix EQ_ATTR_ALT size calculation (PR bootstrap/87417)

"r264537: Change EQ_ATTR_ALT to support up to 64 alternatives" changed
the format of EQ_ATTR_ALT from ii to ww.  This broke the bootstrap on
32-bit systems, because the formula for rtx_code_size assumed that only
certain codes contain HOST_WIDE_INTs.  This did not surface on 64-bit
systems, because rtunion is 8 bytes anyway, but on 32-bit systems it's
only 4 bytes.  This resulted in out-of-bounds writes and memory
corruptions in genattrtab.

gcc/ChangeLog:

2018-09-25  Ilya Leoshkevich  <iii@linux.ibm.com>

PR bootstrap/87417
* rtl.c (rtx_code_size): Take into account that EQ_ATTR_ALT
contains HOST_WIDE_INTs when computing its size.

From-SVN: r264556

6 years agoRISC-V: Fix problems with ilp32e ABI support.
Jim Wilson [Tue, 25 Sep 2018 01:27:06 +0000 (01:27 +0000)]
RISC-V: Fix problems with ilp32e ABI support.

gcc/
PR target/87391
* config/riscv/riscv.h (STACK_BOUNDARY): Test riscv_abi == ABI_ILP32E
not TARGET_RVE.
(ABI_STACK_BOUNDARY, MAX_ARGS_IN_REGISTERS): Likewise.

From-SVN: r264555

6 years agoDaily bump.
GCC Administrator [Tue, 25 Sep 2018 00:16:39 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264552

6 years agoaarch64.c (aarch_macro_fusion_pair_p): Don't access prev before checking it for NULLn...
Andrew Pinski [Tue, 25 Sep 2018 00:12:18 +0000 (00:12 +0000)]
aarch64.c (aarch_macro_fusion_pair_p): Don't access prev before checking it for NULLness in the...

2018-09-24  Andrew Pinski  <apinski@marvell.com>

        *  config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Don't
        access prev before checking it for NULLness in the
        AARCH64_FUSE_CMP_BRANCH case.

From-SVN: r264548

6 years agocodecvt.xml: Move link to "UTF-8 and Unicode FAQ" to https.
Gerald Pfeifer [Mon, 24 Sep 2018 22:01:49 +0000 (22:01 +0000)]
codecvt.xml: Move link to "UTF-8 and Unicode FAQ" to https.

* doc/xml/manual/codecvt.xml: Move link to "UTF-8 and Unicode FAQ"
to https.

From-SVN: r264547

6 years agolibgo: update to Go 1.11
Ian Lance Taylor [Mon, 24 Sep 2018 21:46:21 +0000 (21:46 +0000)]
libgo: update to Go 1.11

    Reviewed-on: https://go-review.googlesource.com/136435

gotools/:
* Makefile.am (mostlyclean-local): Run chmod on check-go-dir to
make sure it is writable.
(check-go-tools): Likewise.
(check-vet): Copy internal/objabi to check-vet-dir.
* Makefile.in: Rebuild.

From-SVN: r264546

6 years agocp-tree.h (build_noexcept_spec, [...]): Adjust declarations.
Marek Polacek [Mon, 24 Sep 2018 19:26:04 +0000 (19:26 +0000)]
cp-tree.h (build_noexcept_spec, [...]): Adjust declarations.

* cp-tree.h (build_noexcept_spec, add_exception_specifier): Adjust
declarations.
* except.c (build_noexcept_spec): Change the type of the complain
parameter to tsubst_flags_t.
* typeck2.c (add_exception_specifier): Likewise.

From-SVN: r264543

6 years agore PR c++/85070 (ICE on C++ code: in lazily_declare_fn, at cp/method.c:2409)
Paolo Carlini [Mon, 24 Sep 2018 17:42:45 +0000 (17:42 +0000)]
re PR c++/85070 (ICE on C++ code: in lazily_declare_fn, at cp/method.c:2409)

/cp
2018-09-24  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/85070
* method.c (lazily_declare_fn): During error-recovery add_method
may return false.

/testsuite
2018-09-24  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/85070
* g++.dg/cpp0x/pr85070.C: New.

From-SVN: r264541

6 years agoi386: Insert ENDBR before the profiling counter call
H.J. Lu [Mon, 24 Sep 2018 17:20:58 +0000 (17:20 +0000)]
i386: Insert ENDBR before the profiling counter call

ENDBR must be the first instruction of a function.  This patch queues
ENDBR if we need to put the profiling counter call before the prologue
and generate ENDBR before the profiling counter call.

gcc/

PR target/82699
* config/i386/i386.c (rest_of_insert_endbranch): Set
endbr_queued_at_entrance to true and don't insert ENDBR if
x86_function_profiler will be called.
(x86_function_profiler): Insert ENDBR if endbr_queued_at_entrance
is true.
* config/i386/i386.h (machine_function): Add
endbr_queued_at_entrance.

gcc/testsuite/

PR target/82699
* gcc.target/i386/pr82699-1.c: New file.
* gcc.target/i386/pr82699-2.c: Likewise.
* gcc.target/i386/pr82699-3.c: Likewise.
* gcc.target/i386/pr82699-4.c: Likewise.
* gcc.target/i386/pr82699-5.c: Likewise.
* gcc.target/i386/pr82699-6.c: Likewise.

From-SVN: r264540

6 years agore PR fortran/87397 (Clobbering intent(out) variables caused regression in OpenCoarra...
Thomas Koenig [Mon, 24 Sep 2018 17:12:34 +0000 (17:12 +0000)]
re PR fortran/87397 (Clobbering intent(out) variables caused regression in OpenCoarrays testsuite)

2018-09-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/87397
* gfc_conv_procedure_call: Do not add clobber on INTENT(OUT)
for variables in an associate statement.

2018-09-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/87401
* gfortran.dg/intent_out_12.f90: New test.

From-SVN: r264539

6 years agore PR target/86952 (Avoid jump table for switch statement with -mindirect-branch...
Will Schmidt [Mon, 24 Sep 2018 15:47:22 +0000 (15:47 +0000)]
re PR target/86952 (Avoid jump table for switch statement with -mindirect-branch=thunk)

[testsuite]

2018-09-24  Will Schmidt  <will_schmidt@vnet.ibm.com>

PR testsuite/86952
* gcc.target/powerpc/p8-vec-xl-xst-v2.c: Add and
update expected codegen

From-SVN: r264538

6 years agoChange EQ_ATTR_ALT to support up to 64 alternatives
Ilya Leoshkevich [Mon, 24 Sep 2018 15:01:57 +0000 (15:01 +0000)]
Change EQ_ATTR_ALT to support up to 64 alternatives

On S/390 there is a need to support more than 32 instruction
alternatives per define_insn.  Currently this is not explicitly
prohibited or unsupported: MAX_RECOG_ALTERNATIVES is equal 35, and,
futhermore, the related code uses uint64_t for bitmaps in most places.

However, genattrtab contains the logic to convert (eq_attr "attribute"
"value") RTXs to (eq_attr_alt bitmap) RTXs, where bitmap contains
alternatives, whose "attribute" has the corresponding "value".
Unfortunately, bitmap is only 32 bits.

When adding the 33rd alternative, this led to (eq_attr "type" "larl")
becoming (eq_attr_alt -1050625 1), where -1050625 == 0xffeff7ff.  The
cleared bits 12, 21 and 32 correspond to two existing and one newly
added insn of type "larl".  compute_alternative_mask sign extended this
to 0xffffffffffeff7ff, which contained non-existent alternatives, and
this made simplify_test_exp fail with "invalid alternative specified".

I'm not sure why it didn't fail the same way before, since the top bit,
which led to sign extension, should have been set even with 32
alternatives.  Maybe simplify_test_exp was not called for "type"
attribute for some reason?

This patch widens EQ_ATTR_ALT bitmap to 64 bits, making it possible to
gracefully handle up to 64 alternatives.  It eliminates the problem with
the 33rd alternative on S/390.

gcc/ChangeLog:

2018-09-24  Ilya Leoshkevich  <iii@linux.ibm.com>

* genattrtab.c (mk_attr_alt): Use alternative_mask.
(attr_rtx_1): Adjust caching to match the new EQ_ATTR_ALT field
        types.
(check_attr_test): Use alternative_mask.
(get_attr_value): Likewise.
(compute_alternative_mask): Use alternative_mask and XWINT.
(make_alternative_compare): Use alternative_mask.
(attr_alt_subset_p): Use XWINT.
(attr_alt_subset_of_compl_p): Likewise.
(attr_alt_intersection): Use alternative_mask and XWINT.
(attr_alt_union): Likewise.
(attr_alt_complement): Use HOST_WIDE_INT and XWINT.
        (mk_attr_alt): Use alternative_mask and HOST_WIDE_INT.
(simplify_test_exp): Use alternative_mask and XWINT.
(write_test_expr): Use alternative_mask and XWINT, adjust bit
        number calculation to support 64 bits.  Generate code that
        checks 64-bit masks.
(main): Use alternative_mask.
* rtl.def (EQ_ATTR_ALT): Change field types from ii to ww.

From-SVN: r264537

6 years ago[OpenACC] update fortran nested parallelism error messages
Cesar Philippidis [Mon, 24 Sep 2018 14:51:25 +0000 (07:51 -0700)]
[OpenACC] update fortran nested parallelism error messages

gcc/fortran/
* openmp.c (resolve_oacc_loop_blocks):

gcc/testsuite/
* gfortran.dg/goacc/nested-parallelism.f90: New test.

From-SVN: r264536

6 years agoS/390: Fix conditional returns on z196+
Ilya Leoshkevich [Mon, 24 Sep 2018 14:21:03 +0000 (14:21 +0000)]
S/390: Fix conditional returns on z196+

S/390 epilogue ends with (parallel [(return) (use %r14)]) instead of
the more usual (return) or (simple_return).  This sequence is not
recognized by the conditional return logic in try_optimize_cfg ().

This was introduced for processors older than z196, where it is
sometimes profitable to use call-clobbered register for returning
instead of %r14.  On newer processors we always return via %r14,
for which the fact that it's used is already reflected by
EPILOGUE_USES.  In this case a simple (return) suffices.

This patch changes return_use () to emit simple (return)s when
returning via %r14.  The resulting sequences are recognized by the
conditional return logic in try_optimize_cfg ().

gcc/ChangeLog:

2018-09-24  Ilya Leoshkevich  <iii@linux.ibm.com>

PR target/80080
* config/s390/s390.c (s390_emit_epilogue): Do not use PARALLEL
RETURN+USE when returning via %r14.

gcc/testsuite/ChangeLog:

2018-09-24  Ilya Leoshkevich  <iii@linux.ibm.com>

PR target/80080
* gcc.target/s390/risbg-ll-3.c: Expect conditional returns.
* gcc.target/s390/zvector/vec-cmp-2.c: Likewise.

From-SVN: r264535

6 years agoImprove colorization legend in gcov reports.
Martin Liska [Mon, 24 Sep 2018 11:28:38 +0000 (13:28 +0200)]
Improve colorization legend in gcov reports.

2018-09-24  Martin Liska  <mliska@suse.cz>

* gcov.c (output_lines): Print colorization legend
for both flag_use_colors and flag_use_hotness_colors.
Reword the help.

From-SVN: r264531