]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
5 years agogcc:
edlinger [Mon, 16 Jul 2018 18:03:15 +0000 (18:03 +0000)] 
gcc:
2018-07-16  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/86528
        * builtins.c (check_access): Bail out if range[0] is no INTEGER_CST.
        * expr.c (string_constant): Fix the element size of ARRAY_TYPE.

testsuite:
2018-07-16  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/86528
        * gcc.c-torture/execute/pr86528.c: New test.
        * gcc.dg/Wrestrict-10.c (test_arr_strcat_2): Fix typo.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262742 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * scripts/create_testsuite_files: Fix typo in comment.
redi [Mon, 16 Jul 2018 17:42:20 +0000 (17:42 +0000)] 
* scripts/create_testsuite_files: Fix typo in comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262741 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago/cp
paolo [Mon, 16 Jul 2018 17:36:43 +0000 (17:36 +0000)] 
/cp
2018-07-16  Paolo Carlini  <paolo.carlini@oracle.com>

* class.c (resolve_address_of_overloaded_function): Don't emit an
inform if the matching permerror returns false.
* pt.c (check_specialization_namespace): Likewise.

/testsuite
2018-07-16  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/template/spec40.C: New.
* g++.dg/parse/ptrmem8.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262740 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoPR libstdc++/86537 remove less<shared_ptr<T>> partial specialization
redi [Mon, 16 Jul 2018 17:13:41 +0000 (17:13 +0000)] 
PR libstdc++/86537 remove less<shared_ptr<T>> partial specialization

The standard doesn't specify this partial specialization (it was
required after the changes in N2637 but then should have been removed
following LWG 1262). Its presence is observable because it causes
different results when operator< has been overloaded for a shared_ptr
specialization.

PR libstdc++/86537
* include/bits/shared_ptr.h (less<shared_ptr<_Tp>>): Remove
non-standard partial specialization.
* include/bits/shared_ptr_base.h (_Sp_less): Remove class definition.
(less<__shared_ptr<_Tp, _Lp>): Remove partial specialization.
* testsuite/20_util/shared_ptr/comparison/86537.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262739 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agogcc/ChangeLog:
kelvin [Mon, 16 Jul 2018 15:22:28 +0000 (15:22 +0000)] 
gcc/ChangeLog:

2018-07-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* doc/extend.texi (PowerPC AltiVec Built-in Functions):
Alphabetize prototypes of built-in functions, separating out
built-in functions that are listed in this section but should be
described elsewhere.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262737 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago PR target/86511
uros [Mon, 16 Jul 2018 15:11:57 +0000 (15:11 +0000)] 
PR target/86511
* expmed.c (emit_store_flag): Do not emit setcc followed by a
conditional move when trapping comparison was split to a
non-trapping one (and vice versa).

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262736 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix ChangeLog.
krebbel [Mon, 16 Jul 2018 14:46:10 +0000 (14:46 +0000)] 
Fix ChangeLog.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262735 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoS/390: Implement -mnop-mcount
krebbel [Mon, 16 Jul 2018 14:41:57 +0000 (14:41 +0000)] 
S/390: Implement -mnop-mcount

On i386 the profiler call sequence always consists of 1 call
instruction, so -mnop-mcount generates a single nop with the same
length as a call. For S/390 longer sequences may be used in some
cases, so -mnop-mcount generates the corresponding amount of nops.

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

* config/s390/s390.c (s390_function_profiler): Generate nops
instead of profiler call sequences.
* config/s390/s390.opt: Add the new option.

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

* gcc.target/s390/mnop-mcount-m31-fpic.c: New testcase.
* gcc.target/s390/mnop-mcount-m31-mzarch.c: New testcase.
* gcc.target/s390/mnop-mcount-m31.c: New testcase.
* gcc.target/s390/mnop-mcount-m64-mfentry.c: New testcase.
* gcc.target/s390/mnop-mcount-m64.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262734 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoS/390: Implement -mrecord-mcount
krebbel [Mon, 16 Jul 2018 14:36:21 +0000 (14:36 +0000)] 
S/390: Implement -mrecord-mcount

This is the counterpart of the i386 feature introduced by
39a5a6a4: Add direct support for Linux kernel __fentry__ patching.

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

* config/s390/s390.c (s390_function_profiler): Generate
__mcount_loc section.
* config/s390/s390.opt: Add the new option.

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

* testsuite/gcc.target/s390/mrecord-mcount.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262733 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoS/390: Add direct support for Linux kernel __fentry__ patching.
krebbel [Mon, 16 Jul 2018 14:29:08 +0000 (14:29 +0000)] 
S/390: Add direct support for Linux kernel __fentry__ patching.

On i386, the difference between mcount and fentry is that fentry
comes before the prolog. On s390 mcount already comes before the
prolog, but takes 4 instructions. This patch introduces the more
efficient implementation (just 1 instruction) and puts it under
-mfentry flag.

The produced code is compatible only with newer glibc versions,
which provide the __fentry__ symbol and do not clobber %r0 when
resolving lazily bound functions. Because 31-bit PLT stubs assume
%r12 contains GOT address, which is not the case when the code runs
before the prolog, -mfentry is allowed only for 64-bit code.

Also, code compiled with -mfentry cannot be used for the nested C
functions, since they both use %r0. In this case instrumentation is
not insterted, and a new warning is issued for each affected nested
function.

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

* common.opt: Add the new warning.
* config/s390/s390.c (s390_function_profiler): Emit "brasl
%r0,__fentry__" when -mfentry is specified.
(s390_option_override_internal): Disallow -mfentry for 31-bit
CPUs.
* config/s390/s390.opt: Add the new option.

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

* gcc.target/s390/mfentry-m64.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262732 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Missing error on hidden state in instantiation
pmderodat [Mon, 16 Jul 2018 14:12:33 +0000 (14:12 +0000)] 
[Ada] Missing error on hidden state in instantiation

This patch modifies the analysis of package contracts to split processing
which is specific to package instantiations on its own. As a result, the
lack of indicator Part_Of can now be properly assessed.

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

--  gen_pack.ads

generic
package Gen_Pack is
   Pack_Var : Integer := 1;
end Gen_Pack;

--  gen_wrap.ads

with Gen_Pack;

generic
package Gen_Wrap is
   Wrap_Var : Integer := 1;

   package Inst is new Gen_Pack;
end Gen_Wrap;

--  pack.ads

with Gen_Pack;
with Gen_Wrap;

package Pack
  with SPARK_Mode     => On,
       Abstract_State => State
is
   procedure Force_Body;

private
   package OK_Inst_1 is new Gen_Pack                                 --  OK
     with Part_Of => State;                                          --  OK

   package OK_Inst_2 is new Gen_Pack;                                --  OK
   pragma Part_Of (State);                                           --  OK

   package OK_Inst_3 is new Gen_Wrap                                 --  OK
     with Part_Of => State;                                          --  OK

   package OK_Inst_4 is new Gen_Wrap;                                --  OK
   pragma Part_Of (State);

   package Error_Inst_1 is new Gen_Pack;                             --  Error
   package Error_Inst_2 is new Gen_Wrap;                             --  Error
end Pack;

--  pack.adb

package body Pack
  with SPARK_Mode    => On,
       Refined_State =>
         (State => (OK_Inst_1.Pack_Var, OK_Inst_2.Pack_Var,
                    OK_Inst_3.Wrap_Var, OK_Inst_3.Inst.Pack_Var,
                    OK_Inst_4.Wrap_Var, OK_Inst_4.Inst.Pack_Var))
is
   procedure Force_Body is null;
end Pack;

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

$ gcc -c pack.adb
pack.ads:23:12: indicator Part_Of is required in this context (SPARK RM
  7.2.6(2))
pack.ads:23:12: "Error_Inst_1" is declared in the private part of package
  "Pack"
pack.ads:24:12: indicator Part_Of is required in this context (SPARK RM
  7.2.6(2))
pack.ads:24:12: "Error_Inst_2" is declared in the private part of package
  "Pack"

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

gcc/ada/

* contracts.adb (Analyze_Contracts): Add specialized processing for
package instantiation contracts.
(Analyze_Package_Contract): Remove the verification of a missing
Part_Of indicator.
(Analyze_Package_Instantiation_Contract): New routine.
* contracts.ads (Analyze_Package_Contract): Update the comment on
usage.
* sem_prag.adb (Check_Missing_Part_Of): Ensure that the entity of the
instance is being examined when trying to determine whether a package
instantiation needs a Part_Of indicator.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262731 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Minor reformatting
pmderodat [Mon, 16 Jul 2018 14:12:28 +0000 (14:12 +0000)] 
[Ada] Minor reformatting

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

gcc/ada/

* einfo.adb, exp_ch7.adb, exp_ch9.adb, exp_unst.adb, inline.adb,
sem.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb, sem_eval.adb,
sem_util.adb: Minor reformatting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262730 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Only unnest subprograms if no previous errors were detected
pmderodat [Mon, 16 Jul 2018 14:12:23 +0000 (14:12 +0000)] 
[Ada] Only unnest subprograms if no previous errors were detected

2018-07-16  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* frontend.adb: Only unnest subprograms if no previous errors were
 detected.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262729 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Fix expansion of blocks in loops inside elaboration code
pmderodat [Mon, 16 Jul 2018 14:12:18 +0000 (14:12 +0000)] 
[Ada] Fix expansion of blocks in loops inside elaboration code

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

gcc/ada/

* exp_ch7.adb (Check_Unnesting_Elaboration_Code): Handle loops that
contain blocks in the elaboration code for a package body. Create the
elaboration subprogram wrapper only if there is a subprogram
declaration in a block or loop.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262728 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Deep copy operands of membership operations for unnesting
pmderodat [Mon, 16 Jul 2018 14:12:13 +0000 (14:12 +0000)] 
[Ada] Deep copy operands of membership operations for unnesting

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

gcc/ada/

* exp_ch4.adb (Expand_Set_Membership): Use New_Copy_Tree to perform a
deep copy of the left operand when building each conjuct of the
expanded membership operation, to avoid sharing nodes between them.
This sharing interferes with the unnesting machinery and is generally
undesirable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262727 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Unnesting: handle 'Address references that are calls
pmderodat [Mon, 16 Jul 2018 14:12:09 +0000 (14:12 +0000)] 
[Ada] Unnesting: handle 'Address references that are calls

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

gcc/ada/

* exp_unst.adb (Visit_Node): Handle 'Address references that are
calls.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262726 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Unnesting: handle the semantic of Storage_Pool field
pmderodat [Mon, 16 Jul 2018 14:12:03 +0000 (14:12 +0000)] 
[Ada] Unnesting: handle the semantic of Storage_Pool field

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

gcc/ada/

* exp_unst.adb (Visit_Node): Handle the semantic of Storage_Pool field
in relevant nodes: Allocate, Free, and return statements.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262725 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Fix Default_Storage_Pool aspect handling in generic instantiations
pmderodat [Mon, 16 Jul 2018 14:11:58 +0000 (14:11 +0000)] 
[Ada] Fix Default_Storage_Pool aspect handling in generic instantiations

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

gcc/ada/

* sem_ch12.adb (Analyze_Package_Instantiation): Handle properly an
instance that carries an aspect Default_Storage_Pool that overrides a
default storage pool that applies to the generic unit. The aspect in
the generic unit was removed before copying it in the instance, rather
than removing it from the copy of the aspects that are appended to the
aspects in the instance.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262724 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Major code cleanup
pmderodat [Mon, 16 Jul 2018 14:11:52 +0000 (14:11 +0000)] 
[Ada] Major code cleanup

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

gcc/ada/

* einfo.adb (Set_Is_Uplevel_Referenced_Entity): Flag can appear on
loop parameters.
* exp_ch7.adb (Check_Unnesting_Elaboration_Code): Handle subprogram
bodies.
* exp_ch9.adb (Reset_Scopes_To): Set the scopes of entities local to an
entry body to be the corresponding generated subprogram, for correct
analysis of uplevel references.
* exp_unst.adb (Visit_Node): Handle properly binary and unary operators
Ignore pragmas, fix component associations.
(Register_Subprograms): Subprograms in synchronized types must be
treated as reachable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262723 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Spurious error with null Abstract_State
pmderodat [Mon, 16 Jul 2018 14:11:47 +0000 (14:11 +0000)] 
[Ada] Spurious error with null Abstract_State

This patch corrects the mechanism which ensures that a package with a null
Abstract_State does not introduce hidden state, by ignoring internal states
and variables because they do not represent the "source" hidden state.

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

gcc/ada/

* sem_util.adb (Check_No_Hidden_State): Ignore internally-generated
states and variables.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262722 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Deconstruct unused Withed_Body filed of N_With_Clause node
pmderodat [Mon, 16 Jul 2018 14:11:42 +0000 (14:11 +0000)] 
[Ada] Deconstruct unused Withed_Body filed of N_With_Clause node

The Withed_Body field was added to N_With_Clause node to help the
Walk_Library_Items routine, which was created for the CodePeer backend
and later adopted by the GNATprove.

This routine is meant to traverse all library units, such that declarations
are visited before references. However, for complex units (in particular,
with generics and child packages) it never worked reliably and backends
developed their own workarounds. This patch deconstructs the field, as it
hasn't been used for years.

Semantics unaffected; no test provided.

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

gcc/ada/

* sinfo.ads, sinfo.adb (Withed_Body): Remove.
(Set_Withed_Body): Remove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262721 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Avoid crash when traversing units with -gnatd.WW debug switch
pmderodat [Mon, 16 Jul 2018 14:11:37 +0000 (14:11 +0000)] 
[Ada] Avoid crash when traversing units with -gnatd.WW debug switch

The debug switch -gnatd.WW enables extra info when traversing library units
with Walk_Library_Items, which is used in the CodePeer and GNATprove. This
routine was crashing when trying to print info about a unit with configuration
pragmas (typically an .adc file). Now fixed.

No test, as the crash only happens when a GNATprove backend is manually called
with -gnatd.WW switch. Frontend is not affected.

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

gcc/ada/

* sem.adb (Walk_Library_Items): Skip units with configuration pragmas
when printing debug info.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262720 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Trivial simplifications in in Walk_Library_Items
pmderodat [Mon, 16 Jul 2018 14:11:30 +0000 (14:11 +0000)] 
[Ada] Trivial simplifications in in Walk_Library_Items

Cleanup only; semantics unaffected.

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

gcc/ada/

* sem.adb (Walk_Library_Items): Reuse local constant.
(Is_Subunit_Of_Main): Turn condition to positive and flip the
IF-THEN-ELSE branches; avoid potentially ineffective assignment to the
Lib variable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262719 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Deconstruct always-false calls to Withed_Body in Walk_Library_Items
pmderodat [Mon, 16 Jul 2018 14:11:25 +0000 (14:11 +0000)] 
[Ada] Deconstruct always-false calls to Withed_Body in Walk_Library_Items

We previously removed the calls to Set_Withed_Body; this commit deconstructs
calls to Withed_Body, which always returned False.

The Set_Withed_Body/Withed_Body were helping the Walk_Library_Items routine
traverse the AST of several compilation units such that declarations are
visited before references. However, this never worked as it should and there is
no point to keep the code more complicated than necessary.

No test provided, because thie removed code was ineffective (and only used in
the non-compiler backends, i.e. CodePeer and GNATprove).

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

gcc/ada/

* sem.adb (Walk_Library_Items): Deconstruct dead code.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262718 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Use common routine Expand_Nonbinary_Modular_Op for XOR expressions
pmderodat [Mon, 16 Jul 2018 14:11:20 +0000 (14:11 +0000)] 
[Ada] Use common routine Expand_Nonbinary_Modular_Op for XOR expressions

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

gcc/ada/

* exp_ch4.adb (Expand_N_Op_Xor): Use common routine
Expand_Nonbinary_Modular_Op.  Needed for unnesting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262717 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Add a missing check for trivial predicates on non-discrete types
pmderodat [Mon, 16 Jul 2018 14:11:15 +0000 (14:11 +0000)] 
[Ada] Add a missing check for trivial predicates on non-discrete types

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

gcc/ada/

* sem_ch3.adb (Inherit_Predicate_Flags): A non-discrete type may have a
static predicate (for example True) but has no
static_discrete_predicate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262716 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Crash on Indefinite_Hashed_Maps with -gnata -gnateV
pmderodat [Mon, 16 Jul 2018 14:11:09 +0000 (14:11 +0000)] 
[Ada] Crash on Indefinite_Hashed_Maps with -gnata -gnateV

This patch corrects the generation of helper functions which verify the
validity of record type scalar discriminants and scalar components when
switches -gnata (assertions enabled) and -gnateV (validity checks on
subprogram parameters) are in effect.

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

gcc/ada/

* exp_attr.adb (Build_Record_VS_Func): Handle corner cases dealing with
class-wide types and record extensions.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262715 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Spurious possible contraint error warning with No_Exception_Propagation
pmderodat [Mon, 16 Jul 2018 14:11:04 +0000 (14:11 +0000)] 
[Ada] Spurious possible contraint error warning with No_Exception_Propagation

This patch corrects an issue whereby spurious unhandled exception warnings on
integer literals within static if and case expressions would be emitted when
the restriction No_Exception_Propagation is enabled.

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

--  gnat.adc

pragma Restrictions (No_Exception_Propagation);
pragma SPARK_Mode (On);

--  pack.ads

package Pack is
   procedure Filter (Ret : out Integer);
end Pack;

--  pack.adb

package body Pack is

   subtype Nat is Integer range 0 .. 10;

   Default       : constant Nat := 1;
   User_Override : constant Integer := -1;

   procedure Filter (Ret : out Integer) is
      Val : constant Nat :=
              (if User_Override in Nat then
                  User_Override
               else
                  Default);
   begin
      Ret := Val;
   end Filter;
end Pack;

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

& gcc -c -gnatp -gnatwa pack.adb

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

gcc/ada/

* sem_eval.adb (Eval_Integer_Literal): Add exception for avoiding
checks on expanded literals within if and case expressions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262714 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Segmentation_Fault with Integer'Wide_Wide_Value
pmderodat [Mon, 16 Jul 2018 14:10:58 +0000 (14:10 +0000)] 
[Ada] Segmentation_Fault with Integer'Wide_Wide_Value

This patch updates the routines which produce Wide_String and Wide_Wide_String
from a String to construct a result of the proper maximum size which is later
sliced.

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

gcc/ada/

* libgnat/s-wchwts.adb (Wide_String_To_String): Use the appropriate
longest sequence factor. Code clean up.
(Wide_Wide_String_To_String): Use the appropriate longest sequence
factor.  Code clean up.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262713 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Bit_Order cannot be defined for record extensions
pmderodat [Mon, 16 Jul 2018 14:10:53 +0000 (14:10 +0000)] 
[Ada] Bit_Order cannot be defined for record extensions

This patch allows the compiler to report an error on Bit_Order when
defined for a record extension.

2018-07-16  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Report an error
on Bit_Order when defined for a record extension.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262712 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] System.Object_Reader: minor code clean-up
pmderodat [Mon, 16 Jul 2018 14:10:47 +0000 (14:10 +0000)] 
[Ada] System.Object_Reader: minor code clean-up

2018-07-16  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* libgnat/s-objrea.ads: Minor code clean up.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262711 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Adjust reference to renumbered SPARK RM rule
pmderodat [Mon, 16 Jul 2018 14:10:42 +0000 (14:10 +0000)] 
[Ada] Adjust reference to renumbered SPARK RM rule

Rules in SPARK RM 7.1.3 were renumbered when adding support for tasking,
but references in the comments were not updated. Now fixed.

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

gcc/ada/

* sem_ch3.adb (Process_Discriminants): Adjust reference to the SPARM RM
rule.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262710 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] adaint.c: minor code cleanup
pmderodat [Mon, 16 Jul 2018 14:10:37 +0000 (14:10 +0000)] 
[Ada] adaint.c: minor code cleanup

2018-07-16  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* adaint.c (__gnat_set_file_time_name): Code clean up.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262709 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Code cleanup on functions inlining
pmderodat [Mon, 16 Jul 2018 14:10:32 +0000 (14:10 +0000)] 
[Ada] Code cleanup on functions inlining

This patch is preventive: it improves checks on inline functions that
return unconstrained type. It does not change the functionality of
the compiler.

2018-07-16  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* inline.adb (Build_Body_To_Inline): Minor code reorganization that
ensures that calls to function Has_Single_Return() pass a decorated
tree.
(Has_Single_Return.Check_Return): Peform checks on entities (instead on
relying on their characters).

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262708 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Crash processing sources under GNATprove debug mode
pmderodat [Mon, 16 Jul 2018 14:10:27 +0000 (14:10 +0000)] 
[Ada] Crash processing sources under GNATprove debug mode

Processing sources under -gnatd.F the frontend may crash on
an iterator of the form 'for X of ...' over an array if the
iterator is located in an inlined subprogram.

2018-07-16  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Code cleanup. Required
to avoid generating an ill-formed tree that confuses gnatprove causing
it to blowup.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262707 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Inline: rewrap comment
pmderodat [Mon, 16 Jul 2018 14:10:22 +0000 (14:10 +0000)] 
[Ada] Inline: rewrap comment

2018-07-16  Yannick Moy  <moy@adacore.com>

gcc/ada/

* inline.adb (Has_Single_Return): Rewrap comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262706 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Einfo: minor tweak in comment
pmderodat [Mon, 16 Jul 2018 14:10:18 +0000 (14:10 +0000)] 
[Ada] Einfo: minor tweak in comment

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

gcc/ada/

* einfo.ads: Minor tweak in comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262705 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Sem_Ch4: minor code cleanup
pmderodat [Mon, 16 Jul 2018 14:10:13 +0000 (14:10 +0000)] 
[Ada] Sem_Ch4: minor code cleanup

2018-07-16  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_ch4.adb (Analyze_Membership_Op): Code cleanup.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262704 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Fix expansion of 'Count in protected types
pmderodat [Mon, 16 Jul 2018 14:10:08 +0000 (14:10 +0000)] 
[Ada] Fix expansion of 'Count in protected types

2018-07-16  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* exp_attr.adb (Expand_N_Attribute_Reference ['Count]): Do not
transform 'Count into a function call if the current scope has been
eliminated.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262703 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Sem_Utils: make Has_Prefix public
pmderodat [Mon, 16 Jul 2018 14:10:03 +0000 (14:10 +0000)] 
[Ada] Sem_Utils: make Has_Prefix public

2018-07-16  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_util.ads, sem_util.adb (Has_Prefix): Move this function to the
public part of this package.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262702 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Adjust inlining in GNATprove mode for predicate/invariant/DIC
pmderodat [Mon, 16 Jul 2018 14:09:58 +0000 (14:09 +0000)] 
[Ada] Adjust inlining in GNATprove mode for predicate/invariant/DIC

The frontend generates special functions for checking subtype predicates,
type invariants and Default_Initial_Condition aspect. These are translated
as predicates in GNATprove, and as such should no call inside these
functions should be inlined. This is similar to the existing handling of
calls inside expression functions.

There is no impact on compilation.

2018-07-16  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Call): Do not inline calls inside
compiler-generated functions translated as predicates in GNATprove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262701 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Violation of No_Standard_Allocators_After_Elaboration not detected
pmderodat [Mon, 16 Jul 2018 14:09:53 +0000 (14:09 +0000)] 
[Ada] Violation of No_Standard_Allocators_After_Elaboration not detected

The compiler fails to generate a call to detect allocators executed after
elaboration in cases where the allocator is associated with Global_Pool_Object.
The fix is to test for this associated storage pool as part of the condition
for generating a call to System.Elaboration_Allocators.Check_Standard_Alloctor.
Also, the exception Storage_Error is now generated instead of Program_Error
for such a run-time violation, as required by the Ada RM in D.7.

The following test must compile and execute quietly:

-- Put the pragma in gnat.adc:
pragma Restrictions (No_Standard_Allocators_After_Elaboration);

package Pkg_With_Allocators is

   type Priv is private;

   procedure Allocate
     (Use_Global_Allocator : Boolean;
      During_Elaboration   : Boolean);

private

   type Rec is record
      Int : Integer;
   end record;

   type Priv is access Rec;

end Pkg_With_Allocators;

package body Pkg_With_Allocators is

   Ptr : Priv;

   procedure Allocate
     (Use_Global_Allocator : Boolean;
      During_Elaboration   : Boolean)
   is
      type Local_Acc is access Rec;

      Local_Ptr : Local_Acc;

   begin
      if Use_Global_Allocator then
         Ptr := new Rec;  -- Raise Storage_Error if after elaboration
         Ptr.Int := 1;
      else
         Local_Ptr := new Rec;  -- Raise Storage_Error if after elaboration
         Local_Ptr.Int := 1;
      end if;

      if not During_Elaboration then
         raise Program_Error;  -- No earlier exception: FAIL
      end if;

   exception
      when Storage_Error =>
         if During_Elaboration then
            raise Program_Error;  -- No exception expected: FAIL
         else
            null;                 -- Expected Storage_Error: PASS
         end if;
      when others =>
         raise Program_Error;  -- Unexpected exception: FAIL
   end Allocate;

begin
   Allocate (Use_Global_Allocator => True, During_Elaboration => True);

   Allocate (Use_Global_Allocator => False, During_Elaboration => True);
end Pkg_With_Allocators;

with Pkg_With_Allocators;

procedure Alloc_Restriction_Main is
begin
   Pkg_With_Allocators.Allocate
     (Use_Global_Allocator => True,
      During_Elaboration   => False);

   Pkg_With_Allocators.Allocate
     (Use_Global_Allocator => False,
      During_Elaboration   => False);
end Alloc_Restriction_Main;

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

gcc/ada/

* exp_ch4.adb (Expand_N_Allocator): Test for Storage_Pool being RTE in
addition to the existing test for no Storage_Pool as a condition
enabling generation of the call to Check_Standard_Allocator when the
restriction No_Standard_Allocators_After_Elaboration is active.
* libgnat/s-elaall.ads (Check_Standard_Allocator): Correct comment to
say that Storage_Error will be raised (rather than Program_Error).
* libgnat/s-elaall.adb (Check_Standard_Allocator): Raise Storage_Error
rather than Program_Error when Elaboration_In_Progress is False.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262700 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Fix spelling for compile-time-known
pmderodat [Mon, 16 Jul 2018 14:09:49 +0000 (14:09 +0000)] 
[Ada] Fix spelling for compile-time-known

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

gcc/ada/

* sem_eval.adb: Fix spelling for compile-time-known.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262699 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Illegal deferred constant causes stack overflow
pmderodat [Mon, 16 Jul 2018 14:09:44 +0000 (14:09 +0000)] 
[Ada] Illegal deferred constant causes stack overflow

This patch prevents the compiler from entering infinite recursion when
processing an illegal deferred constant.

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

--  types.ads

package Types is
   type Enum is (One, Two);
end Types;

--  types2.ads

with Types;

package Types2 is
   type Enum is private;
   One : constant Enum;
   Two : constant Enum;

private
   type Enum is new Types.Enum;
   One : constant Enum := One;
   Two : constant Enum := Two;

end Types2;

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

$ gcc -c types2.ads
types2.ads:10:04: full constant declaration appears too late
types2.ads:11:04: full constant declaration appears too late

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

gcc/ada/

* sem_eval.adb (Compile_Time_Known_Value): Add a guard which prevents
the compiler from entering infinite recursion when trying to determine
whether a deferred constant has a compile time known value, and the
initialization expression of the constant is a reference to the
constant itself.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262698 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Ada] Adjust growth factor from 1/32 to 1/2 for Unbounded_String
pmderodat [Mon, 16 Jul 2018 14:08:27 +0000 (14:08 +0000)] 
[Ada] Adjust growth factor from 1/32 to 1/2 for Unbounded_String

This will reduce significantly the number of allocations done when
doing consecutive append operations.

2018-07-16  Nicolas Roche  <roche@adacore.com>

gcc/ada/

* libgnat/a-strunb.adb, libgnat/a-strunb__shared.adb: Adjust growth
factor from 1/32 to 1/2 for Unbounded_String.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262697 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2018-07-16 Richard Biener <rguenther@suse.de>
rguenth [Mon, 16 Jul 2018 13:57:32 +0000 (13:57 +0000)] 
2018-07-16  Richard Biener  <rguenther@suse.de>

PR lto/86523
* dwarf2out.c (dwarf2out_register_external_die): Assign DIE parents
for function-local FUNCTION_DECL and RESULT_DECL immediately.

* g++.dg/lto/pr86523-1_0.C: New testcase.
* g++.dg/lto/pr86523-2_0.C: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262696 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoRevert one more symbol_summary::get to ::get_create (PR ipa/86529).
marxin [Mon, 16 Jul 2018 13:33:23 +0000 (13:33 +0000)] 
Revert one more symbol_summary::get to ::get_create (PR ipa/86529).

2018-07-16  Martin Liska  <mliska@suse.cz>

        PR ipa/86529
* ipa-pure-const.c (malloc_candidate_p): Revert ::get
        to ::get_create.
2018-07-16  Martin Liska  <mliska@suse.cz>

        PR ipa/86529
* g++.dg/ipa/pr86529.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262695 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[ARC] Update ARCHS scheduling rules.
claziss [Mon, 16 Jul 2018 10:12:47 +0000 (10:12 +0000)] 
[ARC] Update ARCHS scheduling rules.

2017-07-16  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arcHS.md: Update ARCHS scheduling rules.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262689 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[ARC] Add support for HS4x cpus.
claziss [Mon, 16 Jul 2018 10:12:32 +0000 (10:12 +0000)] 
[ARC] Add support for HS4x cpus.

gcc/
2017-03-10  Claudiu Zissulescu  <claziss@synopsys.com>

        * config/arc/arc-arch.h (arc_tune_attr): Add new tune parameters
        for ARCHS4x.
        * config/arc/arc-cpus.def (hs4x): New cpu.
        (hs4xd): Likewise.
        * config/arc/arc-tables.opt: Regenerate.
        * config/arc/arc.c (arc_sched_issue_rate): New function.
        (TARGET_SCHED_ISSUE_RATE): Define.
        (TARGET_SCHED_EXPOSED_PIPELINE): Likewise.
        * config/arc/arc.md (attr type): Add fpu_fuse, fpu_sdiv, fpu_ddiv,
        fpu_cvt.
        (attr tune): Add ARCHS4x tune values.
        (attr tune_dspmpy): Define.
        (*tst): Correct instruction type.
        * config/arc/arcHS.md: Don't use this automaton for ARCHS4x cpus.
        * config/arc/arcHS4x.md: New file.
        * config/arc/fpu.md: Update instruction type attributes.
        * config/arc/t-multilib: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262688 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[debug] Fix pre_dec handling in vartrack
vries [Mon, 16 Jul 2018 09:18:51 +0000 (09:18 +0000)] 
[debug] Fix pre_dec handling in vartrack

When compiling test-case gcc.target/i386/vartrack-1.c with -O1 -g, register bx
is pushed in the prologue and popped in the epilogue:
...
(insn/f 26 3 27 2
  (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [0  S8 A8])
       (reg:DI 3 bx))
   "vartrack-1.c":10 61 {*pushdi2_rex64}
   (expr_list:REG_DEAD (reg:DI 3 bx) (nil)))
  ...
(insn/f 29 28 30 2
  (set (reg:DI 3 bx)
       (mem:DI (post_inc:DI (reg/f:DI 7 sp)) [0  S8 A8]))
   "vartrack-1.c":15 71 {*popdi1}
   (expr_list:REG_CFA_ADJUST_CFA
     (set (reg/f:DI 7 sp)
          (plus:DI (reg/f:DI 7 sp)
                   (const_int 8 [0x8]))) (nil)))
...

However, when we adjust those insns in vartrack to eliminate the pre_dec and
post_inc, the frame location for the push is at argp - 24, while the one for the
pop is at argp - 16:
...
(insn/f 26 3 27 2
  (parallel [
    (set (mem:DI (plus:DI (reg/f:DI 16 argp)
                          (const_int -24 [0xffffffffffffffe8])) [0  S8 A8])
         (reg:DI 3 bx))
    (set (reg/f:DI 7 sp)
         (plus:DI (reg/f:DI 16 argp)
                  (const_int -24 [0xffffffffffffffe8])))
  ])
  "vartrack-1.c":10 61 {*pushdi2_rex64}
  (expr_list:REG_DEAD (reg:DI 3 bx) (nil)))
  ...
(insn/f 29 28 30 2
  (parallel [
    (set (reg:DI 3 bx)
         (mem:DI (plus:DI (reg/f:DI 16 argp)
                          (const_int -16 [0xfffffffffffffff0])) [0  S8 A8]))
    (set (reg/f:DI 7 sp)
         (plus:DI (reg/f:DI 16 argp)
                  (const_int -8 [0xfffffffffffffff8])))
  ])
  "vartrack-1.c":15 71 {*popdi1}
  (expr_list:REG_CFA_ADJUST_CFA
    (set (reg/f:DI 7 sp)
         (plus:DI (reg/f:DI 7 sp)
                  (const_int 8 [0x8]))) (nil)))
...

This patch fixes that by moving the stack_adjust modification after
adjust_insn in vt_initialize.

Bootstrapped and reg-tested on x86_64.

2018-07-16  Tom de Vries  <tdevries@suse.de>

PR debug/86455
* var-tracking.c (vt_initialize): Fix pre_dec handling.

* gcc.target/i386/vartrack-1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262687 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[Patch AArch64] Add early clobber for aarch64_store_exclusive.
ramana [Mon, 16 Jul 2018 09:03:48 +0000 (09:03 +0000)] 
[Patch AArch64] Add early clobber for aarch64_store_exclusive.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262686 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago PR tree-optimization/86514
ebotcazou [Mon, 16 Jul 2018 08:59:09 +0000 (08:59 +0000)] 
PR tree-optimization/86514
* tree-ssa-reassoc.c (init_range_entry) <CASE_CONVERT>: Return for a
conversion to a boolean type from a type with greater precision.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262684 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoAdjust email addresses.
krebbel [Mon, 16 Jul 2018 08:13:12 +0000 (08:13 +0000)] 
Adjust email addresses.

2018-07-16  Andreas Krebbel  <krebbel@linux.ibm.com>

* MAINTAINERS: Adjust email address for me and my colleague Robin
Dapp.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262683 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoS/390: libstdc++: 64 and 32 bit baseline update
krebbel [Mon, 16 Jul 2018 07:58:01 +0000 (07:58 +0000)] 
S/390: libstdc++: 64 and 32 bit baseline update

libstdc++-v3/ChangeLog:

2018-07-16  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/abi/post/s390-linux-gnu/baseline_symbols.txt: Update.
* config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt: Update.
* config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262681 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[vartrack] Print adjusted insn slim if TDF_SLIM
vries [Mon, 16 Jul 2018 07:46:45 +0000 (07:46 +0000)] 
[vartrack] Print adjusted insn slim if TDF_SLIM

2018-07-16  Tom de Vries  <tdevries@suse.de>

* var-tracking.c (vt_initialize): Print adjusted insn slim if
dump_flags request TDF_SLIM.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262680 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago PR c++/3698
jakub [Mon, 16 Jul 2018 07:43:43 +0000 (07:43 +0000)] 
PR c++/3698
PR c++/86208
* cp-gimplify.c (cp_genericize_r): When using extern_decl_map, or
in TREE_USED flag from stmt to h->to.

* g++.dg/opt/pr3698.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262678 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2018-07-16 Richard Biener <rguenther@suse.de>
rguenth [Mon, 16 Jul 2018 07:29:31 +0000 (07:29 +0000)] 
2018-07-16  Richard Biener  <rguenther@suse.de>

PR ipa/86389
* gcc.dg/torture/pr86389.c: Require trampolines.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262677 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * fold-const.c (int_const_binop_1): Abstract...
aldyh [Mon, 16 Jul 2018 06:49:39 +0000 (06:49 +0000)] 
    * fold-const.c (int_const_binop_1): Abstract...
        (wide_int_binop): ...wide int code here.
(poly_int_binop): ...poly int code here.
(tree_binop): ...tree code here.
        * fold-const.h (wide_int_binop): New.
        * tree-vrp.c (vrp_int_const_binop): Call wide_int_binop.
Remove useless PLUS/MINUS_EXPR case.
        (zero_nonzero_bits_from_vr): Move wide int code...
        (zero_nonzero_bits_from_bounds): ...here.
        (extract_range_from_binary_expr_1): Move mask optimization code...
        (range_easy_mask_min_max): ...here.
        * tree-vrp.h (zero_nonzero_bits_from_bounds): New.
        (range_easy_mask_min_max): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262676 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDaily bump.
gccadmin [Mon, 16 Jul 2018 00:16:34 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262675 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago PR target/85993
law [Sun, 15 Jul 2018 20:28:15 +0000 (20:28 +0000)] 
PR target/85993
* config/sh/sh.c (output_mi_thunk): Remove dead conditional
block.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262671 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[testsuite/guality] Run guality tests with Og
vries [Sun, 15 Jul 2018 16:26:08 +0000 (16:26 +0000)] 
[testsuite/guality] Run guality tests with Og

We advertise Og as the optimization level of choice for the standard
edit-compile-debug cycle, but do not run the guality tests for Og with the
default torture options.

This patch ensures that we test -Og in the guality tests.

F.i., for gcc.dg/guality there are 45 fails for Og (while there are none for
O1), in these test-cases:
...
gcc.dg/guality/pr54200.c
gcc.dg/guality/pr54970.c
gcc.dg/guality/pr56154-1.c
gcc.dg/guality/pr59776.c
gcc.dg/guality/sra-1.c
...

2018-07-15  Tom de Vries  <tdevries@suse.de>

* lib/gcc-gdb-test.exp (guality_minimal_options): New proc.
* lib/gfortran-dg.exp (gfortran-dg-runtest): Don't call torture-init if
already called.
* g++.dg/guality/guality.exp: Ensure Og is part of torture options.
* gcc.dg/guality/guality.exp: Same.
* gfortran.dg/guality/guality.exp: Same.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262668 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoRevert "[testsuite/guality] Run guality tests with Og"
vries [Sun, 15 Jul 2018 08:46:30 +0000 (08:46 +0000)] 
Revert "[testsuite/guality] Run guality tests with Og"

This reverts commit 6b84828445f7875d1dddbd90a8d86b10c4e8e776.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262667 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[testsuite/guality] Run guality tests with Og
vries [Sun, 15 Jul 2018 07:57:58 +0000 (07:57 +0000)] 
[testsuite/guality] Run guality tests with Og

We advertise Og as the optimization level of choice for the standard
edit-compile-debug cycle, but do not run the guality tests for Og with the
default torture options.

This patch ensures that we test -Og in the guality tests.

F.i., for gcc.dg/guality there are 45 fails for Og (while there are none for
O1), in these test-cases:
...
gcc.dg/guality/pr54200.c
gcc.dg/guality/pr54970.c
gcc.dg/guality/pr56154-1.c
gcc.dg/guality/pr59776.c
gcc.dg/guality/sra-1.c
...

2018-07-15  Tom de Vries  <tdevries@suse.de>

* lib/gcc-gdb-test.exp (guality_minimal_options): New proc.
* g++.dg/guality/guality.exp: Ensure Og is part of torture options.
* gcc.dg/guality/guality.exp: Same.
* gfortran.dg/guality/guality.exp: Same.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262666 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDaily bump.
gccadmin [Sun, 15 Jul 2018 00:16:27 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262665 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoRISC-V: Fix nested function trampolines.
wilson [Sat, 14 Jul 2018 20:05:39 +0000 (20:05 +0000)] 
RISC-V: Fix nested function trampolines.

gcc/
* config/riscv/linux.h (TARGET_ASM_FILE_END): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262660 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * config/pdp11/pdp11.c (pdp11_rtx_costs): Bugfixes.
pkoning [Sat, 14 Jul 2018 19:15:47 +0000 (19:15 +0000)] 
    * config/pdp11/pdp11.c (pdp11_rtx_costs): Bugfixes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262659 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDaily bump.
gccadmin [Sat, 14 Jul 2018 00:16:28 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262658 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago runtime: skip zero-sized fields in structs when converting to FFI
ian [Fri, 13 Jul 2018 20:39:02 +0000 (20:39 +0000)] 
runtime: skip zero-sized fields in structs when converting to FFI

    The libffi library doesn't understand zero-sized objects.
    When we see a zero-sized field in a struct, just skip it when
    converting to the FFI data structures. There is no value to pass in
    any case, so not telling libffi about the field doesn't affect
    anything.

    The test case for this is https://golang.org/cl/123316.

    Fixes golang/go#26335

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262651 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agox86: Tune Skylake, Cannonlake and Icelake as Haswell
hjl [Fri, 13 Jul 2018 20:25:57 +0000 (20:25 +0000)] 
x86: Tune Skylake, Cannonlake and Icelake as Haswell

r259399, which added PROCESSOR_SKYLAKE, disabled many x86 optimizations
which are enabled by PROCESSOR_HASWELL.  As the result, -mtune=skylake
generates slower codes on Skylake than before.  The same also applies
to Cannonlake and Icelak tuning.

This patch changes -mtune={skylake|cannonlake|icelake} to tune like
-mtune=haswell for until their tuning is properly adjusted. It also
enables -mprefer-vector-width=256 for -mtune=haswell, which has no
impact on codegen when AVX512 isn't enabled.

Performance impacts on SPEC CPU 2017 rate with 1 copy using

-march=native -mfpmath=sse -O2 -m64

are

1. On Broadwell server:

500.perlbench_r -0.56%
502.gcc_r -0.18%
505.mcf_r 0.24%
520.omnetpp_r 0.00%
523.xalancbmk_r -0.32%
525.x264_r -0.17%
531.deepsjeng_r 0.00%
541.leela_r 0.00%
548.exchange2_r 0.12%
557.xz_r 0.00%
Geomean 0.00%

503.bwaves_r 0.00%
507.cactuBSSN_r 0.21%
508.namd_r 0.00%
510.parest_r 0.19%
511.povray_r -0.48%
519.lbm_r 0.00%
521.wrf_r 0.28%
526.blender_r 0.19%
527.cam4_r 0.39%
538.imagick_r 0.00%
544.nab_r -0.36%
549.fotonik3d_r 0.51%
554.roms_r 0.00%
Geomean 0.17%

On Skylake client:

500.perlbench_r 0.96%
502.gcc_r 0.13%
505.mcf_r -1.03%
520.omnetpp_r -1.11%
523.xalancbmk_r 1.02%
525.x264_r 0.50%
531.deepsjeng_r 2.97%
541.leela_r 0.50%
548.exchange2_r -0.95%
557.xz_r 2.41%
Geomean 0.56%

503.bwaves_r 0.49%
507.cactuBSSN_r 3.17%
508.namd_r 4.05%
510.parest_r 0.15%
511.povray_r 0.80%
519.lbm_r 3.15%
521.wrf_r 10.56%
526.blender_r 2.97%
527.cam4_r 2.36%
538.imagick_r 46.40%
544.nab_r 2.04%
549.fotonik3d_r 0.00%
554.roms_r 1.27%
Geomean 5.49%

On Skylake server:

500.perlbench_r 0.71%
502.gcc_r -0.51%
505.mcf_r -1.06%
520.omnetpp_r -0.33%
523.xalancbmk_r -0.22%
525.x264_r 1.72%
531.deepsjeng_r -0.26%
541.leela_r 0.57%
548.exchange2_r -0.75%
557.xz_r -1.28%
Geomean -0.21%

503.bwaves_r 0.00%
507.cactuBSSN_r 2.66%
508.namd_r 3.67%
510.parest_r 1.25%
511.povray_r 2.26%
519.lbm_r 1.69%
521.wrf_r 11.03%
526.blender_r 3.39%
527.cam4_r 1.69%
538.imagick_r 64.59%
544.nab_r -0.54%
549.fotonik3d_r 2.68%
554.roms_r 0.00%
Geomean 6.19%

This patch improves -march=native performance on Skylake up to 60% and
leaves -march=native performance unchanged on Haswell.

gcc/

2018-07-13  H.J. Lu  <hongjiu.lu@intel.com>
    Sunil K Pandey  <sunil.k.pandey@intel.com>

PR target/84413
* config/i386/i386.c (m_CORE_AVX512): New.
(m_CORE_AVX2): Likewise.
(m_CORE_ALL): Add m_CORE_AVX2.
* config/i386/x86-tune.def: Replace m_HASWELL with m_CORE_AVX2.
Replace m_SKYLAKE_AVX512 with m_CORE_AVX512 on avx256_optimal
and remove the rest of m_SKYLAKE_AVX512.

gcc/testsuite/

2018-07-13  H.J. Lu  <hongjiu.lu@intel.com>
    Sunil K Pandey  <sunil.k.pandey@intel.com>

PR target/84413
* gcc.target/i386/pr84413-1.c: New test.
* gcc.target/i386/pr84413-2.c: Likewise.
* gcc.target/i386/pr84413-3.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262649 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * lto.c (do_stream_out): Add PART parameter; open dump file.
hubicka [Fri, 13 Jul 2018 19:09:13 +0000 (19:09 +0000)] 
* lto.c (do_stream_out): Add PART parameter; open dump file.
(stream_out): Add PART parameter; pass it to do_stream_out.
(lto_wpa_write_files): Update call of stream_out.

* lto-streamer-out.c (copy_function_or_variable): Dump info about
copying section.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262645 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[gcc]
wschmidt [Fri, 13 Jul 2018 18:43:00 +0000 (18:43 +0000)] 
[gcc]

2018-07-13  Bill Schmidt  <wschmidt@linux.ibm.com>
    Steve Munroe  <munroesj52@gmail.com>

* config/rs6000/emmintrin.h (_mm_and_si128): New function.
(_mm_andnot_si128): Likewise.
(_mm_or_si128): Likewise.
(_mm_xor_si128): Likewise.

[gcc/testsuite]

2018-07-13  Bill Schmidt  <wschmidt@linux.ibm.com>
    Steve Munroe  <munroesj52@gmail.com>

* gcc.target/powerpc/sse2-pand-1.c: New file.
* gcc.target/powerpc/sse2-pandn-1.c: Likewise.
* gcc.target/powerpc/sse2-por-1.c: Likewise.
* gcc.target/powerpc/sse2-pxor-1.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262642 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago compiler: fix parsing of composite literals with omitted pointer types
ian [Fri, 13 Jul 2018 18:25:27 +0000 (18:25 +0000)] 
compiler: fix parsing of composite literals with omitted pointer types

    The frontend could parse omitted pointer typess at the end of the
    type, but not in the middle, so code like []*[][]int{{{1}}} failed.

    Test case is in https://golang.org/cl/123477.

    Fixes golang/go#26340

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262641 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[PR c++/86374] Name lookup failure in enclosing template
nathan [Fri, 13 Jul 2018 15:33:27 +0000 (15:33 +0000)] 
[PR c++/86374] Name lookup failure in enclosing template

https://gcc.gnu.org/ml/gcc-patches/2018-07/msg00701.html
PR c++/86374
* pt.c (lookup_template_class_1): Use tsubst_aggr_type for
contexts that are classes.
* parser.c (cp_parser_template_id): Combine entering_scope decl &
initializer.

PR c++/86374
* g++.dg/pr86374.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262637 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago3nd Patch for PR78009
qinzhao [Fri, 13 Jul 2018 14:10:45 +0000 (14:10 +0000)] 
3nd Patch for PR78009

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78809
Inline strcmp with small constant strings

The design doc for PR78809 is at:
https://www.mail-archive.com/gcc@gcc.gnu.org/msg83822.html

this patch is for the third part of change of PR78809.

C. for strcmp (s1, s2), strncmp (s1, s2, n), and memcmp (s1, s2, n)
   if the result is NOT used to do simple equality test against zero, one of
"s1" or "s2" is a small constant string, n is a constant, and the Min value of
the length of the constant string and "n" is smaller than a predefined
threshold T,
   inline the call by a byte-to-byte comparision sequence to avoid calling
overhead.

adding test case strcmpopt_5.c into gcc.dg for part C of PR78809.
adding test case strcmpopt_6.c into gcc.dg to test the following case:
   When the specified length exceeds one of the arguments of the call to memcmp,
   the call to memcmp should NOT be inlined.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262636 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoarm - Add vendor and CPU id information to arm-cpus.in
rearnsha [Fri, 13 Jul 2018 11:48:43 +0000 (11:48 +0000)] 
arm - Add vendor and CPU id information to arm-cpus.in

This patch moves the vendor and CPU id data from driver-arm.c to the
main table of CPU data in arm-cpus.in.  It then adds rules to
parsecpu.awk to build data tables that can be used by the driver for
automatic CPU detection when running natively.  This is the last major
bit of CPU-specific data that can be usefully moved to the CPU data
tables (I don't think it is sensible to move the per-cpu tuning data
from its current location).

The syntax and parser can support revision ranges, but at present
nothing is done with that data: no supported cpu currently needs that
capability.

* config/arm/driver-arm.c: Include arm-native.h.
(host_detect_local_cpu): Use auto-generated data tables.
(vendors, arm_cpu_table): Delete.  Move part information to ...
* config/arm/arm-cpus.in: ... here.
* config/arm/parsecpu.awk (gen_native): New function.
(vendor, part): New CPU fields.
(END): Add support for building the native CPU detection tables.
* config/arm/t-arm (arm-native.h): Add build rule.
(driver-arm.o): Add dependency on arm-native.h.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262633 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2018-07-13 Richard Biener <rguenther@suse.de>
rguenth [Fri, 13 Jul 2018 11:25:38 +0000 (11:25 +0000)] 
2018-07-13  Richard Biener  <rguenther@suse.de>

PR middle-end/85974
* match.pd (addr1 - addr2): Allow either of the operand to
have a conversion.

* gcc.c-torture/compile/930326-1.c: Adjust to cover widening.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262632 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[testsuite, guality] Add -fno-ipa-icf in gcc.dg/guality
vries [Fri, 13 Jul 2018 11:21:04 +0000 (11:21 +0000)] 
[testsuite, guality] Add -fno-ipa-icf in gcc.dg/guality

Optimization fipa-icf breaks debug info (as is noted in PR63572 - "ICF
breaks user debugging experience"), which make guality tests clztest.c,
ctztest.c and sra-1.c unsupported for option combination "-O2 -flto
-fuse-linker-plugin -fno-fat-lto-objects".  F.i., in clztest.c foo and bar are
merged, and gdb can set a breakpoint on a line in foo, but trying to set a
breakpoint on a line in bar results in a breakpoint in main instead.

This patch works around the problem by adding -fno-ipa-icf (as is already done
in csttest.c and pr43077-1.c) to those testcases:
...
-UNSUPPORTED: gcc.dg/guality/clztest.c ... line . g == f
+PASS:        gcc.dg/guality/clztest.c ... line . g == f
-UNSUPPORTED: gcc.dg/guality/ctztest.c ... line . g == f
+PASS:        gcc.dg/guality/ctztest.c ... line . g == f
-UNSUPPORTED: gcc.dg/guality/sra-1.c ... line .+1 a[0] == 4
+PASS:        gcc.dg/guality/sra-1.c ... line .+1 a[0] == 4
-UNSUPPORTED: gcc.dg/guality/sra-1.c ... line . a[1] == 14
+PASS:        gcc.dg/guality/sra-1.c ... line . a[1] == 14
...

Tested on x86_64.

2018-07-13  Tom de Vries  <tdevries@suse.de>

* gcc.dg/guality/clztest.c: Add -fno-ipa-icf in dg-options.
* gcc.dg/guality/ctztest.c: Same.
* gcc.dg/guality/sra-1.c: Same.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262631 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDFix typo
ebotcazou [Fri, 13 Jul 2018 10:27:11 +0000 (10:27 +0000)] 
DFix typo

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262630 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * gcc-interface/lang.opt (funsigned-char): New option.
ebotcazou [Fri, 13 Jul 2018 10:15:52 +0000 (10:15 +0000)] 
* gcc-interface/lang.opt (funsigned-char): New option.
* gcc-interface/misc.c (gnat_handle_option): Accept it.
* gcc-interface/utils.c (finish_character_type): Tweak comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262629 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[debug] Reuse debug exprs generated in remap_ssa_name
vries [Fri, 13 Jul 2018 10:08:37 +0000 (10:08 +0000)] 
[debug] Reuse debug exprs generated in remap_ssa_name

When compiling gcc.dg/vla-1.c with -O3 -g, vla a and b in f1 are optimized
away, and f1 is cloned to a version f1.constprop with no parameters, eliminating
parameter i.  Debug info is generated to describe the sizes of a and b, but
that process generates debug expressions that are not reused.

Fix the duplication by saving and reusing the generated debug expressions in
remap_ssa_name.  Concretely: reuse D#7 here instead of generating D#8:
...
 __attribute__((noinline))
 f1.constprop ()
 {
   intD.6 iD.1935;

   <bb 3>
   # DEBUG D#10 s=> iD.1897
   # DEBUG iD.1935 => D#10

   <bb 2>
-  # DEBUG D#8 s=> iD.1935
   # DEBUG D#7 s=> iD.1935
   saved_stack.2_1 = __builtin_stack_save ();
   # DEBUG BEGIN_STMT
   # DEBUG D#6 => D#7 + 1
   # DEBUG D#5 => (long intD.8) D#6
   # DEBUG D#4 => D#5 + -1
   # DEBUG D.1937 => (sizetype) D#4
   # DEBUG a.0D.1942 => NULL
   # DEBUG BEGIN_STMT
-  # DEBUG D#3 => D#8 + 2
+  # DEBUG D#3 => D#7 + 2
   # DEBUG D#2 => (long intD.8) D#3
   # DEBUG D#1 => D#2 + -1
   # DEBUG D.1944 => (sizetype) D#1
   # DEBUG b.1D.1949 => NULL
...

Bootstrapped and reg-tested on x86_64.

2018-07-13  Tom de Vries  <tdevries@suse.de>

* tree-inline.c (remap_ssa_name): Save and reuse debug exprs generated
in remap_ssa_name.

* gcc.dg/vla-1.c: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262628 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[contrib] Add contrib/maintainers-verify.sh
vries [Fri, 13 Jul 2018 09:33:40 +0000 (09:33 +0000)] 
[contrib] Add contrib/maintainers-verify.sh

2018-07-13  Tom de Vries  <tdevries@suse.de>

* maintainers-verify.sh: New file.

* gcc.src/maintainers.exp: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262627 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): Use
jcw [Fri, 13 Jul 2018 08:38:18 +0000 (08:38 +0000)] 
* config/aarch64/aarch64.c (aarch64_operands_adjust_ok_for_ldpstp): Use
arrays instead of numbered variables.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262626 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * config/sparc/sparc-protos.h (sparc_compute_frame_size): Delete.
ebotcazou [Fri, 13 Jul 2018 08:12:39 +0000 (08:12 +0000)] 
* config/sparc/sparc-protos.h (sparc_compute_frame_size): Delete.
* config/sparc/sparc.c (sparc_compute_frame_size): Make static

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262625 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2018-07-13 Richard Biener <rguenther@suse.de>
rguenth [Fri, 13 Jul 2018 06:42:31 +0000 (06:42 +0000)] 
2018-07-13  Richard Biener  <rguenther@suse.de>

PR debug/86452
* dwarf2out.c (gen_type_die_with_usage): Use scope_die_for
instead of get_context_die.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262624 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agogcc/ChangeLog:
kugan [Fri, 13 Jul 2018 05:25:47 +0000 (05:25 +0000)] 
gcc/ChangeLog:

2018-07-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
    Richard Biener  <rguenther@suse.de>

PR middle-end/86489
* tree-ssa-loop-niter.c (number_of_iterations_popcount): Check
that the loop latch destination where phi is defined.

gcc/testsuite/ChangeLog:

2018-07-13  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/86489
* gcc.dg/pr86489.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262622 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDaily bump.
gccadmin [Fri, 13 Jul 2018 00:16:30 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262620 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoPR testsuite/86510 - test case g++.dg/warn/pr86453.C fails starting with r262596
msebor [Thu, 12 Jul 2018 22:42:00 +0000 (22:42 +0000)] 
PR testsuite/86510 - test case g++.dg/warn/pr86453.C fails starting with r262596

gcc/testsuite/ChangeLog:
g++.dg/warn/pr86453.C: Adjust.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262609 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoRISC-V: Silence expected Ada testsuite warning.
wilson [Thu, 12 Jul 2018 20:32:01 +0000 (20:32 +0000)] 
RISC-V: Silence expected Ada testsuite warning.

gcc/testsuite/
* gnat.dg/warn5.adb: Expect warning for riscv*-*-*.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262608 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoRISC-V: Error if function declared with different interrupt modes.
wilson [Thu, 12 Jul 2018 19:59:09 +0000 (19:59 +0000)] 
RISC-V: Error if function declared with different interrupt modes.

gcc/
2018-07-06  Kito Cheng  <kito.cheng@gmail.com>
        * config/riscv/riscv.c (enum riscv_privilege_levels): Add UNKNOWN_MODE.
        (riscv_expand_epilogue): Add assertion to check interrupt mode.
        (riscv_set_current_function): Extract getting interrupt type to new
        function.
        (riscv_get_interrupt_type): New function.
        (riscv_merge_decl_attributes): New function, checking interrupt type is
        same.
        (TARGET_MERGE_DECL_ATTRIBUTES): Define.

gcc/testsuite/
2018-07-06  Kito Cheng  <kito.cheng@gmail.com>
        * gcc.target/riscv/interrupt-conflict-mode.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262607 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * c-attribs.c (c_common_attribute_table): Add
jakub [Thu, 12 Jul 2018 19:36:01 +0000 (19:36 +0000)] 
* c-attribs.c (c_common_attribute_table): Add
"omp declare target implicit" attribute.

* c-decl.c (c_decl_attributes): Don't diagnose vars without mappable
type here, instead add "omp declare target implicit" attribute.
(finish_decl): Diagnose vars without mappable type here.

* decl2.c (cplus_decl_attributes): Don't diagnose vars without mappable
type here, instead add "omp declare target implicit" attribute.  Add
that attribute instead of "omp declare target" also when
processing_template_decl.
* decl.c (cp_finish_decl): Diagnose vars without mappable type here,
and before calling cp_omp_mappable_type call complete_type.

* c-c++-common/gomp/declare-target-3.c: New test.
* g++.dg/gomp/declare-target-2.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262605 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * config/pdp11/pdp11.c (pdp11_output_def): Fix typo in .set
pkoning [Thu, 12 Jul 2018 19:26:22 +0000 (19:26 +0000)] 
* config/pdp11/pdp11.c (pdp11_output_def): Fix typo in .set
directive.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262604 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * doc/rtl.texi (REG_NONNEG): Remove decrement and branch until
pkoning [Thu, 12 Jul 2018 19:02:57 +0000 (19:02 +0000)] 
* doc/rtl.texi (REG_NONNEG): Remove decrement and branch until
zero reference, add doloop_end instead.
* doc/md.texi (decrement_and_branch_until_zero): Remove.
(Looping patterns): Remove decrement_and_branch_until_zero.  Add
detail for doloop_end.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262603 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[contrib] compare_tests: Print number of tests
clyon [Thu, 12 Jul 2018 18:18:41 +0000 (18:18 +0000)] 
[contrib] compare_tests: Print number of tests

2018-07-12  Christophe Lyon  <christophe.lyon@linaro.org>

* compare_tests: Print number of tests in each category.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262600 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoPR c/86453 - error: type variant differs by TYPE_PACKED in free_lang_data since r255469
msebor [Thu, 12 Jul 2018 16:21:06 +0000 (16:21 +0000)] 
PR c/86453 - error: type variant differs by TYPE_PACKED in free_lang_data since r255469

gcc/ChangeLog:

PR c/86453
* attribs.c (decl_attributes): Reject conflicting attributes before
calling attribute handlers.

gcc/testsuite/ChangeLog:

PR c/86453
* c-c++-common/Wattributes.c: Adjust.
* gcc.dg/Wattributes-10.c: New test.
* g++.dg/Wattributes-3.C: Adjust.
* gcc.dg/Wattributes-6.c: Adjust.
* gcc.dg/pr18079.c: Adjust.
* gcc.dg/torture/pr42363.c: Adjust.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262596 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoavx512vl-vpclmulqdq-2.c: Remove 128bit version
hjl [Thu, 12 Jul 2018 14:51:10 +0000 (14:51 +0000)] 
avx512vl-vpclmulqdq-2.c: Remove 128bit version

Remove 128bit version from gcc.target/i386/avx512vl-vpclmulqdq-2.c for:

commit 336f029101465aad8f497c753a3d5a77ff78ec88
Author: kyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Mon Jun 11 11:10:38 2018 +0000

    Remove redundant intrinsics

    gcc/
            * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128)
            _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove.
            * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove.
    gcc/testsuite/
            * gcc.target/i386/avx512fvl-vaes-1.c: Remove 128bit versions from test.
            * gcc.target/i386/vpclmulqdq.c: Ditto.

 * gcc.target/i386/avx512vl-vpclmulqdq-2.c: Remove 128bit
 version.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262595 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART
hubicka [Thu, 12 Jul 2018 13:14:52 +0000 (13:14 +0000)] 
* dumpfile.c (gcc::dump_manager::get_dump_file_name): Add PART
 parameter.
(gcc::dump_manager::get_dump_file_name): likewise.
(dump_begin): Likewise.
* dumpfile.h (dump_begin): Update prototype.
(gcc::dump_manager::get_dump_file_name,
gcc::dump_manager::get_dump_file_name): Update prototype.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262591 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoImplement SLP of internal functions
rsandifo [Thu, 12 Jul 2018 13:02:17 +0000 (13:02 +0000)] 
Implement SLP of internal functions

SLP of calls was previously restricted to built-in functions.
This patch extends it to internal functions.

2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* internal-fn.h (vectorizable_internal_fn_p): New function.
* tree-vect-slp.c (compatible_calls_p): Likewise.
(vect_build_slp_tree_1): Remove nops argument.  Handle calls
to internal functions.
(vect_build_slp_tree_2): Update call to vect_build_slp_tree_1.

gcc/testsuite/
* gcc.dg/vect/vect-cond-arith-6.c: New test.
* gcc.target/aarch64/sve/cond_arith_4.c: Likewise.
* gcc.target/aarch64/sve/cond_arith_4_run.c: Likewise.
* gcc.target/aarch64/sve/cond_arith_5.c: Likewise.
* gcc.target/aarch64/sve/cond_arith_5_run.c: Likewise.
* gcc.target/aarch64/sve/slp_14.c: Likewise.
* gcc.target/aarch64/sve/slp_14_run.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262590 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoUse conditional internal functions in if-conversion
rsandifo [Thu, 12 Jul 2018 13:02:00 +0000 (13:02 +0000)] 
Use conditional internal functions in if-conversion

This patch uses IFN_COND_* to vectorise conditionally-executed,
potentially-trapping arithmetic, such as most floating-point
ops with -ftrapping-math.  E.g.:

    if (cond) { ... x = a + b; ... }

becomes:

    ...
    x = .COND_ADD (cond, a, b, else_value);
    ...

When this transformation is done on its own, the value of x for
!cond isn't important, so else_value is simply the target's
preferred_else_value (i.e. the value it can handle the most
efficiently).

However, the patch also looks for the equivalent of:

    y = cond ? x : c;

in which the "then" value is the result of the conditionally-executed
operation and the "else" value "c" is some value that is available at x.
In that case we can instead use:

    x = .COND_ADD (cond, a, b, c);

and replace uses of y with uses of x.

The patch also looks for:

    y = !cond ? c : x;

which can be transformed in the same way.  This involved adding a new
utility function inverse_conditions_p, which was already open-coded
in a more limited way in match.pd.

2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* fold-const.h (inverse_conditions_p): Declare.
* fold-const.c (inverse_conditions_p): New function.
* match.pd: Use inverse_conditions_p.  Add folds of view_converts
that test the inverse condition of a conditional internal function.
* internal-fn.h (vectorized_internal_fn_supported_p): Declare.
* internal-fn.c (internal_fn_mask_index): Handle conditional
internal functions.
(vectorized_internal_fn_supported_p): New function.
* tree-if-conv.c: Include internal-fn.h and fold-const.h.
(any_pred_load_store): Replace with...
(need_to_predicate): ...this new variable.
(redundant_ssa_names): New variable.
(ifcvt_can_use_mask_load_store): Move initial checks to...
(ifcvt_can_predicate): ...this new function.  Handle tree codes
for which a conditional internal function exists.
(if_convertible_gimple_assign_stmt_p): Use ifcvt_can_predicate
instead of ifcvt_can_use_mask_load_store.  Update after variable
name change.
(predicate_load_or_store): New function, split out from
predicate_mem_writes.
(check_redundant_cond_expr): New function.
(value_available_p): Likewise.
(predicate_rhs_code): Likewise.
(predicate_mem_writes): Rename to...
(predicate_statements): ...this.  Use predicate_load_or_store
and predicate_rhs_code.
(combine_blocks, tree_if_conversion): Update after above name changes.
(ifcvt_local_dce): Handle redundant_ssa_names.
* tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Handle
general conditional functions.
* tree-vect-stmts.c (vectorizable_call): Likewise.

gcc/testsuite/
* gcc.dg/vect/vect-cond-arith-4.c: New test.
* gcc.dg/vect/vect-cond-arith-5.c: Likewise.
* gcc.target/aarch64/sve/cond_arith_1.c: Likewise.
* gcc.target/aarch64/sve/cond_arith_1_run.c: Likewise.
* gcc.target/aarch64/sve/cond_arith_2.c: Likewise.
* gcc.target/aarch64/sve/cond_arith_2_run.c: Likewise.
* gcc.target/aarch64/sve/cond_arith_3.c: Likewise.
* gcc.target/aarch64/sve/cond_arith_3_run.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262589 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoSupport fused multiply-adds in fully-masked reductions
rsandifo [Thu, 12 Jul 2018 13:01:48 +0000 (13:01 +0000)] 
Support fused multiply-adds in fully-masked reductions

This patch adds support for fusing a conditional add or subtract
with a multiplication, so that we can use fused multiply-add and
multiply-subtract operations for fully-masked reductions.  E.g.
for SVE we vectorise:

  double res = 0.0;
  for (int i = 0; i < n; ++i)
    res += x[i] * y[i];

using a fully-masked loop in which the loop body has the form:

  res_1 = PHI<0(preheader), res_2(latch)>;
  avec = .MASK_LOAD (loop_mask, a)
  bvec = .MASK_LOAD (loop_mask, b)
  prod = avec * bvec;
  res_2 = .COND_ADD (loop_mask, res_1, prod, res_1);

where the last statement does the equivalent of:

  res_2 = loop_mask ? res_1 + prod : res_1;

(operating elementwise).  The point of the patch is to convert the last
two statements into:

  res_s = .COND_FMA (loop_mask, avec, bvec, res_1, res_1);

which is equivalent to:

  res_2 = loop_mask ? fma (avec, bvec, res_1) : res_1;

(again operating elementwise).

2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* internal-fn.h (can_interpret_as_conditional_op_p): Declare.
* internal-fn.c (can_interpret_as_conditional_op_p): New function.
* tree-ssa-math-opts.c (convert_mult_to_fma_1): Handle conditional
plus and minus and convert them into IFN_COND_FMA-based sequences.
(convert_mult_to_fma): Handle conditional plus and minus.

gcc/testsuite/
* gcc.dg/vect/vect-fma-2.c: New test.
* gcc.target/aarch64/sve/reduc_4.c: Likewise.
* gcc.target/aarch64/sve/reduc_6.c: Likewise.
* gcc.target/aarch64/sve/reduc_7.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262588 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoAdd IFN_COND_FMA functions
rsandifo [Thu, 12 Jul 2018 13:01:33 +0000 (13:01 +0000)] 
Add IFN_COND_FMA functions

This patch adds conditional equivalents of the IFN_FMA built-in functions.
Most of it is just a mechanical extension of the binary stuff.

2018-07-12  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* doc/md.texi (cond_fma, cond_fms, cond_fnma, cond_fnms): Document.
* optabs.def (cond_fma_optab, cond_fms_optab, cond_fnma_optab)
(cond_fnms_optab): New optabs.
* internal-fn.def (COND_FMA, COND_FMS, COND_FNMA, COND_FNMS): New
internal functions.
(FMA): Use DEF_INTERNAL_FLT_FN rather than DEF_INTERNAL_FLT_FLOATN_FN.
* internal-fn.h (get_conditional_internal_fn): Declare.
(get_unconditional_internal_fn): Likewise.
* internal-fn.c (cond_ternary_direct): New macro.
(expand_cond_ternary_optab_fn): Likewise.
(direct_cond_ternary_optab_supported_p): Likewise.
(FOR_EACH_COND_FN_PAIR): Likewise.
(get_conditional_internal_fn): New function.
(get_unconditional_internal_fn): Likewise.
* gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 5.
(gimple_match_op::gimple_match_op): Add a new overload for 5
operands.
(gimple_match_op::set_op): Likewise.
(gimple_resimplify5): Declare.
* genmatch.c (decision_tree::gen): Generate simplifications for
5 operands.
* gimple-match-head.c (gimple_simplify): Define an overload for
5 operands.  Handle calls with 5 arguments in the top-level overload.
(convert_conditional_op): Handle conversions from unconditional
internal functions to conditional ones.
(gimple_resimplify5): New function.
(build_call_internal): Pass a fifth operand.
(maybe_push_res_to_seq): Likewise.
(try_conditional_simplification): Try converting conditional
internal functions to unconditional internal functions.
Handle 3-operand unconditional forms.
* match.pd (UNCOND_TERNARY, COND_TERNARY): Operator lists.
Define ternary equivalents of the current rules for binary conditional
internal functions.
* config/aarch64/aarch64.c (aarch64_preferred_else_value): Handle
ternary operations.
* config/aarch64/iterators.md (UNSPEC_COND_FMLA, UNSPEC_COND_FMLS)
(UNSPEC_COND_FNMLA, UNSPEC_COND_FNMLS): New unspecs.
(optab): Handle them.
(SVE_COND_FP_TERNARY): New int iterator.
(sve_fmla_op, sve_fmad_op): New int attributes.
* config/aarch64/aarch64-sve.md (cond_<optab><mode>)
(*cond_<optab><mode>_2, *cond_<optab><mode_4)
(*cond_<optab><mode>_any): New SVE_COND_FP_TERNARY patterns.

gcc/testsuite/
* gcc.dg/vect/vect-cond-arith-3.c: New test.
* gcc.target/aarch64/sve/vcond_13.c: Likewise.
* gcc.target/aarch64/sve/vcond_13_run.c: Likewise.
* gcc.target/aarch64/sve/vcond_14.c: Likewise.
* gcc.target/aarch64/sve/vcond_14_run.c: Likewise.
* gcc.target/aarch64/sve/vcond_15.c: Likewise.
* gcc.target/aarch64/sve/vcond_15_run.c: Likewise.
* gcc.target/aarch64/sve/vcond_16.c: Likewise.
* gcc.target/aarch64/sve/vcond_16_run.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262587 138bc75d-0d04-0410-961f-82ee72b054a4