Commit Graph

163724 Commits

Author SHA1 Message Date
Marek Polacek
6435284ea6 direct-enum-init1.C: Remove "inside" from diagnostic messages.
* g++.dg/cpp1z/direct-enum-init1.C: Remove "inside" from diagnostic
	messages.

From-SVN: r264159
2018-09-07 15:52:54 +00:00
Marek Polacek
8112667c8c 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
2018-09-07 14:12:48 +00:00
Jason Merrill
6bf9284fbf 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
2018-09-07 09:12:24 -04:00
GCC Administrator
446a665106 Daily bump.
From-SVN: r264155
2018-09-07 00:16:44 +00:00
Uros Bizjak
b3892454f7 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
2018-09-06 23:39:47 +02:00
Will Schmidt
bd46d32c51 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
2018-09-06 19:47:06 +00:00
Uros Bizjak
423c2a269e 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
2018-09-06 20:53:01 +02:00
Bernd Edlinger
6d9001072d 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
2018-09-06 09:39:48 -06:00
Will Schmidt
6847c656b4 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
2018-09-06 15:34:58 +00:00
Will Schmidt
84bde0bffe 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
2018-09-06 13:52:14 +00:00
Ilya Leoshkevich
bdb57bcb54 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
2018-09-06 07:38:42 +00:00
Ilya Leoshkevich
d725249946 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
2018-09-06 07:35:35 +00:00
Ilya Leoshkevich
f0d2063151 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
2018-09-06 07:31:23 +00:00
Marek Polacek
308d9cda32 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
2018-09-06 00:38:13 +00:00
GCC Administrator
4497d88fe2 Daily bump.
From-SVN: r264138
2018-09-06 00:16:49 +00:00
Hans-Peter Nilsson
c53e89f468 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
2018-09-05 23:14:42 +00:00
Cesar Philippidis
53ceb8b542 [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
2018-09-05 15:27:31 -07:00
Marek Polacek
62c21ceea6 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
2018-09-05 21:17:47 +00:00
Uros Bizjak
f6b95f78f8 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
2018-09-05 20:01:42 +02:00
Bernhard Reutner-Fischer
eb6ffc6682 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
2018-09-05 17:31:13 +02:00
Jonathan Wakely
cfaa1c8908 * libsupc++/cxxabi.h (__cxa_demangle): Clarify doxygen comment.
From-SVN: r264127
2018-09-05 16:18:16 +01:00
Kyrylo Tkachov
24c4943149 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
2018-09-05 13:39:38 +00:00
Richard Biener
76a5eae549 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
2018-09-05 11:44:13 +00:00
Martin Liska
e6c5d9f0f5 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
2018-09-05 11:28:49 +00:00
Richard Biener
85004cb2dc 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
2018-09-05 10:33:41 +00:00
Hans-Peter Nilsson
a79878585a * io/async.h: Use __gthread_mutex_t, not pthread_mutex_t.
From-SVN: r264120
2018-09-05 10:28:45 +00:00
Nathan Sidwell
c0bb504785 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
2018-09-05 10:04:58 +00:00
Pádraig Brady
86e95f35c5 [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
2018-09-05 09:59:08 +00:00
Richard Biener
888157af3e 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
2018-09-05 09:39:34 +00:00
Siddhesh Poyarekar
a98824ac23 [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
2018-09-05 09:37:27 +00:00
Martin Liska
41fbb3ec63 Fix typo in ChangeLog.
From-SVN: r264114
2018-09-05 09:09:46 +00:00
Martin Liska
ac2f3b7ff3 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
2018-09-05 09:08:07 +00:00
Martin Liska
d1c772b9bb 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
2018-09-05 08:08:45 +00:00
Martin Liska
3d043c51f5 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
2018-09-05 08:07:48 +00:00
Marek Polacek
74be6f512e 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
2018-09-05 02:08:19 +00:00
GCC Administrator
fd64b29375 Daily bump.
From-SVN: r264100
2018-09-05 00:16:36 +00:00
H.J. Lu
6bc088ca0e 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.

From-SVN: r264096
2018-09-04 13:42:06 -07:00
Jakub Jelinek
8f93810d3b re PR target/87198 (ICE in extract_insn, at recog.c:2304)
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.

From-SVN: r264088
2018-09-04 19:49:57 +02:00
Max Filippov
2a17b23970 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.

From-SVN: r264087
2018-09-04 17:43:20 +00:00
Rainer Orth
0bdb34b4c9 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.

From-SVN: r264086
2018-09-04 15:00:41 +00:00
Aldy Hernandez
150655ee3f wide-int-range.cc (wide_int_range_convert): New.
* 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.

From-SVN: r264085
2018-09-04 14:52:41 +00:00
Martin Liska
8fcfe0474a 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.

From-SVN: r264084
2018-09-04 13:59:38 +00:00
Jonathan Wakely
b88ad32d4e Add whitespace before warning option added in previous commmit
* doc/invoke.texi (Option Summary): Add whitespace.

From-SVN: r264083
2018-09-04 14:34:47 +01:00
Jonathan Wakely
c91c2006ae Add -Waligned-new to Option Summary
* doc/invoke.texi (Option Summary): Add -Waligned-new.

From-SVN: r264080
2018-09-04 14:25:42 +01:00
Richard Biener
5bf734facc re PR tree-optimization/87211 (gcc ICE at O2: in set_ssa_val_to, at tree-ssa-sccvn.c:3628)
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.

From-SVN: r264079
2018-09-04 12:04:42 +00:00
Aldy Hernandez
e20d979b7a tree-vrp.c (vrp_can_optimize_bit_op): Remove.
* 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.

From-SVN: r264078
2018-09-04 11:58:14 +00:00
Richard Biener
c2c51a3e35 re PR tree-optimization/87176 (wrong code at -Os and above on x86-64-linux-gnu)
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.

From-SVN: r264077
2018-09-04 10:55:46 +00:00
Jonathan Wakely
727c8c82e1 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++.

From-SVN: r264076
2018-09-04 11:27:14 +01:00
Xuepeng Guo
3ff89a4eff * MAINTAINERS: Update my email address.
From-SVN: r264075
2018-09-04 03:57:03 +00:00
GCC Administrator
62364e0fcb Daily bump.
From-SVN: r264074
2018-09-04 00:16:57 +00:00