gcc.git
5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

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

From-SVN: r264592

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

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

From-SVN: r264552

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 years agoImprove location information of -Wcoverage-mismatch.
Martin Liska [Mon, 24 Sep 2018 11:28:23 +0000 (13:28 +0200)]
Improve location information of -Wcoverage-mismatch.

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

* coverage.c (get_coverage_counts): Use warning_at
with current_function_decl location. Use %qD in warning
message.

From-SVN: r264530

5 years agoGuard memory block allocation.
Martin Liska [Mon, 24 Sep 2018 11:23:35 +0000 (13:23 +0200)]
Guard memory block allocation.

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

* memory-block.h (memory_block_pool::release): Annotate with
valgrind that the memory is not accessible.

From-SVN: r264529

5 years agoUnpoison variable partition properly (PR sanitizer/85774).
Martin Liska [Mon, 24 Sep 2018 11:22:38 +0000 (13:22 +0200)]
Unpoison variable partition properly (PR sanitizer/85774).

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

PR sanitizer/85774
* asan.c: Make asan_handled_variables extern.
* asan.h: Likewise.
* cfgexpand.c (expand_stack_vars): Make sure
a representative is unpoison if another
variable in the partition is handled by
use-after-scope sanitization.
2018-09-24  Martin Liska  <mliska@suse.cz>

PR sanitizer/85774
* g++.dg/asan/pr85774.C: New test.

From-SVN: r264528

5 years agopolicy_data_structures_biblio.xml: Update link to "Priority Queues and the STL".
Gerald Pfeifer [Mon, 24 Sep 2018 11:14:36 +0000 (11:14 +0000)]
policy_data_structures_biblio.xml: Update link to "Priority Queues and the STL".

* doc/xml/manual/policy_data_structures_biblio.xml: Update link
to "Priority Queues and the STL".

From-SVN: r264527

5 years ago[PR87054] adjust testcase for 32-bit x86
Alexandre Oliva [Mon, 24 Sep 2018 11:03:34 +0000 (11:03 +0000)]
[PR87054] adjust testcase for 32-bit x86

The test assumed __int128 to be available whenever __SSE__ was
defined, but this assumption doesn't hold on 32-bit x86.  Fixed.

for  gcc/testsuite/ChangeLog

PR middle-end/87054
* gcc.dg/pr87054.c: Adjust for no __int128 on x86.

From-SVN: r264526

5 years agore PR ada/87396 (ada/gcc-interface/decl.c:8798:53:Value Conversion Issue: implicit...
Eric Botcazou [Mon, 24 Sep 2018 10:29:07 +0000 (10:29 +0000)]
re PR ada/87396 (ada/gcc-interface/decl.c:8798:53:Value Conversion Issue: implicit conversion from 'int' to 'char' changes value from 132 to -124: -Wconstant-conversion)

PR ada/87396
* fe.h (Get_Attribute_Definition_Clause): Use 'unsigned char' instead
of 'char' as the type of the second parameter.

From-SVN: r264525

5 years agore PR middle-end/63155 (memory hog)
Richard Biener [Mon, 24 Sep 2018 07:08:24 +0000 (07:08 +0000)]
re PR middle-end/63155 (memory hog)

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

PR tree-optimization/63155
* tree-ssa-propagate.c (add_ssa_edge): Avoid adding PHIs to
the worklist when the edge of the respective argument isn't
executable.

From-SVN: r264523

5 years agoDaily bump.
GCC Administrator [Mon, 24 Sep 2018 00:16:34 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264522

5 years agore PR fortran/87397 (Clobbering intent(out) variables caused regression in OpenCoarra...
Thomas Koenig [Sun, 23 Sep 2018 20:17:25 +0000 (20:17 +0000)]
re PR fortran/87397 (Clobbering intent(out) variables caused regression in OpenCoarrays testsuite)

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

PR fortran/87397
* gfc_conv_procedure_call: Do not add clobber on INTENT(OUT)
for variables having the dimension attribute.

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

PR fortran/87395
* gfortran.dg/intent_out_11.f90: New test.

From-SVN: r264518

5 years agoi386.h (enum reg_class): Rename MASK_REGS to ALL_MASK_REGS and MASK_EVEX_REGS to...
Uros Bizjak [Sun, 23 Sep 2018 15:37:30 +0000 (17:37 +0200)]
i386.h (enum reg_class): Rename MASK_REGS to ALL_MASK_REGS and MASK_EVEX_REGS to MASK_REGS.

* config/i386/i386.h (enum reg_class): Rename MASK_REGS to
ALL_MASK_REGS and MASK_EVEX_REGS to MASK_REGS.
(MASK_CLASS_P): Update for rename.
(MAYBE_MASK_CLASS_P): Ditto.
(REG_CLASS_NAMES): Update.
(REG_CLASS_CONTENT): Update.
* config/i386/i386.c (regclass_map): Update for MASK_REG
and ALL_MASK_REGS rename.
* config/i386/constraints.md (Yk): Update for rename.
(k): Ditto.

* config/i386/i386.h (enum reg_class): Remove
EVEX_SSE_REGS and MOD4_SSE_REGS.
(REG_CLASS_NAMES): Update.
(REG_CLASS_CONTENT): Update.
* config/i386/i386.c (regclass_map): Declare AVX-512 SSE
registers as ALL_SSE_REGS.
(ix86_additional_allocno_class_p): Remove.
(TARGET_ADDITIONAL_ALLOCNO_CLASS_P): Remove.
(ix86_register_priority): Lower priority of EVEX SSE registers.
Use IN_RANGE macro where appropriate.
(ix86_hard_regno_mode_ok): Merge AVX-5124FMAPS and
AVX-5124VNNIW checks.
(ix86_modes_tieable_p): Tie 512-bit SSE modes.
* config/i386/sse.md (avx5124fmaddps_4fmaddps)
(avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddps_maskz)
(avx5124fmaddps_4fmaddss, avx5124fmaddps_4fmaddss_mask)
(avx5124fmaddps_4fmaddss_maskz, avx5124fmaddps_4fnmaddps)
(avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddps_maskz)
(avx5124fmaddps_4fnmaddss, avx5124fmaddps_4fnmaddss_mask)
(avx5124fmaddps_4fnmaddss_maskz, avx5124vnniw_vp4dpwssd)
(avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssd_maskz)
(avx5124vnniw_vp4dpwssds, avx5124vnniw_vp4dpwssds_mask)
(avx5124vnniw_vp4dpwssds_maskz): Use "v" instead of "Yh" constraint.
* config/i386/constraints.md (Yh): Remove.

* config/i386/i386.c (regclass_map): Declare integer REX registers
        as GENERAL_REGS.

From-SVN: r264516

5 years agousing_exceptions.xml: Move boost.orgs link to https.
Gerald Pfeifer [Sun, 23 Sep 2018 14:57:25 +0000 (14:57 +0000)]
using_exceptions.xml: Move boost.orgs link to https.

* doc/xml/manual/using_exceptions.xml: Move boost.orgs link to
https.

From-SVN: r264515

5 years ago* doc/service.texi (Service): Switch the fsf.org link to https.
Gerald Pfeifer [Sun, 23 Sep 2018 14:41:54 +0000 (14:41 +0000)]
* doc/service.texi (Service): Switch the fsf.org link to https.

From-SVN: r264514

5 years agoDo array index calculations in gfc_array_index_type
Janne Blomqvist [Sun, 23 Sep 2018 11:03:38 +0000 (14:03 +0300)]
Do array index calculations in gfc_array_index_type

It was recently noticed that for a few of the coarray intrinsics array
index calculations were done in integer_type_node instead of
gfc_array_index_type.  This patch fixes this.

Regtested on x86_64-pc-linux-gnu.

gcc/fortran/ChangeLog:

2018-09-23  Janne Blomqvist  <jb@gcc.gnu.org>

* trans-expr.c (gfc_caf_get_image_index): Do array index
calculations in gfc_array_index_type.
* trans-intrinsic.c (conv_intrinsic_event_query): Likewise.
* trans-stmt.c (gfc_trans_lock_unlock): Likewise.
(gfc_trans_event_post_wait): Likewise.

gcc/testsuite/ChangeLog:

2018-09-23  Janne Blomqvist  <jb@gcc.gnu.org>

* gfortran.dg/coarray_lib_alloc_4.f90: Fix scan patterns.
* gfortran.dg/coarray_lock_7.f90: Likewise.

From-SVN: r264513

5 years agore PR fortran/87395 (ICE in in lookup_field_for_decl with whizard)
Thomas Koenig [Sun, 23 Sep 2018 10:52:27 +0000 (10:52 +0000)]
re PR fortran/87395 (ICE in in lookup_field_for_decl with whizard)

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

PR fortran/87395
* gfc_conv_procedure_call: Reformat comments slightly. Do not add
clobber on INTENT(OUT) for saved variables.

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

PR fortran/87395
* gfortran.dg/intent_out_10.f90: New test.

From-SVN: r264512

5 years agoDaily bump.
GCC Administrator [Sun, 23 Sep 2018 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264510

5 years agore PR middle-end/41453 (use INTENT(out) for optimization)
Thomas Koenig [Sat, 22 Sep 2018 18:44:01 +0000 (18:44 +0000)]
re PR middle-end/41453 (use INTENT(out) for optimization)

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

PR fortran/41453
* trans.h (gfc_conv_expr_reference): Add optional argument
add_clobber to prototype.
(gfc_conv_procedure_call):  Set add_clobber argument to
gfc_conv_procedure_reference to true for scalar, INTENT(OUT),
non-pointer, non-allocatable, non-dummy variables whose type
is neither BT_CHARACTER, BT_DERIVED or BT_CLASS, but only if
the procedure is not elemental.
* trans-expr.c (gfc_conv_procedure_reference): Add clobber
statement before call if add_clobber is set.

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

PR fortran/41453
* gfortran.dg/intent_optimize_2.f90: New test.

From-SVN: r264506

5 years agore PR fortran/87318 (gfortran.dg/dtio_1.f90 is invalid)
Jerry DeLisle [Sat, 22 Sep 2018 17:49:19 +0000 (17:49 +0000)]
re PR fortran/87318 (gfortran.dg/dtio_1.f90 is invalid)

2018-09-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/87318
* gfortran.dg/dtio_1.f90: Update test to valid code.

From-SVN: r264505

5 years agore PR target/86798 (nds32 port needs updating for CVE-2017-5753)
Chung-Ju Wu [Sat, 22 Sep 2018 12:30:50 +0000 (12:30 +0000)]
re PR target/86798 (nds32 port needs updating for CVE-2017-5753)

PR target/86798
* config/nds32/nds32.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
Define to speculation_safe_value_not_needed.

From-SVN: r264503

5 years agore PR fortran/85603 (ICE with character array substring assignment)
Paul Thomas [Sat, 22 Sep 2018 10:21:25 +0000 (10:21 +0000)]
re PR fortran/85603 (ICE with character array substring assignment)

2018-09-22  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/85603
* trans-array.c (gfc_alloc_allocatable_for_assignment): Test
the charlen backend_decl before using the VAR_P macro.

2018-09-22  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/85603
* gfortran.dg/deferred_character_23.f90 : New test.

From-SVN: r264502

5 years agoDaily bump.
GCC Administrator [Sat, 22 Sep 2018 00:16:49 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r264500

5 years agore PR libstdc++/87135 ([C++17] unordered containers violate iterator validity require...
François Dumont [Fri, 21 Sep 2018 20:39:07 +0000 (20:39 +0000)]
re PR libstdc++/87135 ([C++17] unordered containers violate iterator validity requirements)

2018-09-21  François Dumont  <fdumont@gcc.gnu.org>

PR libstdc++/87135
* src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
Use __builtin_floor to compute _M_next_resize.
* testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt.
* testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc:
Adapt.

From-SVN: r264494

5 years agogimple-ssa-evrp.c (evrp_dom_walker::cleanup): Call vr_values::cleanup_edges_and_switches.
Jeff Law [Fri, 21 Sep 2018 20:00:23 +0000 (14:00 -0600)]
gimple-ssa-evrp.c (evrp_dom_walker::cleanup): Call vr_values::cleanup_edges_and_switches.

* gimple-ssa-evrp.c (evrp_dom_walker::cleanup): Call
vr_values::cleanup_edges_and_switches.
* tree-vrp.c (to_remove_edges, to_update_switch_stmts): Moved into
vr_values class.
(identify_jump_threads): Remove EDGE_IGNORE handling.
(execute_vrp): Move handling of to_remove_edges and
to_update_switch_stmts into vr_values class member functions.
* tree-vrp.h (switch_update, to_remove_edges): Remove declarations.
(to_update_switch_stmts): Likewise.
* vr-values.c: Include cfghooks.h.
(vr_values::vr_values): Initialize to_remove_edges and
to_update_switch_stmts.
(vr_values::~vr_values): Verify to_remove_edges and
to_update_switch_stmts are empty.
(vr_values::simplify_switch_using_ranges): Set EDGE_IGNORE as needed.
(vr_values::cleanup_edges_and_switches): New member function.
* vr-values.h (vr_values): Add cleanup_edges_and_switches member
function.  Add new data members.

* gcc.dg/tree-ssa/vrp113.c: Disable EVRP.
* gcc.dg/tree-ssa/vrp120.c: New test.

From-SVN: r264491

5 years agoDocument that attribute noreturn inhibits tail call optimization
Florian Weimer [Fri, 21 Sep 2018 19:49:36 +0000 (21:49 +0200)]
Document that attribute noreturn inhibits tail call optimization

PR middle-end/81035
* doc/extend.texi (Common Function Attributes): Mention that
noreturn suppresses tail call optimization.

From-SVN: r264490

5 years agoPR c++/87372 - __func__ constexpr evaluation.
Marek Polacek [Fri, 21 Sep 2018 18:45:59 +0000 (18:45 +0000)]
PR c++/87372 - __func__ constexpr evaluation.

* constexpr.c (maybe_constant_init_1): Pass false for strict down to
cxx_eval_outermost_constant_expr.

* g++.dg/cpp1y/func_constexpr2.C: New test.

From-SVN: r264489

5 years agoUse vectored writes when reporting errors and warnings.
Janne Blomqvist [Fri, 21 Sep 2018 18:12:59 +0000 (21:12 +0300)]
Use vectored writes when reporting errors and warnings.

When producing error and warning messages, libgfortran writes a
message by using many system calls.  By using vectored writes (the
POSIX writev function) when available and feasible to use without
major surgery, we reduce the chance that output gets intermingled with
other output to stderr.

In practice, this is done by introducing a new function estr_writev in
addition to the existing estr_write.  In order to use this, the old
st_vprintf is removed, replaced by direct calls of vsnprintf, allowing
more message batching.

Regtested on x86_64-pc-linux-gnu.

libgfortran/ChangeLog:

2018-09-21  Janne Blomqvist  <jb@gcc.gnu.org>

* config.h.in: Regenerated.
* configure: Regenerated.
* configure.ac: Check for writev and sys/uio.h.
* libgfortran.h: Include sys/uio.h.
(st_vprintf): Remove prototype.
(struct iovec): Define if not available.
(estr_writev): New prototype.
* runtime/backtrace.c (error_callback): Use estr_writev.
* runtime/error.c (ST_VPRINTF_SIZE): Remove.
(estr_writev): New function.
(st_vprintf): Remove.
(gf_vsnprintf): New function.
(ST_ERRBUF_SIZE): New macro.
(st_printf): Use vsnprintf.
(os_error): Use estr_writev.
(runtime_error): Use vsnprintf and estr_writev.
(runtime_error_at): Likewise.
(runtime_warning_at): Likewise.
(internal_error): Use estr_writev.
(generate_error_common): Likewise.
(generate_warning): Likewise.
(notify_std): Likewise.
* runtime/pause.c (pause_string): Likewise.
* runtime/stop.c (report_exception): Likewise.
(stop_string): Likewise.
(error_stop_string): Likewise.

From-SVN: r264487

5 years agore PR fortran/77325 (ICE in gimplify_var_or_parm_decl, at gimplify.c:1933)
Paul Thomas [Fri, 21 Sep 2018 17:33:29 +0000 (17:33 +0000)]
re PR fortran/77325 (ICE in gimplify_var_or_parm_decl, at gimplify.c:1933)

2018-09-21  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/77325
* trans-array.c (gfc_alloc_allocatable_for_assignment): If the
rhs has a charlen expression, convert that and use it.
* trans-expr.c (gfc_trans_assignment_1): The rse.pre for the
assignment of deferred character array vars to a realocatable
lhs should not be added to the exterior block since vector
indices, for example, generate temporaries indexed within the
loop.

2018-09-21  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/77325
* gfortran.dg/deferred_character_22.f90 : New test.

From-SVN: r264486

5 years agore PR fortran/87359 (pointer being freed was not allocated)
Paul Thomas [Fri, 21 Sep 2018 17:26:23 +0000 (17:26 +0000)]
re PR fortran/87359 (pointer being freed was not allocated)

2018-09-21  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87359
* trans-stmt.c (gfc_trans_allocate): Don't deallocate alloc
components if must_finalize is set for expr3.

2018-09-21  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/87359
* gfortran.dg/finalize_33.f90 : New test.

From-SVN: r264485

5 years ago* constexpr.c (cxx_eval_outermost_constant_expr): Update comment.
Jason Merrill [Fri, 21 Sep 2018 17:22:20 +0000 (13:22 -0400)]
* constexpr.c (cxx_eval_outermost_constant_expr): Update comment.

From-SVN: r264484

5 years agoUn-split hypot<long double> tests
Jonathan Wakely [Fri, 21 Sep 2018 15:36:53 +0000 (16:36 +0100)]
Un-split hypot<long double> tests

Remove the hypot-long-double.cc file that used dg-xfail-run-if and
simply use the lower tolerance for double if long double is not larger
than double.

* testsuite/26_numerics/headers/cmath/hypot-long-double.cc: Remove.
* testsuite/26_numerics/headers/cmath/hypot.cc: Restore test for
long double unconditionally, but use lower tolerance when
sizeof(long double) == sizeof(double).

From-SVN: r264483

5 years agodumpfile.c: fix stray dump_loc output (PR tree-optimization/87309)
David Malcolm [Fri, 21 Sep 2018 14:17:07 +0000 (14:17 +0000)]
dumpfile.c: fix stray dump_loc output (PR tree-optimization/87309)

In r262891 I reimplemented this call:
  dump_printf_loc (MSG_NOTE, loc, "=== %s ===\n", name);
in dump_begin_scope to use direct calls to dump_loc:
  if (dump_file)
    {
      dump_loc (MSG_NOTE, dump_file, loc.get_location_t ());
      fprintf (dump_file, "=== %s ===\n", name);
    }

  if (alt_dump_file)
   {
     dump_loc (MSG_NOTE, alt_dump_file, loc.get_location_t ());
     fprintf (alt_dump_file, "=== %s ===\n", name);
   }

However ::dump_loc doesn't filter with pflags and alt_flags.

This lead to stray output of the form:
  test.cpp:1:6: note: test.cpp:1:11: note:
when using -fopt-info with "optimized" or "missed".

This patch adds this missing filtering, eliminating the stray partial
note output.

gcc/ChangeLog:
PR tree-optimization/87309
* dumpfile.c (dump_context::begin_scope): Filter the dump_loc
calls with pflags and alt_flags.
(selftest::test_capture_of_dump_calls): Add test of interaction of
MSG_OPTIMIZED_LOCATIONS with AUTO_DUMP_SCOPE.

gcc/testsuite/ChangeLog:
PR tree-optimization/87309
* gcc.dg/pr87309.c: New test.

From-SVN: r264481