]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
6 years agoAdd quotes for -fconstexpr-depth= in an error message.
marxin [Wed, 12 Sep 2018 10:39:45 +0000 (10:39 +0000)] 
Add quotes for -fconstexpr-depth= in an error message.

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

6 years ago PR tree-optimization/86844
jakub [Wed, 12 Sep 2018 09:25:07 +0000 (09:25 +0000)] 
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.

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

6 years ago PR middle-end/87248
jakub [Wed, 12 Sep 2018 09:18:55 +0000 (09:18 +0000)] 
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.

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

6 years ago[debug] Add -gdescribe-dies
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.

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

6 years ago * tree-vrp.c (vrp_shift_undefined_p): Remove.
aldyh [Wed, 12 Sep 2018 07:04:19 +0000 (07:04 +0000)] 
* 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.

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

6 years ago * gimple-ssa-warn-alloca.c
aldyh [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.

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

6 years agoDaily bump.
gccadmin [Wed, 12 Sep 2018 00:16:47 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago * gcc.c (load_specs, execute, run_attempt): Use %qs not '%s'.
nathan [Tue, 11 Sep 2018 21:34:14 +0000 (21:34 +0000)] 
* gcc.c (load_specs, execute, run_attempt): Use %qs not '%s'.

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

6 years ago * reg-stack.c (subst_asm_stack_regs): Call replace_reg also
uros [Tue, 11 Sep 2018 19:36:35 +0000 (19:36 +0000)] 
* reg-stack.c (subst_asm_stack_regs): Call replace_reg also
for clobbers.  Remove obsolete comment.

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

6 years agofix PR 87172
janus [Tue, 11 Sep 2018 17:44:04 +0000 (17:44 +0000)] 
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.

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

6 years ago * config/i386/i386.md (define_attr "type"): Remove mpxmov, mpxmk,
uros [Tue, 11 Sep 2018 16:53:15 +0000 (16:53 +0000)] 
* 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.

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

6 years ago * config/i386/i386.md (fyl2x_extend<mode>xf3_i387): Remove.
uros [Tue, 11 Sep 2018 16:42:35 +0000 (16:42 +0000)] 
* 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.

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

6 years ago2018-09-11 Paul Thomas <pault@gcc.gnu.org>
pault [Tue, 11 Sep 2018 15:59:07 +0000 (15:59 +0000)] 
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.

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

6 years ago[driver] Use regular error routines
nathan [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.

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

6 years agoPR libstdc++/87278 restore support for std::make_shared<volatile T>()
redi [Tue, 11 Sep 2018 11:50:39 +0000 (11:50 +0000)] 
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.

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

6 years agoImplement LWG 2905 changes to constrain unique_ptr constructors
redi [Tue, 11 Sep 2018 10:55:49 +0000 (10:55 +0000)] 
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.

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

6 years agoFix typo in my last ChangeLog entry.
aldyh [Tue, 11 Sep 2018 10:36:20 +0000 (10:36 +0000)] 
Fix typo in my last ChangeLog entry.

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

6 years agoAdd sorry_at diagnostic function.
ams [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.

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

6 years ago * tree-vrp (extract_range_from_binary_expr_1): Treat all divisions
aldyh [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.

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

6 years ago2018-09-11 Joey Ye <joey.ye@arm.com>
jye2 [Tue, 11 Sep 2018 08:55:25 +0000 (08:55 +0000)] 
2018-09-11  Joey Ye  <joey.ye@arm.com>

    * lib/gcov.exp (verify-intermediate): Add missing close.

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

6 years agofix PR 86830
janus [Tue, 11 Sep 2018 06:33:39 +0000 (06:33 +0000)] 
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.

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

6 years agoDaily bump.
gccadmin [Tue, 11 Sep 2018 00:16:33 +0000 (00:16 +0000)] 
Daily bump.

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

6 years agofix PR 85395
janus [Mon, 10 Sep 2018 21:25:33 +0000 (21:25 +0000)] 
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.

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

6 years ago * config/i386/i386.md (<sincos>xf2): Rename from *<sincos>xf2_i387.
uros [Mon, 10 Sep 2018 19:13:49 +0000 (19:13 +0000)] 
* 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.

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

6 years ago * config/i386/i386.md (x87/SSE constant load splitter): Use
uros [Mon, 10 Sep 2018 18:46:11 +0000 (18:46 +0000)] 
* config/i386/i386.md (x87/SSE constant load splitter): Use
memory_operand instead of nonimmediate_operand for input operand
predicate.

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

6 years ago * class.c (build_vtbl_ref): Remove.
mpolacek [Mon, 10 Sep 2018 14:49:18 +0000 (14:49 +0000)] 
* 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.

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

6 years agoDaily bump.
gccadmin [Mon, 10 Sep 2018 00:16:42 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago * config/i386/i386.md (float partial SSE register stall splitter): Move
uros [Sun, 9 Sep 2018 21:32:08 +0000 (21:32 +0000)] 
* 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.

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

6 years ago PR target/86794
hp [Sun, 9 Sep 2018 18:13:18 +0000 (18:13 +0000)] 
PR target/86794
* config/mmix/mmix.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
to speculation_safe_value_not_needed.

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

6 years ago PR target/85666
hp [Sun, 9 Sep 2018 18:12:14 +0000 (18:12 +0000)] 
PR target/85666
* config/mmix/mmix.c (mmix_assemble_integer): Handle byte-size
non-CONST_INT rtx:es using assemble_integer_with_op ".byte".

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

6 years ago PR target/85666
hp [Sun, 9 Sep 2018 18:05:48 +0000 (18:05 +0000)] 
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.

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

6 years ago compiler: make sure type descriptor initializers go in .rodata
ian [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

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

6 years ago[PATCH] internalize a driver fn
nathan [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.

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

6 years ago2018-09-09 Xianmiao Qu <xianmiao_qu@c-sky.com>
xianmiao [Sun, 9 Sep 2018 04:06:16 +0000 (04:06 +0000)] 
2018-09-09  Xianmiao Qu  <xianmiao_qu@c-sky.com>

* config/csky/csky.md (*cskyv2_adddi3, *cskyv2_subdi3): Add
earlyclobber.

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

6 years agoDaily bump.
gccadmin [Sun, 9 Sep 2018 00:16:52 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago PR c++/87150 - wrong ctor with maybe-rvalue semantics.
mpolacek [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.

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

6 years ago PR c++/86678 - constexpr function with non-constant after return.
jason [Sat, 8 Sep 2018 16:00:02 +0000 (16:00 +0000)] 
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.

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

6 years ago * cxx-pretty-print.c (cxx_pretty_printer::statement) <case
mpolacek [Sat, 8 Sep 2018 14:31:24 +0000 (14:31 +0000)] 
* cxx-pretty-print.c (cxx_pretty_printer::statement) <case
RANGE_FOR_SMT>: Handle RANGE_FOR_INIT_STMT.

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

6 years ago * c-c++-common/array-init.c: Add dg-prune-output.
mpolacek [Sat, 8 Sep 2018 14:27:25 +0000 (14:27 +0000)] 
* 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.

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

6 years ago PR rtl-optimization/85458
danglin [Sat, 8 Sep 2018 13:20:23 +0000 (13:20 +0000)] 
PR rtl-optimization/85458
* sel-sched.c (sel_target_adjust_priority): Allow backend adjust
priority hook to reduce the priority of EXPR.

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

6 years agoDaily bump.
gccadmin [Sat, 8 Sep 2018 00:16:42 +0000 (00:16 +0000)] 
Daily bump.

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

6 years agoRemove unused init_unsigned_integer function.
jb [Fri, 7 Sep 2018 18:59:50 +0000 (18:59 +0000)] 
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.

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

6 years ago * config/i386/i386.md (float<SWI48x:mode><MODEF:mode>2) Enable
uros [Fri, 7 Sep 2018 16:01:04 +0000 (16:01 +0000)] 
* 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.

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

6 years ago * g++.dg/cpp1z/direct-enum-init1.C: Remove "inside" from diagnostic
mpolacek [Fri, 7 Sep 2018 15:52:54 +0000 (15:52 +0000)] 
* g++.dg/cpp1z/direct-enum-init1.C: Remove "inside" from diagnostic
messages.

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

6 years ago PR c++/87152 - range-based for loops with initializer broken in templates.
mpolacek [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.

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

6 years agoFix C++17 expected errors for pointer to member function template args.
jason [Fri, 7 Sep 2018 13:12:24 +0000 (13:12 +0000)] 
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.

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

6 years agoDaily bump.
gccadmin [Fri, 7 Sep 2018 00:16:44 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago * reg-stack.c (get_true_reg) <case FLOAT_TRUNCATE>: Reorder
uros [Thu, 6 Sep 2018 21:39:47 +0000 (21:39 +0000)] 
* reg-stack.c (get_true_reg) <case FLOAT_TRUNCATE>: Reorder
to fallthru to FLOAT case.

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

6 years ago[gcc]
willschm [Thu, 6 Sep 2018 19:47:06 +0000 (19:47 +0000)] 
[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.

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

6 years ago * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Remove.
uros [Thu, 6 Sep 2018 18:53:01 +0000 (18:53 +0000)] 
* 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.

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

6 years ago * varasm.c (output_constructor_regular_field): Check TYPE_SIZE_UNIT of
law [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.

* 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.

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

6 years ago[gcc]
willschm [Thu, 6 Sep 2018 15:34:58 +0000 (15:34 +0000)] 
[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().

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

6 years ago[gcc]
willschm [Thu, 6 Sep 2018 13:52:14 +0000 (13:52 +0000)] 
[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.

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

6 years agoS/390: Prohibit SYMBOL_REF in UNSPECV_CAS
krebbel [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.

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

6 years agoS/390: Register pass_s390_early_mach statically
krebbel [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.

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

6 years agoS/390: Remove UNSPEC_LTREL_BASE
krebbel [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.

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

6 years ago PR c++/86982, -Wreturn-local-addr and std::move and std::forward.
mpolacek [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.

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

6 years agoDaily bump.
gccadmin [Thu, 6 Sep 2018 00:16:49 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago PR target/86779
hp [Wed, 5 Sep 2018 23:14:42 +0000 (23:14 +0000)] 
PR target/86779
* config/cris/cris.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine
to speculation_safe_value_not_needed.

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

6 years ago[nvptx] Basic -misa support for nvptx
cesar [Wed, 5 Sep 2018 22:27:31 +0000 (22:27 +0000)] 
[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.

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

6 years ago PR c++/87109, wrong overload with ref-qualifiers. 23/head
mpolacek [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.

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

6 years ago * config/i386/i386.md (truncdfsf2): Remove expander.
uros [Wed, 5 Sep 2018 18:01:42 +0000 (18:01 +0000)] 
* 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.

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

6 years agoPR52665 do not let .ident confuse assembler scan tests
aldot [Wed, 5 Sep 2018 15:31:13 +0000 (15:31 +0000)] 
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.

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

6 years ago * libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.
redi [Wed, 5 Sep 2018 15:18:16 +0000 (15:18 +0000)] 
* libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.

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

6 years agoOptimise sqrt reciprocal multiplications
ktkachov [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.

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

6 years ago2018-09-05 Richard Biener <rguenther@suse.de>
rguenth [Wed, 5 Sep 2018 11:44:13 +0000 (11:44 +0000)] 
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.

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

6 years agoGroup switch cases in switch lowering (PR tree-optimization/87205).
marxin [Wed, 5 Sep 2018 11:28:49 +0000 (11:28 +0000)] 
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.

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

6 years ago2018-09-05 Richard Biener <rguenther@suse.de>
rguenth [Wed, 5 Sep 2018 10:33:41 +0000 (10:33 +0000)] 
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.

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

6 years ago * io/async.h: Use __gthread_mutex_t, not pthread_mutex_t.
hp [Wed, 5 Sep 2018 10:28:45 +0000 (10:28 +0000)] 
* io/async.h: Use __gthread_mutex_t, not pthread_mutex_t.

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

6 years agoPR c++/87137] GCC-8 Fix
nathan [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.

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

6 years ago[PR c++/87185] ICE in prune-lambdas
nathan [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.

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

6 years ago2018-09-05 Richard Biener <rguenther@suse.de>
rguenth [Wed, 5 Sep 2018 09:39:34 +0000 (09:39 +0000)] 
2018-09-05  Richard Biener  <rguenther@suse.de>

PR bootstrap/87225
* tree-vect-stmts.c (vectorizable_simd_clone_call): Fix bogus
return.

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

6 years ago[aarch64] Avoid tag collisions for loads falkor
siddhesh [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.

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

6 years agoFix typo in ChangeLog.
marxin [Wed, 5 Sep 2018 09:09:46 +0000 (09:09 +0000)] 
Fix typo in ChangeLog.

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

6 years agoFix a scan in test for Darwin target (PR testsuite/87216).
marxin [Wed, 5 Sep 2018 09:08:07 +0000 (09:08 +0000)] 
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.

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

6 years agoGCOV: Print one decimal place in human readable mode.
marxin [Wed, 5 Sep 2018 08:08:45 +0000 (08:08 +0000)] 
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.

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

6 years agoIgnore properly -mdirect-move (PR target/87164).
marxin [Wed, 5 Sep 2018 08:07:48 +0000 (08:07 +0000)] 
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.

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

6 years ago * cp-tree.h (treat_lvalue_as_rvalue_p): Declare.
mpolacek [Wed, 5 Sep 2018 02:08:19 +0000 (02:08 +0000)] 
* 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.

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

6 years agoDaily bump.
gccadmin [Wed, 5 Sep 2018 00:16:36 +0000 (00:16 +0000)] 
Daily bump.

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

6 years agoDWARF: Allow hard frame pointer even if frame pointer isn't used
hjl [Tue, 4 Sep 2018 20:42:06 +0000 (20:42 +0000)] 
DWARF: Allow hard frame pointer even if frame pointer isn't used

r251028

commit cd557ff63f388ad27c376d0a225e74d3594a6f9d
Author: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Thu Aug 10 15:29:05 2017 +0000

    i386: Don't use frame pointer without stack access

    When there is no stack access, there is no need to use frame pointer
    even if -fno-omit-frame-pointer is used and caller's frame pointer is
    unchanged.

frame pointer may not be available even if -fno-omit-frame-pointer is
used.  When this happened, arg pointer may be eliminated by hard frame
pointer.  Since hard frame pointer is encoded with DW_OP_fbreg which
uses the DW_AT_frame_base attribute, not hard frame pointer directly,
we should allow hard frame pointer when generating DWARF info even if
frame pointer isn't used.

gcc/

PR debug/86593
* dwarf2out.c (based_loc_descr): Allow hard frame pointer even
if frame pointer isn't used.
(compute_frame_pointer_to_fb_displacement): Likewise.

gcc/testsuite/

PR debug/86593
* g++.dg/pr86593.C: New test.

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

6 years ago PR target/87198
jakub [Tue, 4 Sep 2018 17:49:57 +0000 (17:49 +0000)] 
PR target/87198
* common/config/i386/i386-common.c (OPTION_MASK_ISA_XSAVEOPT_SET,
OPTION_MASK_ISA_XSAVES_SET, OPTION_MASK_ISA_XSAVEC_SET): Use
OPTION_MASK_ISA_XSAVE_SET instead of OPTION_MASK_ISA_XSAVE.
(OPTION_MASK_ISA_XSAVE_UNSET): Add OPTION_MASK_ISA_XSAVES_UNSET
and OPTION_MASK_ISA_XSAVEC_UNSET.

* gcc.target/i386/pr87198.c: New test.

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

6 years agogcc: xtensa: fix NAND code in xtensa_expand_atomic
jcmvbkbc [Tue, 4 Sep 2018 17:43:20 +0000 (17:43 +0000)] 
gcc: xtensa: fix NAND code in xtensa_expand_atomic

NAND is ~(a1 & a2), but xtensa_expand_atomic does ~a1 & a2.
That fixes libatomic tests atomic-op-{1,2}.

gcc/
2018-09-04  Max Filippov  <jcmvbkbc@gmail.com>

* config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and
XOR operations in NAND case.

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

6 years agoDon't xfail gcc.target/i386/addr-sel-1.c (PR target/86744)
ro [Tue, 4 Sep 2018 15:00:41 +0000 (15:00 +0000)] 
Don't xfail gcc.target/i386/addr-sel-1.c (PR target/86744)

PR target/86744
* gcc.target/i386/addr-sel-1.c: Don't xfail "b\\+1" scan.

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

6 years ago * wide-int-range.cc (wide_int_range_convert): New.
aldyh [Tue, 4 Sep 2018 14:52:41 +0000 (14:52 +0000)] 
* wide-int-range.cc (wide_int_range_convert): New.
* wide-int-range.h (wide_int_range_convert): New.
* tree-vrp.c (extract_range_from_unary_expr): Abstract wide int
code into wide_int_range_convert.
(extract_range_into_wide_ints): Do not munge anti range constants
into the entire domain.  Just return the range back.

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

6 years agogenmatch: put reporting on a cold path
marxin [Tue, 4 Sep 2018 13:59:38 +0000 (13:59 +0000)] 
genmatch: put reporting on a cold path

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

* genmatch.c (output_line_directive): Add new argument
fnargs.
(dt_simplify::gen_1): Encapsulate dump within __builtin_expect.

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

6 years agoAdd whitespace before warning option added in previous commmit
redi [Tue, 4 Sep 2018 13:34:47 +0000 (13:34 +0000)] 
Add whitespace before warning option added in previous commmit

* doc/invoke.texi (Option Summary): Add whitespace.

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

6 years agoAdd -Waligned-new to Option Summary
redi [Tue, 4 Sep 2018 13:25:42 +0000 (13:25 +0000)] 
Add -Waligned-new to Option Summary

* doc/invoke.texi (Option Summary): Add -Waligned-new.

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

6 years ago2018-09-04 Richard Biener <rguenther@suse.de>
rguenth [Tue, 4 Sep 2018 12:04:42 +0000 (12:04 +0000)] 
2018-09-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87211
* tree-ssa-sccvn.c (visit_phi): When value-numbering to a
backedge value we're supposed to treat as VARYING also number
the PHI to VARYING in case it got a different value-number already.

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

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

6 years ago * tree-vrp.c (vrp_can_optimize_bit_op): Remove.
aldyh [Tue, 4 Sep 2018 11:58:14 +0000 (11:58 +0000)] 
* tree-vrp.c (vrp_can_optimize_bit_op): Remove.
(extract_range_from_binary_expr_1): Do not call
vrp_can_optimize_bit_op.
* wide-int-range.cc (wide_int_range_can_optimize_bit_op): Make
static.
(wide_int_range_get_mask_and_bounds): New.
(wide_int_range_optimize_bit_op): New.
(wide_int_range_bit_ior): Call wide_int_range_optimize_bit_op.
(wide_int_range_bit_and): Same.
* wide-int-range.h (wide_int_range_can_optimize_bit_op): Remove.
(wide_int_range_optimize_bit_op): New.
(wide_int_range_get_mask_and_bounds): New.

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

6 years ago2018-09-04 Richard Biener <rguenther@suse.de>
rguenth [Tue, 4 Sep 2018 10:55:46 +0000 (10:55 +0000)] 
2018-09-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87176
* tree-ssa-sccvn.c (visit_phi): Remove redundant allsame
variable.  When value-numbering a virtual PHI node make sure
to not value-number to the backedge value.

* gcc.dg/torture/pr87176.c: New testcase.
* gcc.dg/torture/ssa-fre-1.c: Likewise.

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

6 years agoUpdate C Extensions docs for support in latest C++
redi [Tue, 4 Sep 2018 10:27:14 +0000 (10:27 +0000)] 
Update C Extensions docs for support in latest C++

* doc/extend.texi (Long Long, Hex Floats): Document support for
long long and hex floats in more recent versions of ISO C++.

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

6 years ago * MAINTAINERS: Update my email address.
xguo [Tue, 4 Sep 2018 03:57:03 +0000 (03:57 +0000)] 
* MAINTAINERS: Update my email address.

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

6 years agoDaily bump.
gccadmin [Tue, 4 Sep 2018 00:16:57 +0000 (00:16 +0000)] 
Daily bump.

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

6 years ago2018-09-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
jvdelisle [Mon, 3 Sep 2018 18:38:20 +0000 (18:38 +0000)] 
2018-09-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

* simplify.c (gfc_simplify_modulo): Re-arrange code to test whether
'P' is zero and issue an error if it is.
* gfortran.dg/modulo_check: New test.

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

6 years ago2018-09-03 Richard Biener <rguenther@suse.de>
rguenth [Mon, 3 Sep 2018 17:41:05 +0000 (17:41 +0000)] 
2018-09-03  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87177
* tree-ssa-sccvn.c (vuse_ssa_val): Revert previous change, keep
cleanup.

* gcc.dg/torture/pr87177.c: New testcase.
* gcc.dg/torture/pr87177-2.c: Likewise.

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

6 years agobb-reorder: convert to gcc_stablesort
amonakov [Mon, 3 Sep 2018 16:55:05 +0000 (16:55 +0000)] 
bb-reorder: convert to gcc_stablesort

* bb-reorder.c (edge_order): Convert to C-qsort-style
tri-state comparator.
(reorder_basic_blocks_simple): Change std::stable_sort to gcc_stablesort.

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

6 years agotree-loop-distribution: convert to gcc_stablesort
amonakov [Mon, 3 Sep 2018 16:53:04 +0000 (16:53 +0000)] 
tree-loop-distribution: convert to gcc_stablesort

* tree-loop-distribution.c (offset_cmp): Convert to C-qsort-style
tri-state comparator.
(fuse_memset_builtins): Change std::stable_sort to gcc_stablesort.

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

6 years agointroduce gcc_stablesort
amonakov [Mon, 3 Sep 2018 16:51:24 +0000 (16:51 +0000)] 
introduce gcc_stablesort

* sort.cc (struct sort_ctx): New field 'nlim'.  Use it...
(mergesort): ... here as maximum count for using netsort.
(gcc_qsort): Set nlim to 3 if stable sort is requested.
(gcc_stablesort): New.
* system.h (gcc_stablesort): Declare.

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

6 years agoqsort_chk: call from gcc_qsort instead of wrapping it
amonakov [Mon, 3 Sep 2018 16:46:46 +0000 (16:46 +0000)] 
qsort_chk: call from gcc_qsort instead of wrapping it

* sort.cc (gcc_qsort) [CHECKING_P]: Call qsort_chk.
* system.h (qsort): Always redirect to gcc_qsort.  Update comment.
* vec.c (qsort_chk): Do not call gcc_qsort.  Update comment.

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

6 years agors6000: lxsdux / stxsdux do not exist
segher [Mon, 3 Sep 2018 15:51:37 +0000 (15:51 +0000)] 
rs6000: lxsdux / stxsdux do not exist

Our md files refer to {l,st}xsd%U<n>x, but no {l,st}xsdux insns exist.
This patch removes the update forms.  All these use  constraint "Z"
which does not allow update form, so there is no practical difference.

* config/rs6000/rs6000.md (*mov<mode>_hardfloat32): Remove %U from the
lxsdx and stxsdx alternatives.
(*mov<mode>_hardfloat64): Ditto.
* config/rs6000/vsx.md (*vsx_extract_<mode>_store): Ditto.

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