Jonathan Wakely [Thu, 13 Sep 2018 13:47:14 +0000 (14:47 +0100)]
Limit workaround for Clang bug to __clang_major__ <= 7
The bug https://bugs.llvm.org/show_bug.cgi?id=33222 is now fixed on
Clang trunk, so the workaround won't be needed for Clang 8.0 and later.
* include/std/variant (variant) [__clang__]: Limit workaround to
Clang 7 and older.
From-SVN: r264271
Vlad Lazar [Thu, 13 Sep 2018 13:43:48 +0000 (13:43 +0000)]
Schedule by INSN_COST in case of tie
2018-09-13 Vlad Lazar <vlad.lazar@arm.com>
* haifa-sched.c (rank_for_schedule): Schedule by INSN_COST.
(rfs_decision): New scheduling decision.
From-SVN: r264270
Richard Biener [Thu, 13 Sep 2018 11:31:58 +0000 (11:31 +0000)]
re PR bootstrap/87134 (SEGV in cc1 caused by r263875)
2018-09-13 Richard Biener <rguenther@suse.de>
PR bootstrap/87134
* tree-ssa-sccvn.c (vn_nary_op_insert_into): Fix assert.
(vn_nary_op_insert_pieces_predicated): Do not write useless
valid_dominated_by_p entry outside of the allocated storage.
From-SVN: r264268
Omar Sandoval [Thu, 13 Sep 2018 10:27:12 +0000 (10:27 +0000)]
[debug] DWARF: add DW_AT_count to zero-length arrays
2018-09-13 Omar Sandoval <osandov@osandov.com>
Tom de Vries <tdevries@suse.de>
PR debug/86985
* dwarf2out.c (is_c): New function.
(add_subscript_info): Add DW_AT_count of 0 for C zero-length arrays.
* gcc.dg/guality/zero-length-array.c: New test.
Co-Authored-By: Tom de Vries <tdevries@suse.de>
From-SVN: r264267
Sam Tebbs [Thu, 13 Sep 2018 09:46:55 +0000 (09:46 +0000)]
[Aarch64] Exploiting BFXIL when OR-ing two AND-operations with appropriate bitmasks
2018-09-13 Sam Tebbs <sam.tebbs@arm.com>
PR target/85628
* config/aarch64/aarch64.md (*aarch64_bfxil):
Define.
* config/aarch64/constraints.md (Ulc): Define.
* config/aarch64/aarch64-protos.h (aarch64_high_bits_all_ones_p):
Define.
* config/aarch64/aarch64.c (aarch64_high_bits_all_ones_p):
New function.
* gcc.target/aarch64/combine_bfxil.c: New file.
* gcc.target/aarch64/combine_bfxil_2.c: New file.
From-SVN: r264264
Vlad Lazar [Thu, 13 Sep 2018 09:36:58 +0000 (09:36 +0000)]
[AArch64] Add support for TARGET_COMPUTE_FRAME_LAYOUT
The patch adds support for the TARGET_COMPUTE_FRAME_LAYOUT hook on AArch64
and removes unneeded frame layout recalculation.
2018-09-13 Vlad Lazar <vlad.lazar@arm.com>
* config/aarch64/aarch64.h (TARGET_COMPUTE_FRAME_LAYOUT): Define.
* config/aarch64/aarch64.c (aarch64_expand_prologue): Remove
aarch64_layout_frame call.
(aarch64_expand_epilogue): Likewise.
(aarch64_initial_elimination_offset): Likewise.
(aarch64_get_separate_components): Likewise.
(aarch64_use_return_insn_p): Likewise.
(aarch64_layout_frame): Remove unneeded check.
From-SVN: r264263
Jakub Jelinek [Thu, 13 Sep 2018 07:43:29 +0000 (09:43 +0200)]
configure.ac: Only append " ...
* configure.ac: Only append
" : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS" to
gcc_config_arguments if it was never reconfigured or last reconfigure
was with different arguments.
* configure: Regenerated.
From-SVN: r264262
Jakub Jelinek [Thu, 13 Sep 2018 07:42:55 +0000 (09:42 +0200)]
re PR middle-end/87290 (Optimize signed x % pow2p == cst)
PR middle-end/87290
* expr.c (maybe_optimize_pow2p_mod_cmp): New function.
(maybe_optimize_mod_cmp): Use it if integer_pow2p treeop1.
* gcc.target/i386/pr87290.c: New test.
* gcc.c-torture/execute/pr87290.c: New test.
Co-Authored-By: Kyrylo Tkachov <kyrylo.tkachov@arm.com>
From-SVN: r264261
Jakub Jelinek [Thu, 13 Sep 2018 07:36:50 +0000 (09:36 +0200)]
re PR tree-optimization/87287 (Move signed (x % pow2) == 0 optimization to gimple)
PR tree-optimization/87287
* fold-const.c (fold_binary_loc) <case EQ_EXPR>: Move signed modulo
X % C == 0 to X % (unsigned) C == 0 optimization to ...
* match.pd (X % C == 0): ... here. New optimization.
* gcc.dg/tree-ssa/pr87287.c: New test.
From-SVN: r264260
Ian Lance Taylor [Thu, 13 Sep 2018 00:45:55 +0000 (00:45 +0000)]
compiler: omit a couple of write barriers
Omit a write barrier for
s = s[0:]
for a slice s. In this case the pointer is not changing and no write
barrier is required.
Omit a write barrier for
s = append(s, v)
in the case where len(s) < cap(s) (and similarly when appending more
values). When the slice has enough capacity the pointer is not
changing and no write barrier is required.
These changes are required to avoid write barriers in the method
randomOrder.reset in the runtime package. That method is called from
procresize, at a point where we do not want to allocate memory.
Otherwise that method can use a write barrier, allocate memory, and
break TestReadMemStats.
Reviewed-on: https://go-review.googlesource.com/134219
From-SVN: r264259
GCC Administrator [Thu, 13 Sep 2018 00:16:32 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264258
Ville Voutilainen [Wed, 12 Sep 2018 21:10:43 +0000 (00:10 +0300)]
re PR c++/87093 (is_constructible (__is_constructible() instrinsic) explicitly instantiates conversion member function of source)
PR c++/87093
gcc/cp
PR c++/87093
* method.c (constructible_expr): We're in an unevaluated context
in all cases, not just for class targets.
testsuite/
PR c++/87093
* g++.dg/ext/is_constructible2.C: New.
From-SVN: r264253
David Malcolm [Wed, 12 Sep 2018 18:50:08 +0000 (18:50 +0000)]
C++: special-case single non-viable candidate (more PR c++/85110)
I broke out the "no viable candidates" case in build_new_method_call_1
into a subroutine, and added special-case handling for when there's
a single non-viable candidate where there's an argument conversion
error. I turned the error-handling from convert_for_assignment into
a subroutine, calling it from this new special-case.
This converts:
demo.cc: In function 'int test_4(int, const char*, float)':
demo.cc:5:44: error: no matching function for call to 's4::member_1(int&, const char*&, float&)'
5 | return s4::member_1 (first, second, third);
| ^
demo.cc:1:24: note: candidate: 'static int s4::member_1(int, const char**, float)'
1 | struct s4 { static int member_1 (int one, const char **two, float three); };
| ^~~~~~~~
demo.cc:1:56: note: no known conversion for argument 2 from 'const char*' to 'const char**'
1 | struct s4 { static int member_1 (int one, const char **two, float three); };
| ~~~~~~~~~~~~~^~~
to:
demo.cc: In function 'int test_4(int, const char*, float)':
demo.cc:5:31: error: cannot convert 'const char*' to 'const char**'
5 | return s4::member_1 (first, second, third);
| ^~~~~~
| |
| const char*
demo.cc:1:56: note: initializing argument 2 of 'static int s4::member_1(int, const char**, float)'
1 | struct s4 { static int member_1 (int one, const char **two, float three); };
| ~~~~~~~~~~~~~^~~
thus highlighting the problematic argument at the callsite (and its type).
gcc/cp/ChangeLog:
PR c++/85110
* call.c (struct conversion_info): Add "loc" field.
(arg_conversion_rejection): Add "loc" param, using it to
initialize the new field.
(bad_arg_conversion_rejection): Likewise.
(explicit_conversion_rejection): Initialize the new field to
UNKNOWN_LOCATION.
(template_conversion_rejection): Likewise.
(add_function_candidate): Pass on the argument location to the new
param of arg_conversion_rejection.
(add_conv_candidate): Likewise.
(build_builtin_candidate): Likewise.
(build_user_type_conversion_1): Likewise.
(single_z_candidate): New function.
(maybe_get_bad_conversion_for_unmatched_call): New function.
(complain_about_bad_argument): New function, based on part of
convert_for_assignment.
(build_new_method_call_1): Split out handling of the "no viable
candidates" case into...
(complain_about_no_candidates_for_method_call): ...this new
function, and use the new functions above to special-case the
handling of a single non-viable candidate due to a bad argument.
* cp-tree.h (complain_about_bad_argument): New decl.
* typeck.c (convert_for_assignment): Split out one error-handling
case into complain_about_bad_argument.
gcc/testsuite/ChangeLog:
PR c++/85110
* g++.dg/cpp0x/explicit4.C: Update expected output to reflect
special-casing of diagnostic for a single non-viable candidate due
to a bad argument.
* g++.dg/diagnostic/param-type-mismatch-2.C: Likewise.
Add test coverage for an unmatched overloaded operator.
* g++.dg/expr/pmf-1.C: Likewise.
* g++.old-deja/g++.bugs/900330_02.C: Likewise.
* g++.old-deja/g++.jason/conversion11.C: Likewise.
* g++.old-deja/g++.law/arg11.C: Likewise.
* g++.old-deja/g++.law/arm9.C: Likewise.
* g++.old-deja/g++.robertl/eb131.C: Likewise.
From-SVN: r264250
Paul Thomas [Wed, 12 Sep 2018 18:33:13 +0000 (18:33 +0000)]
re PR fortran/87284 (Allocation of class arrays with mold results in "conditional jump or move depends on uninitialised value")
2018-09-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87284
* trans-expr.c (gfc_trans_class_init_assign): Access to
to array elements of the dynamic type requires that the array
reference be added to the class expression and not the _data
component, unlike scalar expressions.
2018-09-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87284
* gfortran.dg/allocate_with_mold_2.f90: New test.
From-SVN: r264249
Jakub Jelinek [Wed, 12 Sep 2018 18:28:20 +0000 (20:28 +0200)]
re PR middle-end/82853 (Optimize x % 3 == 0 without modulo)
PR middle-end/82853
* expr.h (maybe_optimize_mod_cmp): Declare.
* expr.c (mod_inv): New function.
(maybe_optimize_mod_cmp): New function.
(do_store_flag): Use it.
* cfgexpand.c (expand_gimple_cond): Likewise.
* gcc.target/i386/pr82853-1.c: New test.
* gcc.target/i386/pr82853-2.c: New test.
From-SVN: r264248
Cesar Philippidis [Wed, 12 Sep 2018 15:21:19 +0000 (08:21 -0700)]
[OpenACC] C++ reference mapping
2018-09-09 Cesar Philippidis <cesar@codesourcery.com>
Julian Brown <julian@codesourcery.com>
PR middle-end/86336
gcc/cp/
* semantics.c (finish_omp_clauses): Treat C++ references the same in
OpenACC as OpenMP.
gcc/
* gimplify.c (gimplify_scan_omp_clauses): Set
target_firstprivatize_array_bases in OpenACC parallel and kernels
region contexts. Remove GOMP_MAP_FIRSTPRIVATE_REFERENCE clauses from
OpenACC data regions.
libgomp/
* testsuite/libgomp.oacc-c++/non-scalar-data.C: Remove XFAIL.
Co-Authored-By: Julian Brown <julian@codesourcery.com>
From-SVN: r264244
Uros Bizjak [Wed, 12 Sep 2018 15:04:41 +0000 (17:04 +0200)]
i386.md (sqrt_extend<mode>xf3_i387): Remove.
* config/i386/i386.md (sqrt_extend<mode>xf3_i387): Remove.
(sqrt<mode>2): Extend operand 1 to XFmode and generate sqrtxf3 insn.
From-SVN: r264243
Richard Biener [Wed, 12 Sep 2018 14:03:21 +0000 (14:03 +0000)]
re PR tree-optimization/87280 (ICE in set_ssa_val_to, at tree-ssa-sccvn.c:3647)
2018-09-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/87280
* tree-ssa-sccvn.c (process_bb): Handle the case of executable
edge but unreachable target.
(do_rpo_vn): For conservatively handling a PHI only mark
the backedge executable but not the block reachable.
* gcc.dg/torture/pr87280.c: New testcase.
From-SVN: r264241
Kwok Cheung Yeung [Wed, 12 Sep 2018 13:53:34 +0000 (13:53 +0000)]
Fix interleaving of Fortran STOP messages
Fortran STOP and ERROR STOP use a different function to print the "STOP" string
and the message string. On GCN this results in out-of-order output, such as
"<msg>ERROR STOP ".
This patch fixes the problem by making estr_write use the proper Fortran write,
not C printf, so both parts are now output the same way. This also ensures
that both parts are output to STDERR (not that that means anything on GCN).
2018-09-12 Kwok Cheung Yeung <kcy@codesourcery.com>
libgfortran/
* runtime/minimal.c (estr_write): Define in terms of write.
From-SVN: r264239
Andrew Stubbs [Wed, 12 Sep 2018 13:53:32 +0000 (13:53 +0000)]
Fix Fortran STOP.
The minimal libgfortran setup was created for NVPTX, but will also be used by
AMD GCN.
This patch simply removes an assumption that NVPTX is the only user.
Specifically, NVPTX exit is broken, but AMD GCN exit works just fine.
2018-09-12 Andrew Stubbs <ams@codesourcery.com>
libgfortran/
* runtime/minimal.c (exit): Only work around nvptx bugs on nvptx.
From-SVN: r264238
Richard Biener [Wed, 12 Sep 2018 12:14:27 +0000 (12:14 +0000)]
re PR tree-optimization/87266 (ICE: Segmentation fault (in useless_type_conversion_p, tree_nop_conversion_p, or is_gimple_reg_type))
2018-09-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/87266
* tree-ssa-sccvn.c (do_rpo_vn): Always iterate to not yet
visited blocks.
* gcc.dg/torture/pr87266-1.c: New testcase.
* gcc.dg/torture/pr87266-2.c: Likewise.
* gcc.dg/torture/pr87266-3.c: Likewise.
* gcc.dg/torture/pr87266-4.c: Likewise.
From-SVN: r264237
Andreas Krebbel [Wed, 12 Sep 2018 10:58:42 +0000 (10:58 +0000)]
S/390: Use proper rounding mode for DFP to BFD conversions
According to IEEE 754 2008 4.3 'Rounding-direction attributes' the
rounding mode of the target format needs to be used. By not setting
the value so far we have always used the DFP rounding mode.
gcc/ChangeLog:
2018-09-12 Andreas Krebbel <krebbel@linux.ibm.com>
* config/s390/s390.md (PFPO_RND_MODE_DFP, PFPO_RND_MODE_BFP): New
constants.
("trunc<BFP:mode><DFP_ALL:mode>2")
("trunc<DFP_ALL:mode><BFP:mode>2")
("extend<BFP:mode><DFP_ALL:mode>2")
("extend<DFP_ALL:mode><BFP:mode>2"): Set proper rounding mode
according to the target operand type.
gcc/testsuite/ChangeLog:
2018-09-12 Andreas Krebbel <krebbel@linux.ibm.com>
* gcc.target/s390/dfp_to_bfp_rounding.c: New test.
From-SVN: r264234
Martin Liska [Wed, 12 Sep 2018 10:39:45 +0000 (12:39 +0200)]
Add quotes for -fconstexpr-depth= in an error message.
From-SVN: r264233
Jakub Jelinek [Wed, 12 Sep 2018 09:25:07 +0000 (11:25 +0200)]
re PR tree-optimization/86844 (wrong code caused by store merging pass)
PR tree-optimization/86844
* gimple-ssa-store-merging.c
(imm_store_chain_info::coalesce_immediate): For overlapping stores, if
there are any overlapping stores in between them, make sure they are
also coalesced or we give up completely.
* gcc.c-torture/execute/pr86844.c: New test.
* gcc.dg/store_merging_22.c: New test.
* gcc.dg/store_merging_23.c: New test.
Co-Authored-By: Andreas Krebbel <krebbel@linux.ibm.com>
From-SVN: r264232
Jakub Jelinek [Wed, 12 Sep 2018 09:18:55 +0000 (11:18 +0200)]
re PR middle-end/87248 (Bad code for masked operations involving signed ints)
PR middle-end/87248
* fold-const.c (fold_ternary_loc) <case COND_EXPR>: Verify also that
BIT_AND_EXPR's second operand is a power of two. Formatting fix.
* c-c++-common/torture/pr87248.c: New test.
From-SVN: r264230
Tom de Vries [Wed, 12 Sep 2018 07:27:26 +0000 (07:27 +0000)]
[debug] Add -gdescribe-dies
This patch adds option -gdescribe-dies. It sets the DW_AT_description
attribute of dies that do not get a DW_AT_name attribute, to make it easier
to figure out what the die is describing.
The option exports the names of artificial variables:
...
DIE 0: DW_TAG_variable (0x7fa934dd54b0)
+ DW_AT_description: "D.1922"
DW_AT_type: die -> 0 (0x7fa934dd0d70)
DW_AT_artificial: 1
...
which can be traced back to gimple dumps:
...
char a[0:D.1922] [value-expr: *a.0];
...
Furthermore, it adds names to external references:
...
DIE 0: DW_TAG_subprogram (0x7fa88b9650f0)
+DW_AT_description: "main"
DW_AT_abstract_origin: die -> label: vla_1.c.
6719312a + 29 (0x7fa88b965140)
...
and likewise to DW_TAG_call_site_parameter DIEs.
Bootstrapped and reg-tested on x86_64.
2018-09-12 Tom de Vries <tdevries@suse.de>
* common.opt (gdescribe-dies): Add option.
* dwarf2out.c (add_name_and_src_coords_attributes): Add description
attribute for artifical and nameless decls.
(dwarf2out_register_external_die): Add description attribute to
external reference die.
(add_desc_attribute): New functions.
(gen_subprogram_die): Add description attribute to
DW_TAG_call_site_parameter.
* tree-pretty-print.c (print_generic_expr_to_str): New function.
* tree-pretty-print.h (print_generic_expr_to_str): Declare.
* doc/invoke.texi (@item Debugging Options): Add -gdescribe-dies and
-gno-describe-dies.
(@item -gdescribe-dies): Add.
From-SVN: r264229
Aldy Hernandez [Wed, 12 Sep 2018 07:04:19 +0000 (07:04 +0000)]
tree-vrp.c (vrp_shift_undefined_p): Remove.
* tree-vrp.c (vrp_shift_undefined_p): Remove.
(extract_range_from_binary_expr_1: Call
wide_int_range_shift_undefined_p instead of vrp_shift_undefined_p.
* wide-int-range.h (wide_int_range_shift_undefined_p): Do not
depend on sign.
From-SVN: r264228
Aldy Hernandez [Wed, 12 Sep 2018 06:50:34 +0000 (06:50 +0000)]
* gimple-ssa-warn-alloca.c
(alloca_type_and_limit::alloca_type_and_limit): Initialize limit
field for ALLOCA_BOUND_*_LARGE.
From-SVN: r264227
GCC Administrator [Wed, 12 Sep 2018 00:16:47 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264226
Nathan Sidwell [Tue, 11 Sep 2018 21:34:14 +0000 (21:34 +0000)]
* gcc.c (load_specs, execute, run_attempt): Use %qs not '%s'.
From-SVN: r264217
Uros Bizjak [Tue, 11 Sep 2018 19:36:35 +0000 (21:36 +0200)]
reg-stack.c (subst_asm_stack_regs): Call replace_reg also for clobbers.
* reg-stack.c (subst_asm_stack_regs): Call replace_reg also
for clobbers. Remove obsolete comment.
From-SVN: r264216
Janus Weil [Tue, 11 Sep 2018 17:44:04 +0000 (19:44 +0200)]
re PR fortran/87172 (Spurious "Derived type 'c_funptr' at (1) has not been declared" error after r263782)
fix PR 87172
2018-09-11 Janus Weil <janus@gcc.gnu.org>
PR fortran/87172
* resolve.c (resolve_fl_derived): If a type has the 'use_assoc'
attribute, then it was declared in another module, so there should be
no error that it has not been declared.
2018-09-11 Janus Weil <janus@gcc.gnu.org>
PR fortran/87172
* gfortran.dg/iso_c_binding_only_2.f90: New test case.
From-SVN: r264214
Uros Bizjak [Tue, 11 Sep 2018 16:53:15 +0000 (18:53 +0200)]
i386.md (define_attr "type"): Remove mpxmov, mpxmk, mpxchk, mpxld and mpxst types.
* config/i386/i386.md (define_attr "type"): Remove mpxmov, mpxmk,
mpxchk, mpxld and mpxst types.
(define_attr length_immediate): Remove all processing of mpx types.
(define_attr prefix_0f): Ditto.
(define_attr memory): Ditto.
From-SVN: r264212
Uros Bizjak [Tue, 11 Sep 2018 16:42:35 +0000 (18:42 +0200)]
i386.md (fyl2x_extend<mode>xf3_i387): Remove.
* config/i386/i386.md (fyl2x_extend<mode>xf3_i387): Remove.
(log<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate logxf3 insn.
(log10<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate log10xf3 insn.
(log2<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate log2xf3 insn.
(fyl2xp1_extend<mode>xf3_i387): Remove.
(log1p<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate log1pxf3 insn.
(fxtract_extend<mode>xf3_i387): Remove.
(logb<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate logbxf3 insn.
(ilogb<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate fxtractxf3_i387 insn.
(significand<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate significandxf3 insn.
From-SVN: r264211
Paul Thomas [Tue, 11 Sep 2018 15:59:07 +0000 (15:59 +0000)]
re PR fortran/87277 (Segfault on using array component of class scalar pointer as an actual argument)
2018-09-11 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87277
* expr.c (is_subref_array): Add the check of dimensionality for
class, dummy, pointer arrays.
2018-09-11 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87277
* gfortran.dg/select_type_43.f90: New test.
From-SVN: r264210
Nathan Sidwell [Tue, 11 Sep 2018 15:03:05 +0000 (15:03 +0000)]
[driver] Use regular error routines
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00545.html
* gcc.c (perror_with_name, pfatal_with_name): Delete.
(load_specs): Use fatal_error.
(DELETE_IF_ORDINARY, process_command): Use error.
(execute, run_attempt): Use fatal_error.
* gcc.dg/driver-specs.c: New.
From-SVN: r264209
Jonathan Wakely [Tue, 11 Sep 2018 11:50:39 +0000 (12:50 +0100)]
PR libstdc++/87278 restore support for std::make_shared<volatile T>()
PR libstdc++/87278
* include/bits/shared_ptr.h (make_shared): Use remove_cv instead of
remove_const.
* testsuite/20_util/shared_ptr/creation/87278.cc: New test.
From-SVN: r264207
Jonathan Wakely [Tue, 11 Sep 2018 10:55:49 +0000 (11:55 +0100)]
Implement LWG 2905 changes to constrain unique_ptr constructors
LWG DR 2905 says that is_constructible_v<unique_ptr<P, D>, P, D const &>
should be false when D is not copy constructible. This commit implements
the changes from the DR and simplifies the signatures as per
https://github.com/cplusplus/draft/issues/1530
* include/bits/unique_ptr.h (__uniq_ptr_impl): Add assertions to
check deleter type.
(unique_ptr::unique_ptr(pointer, const deleter_type&)): Add copy
constructible constraint.
(unique_ptr::unique_ptr(pointer, deleter_type&&)): Disable for
deleters of reference type and add move constructible constraint.
(unique_ptr::unique_ptr(pointer, remove_reference_t<deleter_type>&&)):
Disable for deleters of non-reference type. Define as deleted.
(unique_ptr<T[], D>): Likewise.
* testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error
directives with unstable line numbers with dg-prune-output.
* testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
* testsuite/20_util/unique_ptr/cons/lwg2905.cc: New test.
* testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc:
Make deleter types invocable.
From-SVN: r264206
Aldy Hernandez [Tue, 11 Sep 2018 10:36:20 +0000 (10:36 +0000)]
Fix typo in my last ChangeLog entry.
From-SVN: r264205
Andrew Stubbs [Tue, 11 Sep 2018 10:26:57 +0000 (10:26 +0000)]
Add sorry_at diagnostic function.
The plain "sorry" diagnostic only gives the "current" location, which is
typically the last line of the function or translation unit by time we get to
the back end.
GCN uses "sorry" to report unsupported language features, such as static
constructors, so it's useful to have a "sorry_at" variant.
This patch implements "sorry_at" according to the pattern of the other "at"
variants.
2018-09-11 Andrew Stubbs <ams@codesourcery.com>
gcc/
* diagnostic-core.h (sorry_at): New prototype.
* diagnostic.c (sorry_at): New function.
From-SVN: r264204
Aldy Hernandez [Tue, 11 Sep 2018 10:19:45 +0000 (10:19 +0000)]
tree-vrp (extract_range_from_binary_expr_1): Treat all divisions by zero as VR_UNDEFINED.
* tree-vrp (extract_range_from_binary_expr_1): Treat all divisions
by zero as VR_UNDEFINED.
From-SVN: r264203
Joey Ye [Tue, 11 Sep 2018 08:55:25 +0000 (08:55 +0000)]
gcov.exp (verify-intermediate): Add missing close.
2018-09-11 Joey Ye <joey.ye@arm.com>
* lib/gcov.exp (verify-intermediate): Add missing close.
From-SVN: r264202
Janus Weil [Tue, 11 Sep 2018 06:33:39 +0000 (08:33 +0200)]
re PR fortran/86830 (Contiguous array pointer function result not recognized as contiguous)
fix PR 86830
2018-09-11 Janus Weil <janus@gcc.gnu.org>
PR fortran/86830
* expr.c (gfc_is_simply_contiguous): Handle type-bound procedure calls
with non-polymorphic objects.
2018-09-11 Janus Weil <janus@gcc.gnu.org>
PR fortran/86830
* gfortran.dg/typebound_call_30.f90: New test case.
From-SVN: r264201
GCC Administrator [Tue, 11 Sep 2018 00:16:33 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264200
Janus Weil [Mon, 10 Sep 2018 21:25:33 +0000 (23:25 +0200)]
re PR fortran/85395 ([F03] private clause contained in derived type acquires spurious scope)
fix PR 85395
2018-09-10 Janus Weil <janus@gcc.gnu.org>
PR fortran/85395
* decl.c (match_binding_attributes): Use correct default accessibility
for procedure pointer components.
2018-09-10 Janus Weil <janus@gcc.gnu.org>
PR fortran/85395
* gfortran.dg/proc_ptr_comp_52.f90: New test case.
From-SVN: r264196
Uros Bizjak [Mon, 10 Sep 2018 19:13:49 +0000 (21:13 +0200)]
i386.md (<sincos>xf2): Rename from *<sincos>xf2_i387.
* config/i386/i386.md (<sincos>xf2): Rename from *<sincos>xf2_i387.
(*<sincos>_extend<mode>xf2_i387): Remove insn pattern.
(<sincos>mode2): New expander.
(sincos_extend<mode>xf3_i387): Remove insn pattern.
(sincos -> sin, cos splitters): Remove splitter patterns.
(sincos<mode>3): Change operand 2 predicate to general_operand.
Extend operand 2 to XFmode and generate sincosxf3 insn.
(fptanxf4_i387): Change mode of operands 0 and 3 to SFmode.
Change operand 3 predicate to const1_operand.
(fptan_extend<mode>xf4_i387): Remove insn pattern.
(tanxf2): Update operands in the call to fptanxf4_i387.
(tan<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate tanxf3 insn.
(atan2xf3): Rename from *fpatanxf3_i387.
(fpatan_extend<mode>xf3_i387): Remove insn pattern.
(atan2xf3): Remove expander.
(atan2<mode<3): Change operand 1 and 2 predicates to general_operand.
Extend operands 1 and 2 to XFmode and generate atan2xf3 insn.
(atan<mode>2): Change operand 1 predicate to general_operand.
Extend operand 1 to XFmode and generate atanxf3 insn.
From-SVN: r264195
Uros Bizjak [Mon, 10 Sep 2018 18:46:11 +0000 (20:46 +0200)]
i386.md (x87/SSE constant load splitter): Use memory_operand instead of nonimmediate_operand for input operand predicate.
* config/i386/i386.md (x87/SSE constant load splitter): Use
memory_operand instead of nonimmediate_operand for input operand
predicate.
From-SVN: r264194
Marek Polacek [Mon, 10 Sep 2018 14:49:18 +0000 (14:49 +0000)]
class.c (build_vtbl_ref): Remove.
* class.c (build_vtbl_ref): Remove.
(build_vtbl_ref_1): Rename to build_vtbl_ref.
(build_vfn_ref): Call build_vtbl_ref instead of build_vtbl_ref_1.
From-SVN: r264193
GCC Administrator [Mon, 10 Sep 2018 00:16:42 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264189
Uros Bizjak [Sun, 9 Sep 2018 21:32:08 +0000 (23:32 +0200)]
i386.md (float partial SSE register stall splitter): Move splitter near its instruction pattern.
* config/i386/i386.md (float partial SSE register stall splitter): Move
splitter near its instruction pattern.
(float_extend partial SSE register stall splitter): Ditto.
(float_truncate partial SSE register stall splitter): Ditto.
From-SVN: r264185
Hans-Peter Nilsson [Sun, 9 Sep 2018 18:13:18 +0000 (18:13 +0000)]
re PR target/86794 (mmix port needs updating for CVE-2017-5753)
PR target/86794
* config/mmix/mmix.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
to speculation_safe_value_not_needed.
From-SVN: r264184
Hans-Peter Nilsson [Sun, 9 Sep 2018 18:12:14 +0000 (18:12 +0000)]
re PR target/85666 (gcc-8.0.1 fails to build mmix target: gcc/libgcc/libgcc2.h:203:20: internal compiler error: in leaf_function_p, at final.c:4488)
PR target/85666
* config/mmix/mmix.c (mmix_assemble_integer): Handle byte-size
non-CONST_INT rtx:es using assemble_integer_with_op ".byte".
From-SVN: r264183
Hans-Peter Nilsson [Sun, 9 Sep 2018 18:05:48 +0000 (18:05 +0000)]
re PR target/85666 (gcc-8.0.1 fails to build mmix target: gcc/libgcc/libgcc2.h:203:20: internal compiler error: in leaf_function_p, at final.c:4488)
PR target/85666
* config/mmix/mmix.c (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS): Don't
call leaf_function_p, instead use has_hard_reg_initial_val.
From-SVN: r264182
Ian Lance Taylor [Sun, 9 Sep 2018 13:26:17 +0000 (13:26 +0000)]
compiler: make sure type descriptor initializers go in .rodata
When creating type descriptor variables, the compiler (specifically
Type::make_type_descriptor_var) invokes the immutable_struct() and
immutable_struct_set_init() back end methods, so as to insure that
these items go into the ".rodata" section of the generate object file.
The expression initializers for these variables can contain nested
subexpressions, however, and these subexpressions were not always
being placed into .rodata. This patch changes the backend-gen code for
slice initializers to emit implicit variables into .rodata if those
initializers are part of a type descriptor init.
Reviewed-on: https://go-review.googlesource.com/132596
From-SVN: r264181
Nathan Sidwell [Sun, 9 Sep 2018 07:42:17 +0000 (07:42 +0000)]
[PATCH] internalize a driver fn
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00462.html
* gcc.h (pfatal_with_name): Don't declare here.
* gcc.c (pfatal_with_name): Make static.
From-SVN: r264178
Xianmiao Qu [Sun, 9 Sep 2018 04:06:16 +0000 (04:06 +0000)]
csky.md (*cskyv2_adddi3, [...]): Add earlyclobber.
2018-09-09 Xianmiao Qu <xianmiao_qu@c-sky.com>
* config/csky/csky.md (*cskyv2_adddi3, *cskyv2_subdi3): Add
earlyclobber.
From-SVN: r264177
GCC Administrator [Sun, 9 Sep 2018 00:16:52 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264176
Marek Polacek [Sat, 8 Sep 2018 17:36:08 +0000 (17:36 +0000)]
PR c++/87150 - wrong ctor with maybe-rvalue semantics.
* call.c (struct conversion): Update commentary.
(standard_conversion): Set rvaluedness_matches_p if LOOKUP_PREFER_RVALUE
for ck_base.
* g++.dg/cpp0x/move-return2.C: New test.
From-SVN: r264172
Jason Merrill [Sat, 8 Sep 2018 16:00:02 +0000 (12:00 -0400)]
PR c++/86678 - constexpr function with non-constant after return.
In this testcase, the call to f() can never be a constant
expression, but that's not a problem because it isn't always
reached by calls to g. We were wrongly rejecting this because
potential_constant_expression_1 lacked the jump tracking that
cxx_eval_constant_expression has. So this patch adds a simpler
version of that tracking.
* constexpr.c (potential_constant_expression_1): Add jump_target.
(breaks): Check for BREAK_STMT.
(continues): Check for CONTINUE_STMT.
From-SVN: r264171
Marek Polacek [Sat, 8 Sep 2018 14:31:24 +0000 (14:31 +0000)]
cxx-pretty-print.c (cxx_pretty_printer::statement): Handle RANGE_FOR_INIT_STMT.
* cxx-pretty-print.c (cxx_pretty_printer::statement) <case
RANGE_FOR_SMT>: Handle RANGE_FOR_INIT_STMT.
From-SVN: r264170
Marek Polacek [Sat, 8 Sep 2018 14:27:25 +0000 (14:27 +0000)]
array-init.c: Add dg-prune-output.
* c-c++-common/array-init.c: Add dg-prune-output.
* g++.dg/cpp0x/lambda/lambda-const-this.C: Add dg-warning.
* g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-nsdmi1.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-nsdmi4.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-this.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-this17.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-this18.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-this2.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-this8.C: Likewise.
* g++.dg/cpp1y/pr64382.C: Likewise.
* g++.dg/cpp1y/pr77739.C: Likewise.
* g++.dg/cpp1z/lambda-this1.C: Likewise.
* g++.dg/cpp1z/lambda-this2.C: Likewise.
* g++.dg/template/crash84.C: Adjust dg-error.
From-SVN: r264169
John David Anglin [Sat, 8 Sep 2018 13:20:23 +0000 (13:20 +0000)]
re PR rtl-optimization/85458 (FAIL: gcc.dg/pr83480.c (internal compiler error))
PR rtl-optimization/85458
* sel-sched.c (sel_target_adjust_priority): Allow backend adjust
priority hook to reduce the priority of EXPR.
From-SVN: r264168
GCC Administrator [Sat, 8 Sep 2018 00:16:42 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264167
Janne Blomqvist [Fri, 7 Sep 2018 18:59:50 +0000 (21:59 +0300)]
Remove unused init_unsigned_integer function.
As pointed out by Bernhard Reutner-Fischer, this function is unused
since the fix for PR 53796 in November 2017.
2018-09-07 Janne Blomqvist <jb@gcc.gnu.org>
* runtime/environ.c (init_unsigned_integer): Remove.
From-SVN: r264163
Uros Bizjak [Fri, 7 Sep 2018 16:01:04 +0000 (18:01 +0200)]
* config/i386/i386.md (float<SWI48x:mode><MODEF:mode>2) Enable
DImode for x87 on 32bit targets. Conditionally disable x87 modes
with X87_ENABLE_FLOAT. Remove preparation code.
(*float<SWI48:mode><MODEF:mode>2): Rename from
*float<SWI48:mode><MODEF:mode>2_mixed. Handle x87, SSE and mixed
math using "enabled" attribute.
(*floatdi<MODEF:mode>2_i387): Rename from
*float<SWI48x:mode><MODEF:mode>2_i387. Handle only DImode and
enable for 32bit targets only.
(floatdi<X87MODEF:mode>2_i387_with_xmm pre-reload splitter): New
splitter.
(floatdi<X87MODEF:mode>2_i387_with_xmm): Use register_operand
as operand 1 predicate. Rewrite as define_insn_and_split.
(floatdi<X87MODEF:mode>2_i387_with_xmm memory input splitter): Remove.
From-SVN: r264160
Marek Polacek [Fri, 7 Sep 2018 15:52:54 +0000 (15:52 +0000)]
direct-enum-init1.C: Remove "inside" from diagnostic messages.
* g++.dg/cpp1z/direct-enum-init1.C: Remove "inside" from diagnostic
messages.
From-SVN: r264159
Marek Polacek [Fri, 7 Sep 2018 14:12:48 +0000 (14:12 +0000)]
PR c++/87152 - range-based for loops with initializer broken in templates.
* constexpr.c (potential_constant_expression_1) <case RANGE_FOR_STMT>:
Recur into RANGE_FOR_INIT_STMT.
* cp-tree.def: Add RANGE_FOR_INIT_STMT to RANGE_FOR_STMT.
* cp-tree.h (RANGE_FOR_INIT_STMT): Define.
* dump.c (cp_dump_tree) <case RANGE_FOR_STMT>: Also dump
RANGE_FOR_INIT_STMT.
* pt.c (tsubst_expr) <case RANGE_FOR_STMT>: Recur into
RANGE_FOR_INIT_STMT.
* semantics.c (begin_range_for_stmt): Adjust call to build_stmt.
Do put the init statement in RANGE_FOR_INIT_STMT.
(finish_range_for_decl): Pop it for templates.
* g++.dg/cpp2a/range-for11.C: New test.
* g++.dg/cpp2a/range-for12.C: New test.
* g++.dg/cpp2a/range-for13.C: New test.
* g++.dg/cpp2a/range-for14.C: New test.
* g++.dg/cpp2a/range-for15.C: New test.
* g++.dg/cpp2a/range-for16.C: New test.
* g++.dg/cpp2a/range-for17.C: New test.
* g++.dg/cpp2a/range-for18.C: New test.
* g++.dg/parse/error61.C (foo): Adjust dg-error.
From-SVN: r264158
Jason Merrill [Fri, 7 Sep 2018 13:12:24 +0000 (09:12 -0400)]
Fix C++17 expected errors for pointer to member function template args.
* g++.dg/template/ptrmem20.C: Adjust expected diagnostic.
* g++.dg/template/ptrmem8.C: Likewise.
From-SVN: r264157
GCC Administrator [Fri, 7 Sep 2018 00:16:44 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264155
Uros Bizjak [Thu, 6 Sep 2018 21:39:47 +0000 (23:39 +0200)]
reg-stack.c (get_true_reg): Reorder to fallthru to FLOAT case.
* reg-stack.c (get_true_reg) <case FLOAT_TRUNCATE>: Reorder
to fallthru to FLOAT case.
From-SVN: r264151
Will Schmidt [Thu, 6 Sep 2018 19:47:06 +0000 (19:47 +0000)]
re PR target/86731 (Miscompiles vec_sl at -O3 with -fwrapv on ppc64el)
[gcc]
2018-09-06 Will Schmidt <will_schmidt@vnet.ibm.com>
PR target/86731
* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Update logic
around folding of vec_sl to handle out of range shift values.
[testsuite]
2018-08-15 Will Schmidt <will_schmidt@vnet.ibm.com>
PR target/86731
* gcc.target/powerpc/pr86731.c: New test.
* gcc.target/powerpc/pr86731-longlong.c: New test.
* gcc.target/powerpc/pr86731-fwrapv.c: New test.
* gcc.target/powerpc/pr86731-fwrapv-longlong.c: New test.
* gcc.target/powerpc/pr86731-nogimplefold.c: New test.
* gcc.target/powerpc/pr86731-nogimplefold-longlong.c: New test.
From-SVN: r264150
Uros Bizjak [Thu, 6 Sep 2018 18:53:01 +0000 (20:53 +0200)]
i386.md (fix_trunc<mode>_fisttp_i387_1): Remove.
* config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Remove.
Update callers to gen_fix_trunc<mode>_i387_fisttp
(fix_trunc<mode>_i387_fisttp): Change operand 0 predicate to
nonimmediate_operand.
(fix_trunc<mode>_i387_fisttp_with_temp): Remove insn pattern
and corresponding splitters.
(*fix_trunc<mode>_i387_1): Always expand with fix_trunc<mode>_i387.
(fix_truncdi_i387): Change operand 0 predicate to nonimmediate_operand.
(fix_truncdi_i387_with_temp): Remove insn pattern
and corresponding splitters.
(fix_trunc<mode>_i387): Change operand 0 predicate to
nonimmediate_operand.
(fix_trunc<mode>_i387_with_temp): Remove insn pattern
and corresponding splitters.
(*fistdi2_1): Remove.
(fistdi2): Ditto.
(fistdi2_with_temp): Remove insn pattern and corresponding splitters.
(lrintxfdi2): Remove expander. Reimplement as define_insn.
(*fist<mode>2_1): Remove.
(fist<mode>2): Ditto.
(fist<mode>2_with_temp): Remove insn pattern and corresponding
splitters.
(lrintxf<mode>2): Remove expander. Reimplement as define_insn.
(*fist<mode>2_<rounding>_1): Always expand with fist<mode>2_<rounding>.
(fistdi2_<rounding>): Change operand 0 predicate to
nonimmediate_operand.
(fistdi2_<rounding>_with_temp): Remove insn pattern
and corresponding splitters.
(fist<mode>2_<rounding>): Change operand 0 predicate to
nonimmediate_operand.
(fist<mode>2_<rounding>_with_temp): Remove insn pattern
and corresponding splitters.
(*fixuns_trunc<mode>si2_avx512f_zext): Depend on TARGET_SSE_MATH.
From-SVN: r264148
Bernd Edlinger [Thu, 6 Sep 2018 15:39:48 +0000 (15:39 +0000)]
varasm.c (output_constructor_regular_field): Check TYPE_SIZE_UNIT of the init value.
* varasm.c (output_constructor_regular_field): Check TYPE_SIZE_UNIT of
the init value.
* c-common.c (complete_flexible_array_elts): New helper function.
* c-common.h (complete_flexible_array_elts): Declare.
* c-decl.c (finish_decl): Call complete_flexible_array_elts.
* decl.c (check_initializer): Call cp_complete_array_type.
From-SVN: r264147
Will Schmidt [Thu, 6 Sep 2018 15:34:58 +0000 (15:34 +0000)]
rs6000.c (rs6000_gimple_fold_builtin): Add support for early gimple folding of vec_splat().
[gcc]
2018-09-06 Will Schmidt <will_schmidt@vnet.ibm.com>
* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
early gimple folding of vec_splat().
* tree-vect-generic.c: Remove static from tree_vec_extract() definition.
* gimple-fold.h: Add an extern define for tree_vec_extract().
From-SVN: r264146
Will Schmidt [Thu, 6 Sep 2018 13:52:14 +0000 (13:52 +0000)]
rs6000.c (fold_mergehl_helper): Add types_compatible_p wrappers around TREE_TYPE comparisons.
[gcc]
2018-08-20 Will Schmidt <will_schmidt@vnet.ibm.com>
* config/rs6000/rs6000.c (fold_mergehl_helper): Add types_compatible_p
wrappers around TREE_TYPE comparisons.
From-SVN: r264145
Ilya Leoshkevich [Thu, 6 Sep 2018 07:38:42 +0000 (07:38 +0000)]
S/390: Prohibit SYMBOL_REF in UNSPECV_CAS
Inhibit constant propagation inlining SYMBOL_REF loads into
UNSPECV_CAS. Even though reload can later undo it, the resulting
code will be less efficient.
gcc/ChangeLog:
2018-09-06 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/80080
* config/s390/predicates.md: Add nonsym_memory_operand.
* config/s390/s390.c (s390_legitimize_cs_operand): If operand
contains a SYMBOL_REF, load it into an intermediate pseudo.
(s390_emit_compare_and_swap): Legitimize operand.
* config/s390/s390.md: Use the new nonsym_memory_operand
with UNSPECV_CAS patterns.
gcc/testsuite/ChangeLog:
2018-09-06 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/80080
* gcc.target/s390/pr80080-3.c: New test.
* gcc.target/s390/s390.exp: Make sure the new test passes
on all optimization levels.
From-SVN: r264143
Ilya Leoshkevich [Thu, 6 Sep 2018 07:35:35 +0000 (07:35 +0000)]
S/390: Register pass_s390_early_mach statically
The dump file used to come at the end of the sorted dump file list,
because the pass was registered dynamically. This did not reflect the
order in which passes are executed. Static registration fixes this:
* foo4.c.277r.split2
* foo4.c.281r.early_mach
* foo4.c.282r.pro_and_epilogue
gcc/ChangeLog:
2018-09-06 Ilya Leoshkevich <iii@linux.ibm.com>
PR target/80080
* config/s390/s390-passes.def: New file.
* config/s390/s390-protos.h (class rtl_opt_pass): Add forward
declaration.
(make_pass_s390_early_mach): Add declaration.
* config/s390/s390.c (make_pass_s390_early_mach):
(s390_option_override): Remove dynamic registration.
* config/s390/t-s390: Add s390-passes.def.
From-SVN: r264142
Ilya Leoshkevich [Thu, 6 Sep 2018 07:31:23 +0000 (07:31 +0000)]
S/390: Remove UNSPEC_LTREL_BASE
It was needed only for g5/g6 machines, which are now gone.
gcc/ChangeLog:
2018-09-06 Ilya Leoshkevich <iii@linux.ibm.com>
* config/s390/s390.c (s390_decompose_constant_pool_ref):
Remove UNSPEC_LTREL_BASE check.
(annotate_constant_pool_refs): Likewise.
(find_constant_pool_ref): Likewise.
(find_ltrel_base): Removed.
(replace_ltrel_base): Removed.
(s390_mainpool_finish): Remove replace_ltrel_base call.
(s390_chunkify_start): Remove pending LTREL_BASE logic.
(s390_chunkify_finish): Remove replace_ltrel_base call.
* config/s390/s390.md: Remove UNSPEC_LTREL_BASE.
From-SVN: r264141
Marek Polacek [Thu, 6 Sep 2018 00:38:13 +0000 (00:38 +0000)]
PR c++/86982, -Wreturn-local-addr and std::move and std::forward.
* typeck.c (maybe_warn_about_returning_address_of_local): Handle calls
to std::move or std::forward.
(is_std_forward_p): New function.
* g++.dg/warn/Wreturn-local-addr-5.C: New test.
From-SVN: r264139
GCC Administrator [Thu, 6 Sep 2018 00:16:49 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r264138
Hans-Peter Nilsson [Wed, 5 Sep 2018 23:14:42 +0000 (23:14 +0000)]
re PR target/86779 (Cris port needs updating for CVE-2017-5753)
PR target/86779
* config/cris/cris.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
to speculation_safe_value_not_needed.
From-SVN: r264134
Cesar Philippidis [Wed, 5 Sep 2018 22:27:31 +0000 (15:27 -0700)]
[nvptx] Basic -misa support for nvptx
gcc/
* config/nvptx/nvptx-opts.h: New file.
* config/nvptx/nvptx.c (nvptx_file_start): Print the correct .target.
* config/nvptx/nvptx.h: Include "nvptx-opts.h".
(ASM_SPEC): Define.
(TARGET_SM35): New macro.
* config/nvptx/nvptx.md (atomic_fetch_<logic><mode>): Enable with the
correct predicate.
* config/nvptx/nvptx.opt (ptx_isa, sm_30, sm_35): New enum and its
values.
(misa=): New option.
* doc/invoke.texi (Nvidia PTX Options): Document -misa.
gcc/testsuite/
* gcc.target/nvptx/atomic_fetch-1.c: New test.
* gcc.target/nvptx/atomic_fetch-1.c: New test.
Co-Authored-By: Bernd Schmidt <bernds_cb1@t-online.de>
From-SVN: r264133
Marek Polacek [Wed, 5 Sep 2018 21:17:47 +0000 (21:17 +0000)]
PR c++/87109, wrong overload with ref-qualifiers.
* call.c (build_user_type_conversion_1): Use NULL instead of 0. Bail
out if performing the maybe-rvalue overload resolution and a conversion
function is getting called.
* g++.dg/cpp0x/ref-qual19.C: New test.
From-SVN: r264132
Uros Bizjak [Wed, 5 Sep 2018 18:01:42 +0000 (20:01 +0200)]
i386.md (truncdfsf2): Remove expander.
* config/i386/i386.md (truncdfsf2): Remove expander.
(truncdfsf2_with_temp): Ditto.
(truncxf<mode>2): Ditto.
(*truncdfsf_fast_mixed): Remove insn pattern.
(*truncdfsf_fast_i387): Ditto.
(*truncdfsf_mixed): Ditto.
(*truncdfsf_i387): Ditto.
(*truncdfsf2_i387_1): Ditto.
(*truncxfsf2_mixed): Ditto.
(*truncxfdf2_mixed): Ditto.
(*truncxf<mode>2_i387_noop): Ditto. Update callers
to call gen_truncxf<mode>2 instead.
(*truncxf<mode>2_i387): Remove.
(reg->reg splitters): Remove splitter pattern.
(reg->mem splitters): Ditto.
(truncdfsf2): New insn pattern.
(truncxf<mode>2): Ditto.
From-SVN: r264130
Bernhard Reutner-Fischer [Wed, 5 Sep 2018 15:31:13 +0000 (17:31 +0200)]
PR52665 do not let .ident confuse assembler scan tests
A branch with a name matching scan-assembler pattern triggers
inappropriate FAIL.
E.g. branch fixups-testsuite and
- gcc.target/i386/pr65871-?.c (scan-assembler-not "test")
- gcc.target/i386/pr41442.c (scan-assembler-times "test|cmp" 2)
etc.
This is a recurring problem as can be seen by some -fno-ident additions
by commits from e.g. Michael Meissner over the years: builtins-58.c,
powerpc/pr46728-?.c
The patch below adds -fno-ident if a testcase contains one of
scan-assembler, scan-assembler-not or scan-assembler-times.
Regression tested on x86_64-unknown-linux on a fixups-testsuite branch
where it fixes several false FAILs without regressions.
gcc/testsuite/ChangeLog
2016-06-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
PR testsuite/52665
* lib/gcc-dg.exp (gcc-dg-test-1): Iterate over _required_options.
* lib/target-supports.exp (scan-assembler_required_options,
scan-assembler-not_required_options,
scan-assembler-times_required_options): Add -fno-ident.
* lib/scanasm.exp (scan-assembler-times): Fix error message.
* c-c++-common/ident-0a.c: New test.
* c-c++-common/ident-0b.c: New test.
* c-c++-common/ident-1a.c: New test.
* c-c++-common/ident-1b.c: New test.
* c-c++-common/ident-2a.c: New test.
* c-c++-common/ident-2b.c: New test.
From-SVN: r264128
Jonathan Wakely [Wed, 5 Sep 2018 15:18:16 +0000 (16:18 +0100)]
* libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.
From-SVN: r264127
Kyrylo Tkachov [Wed, 5 Sep 2018 13:39:38 +0000 (13:39 +0000)]
Optimise sqrt reciprocal multiplications
This patch aims to optimise sequences involving uses of 1.0 / sqrt (a) under -freciprocal-math and -funsafe-math-optimizations.
In particular consider:
x = 1.0 / sqrt (a);
r1 = x * x; // same as 1.0 / a
r2 = a * x; // same as sqrt (a)
If x, r1 and r2 are all used further on in the code, this can be transformed into:
tmp1 = 1.0 / a
tmp2 = sqrt (a)
tmp3 = tmp1 * tmp2
x = tmp3
r1 = tmp1
r2 = tmp2
A bit convoluted, but this saves us one multiplication and, more importantly, the sqrt and division are now independent.
This also allows optimisation of a subset of these expressions.
For example:
x = 1.0 / sqrt (a)
r1 = x * x
can be transformed to r1 = 1.0 / a, eliminating the sqrt if x is not used anywhere else.
And similarly:
x = 1.0 / sqrt (a)
r1 = a * x
can be transformed to sqrt (a) eliminating the division.
For the testcase:
double res, res2, tmp;
void
foo (double a, double b)
{
tmp = 1.0 / __builtin_sqrt (a);
res = tmp * tmp;
res2 = a * tmp;
}
We now generate for aarch64 with -Ofast:
foo:
fmov d2, 1.0e+0
adrp x2, res2
fsqrt d1, d0
adrp x1, res
fdiv d0, d2, d0
adrp x0, tmp
str d1, [x2, #:lo12:res2]
fmul d1, d1, d0
str d0, [x1, #:lo12:res]
str d1, [x0, #:lo12:tmp]
ret
where before it generated:
foo:
fsqrt d2, d0
fmov d1, 1.0e+0
adrp x1, res2
adrp x2, tmp
adrp x0, res
fdiv d1, d1, d2
fmul d0, d1, d0
fmul d2, d1, d1
str d1, [x2, #:lo12:tmp]
str d0, [x1, #:lo12:res2]
str d2, [x0, #:lo12:res]
ret
As you can see, the new sequence has one fewer multiply and the fsqrt and fdiv are independent.
* tree-ssa-math-opts.c (is_mult_by): New function.
(is_square_of): Use the above.
(optimize_recip_sqrt): New function.
(pass_cse_reciprocals::execute): Use the above.
* gcc.dg/recip_sqrt_mult_1.c: New test.
* gcc.dg/recip_sqrt_mult_2.c: Likewise.
* gcc.dg/recip_sqrt_mult_3.c: Likewise.
* gcc.dg/recip_sqrt_mult_4.c: Likewise.
* gcc.dg/recip_sqrt_mult_5.c: Likewise.
* g++.dg/recip_sqrt_mult_1.C: Likewise.
* g++.dg/recip_sqrt_mult_2.C: Likewise.
From-SVN: r264126
Richard Biener [Wed, 5 Sep 2018 11:44:13 +0000 (11:44 +0000)]
re PR bootstrap/87134 (SEGV in cc1 caused by r263875)
2018-09-05 Richard Biener <rguenther@suse.de>
PR bootstrap/87134
* tree-ssa-sccvn.c (rpo_elim::eliminate_push_avail): Make sure
to zero-init the emplaced vec.
From-SVN: r264125
Martin Liska [Wed, 5 Sep 2018 11:28:49 +0000 (13:28 +0200)]
Group switch cases in switch lowering (PR tree-optimization/87205).
2018-09-05 Martin Liska <mliska@suse.cz>
PR tree-optimization/87205
* tree-switch-conversion.c (pass_lower_switch::execute):
Group cases for switch statements.
2018-09-05 Martin Liska <mliska@suse.cz>
PR tree-optimization/87205
* gcc.dg/tree-ssa/pr87205-2.c: New test.
* gcc.dg/tree-ssa/pr87205.c: New test.
From-SVN: r264124
Richard Biener [Wed, 5 Sep 2018 10:33:41 +0000 (10:33 +0000)]
re PR tree-optimization/87217 (ICE in in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:709 when compiling SPEC2000 starting with r264069)
2018-09-05 Richard Biener <rguenther@suse.de>
PR tree-optimization/87217
* tree-ssa-sccvn.c (vuse_valueize): New.
(vn_reference_lookup_pieces): Use it.
(vn_reference_lookup): Likewise.
* gfortran.dg/pr87217.f: New testcase.
From-SVN: r264121
Hans-Peter Nilsson [Wed, 5 Sep 2018 10:28:45 +0000 (10:28 +0000)]
* io/async.h: Use __gthread_mutex_t, not pthread_mutex_t.
From-SVN: r264120
Nathan Sidwell [Wed, 5 Sep 2018 10:04:58 +0000 (10:04 +0000)]
PR c++/87137] GCC-8 Fix
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01966.html
PR c++/87137
* stor-layout.c (place_field): Scan forwards to check last
bitfield when ms_bitfield_placement is in effect.
gcc/testsuite/
* g++.dg/abi/pr87137.C: New.
From-SVN: r264119
Pádraig Brady [Wed, 5 Sep 2018 09:59:08 +0000 (09:59 +0000)]
[PR c++/87185] ICE in prune-lambdas
https://gcc.gnu.org/ml/gcc-patches/2018-09/msg00249.html
cp/
PR c++/87185
* lambda.c (prune_lambda_captures): Protect against const_vars.get
returning NULL.
testsuite/
PR c++/87185
* g++.dg/pr87185.C: New.
From-SVN: r264118
Richard Biener [Wed, 5 Sep 2018 09:39:34 +0000 (09:39 +0000)]
re PR bootstrap/87225 (tree-vect-stmts.c:3748 error: converting to 'bool' from 'std::nullptr_t' requires direct-initialization [-fpermissive])
2018-09-05 Richard Biener <rguenther@suse.de>
PR bootstrap/87225
* tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus
return.
From-SVN: r264116
Siddhesh Poyarekar [Wed, 5 Sep 2018 09:37:27 +0000 (09:37 +0000)]
[aarch64] Avoid tag collisions for loads falkor
This is a rewrite of the tag collision avoidance patch that Kugan had
written as a machine reorg pass back in February.
The falkor hardware prefetching system uses a combination of the
source, destination and offset to decide which prefetcher unit to
train with the load. This is great when loads in a loop are
sequential but sub-optimal if there are unrelated loads in a loop that
tag to the same prefetcher unit.
This pass attempts to rename the desination register of such colliding
loads using routines available in regrename.c so that their tags do
not collide. This shows some performance gains with mcf and xalancbmk
(~5% each) and will be tweaked further. The pass is placed near the
fag end of the pass list so that subsequent passes don't inadvertantly
end up undoing the renames.
2018-07-02 Siddhesh Poyarekar <siddhesh@sourceware.org>
Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
* config/aarch64/falkor-tag-collision-avoidance.c: New file.
* config.gcc (extra_objs): Build it.
* config/aarch64/t-aarch64 (falkor-tag-collision-avoidance.o):
Likewise.
* config/aarch64/aarch64-passes.def
(pass_tag_collision_avoidance): New pass.
* config/aarch64/aarch64.c (qdf24xx_tunings): Add
AARCH64_EXTRA_TUNE_RENAME_LOAD_REGS to tuning_flags.
(aarch64_classify_address): Remove static qualifier.
(aarch64_address_info, aarch64_address_type): Move to...
* config/aarch64/aarch64-protos.h: ... here.
(make_pass_tag_collision_avoidance): New function.
* config/aarch64/aarch64-tuning-flags.def (rename_load_regs):
New tuning flag.
Co-Authored-By: Kugan Vivekanandarajah <kuganv@linaro.org>
From-SVN: r264115
Martin Liska [Wed, 5 Sep 2018 09:09:46 +0000 (09:09 +0000)]
Fix typo in ChangeLog.
From-SVN: r264114
Martin Liska [Wed, 5 Sep 2018 09:08:07 +0000 (11:08 +0200)]
Fix a scan in test for Darwin target (PR testsuite/87216).
2018-09-05 Martin Liska <mliska@suse.cz>
PR testsuite/87216
* gcc.dg/tree-prof/pr59521-3.c: Update scanned pattern
to support Dawring names.
From-SVN: r264113
Martin Liska [Wed, 5 Sep 2018 08:08:45 +0000 (10:08 +0200)]
GCOV: Print one decimal place in human readable mode.
2018-09-05 Martin Liska <mliska@suse.cz>
* doc/gcov.texi: Update documentation of humar
readable mode.
* gcov.c (format_count): Print one decimal place, it provides
more fine number of situations like '1G' vs. '1.4G'.
2018-09-05 Martin Liska <mliska@suse.cz>
* g++.dg/gcov/loop.C: Update test to support new format.
From-SVN: r264112
Martin Liska [Wed, 5 Sep 2018 08:07:48 +0000 (10:07 +0200)]
Ignore properly -mdirect-move (PR target/87164).
2018-09-05 Martin Liska <mliska@suse.cz>
PR target/87164
* config/rs6000/rs6000.opt: Mark the option as Deprecated.
* optc-gen.awk: Allow 'Var' for Deprecated options in order
to generate a MASK value.
From-SVN: r264111
Marek Polacek [Wed, 5 Sep 2018 02:08:19 +0000 (02:08 +0000)]
cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
* cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
* except.c (build_throw): Use it. Use CP_TYPE_VOLATILE_P.
* typeck.c (treat_lvalue_as_rvalue_p): No longer static. Add PARM_OK
parameter.
(maybe_warn_pessimizing_move): Adjust treat_lvalue_as_rvalue_p call.
(check_return_expr): Likewise.
From-SVN: r264101