platform/upstream/gcc.git
5 years agore PR tree-optimization/88739 (Big-endian union bug)
Jakub Jelinek [Fri, 8 Feb 2019 19:01:37 +0000 (20:01 +0100)]
re PR tree-optimization/88739 (Big-endian union bug)

PR tree-optimization/88739
* gcc.c-torture/execute/pr88739.c: New test.

From-SVN: r268706

5 years agore PR middle-end/88560 (armv8_2-fp16-move-1.c and related regressions after r266385)
Vladimir Makarov [Fri, 8 Feb 2019 19:01:10 +0000 (19:01 +0000)]
re PR middle-end/88560 (armv8_2-fp16-move-1.c and related regressions after r266385)

2019-02-08  Vladimir Makarov  <vmakarov@redhat.com>

PR middle-end/88560
* lra-constraints.c (process_alt_operands): Don't increase reject
for memory when offset memory is required.

From-SVN: r268705

5 years agore PR testsuite/89258 (verify_gimple failed in gimple test pr80887 for 16-bit target)
Jozef Lawrynowicz [Fri, 8 Feb 2019 16:47:28 +0000 (16:47 +0000)]
re PR testsuite/89258 (verify_gimple failed in gimple test pr80887 for 16-bit target)

2019-02-08  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

PR testsuite/89258
* gcc.dg/tree-ssa/pr80887.c: Require int32plus.

From-SVN: r268704

5 years agoS/390: Implement vector copysign.
Robin Dapp [Fri, 8 Feb 2019 14:25:48 +0000 (14:25 +0000)]
S/390: Implement vector copysign.

This patch implements the vector copysign operation using vector select and a
signbit mask.

gcc/ChangeLog:

2019-02-08  Robin Dapp  <rdapp@linux.ibm.com>

* config/s390/vector.md: Implement vector copysign.

gcc/testsuite/ChangeLog:

2019-02-08  Robin Dapp  <rdapp@linux.ibm.com>

* gcc.target/s390/vector/vec-copysign-execute.c: New test.
* gcc.target/s390/vector/vec-copysign.c: New test.

From-SVN: r268697

5 years agoexpr.c: Correct indentations in expand_constructor
H.J. Lu [Fri, 8 Feb 2019 14:19:09 +0000 (14:19 +0000)]
expr.c: Correct indentations in expand_constructor

* expr.c (expand_constructor): Correct indentations.

From-SVN: r268696

5 years agore PR tree-optimization/89247 (ICE in expand_LOOP_VECTORIZED, at internal-fn.c:2409)
Richard Biener [Fri, 8 Feb 2019 13:21:36 +0000 (13:21 +0000)]
re PR tree-optimization/89247 (ICE in expand_LOOP_VECTORIZED, at internal-fn.c:2409)

2019-02-08  Richard Biener  <rguenther@suse.de>

PR tree-optimization/89247
* tree-if-conv.c: Include tree-cfgcleanup.h.
(version_loop_for_if_conversion): Record LOOP_VECTORIZED call.
(tree_if_conversion): Pass through predicate vector.
(pass_if_conversion::execute): Do CFG cleanup and SSA update
inline, see if any if-converted loops we refrece in
LOOP_VECTORIZED calls vanished and fixup.
* tree-if-conv.h (tree_if_conversion): Adjust prototype.

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

From-SVN: r268689

5 years agoS/390: Introduce jdd constraint
Ilya Leoshkevich [Fri, 8 Feb 2019 12:39:27 +0000 (12:39 +0000)]
S/390: Introduce jdd constraint

Implementation of section anchors in S/390 back-end added in r266741
broke jump labels in S/390 Linux kernel [1].  Currently jump labels
pass global variable addresses to .quad directive in inline assembly
using "X" constraint.  In the past this used to produce regular symbol
references, however, after r266741 we sometimes get values like
(plus (reg) (const_int)), where (reg) points to a section anchor.
Strictly speaking, this is still correct, since "X" accepts anything.
Thus, now we need another way to support jump labels.

The existing "i" constraint cannot be used, since with -fPIC it must
not accept non-local symbols, however, jump labels do require that,
e.g. __tracepoint_xdp_exception from kernel proper might be referenced
from kernel modules.

The existing "ZL" constraint cannot be used for the same reason.

The existing "b" constraint cannot be used because of the way
expand_asm_stmt works.  It deduces whether the constraint allows
regs, subregs or mems, and processes asm operands differently based on
that.  "b" is supposed to accept values like (mem (symbol_ref)), and
there appears to be no way to explain to expand_asm_stmt that for "b"
mem's address must not be in a register.

This patch introduces the new machine-specific constraint named "jdd" -
"j" prefix is already used for constants, and "d" stands for "data".
It accepts anything that fits into the data section, whether or not
this might require a relocation, that is, anything that passes
CONSTANT_P check.

[1] https://lkml.org/lkml/2019/1/23/346

gcc/ChangeLog:

2019-02-08  Ilya Leoshkevich  <iii@linux.ibm.com>

* config/s390/constraints.md (jdd): New constraint.

gcc/testsuite/ChangeLog:

2019-02-08  Ilya Leoshkevich  <iii@linux.ibm.com>

* gcc.target/s390/jump-label.c: New test.

From-SVN: r268688

5 years agore PR testsuite/89250 (gcc.dg/vect/vect-24.c XPASSes)
Richard Biener [Fri, 8 Feb 2019 11:56:28 +0000 (11:56 +0000)]
re PR testsuite/89250 (gcc.dg/vect/vect-24.c XPASSes)

2019-02-08  Richard Biener  <rguenther@suse.de>

PR testsuite/89250
* gcc.dg/vect/vect-24.c: Remove XFAIL on vect_condition targets.

From-SVN: r268680

5 years agotrans.c (gnat_to_gnu): Minor tweak.
Eric Botcazou [Fri, 8 Feb 2019 11:37:40 +0000 (11:37 +0000)]
trans.c (gnat_to_gnu): Minor tweak.

* gcc-interface/trans.c (gnat_to_gnu) <N_Aggregate>: Minor tweak.
* gcc-interface/utils.c (convert): Do not pad when doing an unchecked
conversion here.  Use TREE_CONSTANT throughout the function.
(unchecked_convert): Also pad if the source is a CONSTRUCTOR and the
destination is a more aligned array type or a larger aggregate type,
but not between original and packable versions of a type.

From-SVN: r268679

5 years agoi386: Use OI/TImode in *mov[ot]i_internal_avx with AVX512VL
H.J. Lu [Fri, 8 Feb 2019 11:30:53 +0000 (11:30 +0000)]
i386: Use OI/TImode in *mov[ot]i_internal_avx with AVX512VL

OImode and TImode moves must be done in XImode to access upper 16
vector registers without AVX512VL.  With AVX512VL, we can access
upper 16 vector registers in OImode and TImode.

PR target/89229
* config/i386/i386.md (*movoi_internal_avx): Set mode to XI for
upper 16 vector registers without TARGET_AVX512VL.
(*movti_internal): Likewise.

From-SVN: r268678

5 years agoutils.c (max_size): Be prepared for an operand with VOID_TYPE.
Eric Botcazou [Fri, 8 Feb 2019 11:20:23 +0000 (11:20 +0000)]
utils.c (max_size): Be prepared for an operand with VOID_TYPE.

* gcc-interface/utils.c (max_size) <tcc_unary>: Be prepared for an
operand with VOID_TYPE.

From-SVN: r268675

5 years agotrans.c (elaborate_all_entities): Do not elaborate the entities of a package renaming...
Eric Botcazou [Fri, 8 Feb 2019 11:19:51 +0000 (11:19 +0000)]
trans.c (elaborate_all_entities): Do not elaborate the entities of a package renaming another one.

* gcc-interface/trans.c (elaborate_all_entities): Do not elaborate the
entities of a package renaming another one.

From-SVN: r268674

5 years agotrans.c (Regular_Loop_to_gnu): Replace tests on individual flag_unswitch_loops and...
Eric Botcazou [Fri, 8 Feb 2019 11:07:08 +0000 (11:07 +0000)]
trans.c (Regular_Loop_to_gnu): Replace tests on individual flag_unswitch_loops and flag_tree_loop_vectorize...

* gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on
individual flag_unswitch_loops and flag_tree_loop_vectorize switches
with test on global optimize switch.
(Raise_Error_to_gnu): Likewise.

From-SVN: r268671

5 years agore PR rtl-optimization/89234 (ICE in get_eh_region_and_lp_from_rtx at gcc/except...
Jakub Jelinek [Fri, 8 Feb 2019 10:26:33 +0000 (11:26 +0100)]
re PR rtl-optimization/89234 (ICE in get_eh_region_and_lp_from_rtx at gcc/except.c:1824)

PR rtl-optimization/89234
* except.c (copy_reg_eh_region_note_forward): Return if note_or_insn
is a NOTE, CODE_LABEL etc. - rtx_insn * other than INSN_P.
(copy_reg_eh_region_note_backward): Likewise.

* g++.dg/ubsan/pr89234.C: New test.

From-SVN: r268669

5 years ago[libbacktrace] Declare external backtrace fns noinline
Tom de Vries [Fri, 8 Feb 2019 09:49:06 +0000 (09:49 +0000)]
[libbacktrace] Declare external backtrace fns noinline

The backtrace functions backtrace_full, backtrace_print and backtrace_simple
walk the call stack, but make sure to skip the first entry, in order to skip
over the functions themselves, and start the backtrace at the caller of the
functions.

When compiling with -flto, the functions may be inlined, causing them to skip
over the caller instead.

Fix this by declaring the functions with __attribute__((noinline)).

2019-02-08  Tom de Vries  <tdevries@suse.de>

* backtrace.c (backtrace_full): Declare with __attribute__((noinline)).
* print.c (backtrace_print): Same.
* simple.c (backtrace_simple): Same.

From-SVN: r268668

5 years agore PR tree-optimization/89223 (internal compiler error: in int_cst_value, at tree...
Richard Biener [Fri, 8 Feb 2019 08:18:09 +0000 (08:18 +0000)]
re PR tree-optimization/89223 (internal compiler error: in int_cst_value, at tree.c:11226)

2019-02-08  Richard Biener  <rguenther@suse.de>

PR middle-end/89223
* tree-data-ref.c (initialize_matrix_A): Fail if constant
doesn't fit in HWI.
(analyze_subscript_affine_affine): Handle failure from
initialize_matrix_A.

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

From-SVN: r268666

5 years agocfganal.c (pre_and_rev_post_order_compute_fn): Use fn instead of cfun everywhere.
Jakub Jelinek [Fri, 8 Feb 2019 07:14:57 +0000 (08:14 +0100)]
cfganal.c (pre_and_rev_post_order_compute_fn): Use fn instead of cfun everywhere.

* cfganal.c (pre_and_rev_post_order_compute_fn): Use fn instead of
cfun everywhere.

From-SVN: r268664

5 years ago[libbacktrace] Handle DW_FORM_ref_addr
Tom de Vries [Fri, 8 Feb 2019 05:55:44 +0000 (05:55 +0000)]
[libbacktrace] Handle DW_FORM_ref_addr

Add handling of the DW_FORM_ref_addr encoding to libbacktrace.

2019-02-08  Tom de Vries  <tdevries@suse.de>

PR libbacktrace/78063
* dwarf.c (build_address_map): Keep all parsed units.
(read_referenced_name_from_attr): Handle DW_FORM_ref_addr.

From-SVN: r268663

5 years agoDaily bump.
GCC Administrator [Fri, 8 Feb 2019 00:16:26 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r268662

5 years agoFix more ICEs in -fsave-optimization-record (PR tree-optimization/89235)
David Malcolm [Thu, 7 Feb 2019 23:00:18 +0000 (23:00 +0000)]
Fix more ICEs in -fsave-optimization-record (PR tree-optimization/89235)

PR tree-optimization/89235 reports an ICE inside -fsave-optimization-record
whilst reporting the inlining chain of of the location_t in the
vect_location global.

This is very similar to PR tree-optimization/86637, fixed in r266821.

The issue is that the inlining chains are read from the location_t's
ad-hoc data, referencing GC-managed tree blocks, but the former are
not GC roots; it's simply assumed that old locations referencing dead
blocks never get used again.

The fix is to reset the "vect_location" global in more places.  Given
that is a somewhat subtle detail, the patch adds a sentinel class to
reset vect_location at the end of a scope.  Doing it as a class
simplifies the task of ensuring that the global is reset on every
exit path from a function, and also gives a good place to signpost
the above subtlety (in the documentation for the class).

The patch also adds test cases for both of the PRs mentioned above.

gcc/testsuite/ChangeLog:
PR tree-optimization/86637
PR tree-optimization/89235
* gcc.c-torture/compile/pr86637-1.c: New test.
* gcc.c-torture/compile/pr86637-2.c: New test.
* gcc.c-torture/compile/pr86637-3.c: New test.
* gcc.c-torture/compile/pr89235.c: New test.

gcc/ChangeLog:
PR tree-optimization/86637
PR tree-optimization/89235
* tree-vect-loop.c (optimize_mask_stores): Add an
auto_purge_vect_location sentinel to ensure that vect_location is
purged on exit.
* tree-vectorizer.c
(auto_purge_vect_location::~auto_purge_vect_location): New dtor.
(try_vectorize_loop_1): Add an auto_purge_vect_location sentinel
to ensure that vect_location is purged on exit.
(pass_slp_vectorize::execute): Likewise, replacing the manual
reset.
* tree-vectorizer.h (class auto_purge_vect_location): New class.

From-SVN: r268659

5 years ago[AArch64] Change representation of SABD in RTL
Kyrylo Tkachov [Thu, 7 Feb 2019 18:18:16 +0000 (18:18 +0000)]
[AArch64] Change representation of SABD in RTL

Richard raised a concern about the RTL we use to represent the AdvSIMD SABD
(vector signed absolute difference) instruction.
We currently represent it as ABS (MINUS op1 op2).

This isn't exactly what SABD does. ABS treats its input as a signed value
and returns the absolute of that.

For example:
(sabd:QI 64 -128) == 192 (unsigned) aka -64 (signed)
whereas
(minus:QI 64 -128) == 192 (unsigned) aka -64 (signed), (abs ...) of that is 64.

A better way to describe the instruction is with MINUS (SMAX (op1 op2) SMIN (op1 op2)).
This patch implements that, and also implements similar semantics for the UABD instruction
that uses UMAX and UMIN.

That way for the example above we'll have:
(minus:QI (smax:QI (64 -128)) (smin:QI (64 -128))) == (minus:QI 64 -128) == 192 (or -64 signed) which matches
what SABD does.

* config/aarch64/iterators.md (max_opp): New code_attr.
(USMAX): New code iterator.
* config/aarch64/predicates.md (aarch64_smin): New predicate.
(aarch64_smax): Likewise.
* config/aarch64/aarch64-simd.md (abd<mode>_3): Rename to...
(*aarch64_<su>abd<mode>_3): ... Change RTL representation to
MINUS (MAX MIN).

* gcc.target/aarch64/abd_1.c: New test.
* gcc.dg/sabd_1.c: Likewise.

From-SVN: r268658

5 years agoi386: Fix typo in *movoi_internal_avx/movti_internal
H.J. Lu [Thu, 7 Feb 2019 17:58:19 +0000 (17:58 +0000)]
i386: Fix typo in *movoi_internal_avx/movti_internal

PR target/89229
* config/i386/i386.md (*movoi_internal_avx): Set mode to OI
for TARGET_AVX512VL.
(*movti_internal): Set mode to TI for TARGET_AVX512VL.

From-SVN: r268657

5 years agore PR fortran/52789 (gfortran sets -Wunused-parameter in the C sense as well as the...
Dominique d'Humieres [Thu, 7 Feb 2019 17:40:29 +0000 (18:40 +0100)]
re PR fortran/52789 (gfortran sets -Wunused-parameter in the C sense as well as the Fortran sense)

2019-02-07  Dominique d'Humieres  <dominiq@gcc.gnu.org>

PR fortran/52789
* gfortran.dg/wunused-parameter_2.f90: New test.

From-SVN: r268656

5 years agoOnly run on arm architecture
Matthew Malcomson [Thu, 7 Feb 2019 16:54:54 +0000 (16:54 +0000)]
Only run on arm architecture

My previous patch failed to only run an arm test on arm architecture.
This adds that condition to the test.

gcc/testsuite/ChangeLog:

2019-02-07  Matthew Malcomson  <matthew.malcomson@arm.com>

* gcc.dg/rtl/arm/ldrd-peepholes.c: Only run on arm

From-SVN: r268655

5 years ago* libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value.
Eric Botcazou [Thu, 7 Feb 2019 16:28:40 +0000 (16:28 +0000)]
* libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value.

From-SVN: r268652

5 years agoS/390: Fix the vec_xl / vec_xst style builtins
Andreas Krebbel [Thu, 7 Feb 2019 15:53:38 +0000 (15:53 +0000)]
S/390: Fix the vec_xl / vec_xst style builtins

This patch fixes several problems with the vec_xl/vec_xst builtins:

- vec_xl/vec_xst needs to use the alignment of the scalar memory
  operand for the vector type reference. This is required to emit the
  proper vl/vst alignment hints.
- vec_xl / vec_xld2 / vec_xlw4 should accept const pointer source operands
- vec_xlw4 / vec_xstw4 needs to accept float memory operands

gcc/ChangeLog:

2019-02-07  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtin-types.def: Add new types.
* config/s390/s390-builtins.def: (s390_vec_xl, s390_vec_xld2)
(s390_vec_xlw4): Make the memory operand into a const pointer.
(s390_vec_xld2, s390_vec_xlw4): Add a variant for single precision
float.
* config/s390/s390-c.c (s390_expand_overloaded_builtin): Generate
a new vector type with the alignment of the scalar memory operand.

gcc/testsuite/ChangeLog:

2019-02-07  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/zvector/xl-xst-align-1.c: New test.
* gcc.target/s390/zvector/xl-xst-align-2.c: New test.

From-SVN: r268651

5 years ago[Patch] [arm] Fix 88714, Arm LDRD/STRD peepholes.
Matthew Malcomson [Thu, 7 Feb 2019 14:54:15 +0000 (14:54 +0000)]
[Patch] [arm] Fix 88714, Arm LDRD/STRD peepholes.

These peepholes match a pair of SImode loads or stores that can be
implemented with a single LDRD or STRD instruction.
When compiling for TARGET_ARM, these peepholes originally created a set
pattern in DI mode to be caught by movdi patterns.

This approach failed to take into account the possibility that the two
matched insns operated on memory with different aliasing information.
The peepholes lost the aliasing information on one of the insns, which
could then cause the scheduler to make an invalid transformation.

This patch changes the peepholes so they generate a PARALLEL expression
of the two relevant loads or stores, which means the aliasing
information of both is kept.  Such a PARALLEL pattern is what the
peepholes currently produce for TARGET_THUMB2.

In order to match these new insn patterns, we add two new define_insn's.  These
define_insn's use the same checks as the peepholes to find valid insns.

Note that the patterns now created by the peepholes for LDRD and STRD
are very similar to those created by the peepholes for LDM and STM.
Many patterns could be matched by the LDM and STM define_insns, which
means we rely on the order the define_insn patterns are defined in the
machine description, with those for LDRD/STRD defined before those for
LDM/STM.

The difference between the peepholes for LDRD/STRD and those for LDM/STM
are mainly that those for LDRD/STRD have some logic to ensure that the
two registers are consecutive and the first one is even.

Bootstrapped and regtested on arm-none-linux-gnu.
Demonstrated fix of bug 88714 by bootstrapping on armv7l.

gcc/ChangeLog:

2019-02-07  Matthew Malcomson  <matthew.malcomson@arm.com>
    Jakub Jelinek  <jakub@redhat.com>

PR bootstrap/88714
* config/arm/arm-protos.h (valid_operands_ldrd_strd,
arm_count_ldrdstrd_insns): New declarations.
* config/arm/arm.c (mem_ok_for_ldrd_strd): Remove broken handling of
MINUS.
(valid_operands_ldrd_strd): New function.
(arm_count_ldrdstrd_insns): New function.
* config/arm/ldrdstrd.md: Change peepholes to generate PARALLEL SImode
sets instead of single DImode set and define new insns to match this.

gcc/testsuite/ChangeLog:

2019-02-07  Matthew Malcomson  <matthew.malcomson@arm.com>
    Jakub Jelinek  <jakub@redhat.com>

PR bootstrap/88714
* gcc.c-torture/execute/pr88714.c: New test.
* gcc.dg/rtl/arm/ldrd-peepholes.c: New test.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r268644

5 years agoAArch64: Fix initializer for array so it's a C initializer instead of C++.
Tamar Christina [Thu, 7 Feb 2019 11:05:22 +0000 (11:05 +0000)]
AArch64: Fix initializer for array so it's a C initializer instead of C++.

This fixes a missing = that would cause the array initializer to be a C++
initializer instead of a C one, causing a warning when building with pre-C++11
standards compiler.

Committed under the GCC obvious rules.

gcc/ChangeLog:

* config/aarch64/aarch64-builtins.c (aarch64_fcmla_lane_builtin_data):
Make it a C initializer.

From-SVN: r268614

5 years agoArm: Fix NEON REG to REG reload failures. (PR/target 88850)
Tamar Christina [Thu, 7 Feb 2019 10:05:57 +0000 (10:05 +0000)]
Arm: Fix NEON REG to REG reload failures. (PR/target 88850)

We currently return cost 2 for NEON REG to REG moves, which would be incorrect
for 64 bit moves.  We currently don't have a pattern for this in the neon_move
alternatives because this is a bit of a special case.  We would almost never
want it to use this r -> r pattern unless it really has no choice.

As such we add a new neon r -> r move pattern but also hide it from being used
to determine register preferences and also disparage it during LRA.

gcc/ChangeLog:

PR/target 88850
* config/arm/neon.md (*neon_mov<mode>): Add r -> r case.

gcc/testsuite/ChangeLog:

PR/target 88850
* gcc.target/arm/pr88850.c: New test.

From-SVN: r268612

5 years ago[arm] Use neon_dot_q type for 128-bit V[US]DOT instructions where appropriate
Kyrylo Tkachov [Thu, 7 Feb 2019 09:32:46 +0000 (09:32 +0000)]
[arm] Use neon_dot_q type for 128-bit V[US]DOT instructions where appropriate

For the Dot Product instructions we have the scheduling types neon_dot and neon_dot_q for the 128-bit versions.
It seems that we're only using the former though, not assigning the neon_dot_q type anywhere.

This patch fixes that by adding the <q> mode attribute suffix to the type, similar to how we do it for other
types in neon.md.

* config/arm/neon.md (neon_<sup>dot<vsi2qi>):
Use neon_dot<q> for type.
(neon_<sup>dot_lane<vsi2qi>): Likewise.

From-SVN: r268611

5 years ago[AArch64] Use neon_dot_q type for 128-bit [US]DOT instructions where appropriate
Kyrylo Tkachov [Thu, 7 Feb 2019 09:31:33 +0000 (09:31 +0000)]
[AArch64] Use neon_dot_q type for 128-bit [US]DOT instructions where appropriate

For the Dot Product instructions we have the scheduling types neon_dot and neon_dot_q for the 128-bit versions.
It seems that we're only using the former though, not assigning the neon_dot_q type anywhere.

This patch fixes that by adding the <q> mode attribute suffix to the type, similar to how we do it for other
types in aarch64-simd.md.

* config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>):
Use neon_dot<q> for type.
(aarch64_<sur>dot_lane<vsi2qi>): Likewise.
(aarch64_<sur>dot_laneq<vsi2qi>): Likewise.

From-SVN: r268610

5 years ago[PR86218] handle ck_aggr in compare_ics in both and either conversion
Alexandre Oliva [Thu, 7 Feb 2019 07:50:42 +0000 (07:50 +0000)]
[PR86218] handle ck_aggr in compare_ics in both and either conversion

Because of rank compares, and checks for ck_list, we know that if we
see user_conv_p or ck_list in ics1, we'll also see it in ics2.  This
reasoning does not extend to ck_aggr, however, so we might have
ck_aggr conversions starting both ics1 and ics2, which we handle
correctly, or either, which we likely handle by crashing on whatever
path we take depending on whether ck_aggr is in ics1 or ics2.

We crash because, as we search the conversion sequences, we may very
well fail to find what we are looking for, and reach the end of the
sequence, which is unexpected in all paths.

This patch arranges for us to take the same path when ck_aggr is in
ics2 only that we would if it was in ics1 (regardless of ics2), and it
deals with not finding the kind of conversion we look for there.

I've changed the type of the literal constant in the testcase, so as
to hopefully make it well-formed.  We'd fail to reject the narrowing
conversion in the original testcase, but that's a separate bug.

for  gcc/cp/ChangeLog

PR c++/86218
* call.c (compare_ics): Deal with ck_aggr in either cs.

for  gcc/testsuite/ChangeLog

PR c++/86218
* g++.dg/cpp0x/pr86218.C: New.

From-SVN: r268606

5 years agoos, syscall: Hurd fixes for a couple of tests
Ian Lance Taylor [Thu, 7 Feb 2019 05:02:26 +0000 (05:02 +0000)]
os, syscall: Hurd fixes for a couple of tests

    Based on patch by Svante Signell.

    Reviewed-on: https://go-review.googlesource.com/c/161520

From-SVN: r268605

5 years agoos, net, crypto/x509: add hurd support
Ian Lance Taylor [Thu, 7 Feb 2019 04:45:01 +0000 (04:45 +0000)]
os, net, crypto/x509: add hurd support

    Patch by Svante Signell.

    Reviewed-on: https://go-review.googlesource.com/c/161519

From-SVN: r268604

5 years agosyscall: add Hurd support
Ian Lance Taylor [Thu, 7 Feb 2019 03:11:47 +0000 (03:11 +0000)]
syscall: add Hurd support

    Loosely based on a patch by Svante Signell.

    Reviewed-on: https://go-review.googlesource.com/c/161518

From-SVN: r268603

5 years agointernal/syscall/unix: add constants for hurd
Ian Lance Taylor [Thu, 7 Feb 2019 02:22:57 +0000 (02:22 +0000)]
internal/syscall/unix: add constants for hurd

    Patch by Svante Signell.

    Reviewed-on: https://go-review.googlesource.com/c/161517

From-SVN: r268602

5 years agoDaily bump.
GCC Administrator [Thu, 7 Feb 2019 00:16:25 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r268601

5 years agore PR rtl-optimization/89225 (LRA hang on ppc64le compiling glibc starting with r268404)
Vladimir Makarov [Wed, 6 Feb 2019 21:48:45 +0000 (21:48 +0000)]
re PR rtl-optimization/89225 (LRA hang on ppc64le compiling glibc starting with r268404)

2019-02-06  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/89225
* lra-constaints.c (simplify_operand_subreg): Add subreg mode
sizes check.

2019-02-06  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/89225
* gcc.target/powerpc/pr89225.c: New.

From-SVN: r268597

5 years agoi386.c (ix86_expand_prologue): Emit a memory blockage after restoring registers saved...
Eric Botcazou [Wed, 6 Feb 2019 21:03:03 +0000 (21:03 +0000)]
i386.c (ix86_expand_prologue): Emit a memory blockage after restoring registers saved to allocate the frame on...

* config/i386/i386.c (ix86_expand_prologue): Emit a memory blockage
after restoring registers saved to allocate the frame on Windows.

From-SVN: r268593

5 years ago* eo.po: Update.
Joseph Myers [Wed, 6 Feb 2019 21:02:28 +0000 (21:02 +0000)]
* eo.po: Update.

From-SVN: r268592

5 years agore PR go/89199 (libgo regression in implementation of CompareAndSwap functions result...
Ian Lance Taylor [Wed, 6 Feb 2019 20:46:00 +0000 (20:46 +0000)]
re PR go/89199 (libgo regression in implementation of CompareAndSwap functions resulting in intermittent testcase failures on ppc64le power9 after r268458)

PR go/89199
    sync/atomic: use strong form of atomic_compare_exchange_n

    In the recent change to use atomic_compare_exchange_n I thought we
    could use the weak form, which can spuriously fail. But that is not
    how it is implemented in the gc library, and it is not what the rest
    of the library expects.

    Thanks to Lynn Boger for identifying the problem.

    Fixes https://gcc.gnu.org/PR89199

    Reviewed-on: https://go-review.googlesource.com/c/161359

From-SVN: r268591

5 years agore PR fortran/71860 ([OOP] ICE on pointing to null(mold), verify_gimple failed)
Thomas Koenig [Wed, 6 Feb 2019 20:34:42 +0000 (20:34 +0000)]
re PR fortran/71860 ([OOP] ICE on pointing to null(mold), verify_gimple failed)

2019-02-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/71860
* gfortran.dg/null_10.f90: New test.

From-SVN: r268590

5 years agoFix locations in conversion_null_warnings (PR c++/71302)
David Malcolm [Wed, 6 Feb 2019 19:44:52 +0000 (19:44 +0000)]
Fix locations in conversion_null_warnings (PR c++/71302)

PR c++/71302 reports that g++ shows poor locations for
-Wzero-as-null-pointer-constant for pointers in function calls,
using the close parenthesis of the call, rather than showing the
pertinent argument.

This particular case was fixed in GCC 8, but regressed on trunk
in r260973.

This patch fixes the regression, and adds column numbers to the
test cases (where they're correct) to avoid regressing them in the
future.  There are still various places where the locations aren't
correct, but fixing them isn't stage 4 material.

gcc/cp/ChangeLog:
PR c++/71302
* call.c (get_location_for_expr_unwinding_for_system_header): New
function.
(conversion_null_warnings): Use it when getting locations for
EXPR, effectively adding a call to
get_location_for_expr_unwinding_for_system_header for
-Wconversion-null and making use of EXPR_LOCATION for
-Wzero-as-null-pointer-constant.

gcc/testsuite/ChangeLog:
PR c++/71302
* g++.dg/cpp0x/Wzero-as-null-pointer-constant-1.C: Add expected
column numbers to dg-warning directives where they are correct.
* g++.dg/warn/Wzero-as-null-pointer-constant-5.C: Likewise.
* g++.dg/warn/Wzero-as-null-pointer-constant-7.C: Likewise.
* g++.dg/warn/Wzero-as-null-pointer-constant-8.C: New test.

From-SVN: r268589

5 years agoFix gcc.dg/debug/dwarf2/inline5.c with Solaris as (PR debug/87451)
Rainer Orth [Wed, 6 Feb 2019 18:54:16 +0000 (18:54 +0000)]
Fix gcc.dg/debug/dwarf2/inline5.c with Solaris as (PR debug/87451)

PR debug/87451
* gcc.dg/debug/dwarf2/inline5.c: Allow for non-comment before
"(DIE (0x[0-9a-f]*) DW_TAG_variable".
xfail scan-assembler-not with Solaris as.

From-SVN: r268588

5 years ago* ru.po: Update.
Joseph Myers [Wed, 6 Feb 2019 17:41:59 +0000 (17:41 +0000)]
* ru.po: Update.

From-SVN: r268587

5 years agoPR libstdc++/89102 fix common_type<> and common_type<T> specializations
Jonathan Wakely [Wed, 6 Feb 2019 17:25:26 +0000 (17:25 +0000)]
PR libstdc++/89102 fix common_type<> and common_type<T> specializations

This is a partial implementation of the revised std::common_type rules
from P0435R1.

PR libstdc++/89102 (partial)
* include/std/type_traits (common_type<>): Define.
(common_type<T>): Derive from common_type<T, T>.
* testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
Test zero-length template argument list.
* testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
Test additional single argument cases.
* testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
Adjust expected error.

From-SVN: r268586

5 years agovsx-vector-6.p7.c: Update instruction counts and target.
Bill Seurer [Wed, 6 Feb 2019 16:29:56 +0000 (16:29 +0000)]
vsx-vector-6.p7.c: Update instruction counts and target.

2019-02-06  Bill Seurer  <seurer@linux.vnet.ibm.com>

* gcc.target/powerpc/vsx-vector-6.p7.c: Update instruction
counts and target.
* gcc.target/powerpc/vsx-vector-6.p8.c: Update instruction
counts and target.
* gcc.target/powerpc/vsx-vector-6.p9.c: Update instruction
counts and target.

From-SVN: r268585

5 years agoREADME: update text to describe current status
Ian Lance Taylor [Wed, 6 Feb 2019 16:28:31 +0000 (16:28 +0000)]
README: update text to describe current status

    Reviewed-on: https://go-review.googlesource.com/c/161338

From-SVN: r268584

5 years agos-linux__x32.ads: Resync list of signals with s-linux.ads
Arnaud Charlet [Wed, 6 Feb 2019 11:50:15 +0000 (11:50 +0000)]
s-linux__x32.ads: Resync list of signals with s-linux.ads

* libgnarl/s-linux__x32.ads: Resync list of signals with s-linux.ads

From-SVN: r268576

5 years agore PR tree-optimization/89182 ([graphite] ICE in extract_affine, at graphite-sese...
Richard Biener [Wed, 6 Feb 2019 11:18:33 +0000 (11:18 +0000)]
re PR tree-optimization/89182 ([graphite] ICE in extract_affine, at graphite-sese-to-poly.c:280)

2019-02-06  Richard Biener  <rguenther@suse.de>

PR tree-optimization/89182
* graphite.h (cached_scalar_evolution_in_region): Declare.
* graphite.c (struct seir_cache_key): New.
(struct sese_scev_hash): Likewise.
(seir_cache): New global.
(cached_scalar_evolution_in_region): New function.
(graphite_transform_loops): Allocate and release seir_cache.
* graphite-isl-ast-to-gimple.c (get_rename_from_scev): Use
cached_scalar_evolution_in_region.
* graphite-scop-detection.c (scop_detection::can_represent_loop):
Simplify.
(scop_detection::graphite_can_represent_expr: Use
cached_scalar_evolution_in_region.
(scop_detection::stmt_simple_for_scop_p): Likewise.
(find_params_in_bb): Likewise.
(gather_bbs::before_dom_children): Likewise.
* graphite-sese-to-poly.c (create_pw_aff_from_tree): Likewise.
(add_loop_constraints): Likewise.

* gfortran.dg/graphite/pr89182.f90: New testcase.

From-SVN: r268575

5 years agore PR c/89211 (ICE in int_mode_for_mode, at stor-layout.c:403)
Jakub Jelinek [Wed, 6 Feb 2019 09:17:55 +0000 (10:17 +0100)]
re PR c/89211 (ICE in int_mode_for_mode, at stor-layout.c:403)

PR c/89211
* c-parser.c (c_parser_declaration_or_fndef): Don't update
DECL_ARGUMENTS of d if it has been defined already.  Use a single if
instead of 3 nested ifs.

* gcc.dg/pr89211.c: New test.

From-SVN: r268574

5 years agore PR middle-end/89210 (ICE tree check: expected integer_cst, have real_cst in to_wid...
Jakub Jelinek [Wed, 6 Feb 2019 09:16:19 +0000 (10:16 +0100)]
re PR middle-end/89210 (ICE tree check: expected integer_cst, have real_cst in to_wide, at tree.h:5600)

PR middle-end/89210
* fold-const-call.c (fold_const_vec_convert): Pass true as last
operand to new_unary_operation only if both element types are integral
and it isn't a widening conversion.  Return NULL_TREE if
new_unary_operation failed.

* c-c++-common/builtin-convertvector-2.c: New test.

From-SVN: r268573

5 years agore PR go/89019 (LTO and gccgo cause ICE during free_lang_data)
Nikhil Benesch [Wed, 6 Feb 2019 04:48:35 +0000 (04:48 +0000)]
re PR go/89019 (LTO and gccgo cause ICE during free_lang_data)

gcc/go:
        PR go/89019
        * go-gcc.cc (Gcc_backend::placeholder_struct_type): Mark
        placeholder structs as requiring structural equality.
        (Gcc_backend::set_placeholder_pointer_type): Propagate the
canonical type from the desired pointer type to the placeholder
pointer type.
gcc/testsuite/:
        * lib/go-torture.exp: Test compiling with -flto.

From-SVN: r268572

5 years agoFix type of extern array declared in inner scope with outer initialization shadowed...
Joseph Myers [Wed, 6 Feb 2019 01:51:29 +0000 (01:51 +0000)]
Fix type of extern array declared in inner scope with outer initialization shadowed (PR c/88584).

As reported in bug 88584, if you have a file-scope array with external
linkage, initialized at file scope, and that array is shadowed at
block scope, and is declared again with external linkage and an
incomplete type in an inner scope, it is wrongly given a complete type
in that inner scope when the correct C semantics give it an incomplete
type (only the visible declarations contribute to the type in a given
scope).

In general, issues with the types of external linkage declarations
being different in different scopes were addressed by my fixes for bug
13801, for GCC 4.0.  In this case, however, the code in pushdecl
dealing with giving declarations the right type in each scope works
fine, and the type is subsequently modified by complete_array_type
called from finish_decl: finish_decl is trying to complete an array
type based on an initializer, but that's only correct for the original
initialization at file scope, not for such a declaration in an inner
scope (it's harmless but unnecessary in the case where the original
declaration is still visible in the inner scope).  Thus, this patch
changes finish_decl to stop this logic applying for such an external
declaration in an inner scope.  (An erroneous attempt to include an
initializer for an extern variable in an inner scope is diagnosed
elsewhere.)

This is a regression from GCC 3.4, which properly rejected the code in
question (quite likely by accident).

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

gcc/c:
PR c/88584
* c-decl.c (finish_decl): Do not complete array types for arrays
with external linkage not at file scope.

gcc/testsuite:
PR c/88584
* gcc.dg/redecl-18.c: New test.

From-SVN: r268571

5 years agoDaily bump.
GCC Administrator [Wed, 6 Feb 2019 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r268570

5 years agoUpdate .po files.
Joseph Myers [Tue, 5 Feb 2019 23:20:00 +0000 (23:20 +0000)]
Update .po files.

gcc/po:
* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
zh_TW.po: Update.

libcpp/po:
* be.po, ca.po, da.po, de.po, el.po, eo.po, es.po, fi.po, fr.po,
id.po, ja.po, nl.po, pr_BR.po, ru.po, sr.po, sv.po, tr.po, uk.po,
vi.po, zh_CN.po, zh_TW.po: Update.

From-SVN: r268567

5 years agoPR libstdc++/89128 add deduction guides for container adaptors
Jonathan Wakely [Tue, 5 Feb 2019 22:58:22 +0000 (22:58 +0000)]
PR libstdc++/89128 add deduction guides for container adaptors

PR libstdc++/89128
* include/bits/stl_queue.h (queue, priority_queue): Add deduction
guides.
* include/bits/stl_stack.h (stack): Likewise.
* testsuite/23_containers/priority_queue/deduction.cc: New test.
* testsuite/23_containers/queue/deduction.cc: New test.
* testsuite/23_containers/stack/deduction.cc: New test.

From-SVN: r268566

5 years agore PR c++/89187 (ICE in initialize_argument_information, at calls.c:2023)
Jakub Jelinek [Tue, 5 Feb 2019 22:28:25 +0000 (23:28 +0100)]
re PR c++/89187 (ICE in initialize_argument_information, at calls.c:2023)

PR c++/89187
* optimize.c (maybe_thunk_body): Clear TREE_ADDRESSABLE on
PARM_DECLs of the thunk.
* lambda.c (maybe_add_lambda_conv_op): Likewise.

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

From-SVN: r268564

5 years agolibgccjit: introduce gcc_jit_context_add_driver_option
Andrea Corallo [Tue, 5 Feb 2019 22:11:04 +0000 (22:11 +0000)]
libgccjit: introduce gcc_jit_context_add_driver_option

gcc/jit/ChangeLog:
2019-02-05  Andrea Corallo <andrea.corallo@arm.com>

* docs/topics/compatibility.rst (LIBGCCJIT_ABI_11): New ABI tag.
* docs/topics/contexts.rst (Additional driver options): New
section.
* jit-playback.c (invoke_driver): Add call to append_driver_options.
* jit-recording.c: Within namespace gcc::jit...
(recording::context::~context): Free the optnames within
m_driver_options.
(recording::context::add_driver_option): New method.
(recording::context::append_driver_options): New method.
(recording::context::dump_reproducer_to_file): Add driver
options.
* jit-recording.h: Within namespace gcc::jit...
(recording::context::add_driver_option): New method.
(recording::context::append_driver_options): New method.
(recording::context::m_driver_options): New field.
* libgccjit++.h (gccjit::context::add_driver_option): New
method.
* libgccjit.c (gcc_jit_context_add_driver_option): New API
entrypoint.
* libgccjit.h (gcc_jit_context_add_driver_option): New API
entrypoint.
(LIBGCCJIT_HAVE_gcc_jit_context_add_driver_option): New
macro.
* libgccjit.map (LIBGCCJIT_ABI_11): New ABI tag.

gcc/testsuite/ChangeLog:
2019-02-05  Andrea Corallo <andrea.corallo@arm.com>

* jit.dg/add-driver-options-testlib.c: Add support file for
test-add-driver-options.c testcase.
* jit.dg/all-non-failing-tests.h: Add note about
test-add-driver-options.c
* jit.dg/jit.exp (jit-dg-test): Update to support
add-driver-options-testlib.c compilation.
* jit.dg/test-add-driver-options.c: New testcase.

From-SVN: r268563

5 years agore PR rtl-optimization/11304 (Wrong code production with -fomit-frame-pointer)
Jakub Jelinek [Tue, 5 Feb 2019 22:00:29 +0000 (23:00 +0100)]
re PR rtl-optimization/11304 (Wrong code production with -fomit-frame-pointer)

PR rtl-optimization/11304
* gcc.target/i386/call-1.c (set_eax): Add "eax" clobber.
* gcc.target/i386/call-2.c: New test.

From-SVN: r268562

5 years agoPR c++/89158 - by-value capture of constexpr variable broken.
Marek Polacek [Tue, 5 Feb 2019 21:30:51 +0000 (21:30 +0000)]
PR c++/89158 - by-value capture of constexpr variable broken.

* call.c (convert_like_real) <case ck_user>: Call mark_exp_read
instead of mark_rvalue_use.

* g++.dg/cpp0x/lambda/lambda-89158.C: New test.

From-SVN: r268561

5 years agocompiler: check duplicate implicit indexes in slices/arrays
Ian Lance Taylor [Tue, 5 Feb 2019 18:21:07 +0000 (18:21 +0000)]
compiler: check duplicate implicit indexes in slices/arrays

    Fixes golang/go#28186.

    Reviewed-on: https://go-review.googlesource.com/c/160832

From-SVN: r268554

5 years agoFix pr84711.c testcase
Segher Boessenkool [Tue, 5 Feb 2019 18:03:55 +0000 (19:03 +0100)]
Fix pr84711.c testcase

On powerpc64-linux, this testcase complains the ABI for vector args
has changed, making the testcase fail (excess output).  This patch
shuts up that warning.

* gcc.dg/vect/pr84711.c: Use -Wno-psabi.

From-SVN: r268553

5 years agoS/390: Remove load and test fp splitter
Andreas Krebbel [Tue, 5 Feb 2019 17:14:11 +0000 (17:14 +0000)]
S/390: Remove load and test fp splitter

gcc/ChangeLog:

2019-02-05  Andreas Krebbel  <krebbel@linux.ibm.com>

PR target/88856
* config/s390/s390.md: Remove load and test FP splitter.

From-SVN: r268550

5 years agore PR target/89112 (Incorrect code generated by rs6000 memcmp expansion)
Aaron Sawdey [Tue, 5 Feb 2019 16:32:06 +0000 (16:32 +0000)]
re PR target/89112 (Incorrect code generated by rs6000 memcmp expansion)

2019-02-05  Aaron Sawdey  <acsawdey@linux.ibm.com>

PR target/89112
* config/rs6000/rs6000-string.c (do_ifelse, expand_cmp_vec_sequence,
expand_compare_loop, expand_block_compare_gpr,
expand_strncmp_align_check, expand_strncmp_gpr_sequence): Insert
REG_BR_PROB notes in inline expansion of memcmp/strncmp. Add
#include "profile-count.h" and "predict.h" for types and functions
needed to work with REG_BR_PROB notes.

From-SVN: r268547

5 years agore PR target/89112 (Incorrect code generated by rs6000 memcmp expansion)
Aaron Sawdey [Tue, 5 Feb 2019 16:30:45 +0000 (16:30 +0000)]
re PR target/89112 (Incorrect code generated by rs6000 memcmp expansion)

2019-02-05  Aaron Sawdey  <acsawdey@linux.ibm.com>

PR target/89112
* config/rs6000/rs6000.md (<bd>tf_<mode>): Generate a local label
for the long branch case.

From-SVN: r268546

5 years agovec-extract-sint128-1.c: Require int128 effective target.
Jakub Jelinek [Tue, 5 Feb 2019 16:22:21 +0000 (17:22 +0100)]
vec-extract-sint128-1.c: Require int128 effective target.

* gcc.target/powerpc/vec-extract-sint128-1.c: Require int128 effective
target.
* gcc.target/powerpc/vec-extract-uint128-1.c: Likewise.

From-SVN: r268545

5 years agore PR target/89188 (ICE in pre_and_rev_post_order_compute, at cfganal.c:1055)
Jakub Jelinek [Tue, 5 Feb 2019 16:21:36 +0000 (17:21 +0100)]
re PR target/89188 (ICE in pre_and_rev_post_order_compute, at cfganal.c:1055)

PR target/89188
* dce.c (delete_unmarked_insns): Don't remove no-op moves if they
can throw, non-call exceptions are enabled and we can't delete
dead exceptions or alter cfg.  Set must_clean if
delete_insn_and_edges returns true, don't set it blindly for calls.
Assert that delete_unreachable_blocks is called only if can_alter_cfg.

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

From-SVN: r268544

5 years agoPR libstdc++/89194 untangle is_convertible and is_nothrow_convertible
Jonathan Wakely [Tue, 5 Feb 2019 15:45:24 +0000 (15:45 +0000)]
PR libstdc++/89194 untangle is_convertible and is_nothrow_convertible

The additional logic added to __is_convertible_helper in order to
support is_nothrow_convertible makes some uses of is_convertible
ill-formed. This appears to be due to PR c++/87603, but can be avoided
just by defining a separate helper for is_nothrow_convertible. The same
problems are likely to still exist for is_nothrow_convertible, but that
is new and so won't cause regressions for existing users of
is_convertible.

PR libstdc++/89194
* include/std/type_traits (__is_convertible_helper)
(__is_convertible_helper<_From, _To, false>): Revert changes to
support is_nothrow_convertible.
(__is_nt_convertible_helper): New helper.
(is_nothrow_convertible): Use __is_nt_convertible_helper.

From-SVN: r268543

5 years agore PR rtl-optimization/89195 (Corrupted stack offset after combine)
Jakub Jelinek [Tue, 5 Feb 2019 15:38:57 +0000 (16:38 +0100)]
re PR rtl-optimization/89195 (Corrupted stack offset after combine)

PR rtl-optimization/89195
* combine.c (make_extraction): For MEMs, don't extract bytes outside
of the original MEM.

* gcc.c-torture/execute/pr89195.c: New test.

From-SVN: r268542

5 years agovec-extract-slong-1.c: Require p8 execution hardware.
Kelvin Nilsen [Tue, 5 Feb 2019 15:34:34 +0000 (15:34 +0000)]
vec-extract-slong-1.c: Require p8 execution hardware.

gcc/testsuite/ChangeLog:

2019-02-05  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* gcc.target/powerpc/vec-extract-slong-1.c: Require p8 execution
hardware.
* gcc.target/powerpc/vec-extract-schar-1.c: Likewise.
* gcc.target/powerpc/vec-extract-sint128-1.c: Likewise.
* gcc.target/powerpc/vec-extract-sshort-1.c: Likewise.
* gcc.target/powerpc/vec-extract-ulong-1.c: Likewise.
* gcc.target/powerpc/vec-extract-uchar-1.c: Likewise.
* gcc.target/powerpc/vec-extract-sint-1.c: Likewise.
* gcc.target/powerpc/vec-extract-uint128-1.c: Likewise.
* gcc.target/powerpc/vec-extract-ushort-1.c: Likewise.
* gcc.target/powerpc/vec-extract-uint-1.c: Likewise.

From-SVN: r268541

5 years agore PR tree-optimization/88606 (ICE: verify_type failed (error: type variant differs...
Richard Biener [Tue, 5 Feb 2019 14:57:32 +0000 (14:57 +0000)]
re PR tree-optimization/88606 (ICE: verify_type failed (error: type variant differs by TYPE_TRANSPARENT_AGGR))

2019-02-05  Richard Biener  <rguenther@suse.de>

PR c/88606
* c-decl.c (finish_struct): Reset TYPE_TRANSPARENT_AGGR on
all type variants when not supported.

From-SVN: r268540

5 years agoRestore previous behaviour of test
Jonathan Wakely [Tue, 5 Feb 2019 14:53:53 +0000 (14:53 +0000)]
Restore previous behaviour of test

Go back to using CopyConsOnlyType as before r265485, because it works
again now. Add test using DelAnyAssign for completeness and additional
coverage.

* testsuite/23_containers/vector/modifiers/push_back/49836.cc: Restore
use of CopyConsOnlyType, but also test DelAnyAssign for completeness.

From-SVN: r268539

5 years agoPR libstdc++/89130 restore support for non-MoveConstructible types
Jonathan Wakely [Tue, 5 Feb 2019 14:45:00 +0000 (14:45 +0000)]
PR libstdc++/89130 restore support for non-MoveConstructible types

The changes to "relocate" std::vector elements can lead to new errors
outside the immediate context, because moving the elements to new
storage no longer makes use of the move-if-noexcept utilities. This
means that types with deleted moves no longer degenerate to copies, but
are just ill-formed. The errors happen while instantiating the
noexcept-specifier for __relocate_object_a, when deciding whether to try
to relocate.

This patch introduces indirections to avoid the ill-formed
instantiations of std::__relocate_object_a. In order to avoid using
if-constexpr prior to C++17 this is done by tag dispatching. After this
patch all uses of std::__relocate_a are guarded by checks that will
support sensible code (i.e. code not using custom allocators that fool
the new checks).

PR libstdc++/89130
* include/bits/alloc_traits.h (__is_copy_insertable_impl): Rename to
__is_alloc_insertable_impl. Replace single type member with two
members, one for each of copy and move insertable.
(__is_move_insertable): New trait for internal use.
* include/bits/stl_vector.h (vector::_S_nothrow_relocate(true_type))
(vector::_S_nothrow_relocate(true_type)): New functions to
conditionally check if __relocate_a can throw.
(vector::_S_use_relocate()): Dispatch to _S_nothrow_relocate based
on __is_move_insertable.
(vector::_S_do_relocate): New overloaded functions to conditionally
call __relocate_a.
(vector::_S_relocate): New function that dispatches to _S_do_relocate
based on _S_use_relocate.
* include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
(vector::_M_default_append): Call _S_relocate instead of __relocate_a.
* testsuite/23_containers/vector/modifiers/push_back/89130.cc: New.

From-SVN: r268537

5 years agoPR libstdc++/89090 avoid C++17 features in C++11/C++14 code
Jonathan Wakely [Tue, 5 Feb 2019 14:44:56 +0000 (14:44 +0000)]
PR libstdc++/89090 avoid C++17 features in C++11/C++14 code

Although GCC and Clang both allow these features pre-C++17 in system
headers, Clang does issue warnings with -Wsystem-headers. It can also
complicate bisection and/or testcase reduction if # line markers are
stripped, because the code won't be known to come from system headers.

PR libstdc++/89090
* include/bits/stl_uninitialized.h (__relocate_a_1): Make unused
parameter unnamed. Add message to static assertion.
* include/bits/vector.tcc (vector::reserve, vector::_M_realloc_insert)
(vector::_M_default_append): Use _GLIBCXX17_CONSTEXPR for if constexpr
in C++11 code.

From-SVN: r268536

5 years agoGCOV: remove misleading branches and calls info for -f option (PR gcov-profile/89000).
Martin Liska [Tue, 5 Feb 2019 12:17:45 +0000 (13:17 +0100)]
GCOV: remove misleading branches and calls info for -f option (PR gcov-profile/89000).

2019-02-05  Martin Liska  <mliska@suse.cz>

PR gcov-profile/89000
* gcov.c (function_summary): Remove argument.
(file_summary): New function.
(print_usage): Replace tabs with spaces.
(generate_results): Use new function file_summary.

From-SVN: r268533

5 years agoRename __is_trivially_relocatable to __is_bitwise_relocatable.
Marc Glisse [Tue, 5 Feb 2019 09:33:36 +0000 (10:33 +0100)]
Rename __is_trivially_relocatable to __is_bitwise_relocatable.

2019-02-05  Marc Glisse  <marc.glisse@inria.fr>

PR libstdc++/87106
* include/bits/stl_uninitialized.h (__is_trivially_relocatable):
Rename...
(__is_bitwise_relocatable): ... to this.
(__relocate_a_1): Adapt.
* include/bits/stl_deque.h (__is_trivially_relocatable): Rename...
(__is_bitwise_relocatable): ... to this.

From-SVN: r268532

5 years agore PR target/89186 (ICE in mark_addressable at gcc/gimple-expr.c:894 since r268138)
Jakub Jelinek [Tue, 5 Feb 2019 09:17:18 +0000 (10:17 +0100)]
re PR target/89186 (ICE in mark_addressable at gcc/gimple-expr.c:894 since r268138)

PR target/89186
* optabs.c (prepare_cmp_insn): Pass x and y to
emit_block_comp_via_libcall rather than XEXP (x, 0) and XEXP (y, 0).

* g++.dg/ext/vector36.C: New test.

From-SVN: r268531

5 years agore PR middle-end/89150 (Tree form bitmaps break GC)
Richard Biener [Tue, 5 Feb 2019 08:32:16 +0000 (08:32 +0000)]
re PR middle-end/89150 (Tree form bitmaps break GC)

2019-02-05  Richard Biener  <rguenther@suse.de>

PR middle-end/89150
* bitmap.h (struct bitmap_obstack): Do not mark GTY.
(struct bitmap_element): Drop chain_prev so we properly recurse on
the prev member, supporting tree views.
(struct bitmap_head): GTY skip the obstack member.

From-SVN: r268530

5 years ago[PR87770] test partial specializations for type dependence
Alexandre Oliva [Tue, 5 Feb 2019 06:11:25 +0000 (06:11 +0000)]
[PR87770] test partial specializations for type dependence

When instantiating a partial specialization of a template member
function for a full specialization of a class template, we test
whether the context of variables local to the partial specialization,
i.e., the partial specialization itself, is dependent, and this ICEs
in type_dependent_expression_p, when checking that the function type
isn't type-dependent because it is not in a type-dependent scope.

We shouldn't have got that far: the previous block in
type_dependent_expression_p catches cases in which the function itself
takes template arguments of its own, but it only did so for primary
templates, not for partial specializations.  This patch fixes that.

for  gcc/cp/ChangeLog

PR c++/87770
* pt.c (instantiates_primary_template_p): New.
(type_dependent_expression_p): Use it.

for  gcc/testsuite/ChangeLog

PR c++/87770
* g++.dg/pr87770.C: New.

From-SVN: r268529

5 years agoDaily bump.
GCC Administrator [Tue, 5 Feb 2019 00:16:30 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r268528

5 years agore PR fortran/89077 (ICE using * as len specifier for character parameter)
Harald Anlauf [Mon, 4 Feb 2019 20:44:22 +0000 (20:44 +0000)]
re PR fortran/89077 (ICE using * as len specifier for character parameter)

2019-02-04  Harald Anlauf  <anlauf@gmx.de>

PR fortran/89077
* gfortran.dg/pr89077.f90: New test.

2019-02-04  Harald Anlauf  <anlauf@gmx.de>

PR fortran/89077
* gfortran.dg/pr89077.f90: New test.

From-SVN: r268525

5 years agodoc: showcase a "union of vectors" pattern (PR 88698)
Alexander Monakov [Mon, 4 Feb 2019 15:00:41 +0000 (18:00 +0300)]
doc: showcase a "union of vectors" pattern (PR 88698)

PR c/88698
* doc/extend.texi (Vector Extensions): Add an example of using vector
types together with x86 intrinsics.

From-SVN: r268522

5 years agoDo not dereference NULL pointer in resolve_ref (PR fortran/89185).
Martin Liska [Mon, 4 Feb 2019 13:28:34 +0000 (14:28 +0100)]
Do not dereference NULL pointer in resolve_ref (PR fortran/89185).

2019-02-04  Martin Liska  <mliska@suse.cz>

PR fortran/89185
* resolve.c (resolve_ref): Remove breakout variable as
we need to prevent prev = &(*prev)->next to happen
with *prev == NULL.

From-SVN: r268521

5 years ago[RS6000] Fix potiential buffer overflow
Alan Modra [Mon, 4 Feb 2019 13:19:49 +0000 (23:49 +1030)]
[RS6000] Fix potiential buffer overflow

* config/rs6000/rs6000.c (rs6000_indirect_call_template_1): Increase
str[] size to 160, and comment.

From-SVN: r268520

5 years ago[RS6000] Emit inline PLT when -mno-tls-markers
Alan Modra [Mon, 4 Feb 2019 13:18:14 +0000 (23:48 +1030)]
[RS6000] Emit inline PLT when -mno-tls-markers

I restricted output of inline PLT sequences to when TLS marker relocs
were also available, which is obviously true when just considering
assembler support.  However, there is a -mno-tls-markers option to
disable emitting the marker relocs.  Currently that option also
disables inline PLT sequences, which is a bug (*).  This patch fixes
that problem.

*) To be honest, it was a deliberate bug.  I didn't want to have to
deal with inline PLT __tls_get_addr sequences lacking the marker
relocs in the linker, but it turns out the existing linker support for
old-style __tls_get_addr calls works reasonably well.

* config/rs6000/rs6000.c (rs6000_indirect_call_template_1),
(rs6000_pltseq_template): Guard output of TLS markers with
TARGET_TLS_MARKERS.
(rs6000_longcall_ref, rs6000_call_aix, rs6000_call_sysv),
(rs6000_sibcall_sysv): Ignore TARGET_TLS_MARKERS when deciding
to use inline PLT sequences.
* config/rs6000/rs6000.md (pltseq_tocsave_<mode>),
(pltseq_plt16_ha_<mode>, pltseq_plt16_lo_<mode>),
(pltseq_mtctr_<mode>): Don't test TARGET_TLS_MARKERS in predicate.

From-SVN: r268519

5 years agoBail out when ipa_fn_summaries does not contain entry for callee (PR ipa/88985).
Martin Liska [Mon, 4 Feb 2019 12:26:14 +0000 (13:26 +0100)]
Bail out when ipa_fn_summaries does not contain entry for callee (PR ipa/88985).

gcc/ChangeLog:

2019-01-24  Martin Liska  <mliska@suse.cz>

PR ipa/88985
* ipa-fnsummary.c (estimate_edge_devirt_benefit): Bail
out when ipa_fn_summaries does not contain entry for callee.

gcc/testsuite/ChangeLog:

2019-01-24  Martin Liska  <mliska@suse.cz>

PR ipa/88985
* gcc.dg/ipa/pr88985.c: New test.

From-SVN: r268518

5 years agoReport error when -fpre-include can't be opened (PR fortran/88912).
Martin Liska [Mon, 4 Feb 2019 12:20:59 +0000 (13:20 +0100)]
Report error when -fpre-include can't be opened (PR fortran/88912).

2019-02-04  Martin Liska  <mliska@suse.cz>

PR fortran/88912
* scanner.c (load_file): Report error for -fpre-include
file and do not ICE.

From-SVN: r268517

5 years agoBail out when ipa_fn_summaries does not contain entry for callee (PR ipa/88958).
Martin Liska [Mon, 4 Feb 2019 12:19:48 +0000 (13:19 +0100)]
Bail out when ipa_fn_summaries does not contain entry for callee (PR ipa/88958).

2019-02-04  Martin Liska  <mliska@suse.cz>

PR ipa/88958
* ipa-fnsummary.c (estimate_edge_devirt_benefit): Bail
out when ipa_fn_summaries does not contain entry for callee.
2019-02-04  Martin Liska  <mliska@suse.cz>

PR ipa/88958
* gcc.dg/ipa/pr88958.c: New test.

From-SVN: r268516

5 years agosparc.h: Remove superfluous blank lines.
Eric Botcazou [Mon, 4 Feb 2019 11:12:29 +0000 (11:12 +0000)]
sparc.h: Remove superfluous blank lines.

* config/sparc/sparc.h: Remove superfluous blank lines.
* config/sparc/sparc.c (global_offset_table_rtx): Rename into...
(got_register_rtx): ...this.
(sparc_got): Adjust to above renaming.
(sparc_tls_got): Likewise.
(sparc_delegitimize_address): Likewise.
(sparc_output_mi_thunk): Likewise.
(sparc_init_pic_reg): Likewise.
(save_local_or_in_reg_p): Fix test on the GOT register.
(USE_HIDDEN_LINKONCE): Move around.
(get_pc_thunk_name): Likewise.
(gen_load_pcrel_sym): Likewise.
(load_got_register): Likewise.

From-SVN: r268514

5 years agoinline5.c: Handle also @, ...
Jakub Jelinek [Mon, 4 Feb 2019 10:00:53 +0000 (11:00 +0100)]
inline5.c: Handle also @, ...

* gcc.dg/debug/dwarf2/inline5.c: Handle also @, ; or | comment
characters or extra spaces after the comment character.

From-SVN: r268513

5 years ago[NDS32] Change naming rule for dyanmic linker.
Kito Cheng [Mon, 4 Feb 2019 09:00:24 +0000 (09:00 +0000)]
[NDS32] Change naming rule for dyanmic linker.

gcc/
* config/nds32/linux.h (GLIBC_DYNAMIC_LINKER): Define the naming rule
of the dynamic linker: "ld-linux-nds32[le|be][f].so.1".

From-SVN: r268512

5 years agocontrib/dg-extract-results: Handle timeout warnings
Christophe Lyon [Mon, 4 Feb 2019 08:55:00 +0000 (08:55 +0000)]
contrib/dg-extract-results: Handle timeout warnings

2019-02-04  Christophe Lyon  <christophe.lyon@linaro.org>

contrib/
* dg-extract-results.py: Keep timeout warnings next to their
matching test.
* dg-extract-results.sh: Likewise.

From-SVN: r268511

5 years ago* g++.dg/torture/alias-1.C: New test.
Jakub Jelinek [Mon, 4 Feb 2019 08:52:18 +0000 (09:52 +0100)]
* g++.dg/torture/alias-1.C: New test.

From-SVN: r268510

5 years ago[NDS32] Restrict address mode, when symbol is TLS model.
Chung-Ju Wu [Mon, 4 Feb 2019 07:31:45 +0000 (07:31 +0000)]
[NDS32] Restrict address mode, when symbol is TLS model.

gcc/
* config/nds32/nds32.c (nds32_legitimate_address_p): Add TLS model
into consideration.

From-SVN: r268509

5 years ago[NDS32] Remove all -mtlsdesc-trmpoline related things.
Chung-Ju Wu [Mon, 4 Feb 2019 07:17:36 +0000 (07:17 +0000)]
[NDS32] Remove all -mtlsdesc-trmpoline related things.

gcc/
* config.gcc (with_nds32_lib, glibc):
Remove TARGET_DEFAULT_TLSDESC_TRAMPOLINE=0 setting.
* config/nds32/linux.h (TARGET_DEFAULT_TLSDESC_TRAMPOLINE): Delete.
(NDS32_TLSDESC_TRAMPOLINE_SPEC): Delete.

From-SVN: r268508

5 years agoDaily bump.
GCC Administrator [Mon, 4 Feb 2019 00:16:28 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r268507

5 years agoPR c/69661 - missing -Wsequence-point warning
Martin Sebor [Sun, 3 Feb 2019 22:47:41 +0000 (22:47 +0000)]
PR c/69661 - missing -Wsequence-point warning

gcc/testsuite.ChangeLog:
        * c-c++-common/Wsequence-point-2.c: New test.

From-SVN: r268504

5 years agoPR c++/44648 - missing -Wunused warning on a const variable in if statement
Martin Sebor [Sun, 3 Feb 2019 21:48:27 +0000 (21:48 +0000)]
PR c++/44648 - missing -Wunused warning on a const variable in if statement

gcc/testsuite/ChangeLog:
* g++.dg/warn/Wunused-var-35.C: New test.

From-SVN: r268503

5 years agore PR fortran/67679 (-Wunitialized reports on compiler-generated variables)
Thomas Koenig [Sun, 3 Feb 2019 19:38:25 +0000 (19:38 +0000)]
re PR fortran/67679 (-Wunitialized reports on compiler-generated variables)

2019-02-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/67679
* trans-array.c (gfc_array_allocate):  For setting the bounds on
the new array, add a condition for a not previously allocated
variable.

2019-02-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/67679
* gfortran.dg/warn_undefined_1.f90: New test.
* gfortran.dg/coarray_lock_7.f90: Fix patterns in test.

From-SVN: r268502