gcc.git
6 years agore PR c/83222 (Inconsistent "initializer element is not constant" error)
Jakub Jelinek [Thu, 30 Nov 2017 23:43:10 +0000 (00:43 +0100)]
re PR c/83222 (Inconsistent "initializer element is not constant" error)

PR c/83222
* c-tree.h (decl_constant_value_1): Declare.
* c-typeck.c (decl_constant_value_1): New function.
(decl_constant_value): Use it.
* c-fold.c (c_fully_fold_internal): If in_init, use
decl_constant_value_1 instead of decl_constant_value.

* gcc.c-torture/compile/pr83222.c: New test.

From-SVN: r255285

6 years agospellcheck-tree.c (test_find_closest_identifier): Use ; instead of ;;.
Jakub Jelinek [Thu, 30 Nov 2017 22:47:51 +0000 (23:47 +0100)]
spellcheck-tree.c (test_find_closest_identifier): Use ; instead of ;;.

* spellcheck-tree.c (test_find_closest_identifier): Use ; instead
of ;;.
* gengtype-state.c (read_state_pair): Likewise.
* gimple-fold.c (gimple_fold_builtin_string_compare): Likewise.
* sel-sched-dump.c (dump_insn_rtx_1): Likewise.
* ipa-cp.c (intersect_aggregates_with_edge): Likewise.
* ifcvt.c (noce_try_store_flag_constants): Likewise.
* tree-ssa-ccp.c (ccp_finalize): Likewise.
* omp-grid.c (grid_process_kernel_body_copy): Likewise.
* builtins.c (fold_builtin_3): Likewise.
* graphite-scop-detection.c
(scop_detection::stmt_has_simple_data_refs_p): Likewise.
* hsa-gen.c (hsa_function_representation::hsa_function_representation):
Likewise.
c/
* c-parser.c (c_parser_postfix_expression): Use ; instead of ;;.
jit/
* jit-recording.c
(recording::memento_of_new_rvalue_from_const <long>::write_reproducer):
Use ; instead of ;;.
lto/
* lto.c (create_subid_section_table): Use ; instead of ;;.
objc/
* objc-next-runtime-abi-01.c (generate_dispatch_table): Use ; instead
of ;;.

From-SVN: r255284

6 years agore PR sanitizer/81697 (Incorrect ASan global variables alignment on arm)
Maxim Ostapenko [Thu, 30 Nov 2017 21:38:16 +0000 (21:38 +0000)]
re PR sanitizer/81697 (Incorrect ASan global variables alignment on arm)

gcc/

2017-11-30  Maxim Ostapenko  <m.ostapenko@samsung.com>

PR sanitizer/81697
* asan.c (asan_protect_global): Add new ignore_decl_rtl_set_p
parameter. Return true if ignore_decl_rtl_set_p is true and other
conditions are satisfied.
* asan.h (asan_protect_global): Add new parameter.
* varasm.c (categorize_decl_for_section): Pass true as second parameter
to asan_protect_global calls.

gcc/testsuite/

2017-11-30  Maxim Ostapenko  <m.ostapenko@samsung.com>

PR sanitizer/81697
* c-c++-common/asan/pr81697.c: New test.

From-SVN: r255283

6 years agore PR libgcc/83112 (Silence warnings from PowerPC libgcc float128-ifunc.c compilation)
Michael Meissner [Thu, 30 Nov 2017 20:52:27 +0000 (20:52 +0000)]
re PR libgcc/83112 (Silence warnings from PowerPC libgcc float128-ifunc.c compilation)

2017-11-30  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR libgcc/83112
* config/rs6000/float128-ifunc.c (__addkf3_resolve): Use the
correct type for all ifunc resolvers to silence -Wattribute-alias
warnings.  Eliminate the forward declaration of the resolver
functions which is no longer needed.
(__subkf3_resolve): Likewise.
(__mulkf3_resolve): Likewise.
(__divkf3_resolve): Likewise.
(__negkf2_resolve): Likewise.
(__eqkf2_resolve): Likewise.
(__nekf2_resolve): Likewise.
(__gekf2_resolve): Likewise.
(__gtkf2_resolve): Likewise.
(__lekf2_resolve): Likewise.
(__ltkf2_resolve): Likewise.
(__unordkf2_resolve): Likewise.
(__extendsfkf2_resolve): Likewise.
(__extenddfkf2_resolve): Likewise.
(__trunckfsf2_resolve): Likewise.
(__trunckfdf2_resolve): Likewise.
(__fixkfsi_resolve): Likewise.
(__fixkfdi_resolve): Likewise.
(__fixunskfsi_resolve): Likewise.
(__fixunskfdi_resolve): Likewise.
(__floatsikf_resolve): Likewise.
(__floatdikf_resolve): Likewise.
(__floatunsikf_resolve): Likewise.
(__floatundikf_resolve): Likewise.
(__extendkftf2_resolve): Likewise.
(__trunctfkf2_resolve): Likewise.

PR libgcc/83103
* config/rs6000/quad-float128.h (TF): Don't define if long double
is IEEE 128-bit floating point.
(TCtype): Define as either TCmode or KCmode, depending on whether
long double is IEEE 128-bit floating point.
(__mulkc3_sw): Add declarations for software/hardware versions of
complex multiply/divide.
(__divkc3_sw): Likewise.
(__mulkc3_hw): Likewise.
(__divkc3_hw): Likewise.
* config/rs6000/_mulkc3.c (_mulkc3): If we are building ifunc
handlers to switch between using software emulation and hardware
float128 instructions, build the complex multiply/divide functions
for both software and hardware support.
* config/rs6000/_divkc3.c (_divkc3): Likewise.
* config/rs6000/float128-ifunc.c (__mulkc3_resolve): Likewise.
(__divkc3_resolve): Likewise.
(__mulkc3): Likewise.
(__divkc3): Likewise.
* config/rs6000/t-float128-hw (fp128_hardfp_src): Likewise.
(fp128_hw_src): Likewise.
(fp128_hw_static_obj): Likewise.
(fp128_hw_shared_obj): Likewise.
(_mulkc3-hw.c): Create _mulkc3-hw.c and _divkc3-hw.c from
_mulkc3.c and _divkc3.c, changing the function name.
(_divkc3-hw.c): Likewise.
* config/rs6000/t-float128 (clean-float128): Delete _mulkc3-hw.c
and _divkc3-hw.c.

From-SVN: r255282

6 years agoCleanup riscv option docs.
Jim Wilson [Thu, 30 Nov 2017 18:03:46 +0000 (18:03 +0000)]
Cleanup riscv option docs.

gcc/
* doc/invoke.texi (RISC-V Options): Delete nonexistent -mmemcpy and
-mno-memcpy options.  For -mplt, -mfdiv, -mdiv, -msave-restore, and
-mstrict-align, add info on default value.  Delete redundant lines for
-mabi.  Add missing -mexplicit-relocs docs.

From-SVN: r255280

6 years agoPR c++/82219 - bogus -Wignored-qualifiers with template
Jason Merrill [Thu, 30 Nov 2017 17:43:08 +0000 (12:43 -0500)]
PR c++/82219 - bogus -Wignored-qualifiers with template

* pt.c (tsubst_copy_and_build) [STATIC_CAST_EXPR]: Suppress
-Wignored-qualifiers.

From-SVN: r255279

6 years agoPR libstdc++/65927 Fix -Wunused-but-set-parameter warning
Jonathan Wakely [Thu, 30 Nov 2017 17:29:08 +0000 (17:29 +0000)]
PR libstdc++/65927 Fix -Wunused-but-set-parameter warning

PR libstdc++/65927
* include/bits/locale_facets_nonio.h (__timepunct::_M_am_pm_format):
Remove statement with no effect.

From-SVN: r255278

6 years agoMove assertion from to_address to __to_address
Glen Joseph Fernandes [Thu, 30 Nov 2017 15:07:21 +0000 (15:07 +0000)]
Move assertion from to_address to __to_address

2017-11-30  Glen Joseph Fernandes  <glenjofe@gmail.com>

* include/bits/ptr_traits.h (__to_address, to_address): Move static
assertion.
* testsuite/20_util/to_address/1_neg.cc: New test.

From-SVN: r255277

6 years ago[ARC] Add trap instruction.
Claudiu Zissulescu [Thu, 30 Nov 2017 14:42:22 +0000 (15:42 +0100)]
[ARC] Add trap instruction.

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

* config/arc/arc.md (trap): New pattern.

From-SVN: r255276

6 years ago[ARC] Don't allow the last ZOL insn to be in a delay slot.
Claudiu Zissulescu [Thu, 30 Nov 2017 14:42:12 +0000 (15:42 +0100)]
[ARC] Don't allow the last ZOL insn to be in a delay slot.

The ARC ZOL implementation doesn't allow the last instruction to be a
control instruction or part of a delay slot.  Thus, we add a note to
the last ZOL instruction which will prevent it to finish into a delay
slot.

2017-10-20  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (hwloop_optimize): Prevent the last
        ZOL instruction to end into a delay slot.
* config/arc/arc.md (cond_delay_insn): Check if the instruction
can be placed into a delay slot against reg_note.
(in_delay_slot): Likewise.

testsuite/
2017-10-20  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/loop-3.c: New test.
* gcc.target/arc/loop-4.c: Likewise.

[FIX][ZOL] fix checking for jumps

From-SVN: r255275

6 years ago[ARC] Update uses for hw-loop labels.
Claudiu Zissulescu [Thu, 30 Nov 2017 14:42:01 +0000 (15:42 +0100)]
[ARC] Update uses for hw-loop labels.

Make sure we mark the hw-loop labels as beeing used.

gcc/
2017-09-19  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start
labels number of usages.

gcc/testsuite
2017-09-19  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/loop-2.cpp: New test.

From-SVN: r255274

6 years ago[ARC] Use TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV.
Claudiu Zissulescu [Thu, 30 Nov 2017 14:41:49 +0000 (15:41 +0100)]
[ARC] Use TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV.

Sometimes the memory equivalent is not valid due to a large offset.
For example replacing the ap register with its fp/sp-equivalent during
LRA step. To solve this we introduced TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV.

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

* config/arc/arc.c (arc_cannot_substitute_mem_equiv_p): New function.
(TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define.

gcc/testsuite
2017-08-08  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/lra-1.c: New test.

From-SVN: r255273

6 years agofold-vec-abs-char-fwrapv.c: Add xxspltib insn to expected output.
Will Schmidt [Thu, 30 Nov 2017 14:38:33 +0000 (14:38 +0000)]
fold-vec-abs-char-fwrapv.c: Add xxspltib insn to expected output.

[testsuite]

2017-11-29  Will Schmidt  <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-abs-char-fwrapv.c: Add xxspltib insn
to expected output.
* gcc.target/powerpc/fold-vec-abs-char.c: Add xxspltib insn
to expected output.

From-SVN: r255272

6 years agoPR libstdc++/83226 avoid forming pointer-to-reference type
Jonathan Wakely [Thu, 30 Nov 2017 13:45:37 +0000 (13:45 +0000)]
PR libstdc++/83226 avoid forming pointer-to-reference type

PR libstdc++/83226
* include/bits/node_handle.h (_Node_handle::__pointer): Avoid forming
pointer-to-reference types.
* testsuite/23_containers/map/modifiers/insert/83226.cc: New test.

From-SVN: r255271

6 years agoRemove inv_list.
Julia Koval [Thu, 30 Nov 2017 12:17:16 +0000 (13:17 +0100)]
Remove inv_list.

gcc/c-family/
* c-common.h (inv_list): Remove.

From-SVN: r255270

6 years agore PR target/83210 (__builtin_mul_overflow() generates suboptimal code when exactly...
Jakub Jelinek [Thu, 30 Nov 2017 10:29:58 +0000 (11:29 +0100)]
re PR target/83210 (__builtin_mul_overflow() generates suboptimal code when exactly one argument is the constant 2)

PR target/83210
* internal-fn.c (expand_mul_overflow): Optimize unsigned
multiplication by power of 2 constant into two shifts + comparison.

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

From-SVN: r255269

6 years agore PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)
Jan Hubicka [Thu, 30 Nov 2017 09:36:36 +0000 (10:36 +0100)]
re PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)

PR target/81616
* x86-tnue-costs.h (generic_cost): Revise for modern CPUs
* gcc.target/i386/l_fma_double_1.c: Update count of fma instructions.
* gcc.target/i386/l_fma_double_2.c: Update count of fma instructions.
* gcc.target/i386/l_fma_double_3.c: Update count of fma instructions.
* gcc.target/i386/l_fma_double_4.c: Update count of fma instructions.
* gcc.target/i386/l_fma_double_5.c: Update count of fma instructions.
* gcc.target/i386/l_fma_double_6.c: Update count of fma instructions.
* gcc.target/i386/l_fma_float_1.c: Update count of fma instructions.
* gcc.target/i386/l_fma_float_2.c: Update count of fma instructions.
* gcc.target/i386/l_fma_float_3.c: Update count of fma instructions.
* gcc.target/i386/l_fma_float_4.c: Update count of fma instructions.
* gcc.target/i386/l_fma_float_5.c: Update count of fma instructions.
* gcc.target/i386/l_fma_float_6.c: Update count of fma instructions.

From-SVN: r255268

6 years agore PR tree-optimization/83202 (Try joining operations on consecutive array elements...
Richard Biener [Thu, 30 Nov 2017 07:53:31 +0000 (07:53 +0000)]
re PR tree-optimization/83202 (Try joining operations on consecutive array elements during tree vectorization)

2017-11-30  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83202
* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
allow_peel argument and guard peeling.
(canonicalize_loop_induction_variables): Likewise.
(canonicalize_induction_variables): Pass false.
(tree_unroll_loops_completely_1): Pass unroll_outer to disallow
peeling from cunrolli.

* gcc.dg/vect/pr83202-1.c: New testcase.
* gcc.dg/tree-ssa/pr61743-1.c: Adjust.

From-SVN: r255267

6 years agocompiler: don't make map zero value constant
Ian Lance Taylor [Thu, 30 Nov 2017 05:03:29 +0000 (05:03 +0000)]
compiler: don't make map zero value constant

    The map zero value is a common symbol, and it doesn't really make
    sense to have a constant common symbol. Current GCC has started to
    reject this case, probably as part of the fix for PR 83100.

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

From-SVN: r255266

6 years agobaseline_symbols.txt: Update.
John David Anglin [Thu, 30 Nov 2017 00:53:16 +0000 (00:53 +0000)]
baseline_symbols.txt: Update.

* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.

From-SVN: r255265

6 years agoDaily bump.
GCC Administrator [Thu, 30 Nov 2017 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255264

6 years agocombine: Print to dump if some insn cannot be combined into i3
Segher Boessenkool [Wed, 29 Nov 2017 22:51:16 +0000 (23:51 +0100)]
combine: Print to dump if some insn cannot be combined into i3

Eventually we should print the reason that any combination fails.
This is a good start (these happen often).

* combine.c (try_combine): Print a message to dump file whenever
I0, I1, or I2 cannot be combined into I3.

From-SVN: r255261

6 years agocombine: Do not throw away unneeded arms of parallels (PR83156)
Segher Boessenkool [Wed, 29 Nov 2017 22:42:37 +0000 (23:42 +0100)]
combine: Do not throw away unneeded arms of parallels (PR83156)

The fix for PR82621 makes us not split an I2 if one of the results of
those SETs is unused, since combine does not handle that properly.  But
this results in degradation for i386 (or more in general, for any
target that does not have patterns for parallels with an unused result
as a CLOBBER instead of a SET for that result).

This patch instead makes us not split only if one of the results is set
again before I3.  That fixes PR83156 and also fixes PR82621.

Unfortunately it undoes the nice optimisations that the previous patch
did on powerpc.

PR rtl-optimization/83156
PR rtl-optimization/82621
* combine.c (try_combine): Don't split an I2 if one of the dests is
set again before I3.  Allow unused dests.

From-SVN: r255260

6 years agors6000: Add second variant of adde
Segher Boessenkool [Wed, 29 Nov 2017 22:30:24 +0000 (23:30 +0100)]
rs6000: Add second variant of adde

This adds a second variant of the adde insn pattern, this one with the
CA register as the second operand.  The existing pattern has it as the
third operand.  It would be ideal if RTL was always canonicalised like
that, but it isn't (and that is not trivial), and this is a simple and
harmless patch.

* config/rs6000/rs6000.md (*add<mode>3_carry_in_internal2): New.

From-SVN: r255259

6 years agore PR rtl-optimization/80818 (LRA clobbers live hard reg clobbered during remateriali...
Vladimir Makarov [Wed, 29 Nov 2017 22:19:25 +0000 (22:19 +0000)]
re PR rtl-optimization/80818 (LRA clobbers live hard reg clobbered during rematerialization)

2017-11-29  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/80818
* lra.c (collect_non_operand_hard_regs): New arg insn.  Pass it
recursively.  Use insn code for clobber.
(lra_set_insn_recog_data): Pass the new arg to
collect_non_operand_hard_regs.
(add_regs_to_insn_regno_info): Pass insn instead of uid.  Use insn
code for clobber.
(lra_update_insn_regno_info): Pass insn to
add_regs_to_insn_regno_info.

From-SVN: r255258

6 years agoRiscv patterns to optimize away some redundant zero/sign extends.
Jim Wilson [Wed, 29 Nov 2017 22:14:17 +0000 (22:14 +0000)]
Riscv patterns to optimize away some redundant zero/sign extends.

gcc/
* config/riscv/riscv.c (SINGLE_SHIFT_COST): New.
(riscv_rtx_costs): Case ZERO_EXTRACT, match new pattern, and return
SINGLE_SHIFT_COST.  Case LT and ZERO_EXTEND, likewise.  Case ASHIFT,
use SINGLE_SHIFT_COST.
* config/riscv/riscv.md (lshrsi3_zero_extend_1): New.
(lshrsi3_zero_extend_2, lshrsi3_zero_extend_3): New.

gcc/testsuite/
* gcc.target/riscv/riscv.exp: New.
* gcc.target/riscv/zero-extend-1.c: New.
* gcc.target/riscv/zero-extend-2.c: New.
* gcc.target/riscv/zero-extend-3.c: New.
* gcc.target/riscv/zero-extend-4.c: New.

Co-Authored-By: Andrew Waterman <andrew@sifive.com>
From-SVN: r255257

6 years agoC++: improve location of static_assert errors
David Malcolm [Wed, 29 Nov 2017 22:07:32 +0000 (22:07 +0000)]
C++: improve location of static_assert errors

gcc/cp/ChangeLog:
* parser.c (cp_parser_unary_expression): Generate a location for
"noexcept".
(cp_parser_trait_expr): Generate and return a location_t,
converting the return type from tree to cp_expr.
(cp_parser_static_assert): Pass location of the condition to
finish_static_assert, rather than that of the "static_assert"
token, where available.

gcc/testsuite/ChangeLog:
* g++.dg/cpp1y/static_assert3.C: New test case.

libstdc++-v3/ChangeLog:
* testsuite/20_util/duration/literals/range.cc: Update expected
line of a static_assert failure.

From-SVN: r255255

6 years agore PR c++/82293 (ICE in nonlambda_method_basetype at gcc/cp/lambda.c:886)
Paolo Carlini [Wed, 29 Nov 2017 21:54:18 +0000 (21:54 +0000)]
re PR c++/82293 (ICE in nonlambda_method_basetype at gcc/cp/lambda.c:886)

/cp
2017-11-29  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/82293
* lambda.c (nonlambda_method_basetype): Don't use LAMBDA_TYPE_P
on a null type.

/testsuite
2017-11-29  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/82293
* g++.dg/cpp0x/lambda/lambda-ice24.C: New.

From-SVN: r255254

6 years agoPR c++/82760 - memory corruption with aligned new.
Jason Merrill [Wed, 29 Nov 2017 21:01:23 +0000 (16:01 -0500)]
PR c++/82760 - memory corruption with aligned new.

* call.c (build_operator_new_call): Update *args if we add the
align_arg.

From-SVN: r255253

6 years agofold-vec-ld-char.c: Add lxv insn to expected output.
Will Schmidt [Wed, 29 Nov 2017 20:10:52 +0000 (20:10 +0000)]
fold-vec-ld-char.c: Add lxv insn to expected output.

[testsuite]

2017-11-29  Will Schmidt  <will_schmidt@vnet.ibm.com>

    * gcc.target/powerpc/fold-vec-ld-char.c: Add lxv insn to expected output.
    * gcc.target/powerpc/fold-vec-ld-double.c: Add lxv insn to expected output.
    * gcc.target/powerpc/fold-vec-ld-float.c: Add lxv insn to expected output.
    * gcc.target/powerpc/fold-vec-ld-int.c: Add lxv insn to expected output.
    * gcc.target/powerpc/fold-vec-ld-longlong.c: Add lxv insn to expected output.
    * gcc.target/powerpc/fold-vec-ld-short.c: Add lxv insn to expected output.

From-SVN: r255252

6 years agofold-vec-splat-8.c: Add vspltisb to expected output.
Will Schmidt [Wed, 29 Nov 2017 19:58:29 +0000 (19:58 +0000)]
fold-vec-splat-8.c: Add vspltisb to expected output.

[testsuite]
2017-11-29  Will Schmidt  <will_schmidt@vnet.ibm.com>

    * gcc.target/powerpc/fold-vec-splat-8.c: Add vspltisb to expected output.
    * gcc.target/powerpc/fold-vec-splats-int.c: Add mtvsrws to expected output.
    * gcc.target/powerpc/fold-vec-splats-longlong.c: Add mtvsrdd to expected output.

From-SVN: r255251

6 years agonable VBMI2 support [7/7]
Julia Koval [Wed, 29 Nov 2017 18:45:28 +0000 (19:45 +0100)]
nable VBMI2 support [7/7]

gcc/
* config/i386/avx512vbmi2intrin.h (_mm512_shldv_epi16,
_mm512_mask_shldv_epi16, _mm512_maskz_shldv_epi16, _mm512_shldv_epi32,
_mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, _mm512_shldv_epi64,
_mm512_mask_shldv_epi64, _mm512_maskz_shldv_epi64): New intrinsics.
* config/i386/avx512vbmi2vlintrin.h (_mm256_shldv_epi16,
_mm256_mask_shldv_epi16, _mm256_maskz_shldv_epi16, _mm256_shldv_epi32,
_mm256_mask_shldv_epi32, _mm256_maskz_shldv_epi32, _mm256_shldv_epi64,
_mm256_mask_shldv_epi64, _mm256_maskz_shldv_epi64, _mm_shldv_epi16,
_mm_mask_shldv_epi16, _mm_maskz_shldv_epi16, _mm_shldv_epi32,
_mm_mask_shldv_epi32, _mm_maskz_shldv_epi32, _mm_shldv_epi64,
_mm_mask_shldv_epi64, _mm_maskz_shldv_epi64): Ditto.
* config/i386/i386-builtin.def (__builtin_ia32_vpshldv_v32hi,
__builtin_ia32_vpshldv_v32hi_mask, __builtin_ia32_vpshldv_v32hi_maskz,
__builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
__builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
__builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
__builtin_ia32_vpshldv_v16si, __builtin_ia32_vpshldv_v16si_mask,
__builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si,
__builtin_ia32_vpshldv_v8si_mask, __builtin_ia32_vpshldv_v8si_maskz,
__builtin_ia32_vpshldv_v4si, __builtin_ia32_vpshldv_v4si_mask,
__builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di,
__builtin_ia32_vpshldv_v8di_mask, __builtin_ia32_vpshldv_v8di_maskz,
__builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
__builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
__builtin_ia32_vpshldv_v2di_mask,
__builtin_ia32_vpshldv_v2di_maskz): New builtins.
* config/i386/sse.md (vpshldv_<mode>, vpshldv_<mode>_mask,
vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): New patterns.

gcc/testsuite/
* gcc.target/i386/avx512f-vpshldv-1.c: New test.
* gcc.target/i386/avx512f-vpshldvd-2.c: Ditto.
* gcc.target/i386/avx512f-vpshldvq-2.c: Ditto.
* gcc.target/i386/avx512f-vpshldvw-2.c: Ditto.
* gcc.target/i386/avx512vl-vpshldv-1.c: Ditto.
* gcc.target/i386/avx512vl-vpshldvd-2.c: Ditto.
* gcc.target/i386/avx512vl-vpshldvq-2.c: Ditto.
* gcc.target/i386/avx512vl-vpshldvw-2.c: Ditto.

From-SVN: r255250

6 years agoEnable VBMI2 support [6/7]
Julia Koval [Wed, 29 Nov 2017 18:19:34 +0000 (19:19 +0100)]
Enable VBMI2 support [6/7]

gcc/
* config/i386/avx512vbmi2intrin.h (_mm512_shrdv_epi16,
_mm512_mask_shrdv_epi16, _mm512_maskz_shrdv_epi16, _mm512_shrdv_epi32,
_mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
_mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64): New intrinsics.
* config/i386/avx512vbmi2vlintrin.h (_mm256_shrdv_epi16,
_mm256_mask_shrdv_epi16, _mm256_maskz_shrdv_epi16, _mm256_shrdv_epi32,
_mm256_mask_shrdv_epi32, _mm256_maskz_shrdv_epi32, _mm256_shrdv_epi64,
_mm256_mask_shrdv_epi64, _mm256_maskz_shrdv_epi64, _mm_shrdv_epi16,
_mm_mask_shrdv_epi16, _mm_maskz_shrdv_epi16, _mm_shrdv_epi32,
_mm_mask_shrdv_epi32, _mm_maskz_shrdv_epi32, _mm_shrdv_epi64,
_mm_mask_shrdv_epi64, _mm_maskz_shrdv_epi64): Ditto.
* config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_V32HI,
V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT,
V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT,
V4SI_FTYPE_V4SI_V4SI_V4SI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI,
V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT,
V16SI_FTYPE_V16SI_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_V16SI_INT,
V2DI_FTYPE_V2DI_V2DI_V2DI_INT): New types.
* config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
* config/i386/sse.md (vpshrdv_<mode>, vpshrdv_<mode>_mask,
vpshrdv_<mode>_maskz, vpshrdv_<mode>_maskz_1): New pattern.

gcc/testsuite/
* gcc.target/i386/avx512f-vpshrdv-1.c: New test.
* gcc.target/i386/avx512f-vpshrdvd-2.c: Ditto.
* gcc.target/i386/avx512f-vpshrdvq-2.c: Ditto.
* gcc.target/i386/avx512f-vpshrdvw-2.c: Ditto.
* gcc.target/i386/avx512f-vpshrdw-2.c: Ditto.
* gcc.target/i386/avx512vl-vpshrdv-1.c: Ditto.
* gcc.target/i386/avx512vl-vpshrdvd-2.c: Ditto.
* gcc.target/i386/avx512vl-vpshrdvq-2.c: Ditto.
* gcc.target/i386/avx512vl-vpshrdvw-2.c: Ditto.
* gcc.target/i386/avx512vl-vpshrdw-2.c: Ditto.

From-SVN: r255249

6 years agoAdd myself as GCC maintainer
Qing Zhao [Wed, 29 Nov 2017 17:55:42 +0000 (17:55 +0000)]
Add myself as GCC maintainer

From-SVN: r255248

6 years agore PR tree-optimization/83195 (pr82929.c scan for "Merging successful" fail)
Jakub Jelinek [Wed, 29 Nov 2017 17:38:54 +0000 (18:38 +0100)]
re PR tree-optimization/83195 (pr82929.c scan for "Merging successful" fail)

PR tree-optimization/83195
* gcc.dg/pr82929.c: Don't check for "Merging successful" on arm.
* gcc.dg/pr82929-2.c: New test.

From-SVN: r255247

6 years ago[SPARC] Recognize the load when accessing the GOT
Daniel Cederman [Wed, 29 Nov 2017 15:45:41 +0000 (15:45 +0000)]
[SPARC] Recognize the load when accessing the GOT

Needed for the UT699 errata workaround to function correctly when
compiling with -fPIC.

2017-11-29  Daniel Cederman  <cederman@gaisler.com>

gcc/
* config/sparc/sparc.c (sparc_do_work_around_errata): Treat the
        movsi_pic_gotdata_op instruction as a load for the UT699 errata
        workaround.

From-SVN: r255239

6 years ago[SPARC] Prevent -mfix-ut699 from generating b2bst errata sequences
Martin Aberg [Wed, 29 Nov 2017 15:41:45 +0000 (15:41 +0000)]
[SPARC] Prevent -mfix-ut699 from generating b2bst errata sequences

The sequence
  st
  fdivd / fsqrtd
  std
was generated in some cases with -mfix-ut699 when there was
a st before the div/sqrt. This sequence could trigger the b2bst errata.

Now the following safe sequence is generated instead:
  st
  nop
  fdivd / fsqrtd
  std

2017-11-29  Martin Aberg  <maberg@gaisler.com>

gcc/
* config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
        to prevent b2bst errata sequence.
        (sqrtdf2_fix): Likewise.

From-SVN: r255238

6 years ago[SPARC] Errata workaround for GRLIB-TN-0013
Daniel Cederman [Wed, 29 Nov 2017 15:37:19 +0000 (15:37 +0000)]
[SPARC] Errata workaround for GRLIB-TN-0013

This patch provides a workaround for the errata described in GRLIB-TN-0013.

If the workaround is enabled it will:

* Prevent div and sqrt instructions in the delay slot.

* Insert NOPs to prevent the sequence (div/sqrt) -> (two or three floating
  point operations or loads) -> (div/sqrt).

* Not insert NOPs if any of the floating point operations have a dependency
  on the destination register of the first (div/sqrt).

* Not insert NOPs if one of the floating point operations is a (div/sqrt).

* Insert NOPs to prevent (div/sqrt) followed by a branch.

It is applicable to GR712RC, UT700, and UT699.

2017-11-29  Daniel Cederman  <cederman@gaisler.com>

gcc/
* config/sparc/sparc.c (fpop_reg_depend_p): New function.
(div_sqrt_insn_p): New function.
(sparc_do_work_around_errata): Insert NOP instructions to
prevent sequences that could trigger the TN-0013 errata for
certain LEON3 processors.
(pass_work_around_errata::gate): Also test sparc_fix_lost_divsqrt.
(sparc_option_override): Set sparc_fix_lost_divsqrt appropriately.
* config/sparc/sparc.md (fix_lost_divsqrt): New attribute.
(in_branch_delay): Prevent div and sqrt in delay slot if
fix_lost_divsqrt.
* config/sparc/sparc.opt (sparc_fix_lost_divsqrt): New variable.

From-SVN: r255237

6 years ago[SPARC] Errata workaround for GRLIB-TN-0010
Daniel Cederman [Wed, 29 Nov 2017 15:23:40 +0000 (15:23 +0000)]
[SPARC] Errata workaround for GRLIB-TN-0010

This patch provides a workaround for the errata described in GRLIB-TN-0010.

If the workaround is enabled it will:

 * Insert a NOP between load instruction and atomic
   instruction (swap, ldstub, casa).

 * Insert a NOP at branch target if load in delay slot
   and atomic instruction at branch target.

It is applicable to UT700.

2017-11-29  Daniel Cederman  <cederman@gaisler.com>

gcc/
* config/sparc/sparc.c (atomic_insn_p): New function.
(sparc_do_work_around_errata): Insert NOP instructions to
prevent sequences that could trigger the TN-0010 errata for
UT700.
* config/sparc/sync.md (atomic_compare_and_swap_leon3_1): Make
instruction referable in atomic_insns_p.

From-SVN: r255236

6 years ago[SPARC] Errata workaround for GRLIB-TN-0011
Daniel Cederman [Wed, 29 Nov 2017 15:20:48 +0000 (15:20 +0000)]
[SPARC] Errata workaround for GRLIB-TN-0011

This patch provides a workaround for the errata described in GRLIB-TN-0011.

If the workaround is enabled it will:

 * Insert .align 16 before atomic instructions (swap, ldstub, casa).

It is applicable to GR712RC.

2017-11-29  Daniel Cederman  <cederman@gaisler.com>

gcc/
* config/sparc/sync.md (swapsi): 16-byte align if sparc_fix_gr712rc.
(atomic_compare_and_swap_leon3_1): Likewise.
(ldstub): Likewise.

From-SVN: r255235

6 years ago[SPARC] Errata workaround for GRLIB-TN-0012
Daniel Cederman [Wed, 29 Nov 2017 15:15:48 +0000 (15:15 +0000)]
[SPARC] Errata workaround for GRLIB-TN-0012

This patch provides a workaround for the errata described in GRLIB-TN-0012.

If the workaround is enabled it will:

 * Prevent any floating-point operation from being placed in the
   delay slot of an annulled integer branch.

 * Place a NOP at the branch target of an integer branch if it is
   a floating-point operation or a floating-point branch.

It is applicable to GR712RC.

2017-11-29  Daniel Cederman  <cederman@gaisler.com>

gcc/
* config/sparc/sparc.c (fpop_insn_p): New function.
(sparc_do_work_around_errata): Insert NOP instructions to
prevent sequences that could trigger the TN-0012 errata for
GR712RC.
(pass_work_around_errata::gate): Also test sparc_fix_gr712rc.
* config/sparc/sparc.md (fix_gr712rc): New attribute.
(in_branch_annul_delay): Prevent floating-point instructions
in delay slot of annulled integer branch.

From-SVN: r255234

6 years agore PR tree-optimization/83202 (Try joining operations on consecutive array elements...
Richard Biener [Wed, 29 Nov 2017 14:38:06 +0000 (14:38 +0000)]
re PR tree-optimization/83202 (Try joining operations on consecutive array elements during tree vectorization)

2017-11-29  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83202
* tree-vect-slp.c (scalar_stmts_set_t): New typedef.
(bst_fail): Use it.
(vect_analyze_slp_cost_1): Add visited set, do not account SLP
nodes vectorized to the same stmts multiple times.
(vect_analyze_slp_cost): Allocate a visited set and pass it down.
(vect_analyze_slp_instance): Adjust.
(scalar_stmts_to_slp_tree_map_t): New typedef.
(vect_schedule_slp_instance): Add a map recording the SLP node
representing the vectorized stmts for a set of scalar stmts.
Avoid code-generating redundancies.
(vect_schedule_slp): Allocate map and pass it down.

* gcc.dg/vect/costmodel/x86_64/costmodel-pr83202.c: New testcase.

From-SVN: r255233

6 years agoFix PR number 83817->83187
Nathan Sidwell [Wed, 29 Nov 2017 13:39:23 +0000 (13:39 +0000)]
Fix PR number 83817->83187

From-SVN: r255232

6 years ago[PATCH] complex type canonicalization
Nathan Sidwell [Wed, 29 Nov 2017 13:22:44 +0000 (13:22 +0000)]
[PATCH] complex type canonicalization

https://gcc.gnu.org/ml/gcc-patches/2017-11/msg02453.html
PR c++/83817
* tree.c (build_complex_type): Fix canonicalization.  Only fill in
type if it is new.

PR c++/83187
* g++.dg/opt/pr83187.C: New.

From-SVN: r255231

6 years ago[AArch64] Fix ICE due to store_pair_lanes
Wilco Dijkstra [Wed, 29 Nov 2017 12:22:06 +0000 (12:22 +0000)]
[AArch64] Fix ICE due to store_pair_lanes

The recently added store_pair_lanes causes ICEs in output_operand.
This is due to aarch64_classify_address treating it like a 128-bit STR
rather than a STP.  The valid immediate offsets don't fully overlap,
causing it to return false.  Eg. offset 264 is a valid 8-byte STP offset
but not a valid 16-byte STR offset since it isn't a multiple of 16.

The original instruction isn't passed in the printing code, so the context
is unclear.  The solution is to add a new operand formatting specifier
which is used for LDP/STP instructions like this.  This, like the Uml
constraint that applies to store_pair_lanes, uses PARALLEL when calling
aarch64_classify_address so that it knows it is an STP.
Also add the 'z' specifier for future use by load/store pair instructions.

    gcc/
* config/aarch64/aarch64.c (aarch64_print_operand): Add new
cases for printing LDP/STP memory addresses.
(aarch64_print_address_internal): Renamed from
aarch64_print_operand_address, added parameter, add Pmode check.
(aarch64_print_ldpstp_address): New function for LDP/STP addresses.
(aarch64_print_operand_address): Indirect to
aarch64_print_address_internal.
* config/aarch64/aarch64-simd.md (store_pair_lanes): Use new
'y' operand output specifier.

From-SVN: r255230

6 years agore PR middle-end/83185 (ICE with -fsanitize=address in build_simple_mem_ref_loc,...
Jakub Jelinek [Wed, 29 Nov 2017 10:33:06 +0000 (11:33 +0100)]
re PR middle-end/83185 (ICE with -fsanitize=address in build_simple_mem_ref_loc, at tree.c:4696)

PR middle-end/83185
* tree.c (build_simple_mem_ref_loc): Handle
get_addr_base_and_unit_offset returning a MEM_REF.

* gcc.dg/asan/pr83185.c: New test.

From-SVN: r255229

6 years agore PR middle-end/80929 (Division with constant no more optimized to mult highpart)
Jakub Jelinek [Wed, 29 Nov 2017 10:31:36 +0000 (11:31 +0100)]
re PR middle-end/80929 (Division with constant no more optimized to mult highpart)

PR middle-end/80929
* rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost.

From-SVN: r255228

6 years agofix merge conflict in libgfortran/ChangeLog
Janne Blomqvist [Wed, 29 Nov 2017 09:01:49 +0000 (11:01 +0200)]
fix merge conflict in libgfortran/ChangeLog

From-SVN: r255227

6 years agore PR target/80819 (Useless store to the stack in _mm_set_epi64x with SSE4 -mno...
Jakub Jelinek [Wed, 29 Nov 2017 08:40:13 +0000 (09:40 +0100)]
re PR target/80819 (Useless store to the stack  in _mm_set_epi64x with SSE4 -mno-avx)

PR target/80819
* config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm)
alternative.

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

From-SVN: r255226

6 years agore PR libfortran/83168 (FAIL: gfortran.dg/fmt_f0_2.f90 with a sanitized libgfortran)
Jerry DeLisle [Wed, 29 Nov 2017 03:07:43 +0000 (03:07 +0000)]
re PR libfortran/83168 (FAIL: gfortran.dg/fmt_f0_2.f90 with a sanitized libgfortran)

2017-11-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/83168
* io/write.c (select_string): Bump size by one to avoid
overrun.

From-SVN: r255225

6 years agoDaily bump.
GCC Administrator [Wed, 29 Nov 2017 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255224

6 years agoFix some incorrectly formatted ChangeLog entries.
Jim Wilson [Tue, 28 Nov 2017 21:47:36 +0000 (13:47 -0800)]
Fix some incorrectly formatted ChangeLog entries.

From-SVN: r255220

6 years agoHandle very long lines when printing fix-it hints
David Malcolm [Tue, 28 Nov 2017 21:45:56 +0000 (21:45 +0000)]
Handle very long lines when printing fix-it hints

When fixing PR c/82050 I noticed a bug in how we print fix-it hints
for very long lines: we weren't taking into account the x-offset for
the line when printing the fix-it hint.

This could lead to output where instead of printing:

foo.c:14:3944: error: etc
  = foo.field
        ^~~~~
        replacement

where the lines have been offset to start printing at about column 3900,
the "replacement" line was erroneously *not* offset, and was thus
prefixed by thousands of spaces, leading to large whitespace gaps in
the output, and the replacement failing to line up with the source to be
replaced.

Fixed thusly.

gcc/ChangeLog:
* diagnostic-show-locus.c (layout::print_trailing_fixits): Handle
m_x_offset.
(layout::move_to_column): Likewise.

gcc/testsuite/ChangeLog:
* gcc.dg/plugin/diagnostic-test-show-locus-bw.c
(test_very_wide_line): Update expected output to include a
fix-it hint.
* gcc.dg/plugin/diagnostic-test-show-locus-color.c
(test_very_wide_line): Likewise.
* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
(test_show_locus): Add a fix-it hint to "test_very_wide_line".

From-SVN: r255219

6 years agore PR sanitizer/81275 (-fsanitize=thread produce incorrect -Wreturn-type warning)
Jakub Jelinek [Tue, 28 Nov 2017 21:24:32 +0000 (22:24 +0100)]
re PR sanitizer/81275 (-fsanitize=thread produce incorrect -Wreturn-type warning)

PR sanitizer/81275
* cp-tree.h (SWITCH_STMT_ALL_CASES_P): Define.
(SWITCH_STMT_NO_BREAK_P): Define.
(note_break_stmt, note_iteration_stmt_body_start,
note_iteration_stmt_body_end): Declare.
* decl.c (struct cp_switch): Add has_default_p, break_stmt_seen_p
and in_loop_body_p fields.
(push_switch): Clear them.
(pop_switch): Set SWITCH_STMT_CANNOT_FALLTHRU_P if has_default_p
and !break_stmt_seen_p.  Assert in_loop_body_p is false.
(note_break_stmt, note_iteration_stmt_body_start,
note_iteration_stmt_body_end): New functions.
(finish_case_label): Set has_default_p when both low and high
are NULL_TREE.
* parser.c (cp_parser_iteration_statement): Use
note_iteration_stmt_body_start and note_iteration_stmt_body_end
around parsing iteration body.
* pt.c (tsubst_expr): Likewise.
* cp-objcp-common.c (cxx_block_may_fallthru): Return false for
SWITCH_STMT which contains no BREAK_STMTs, contains a default:
CASE_LABEL_EXPR and where SWITCH_STMT_BODY isn't empty and
can't fallthru.
* semantics.c (finish_break_stmt): Call note_break_stmt.
* cp-gimplify.c (genericize_switch_stmt): Copy SWITCH_STMT_ALL_CASES_P
bit to SWITCH_ALL_CASES_P.  Assert that if SWITCH_STMT_NO_BREAK_P then
the break label is not TREE_USED.

* g++.dg/warn/pr81275-1.C: New test.
* g++.dg/warn/pr81275-2.C: New test.
* g++.dg/warn/pr81275-3.C: New test.
* c-c++-common/tsan/pr81275.c: Skip for C++ and -O2.

From-SVN: r255218

6 years agore PR sanitizer/81275 (-fsanitize=thread produce incorrect -Wreturn-type warning)
Jakub Jelinek [Tue, 28 Nov 2017 21:22:52 +0000 (22:22 +0100)]
re PR sanitizer/81275 (-fsanitize=thread produce incorrect -Wreturn-type warning)

PR sanitizer/81275
* tree.c (block_may_fallthru): Return false if SWITCH_ALL_CASES_P
is set on SWITCH_EXPR and !block_may_fallthru (SWITCH_BODY ()).
c/
* c-typeck.c (c_finish_case): Set SWITCH_ALL_CASES_P if
c_switch_covers_all_cases_p returns true.
c-family/
* c-common.c (c_switch_covers_all_cases_p_1,
c_switch_covers_all_cases_p): New functions.
* c-common.h (c_switch_covers_all_cases_p): Declare.
testsuite/
* c-c++-common/tsan/pr81275.c: New test.

From-SVN: r255217

6 years agoPR 53796 Improve INQUIRE(RECL=...) handling
Janne Blomqvist [Tue, 28 Nov 2017 19:28:50 +0000 (21:28 +0200)]
PR 53796 Improve INQUIRE(RECL=...) handling

The current F2018 draft (N2137) specifies behavior of the RECL=
specifier in the INQUIRE statement, where it previously was left as
undefined. Namely:

- If the unit is not connected, RECL= should be given the value -1.
- If the unit is connected with stream access, RECL= should be given
  the value -2.

Further, as PR 53796 describes, the handling of RECL= is poor in other
ways as well. When the recl is set to the maximum possible
(GFC_INTEGER_8_HUGE / LLONG_MAX), which it does by default except for
preconnected units, and when INQUIRE(RECL=) is used with a 4 byte
integer, the value is truncated and the 4 byte value is thus
-1. Fixing this to generate an error is a lot of work, as currently
the truncation is done by the frontend, the library sees only an 8
byte value with no indication that the frontend is going to copy it to
a 4 byte one. Instead, this patch does a bit twiddling trick such that
the truncated 4 byte value is GFC_INTEGER_4_HUGE while still being
0.99999999 * GFC_INTEGER_8_HUGE which is large enough for all
practical purposes.

Finally, the patch removes GFORTRAN_DEFAULT_RECL which was used only
for preconnected units, and instead uses the same approach as describe
above.

Regtested on x86_64-pc-linux-gnu, Ok for trunk.

gcc/fortran/ChangeLog:

2017-11-28  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/53796
* gfortran.texi: Remove mentions of GFORTRAN_DEFAULT_RECL.

libgfortran/ChangeLog:

2017-11-28  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/53796
* io/inquire.c (inquire_via_unit): Set recl to -1 for unconnected
units.
* io/io.h (default_recl): New variable.
* io/open.c (new_unit): Set recl to default_recl for sequential,
-2 for stream access.
* io/transfer.c (read_block_form): Test against default_recl
instead of DEFAULT_RECL.
(write_block): Likewise.
* io/unit.c (init_units): Calculate max_offset, default_recl.
* libgfortran.h (DEFAULT_RECL): Remove.
* runtime/environ.c: Remove GFORTRAN_DEFAULT_RECL.

gcc/testsuite/ChangeLog:

2017-11-28  Janne Blomqvist  <jb@gcc.gnu.org>

PR fortran/53796
* gfortran.dg/inquire_recl_f2018.f90: New test.

From-SVN: r255215

6 years agoReject fix-it hints for various awkward boundary cases (PR c/82050)
David Malcolm [Tue, 28 Nov 2017 19:24:35 +0000 (19:24 +0000)]
Reject fix-it hints for various awkward boundary cases (PR c/82050)

PR c/82050 reports a failed assertion deep within diagnostic_show_locus's
code for printing fix-it hints.

The root cause is a fix-it hint suggesting a textual replacement,
where the affected column numbers straddle the LINE_MAP_MAX_COLUMN_NUMBER
boundary, so that the start of the range has a column number, but the
end of the range doesn't.

The fix is to verify that the column numbers are sane when adding fix-it
hints to a rich_location, rejecting fix-it hints where they are not.

libcpp/ChangeLog:
PR c/82050
* include/line-map.h (LINE_MAP_MAX_COLUMN_NUMBER): Move here.
* line-map.c (LINE_MAP_MAX_COLUMN_NUMBER): ...from here.
(rich_location::maybe_add_fixit): Reject fix-it hints in which
the start column exceeds the next column.

From-SVN: r255214

6 years ago[PR 82808] Use proper result types for arithmetic jump functions
Prathamesh Kulkarni [Tue, 28 Nov 2017 18:52:49 +0000 (18:52 +0000)]
[PR 82808] Use proper result types for arithmetic jump functions

2017-11-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
    Martin Jambor  <mjambor@suse.cz>

PR ipa/82808
* tree.h (expr_type_first_operand_type_p): Declare
* tree.c (expr_type_first_operand_type_p): New function.
* ipa-prop.h (ipa_get_type): Allow i to be out of bounds.
(ipa_value_from_jfunc): Adjust declaration.
* ipa-cp.c (ipa_get_jf_pass_through_result): New parameter RES_TYPE.
Use it as result type for arithmetics, unless it is NULL in which case
be more conservative.
(ipa_value_from_jfunc): New parameter PARM_TYPE, pass it to
ipa_get_jf_pass_through_result.
(propagate_vals_across_pass_through): Likewise.
(propagate_scalar_across_jump_function): New parameter PARM_TYPE, pass
is to propagate_vals_across_pass_through.
(propagate_constants_across_call): Pass PARM_TYPE to
propagate_scalar_across_jump_function.
(find_more_scalar_values_for_callers_subset): Pass parameter type to
ipa_value_from_jfunc.
(cgraph_edge_brings_all_scalars_for_node): Likewise.
* ipa-fnsummary.c (evaluate_properties_for_edge): Renamed parms_info
to caller_parms_info, pass parameter type to ipa_value_from_jfunc.
* ipa-prop.c (try_make_edge_direct_simple_call): New parameter
target_type, pass it to ipa_value_from_jfunc.
(update_indirect_edges_after_inlining): Pass parameter type to
try_make_edge_direct_simple_call.

testsuite/
* gcc.dg/ipa/pr82808.c: New test.

Co-Authored-By: Martin Jambor <mjambor@suse.cz>
From-SVN: r255212

6 years ago* gimple-ssa-evrp-analyze.c
Jeff Law [Tue, 28 Nov 2017 18:21:10 +0000 (11:21 -0700)]
* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::record_ranges_from_phis): Only use SCEV to
refine ranges if scev_initialized_p returns true.
* vr-values.c (vr_values::extract_range_from_phi_node): Likewise.

From-SVN: r255211

6 years ago* g++.dg/cpp0x/fntmpdefarg2a.C: Move expected warning.
Jason Merrill [Tue, 28 Nov 2017 18:09:15 +0000 (13:09 -0500)]
* g++.dg/cpp0x/fntmpdefarg2a.C: Move expected warning.

From-SVN: r255210

6 years agoEnable VBMI2 support [5/7]
Julia Koval [Tue, 28 Nov 2017 17:59:39 +0000 (18:59 +0100)]
Enable VBMI2 support [5/7]

gcc/
* config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
_mm512_mask_shrdi_epi16, _mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
_mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, _mm512_shrdi_epi64,
_mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64): New intrinsics.
* config/i386/avx512vbmi2vlintrin.h (_mm256_shrdi_epi16,
_mm256_mask_shrdi_epi16, _mm256_maskz_shrdi_epi16,
_mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32, _mm256_shrdi_epi32,
_mm256_mask_shrdi_epi64, _mm256_maskz_shrdi_epi64, _mm256_shrdi_epi64,
_mm_mask_shrdi_epi16, _mm_maskz_shrdi_epi16, _mm_shrdi_epi16,
_mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32, _mm_shrdi_epi32,
_mm_mask_shrdi_epi64, _mm_maskz_shrdi_epi64, _mm_shrdi_epi64): Ditto.
* config/i386/i386-builtin.def (__builtin_ia32_vpshrd_v32hi,
__builtin_ia32_vpshrd_v32hi_mask, __builtin_ia32_vpshrd_v16hi,
__builtin_ia32_vpshrd_v16hi_mask, __builtin_ia32_vpshrd_v8hi,
__builtin_ia32_vpshrd_v8hi_mask, __builtin_ia32_vpshrd_v16si,
__builtin_ia32_vpshrd_v16si_mask, __builtin_ia32_vpshrd_v8si,
__builtin_ia32_vpshrd_v8si_mask, __builtin_ia32_vpshrd_v4si,
__builtin_ia32_vpshrd_v4si_mask, __builtin_ia32_vpshrd_v8di,
__builtin_ia32_vpshrd_v8di_mask, __builtin_ia32_vpshrd_v4di,
__builtin_ia32_vpshrd_v4di_mask, __builtin_ia32_vpshrd_v2di,
__builtin_ia32_vpshrd_v2di_mask): New builtins.
* config/i386/sse.md (vpshrd_<mode><mask_name>): New pattern.

gcc/testsuite/
* gcc.target/i386/avx-1.c: Handle new intrinsics.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
* gcc.target/i386/avx512f-vpshrdd-2.c: New.
* gcc.target/i386/avx512f-vpshrdq-2.c: Ditto.
* gcc.target/i386/avx512vl-vpshrd-1.c: Ditto.
* gcc.target/i386/avx512vl-vpshrdd-2.c: Ditto.
* gcc.target/i386/avx512vl-vpshrdq-2.c: Ditto.

From-SVN: r255209

6 years agoEnable VBMI2 support [4/7]
Julia Koval [Tue, 28 Nov 2017 17:51:12 +0000 (18:51 +0100)]
Enable VBMI2 support [4/7]

gcc/
config/i386/avx512vbmi2intrin.h (_mm512_shldi_epi16,
_mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16, _mm512_shldi_epi32,
_mm512_mask_shldi_epi32, _mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
_mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): New intrinsics.
config/i386/avx512vbmi2vlintrin.h (_mm256_shldi_epi16,
_mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
_mm256_mask_shldi_epi32, _mm256_maskz_shldi_epi32, _mm256_shldi_epi32,
_mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64, _mm256_shldi_epi64,
_mm_mask_shldi_epi16, _mm_maskz_shldi_epi16, _mm_shldi_epi16,
_mm_mask_shldi_epi32, _mm_maskz_shldi_epi32, _mm_shldi_epi32,
_mm_mask_shldi_epi64, _mm_maskz_shldi_epi64, _mm_shldi_epi64): Ditto.
config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_INT,
V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT, V16SI_FTYPE_V16SI_V16SI_INT,
V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT,
V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT, V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT,
V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT,
V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT,
V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT,
V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT,
V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT): New types.
config/i386/i386-builtin.def (__builtin_ia32_vpshld_v32hi,
__builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshld_v16hi,
__builtin_ia32_vpshld_v16hi_mask, __builtin_ia32_vpshld_v8hi,
__builtin_ia32_vpshld_v8hi_mask, __builtin_ia32_vpshld_v16si,
__builtin_ia32_vpshld_v16si_mask, __builtin_ia32_vpshld_v8si,
__builtin_ia32_vpshld_v8si_mask, __builtin_ia32_vpshld_v4si,
__builtin_ia32_vpshld_v4si_mask, __builtin_ia32_vpshld_v8di,
__builtin_ia32_vpshld_v8di_mask, __builtin_ia32_vpshld_v4di,
__builtin_ia32_vpshld_v4di_mask, __builtin_ia32_vpshld_v2di,
__builtin_ia32_vpshld_v2di_mask): New builtins.
config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
config/i386/sse.md (vpshld_<mode><mask_name>): New pattern.

gcc/testsuite/
gcc.target/i386/avx-1.c: Handle new intrinics.
gcc.target/i386/sse-13.c: Ditto.
gcc.target/i386/sse-23.c: Ditto.
gcc.target/i386/avx512f-vpshld-1.c: New test.
gcc.target/i386/avx512f-vpshldd-2.c: Ditto.
gcc.target/i386/avx512f-vpshldq-2.c: Ditto.
gcc.target/i386/avx512vl-vpshld-1.c: Ditto.
gcc.target/i386/avx512vl-vpshldd-2.c: Ditto.
gcc.target/i386/avx512vl-vpshldq-2.c: Ditto.

From-SVN: r255208

6 years agore PR fortran/83021 (gfortran segfault in polymorphic assignment)
Paul Thomas [Tue, 28 Nov 2017 15:13:42 +0000 (15:13 +0000)]
re PR fortran/83021 (gfortran segfault in polymorphic assignment)

2017-11-28  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/83021
* resolve.c (resolve_component): Only escape for use assciated
vtypes if the current namespace has no proc_name and is most
particularly block data.

From-SVN: r255202

6 years agore PR tree-optimization/80776 (-Wformat-overflow false positive for %d on integer...
Richard Biener [Tue, 28 Nov 2017 14:58:11 +0000 (14:58 +0000)]
re PR tree-optimization/80776 (-Wformat-overflow false positive for %d on integer bounded by __builtin_unreachable)

2017-11-28  Richard Biener  <rguenther@suse.de>

PR tree-optimization/80776
* gimple-ssa-evrp-analyze.h (evrp_range_analyzer::set_ssa_range_info):
Declare.
* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::set_ssa_range_info):
New function.
(evrp_range_analyzer::record_ranges_from_incoming_edges):
If the incoming edge is an effective fallthru because the other
edge only reaches a __builtin_unreachable () then record ranges
derived from the controlling condition in SSA info.
(evrp_range_analyzer::record_ranges_from_phis): Use set_ssa_range_info.
(evrp_range_analyzer::record_ranges_from_stmt): Likewise.

* gcc.dg/pr80776-1.c: New testcase.
* gcc.dg/pr80776-2.c: Likewise.

From-SVN: r255201

6 years agoMakefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null on mingw build hosts.
Olivier Hainque [Tue, 28 Nov 2017 14:23:36 +0000 (14:23 +0000)]
Makefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null on mingw build hosts.

2017-11-28  Olivier Hainque  <hainque@adacore.com>

* Makefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null
on mingw build hosts.

From-SVN: r255200

6 years agoAdd std::to_address for C++2a (P0653R2)
Glen Joseph Fernandes [Tue, 28 Nov 2017 14:22:32 +0000 (14:22 +0000)]
Add std::to_address for C++2a (P0653R2)

2017-11-28  Glen Joseph Fernandes  <glenjofe@gmail.com>

* include/bits/ptr_traits.h (to_address): Implement to_address.
* testsuite/20_util/to_address/1.cc: New test.

From-SVN: r255199

6 years agore PR debug/81307 (g++.dg/debug/debug9.C -gstabs FAILs)
Jakub Jelinek [Tue, 28 Nov 2017 13:03:37 +0000 (14:03 +0100)]
re PR debug/81307 (g++.dg/debug/debug9.C -gstabs FAILs)

PR debug/81307
* dbxout.c (dbx_block_with_cold_children): Fix function comment.

From-SVN: r255198

6 years agore PR tree-optimization/83141 (SRA and memcpy folding interact badly generating wrong...
Richard Biener [Tue, 28 Nov 2017 11:58:45 +0000 (11:58 +0000)]
re PR tree-optimization/83141 (SRA and memcpy folding interact badly generating wrong-code)

2017-11-28  Richard Biener  <rguenther@suse.de>

PR middle-end/83141
* gimple-fold.c (gimple_fold_builtin_memory_op): For aggregate
copies generated from memcpy use a character array as reference
type.

From-SVN: r255197

6 years agore PR c/83117 (FAIL: gcc.target/x86_64/abi/ms-sysv/ms-sysv.c (test for excess errors))
Jakub Jelinek [Tue, 28 Nov 2017 11:14:52 +0000 (12:14 +0100)]
re PR c/83117 (FAIL: gcc.target/x86_64/abi/ms-sysv/ms-sysv.c (test for excess errors))

PR c/83117
* gcc.target/x86_64/abi/ms-sysv/gen.cc (make_do_tests_decl): Drop
const from do_test_{u,v}*.

From-SVN: r255196

6 years agoRemove Cilk Plus support.
Julia Koval [Tue, 28 Nov 2017 10:35:37 +0000 (11:35 +0100)]
Remove Cilk Plus support.

* Makefile.def (target_modules): Remove libcilkrts.
* Makefile.in: Ditto.
* configure: Ditto.
* configure.ac: Ditto.

contrib/
* contrib/gcc_update: Ditto.

gcc/
* Makefile.in (cilkplus.def, cilk-builtins.def, c-family/cilk.o,
c-family/c-cilkplus.o, c-family/array-notation-common.o,
cilk-common.o, cilk.h, cilk-common.c): Remove.
* builtin-types.def
(BT_FN_INT_PTR_PTR_PTR_FTYPE_BT_INT_BT_PTR_BT_PTR_BT_PTR): Remove.
* builtins.c (is_builtin_name): Remove cilkplus condition.
(BUILT_IN_CILK_DETACH, BUILT_IN_CILK_POP_FRAME): Remove.
* builtins.def (DEF_CILK_BUILTIN_STUB, DEF_CILKPLUS_BUILTIN,
cilk-builtins.def, cilkplus.def): Remove.
* cif-code.def (CILK_SPAWN): Remove.
* cilk-builtins.def: Delete.
* cilk-common.c: Ditto.
* cilk.h: Ditto.
* cilkplus.def: Ditto.
* config/darwin.h (fcilkplus): Delete.
* cppbuiltin.c: Ditto.
* doc/extend.texi: Remove cilkplus doc.
* doc/generic.texi: Ditto.
* doc/invoke.texi: Ditto.
* doc/passes.texi: Ditto.
* gcc.c (fcilkplus): Remove.
* gengtype.c (cilk.h): Remove.
* gimple-pretty-print.c (dump_gimple_omp_for): Remove cilkplus support.
* gimple.h (GF_OMP_FOR_KIND_CILKFOR, GF_OMP_FOR_KIND_CILKSIMD): Remove.
* gimplify.c (gimplify_return_expr, maybe_fold_stmt,
gimplify_call_expr, is_gimple_stmt, gimplify_modify_expr,
gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses,
gimplify_omp_for, gimplify_expr): Remove cilkplus conditions.
* ipa-fnsummary.c (ipa_dump_fn_summary, compute_fn_summary,
inline_read_section): Ditto.
* ipa-inline-analysis.c (cilk.h): Remove.
* ira.c (ira_setup_eliminable_regset): Remove cilkplus support.
* lto-wrapper.c (merge_and_complain, append_compiler_options,
append_linker_options): Remove condition for fcilkplus.
* lto/lto-lang.c (cilk.h): Remove.
(lto_init): Remove condition for fcilkplus.
* omp-expand.c (expand_cilk_for_call): Delete.
(expand_omp_taskreg, expand_omp_for_static_chunk,
expand_omp_for): Remove cilkplus
conditions.
(expand_cilk_for): Delete.
* omp-general.c (omp_extract_for_data): Remove cilkplus support.
* omp-low.c (scan_sharing_clauses, create_omp_child_function,
execute_lower_omp, diagnose_sb_0): Ditto.
* omp-simd-clone.c (simd_clone_clauses_extract): Ditto.
* tree-core.h (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
* tree-nested.c: Ditto.
* tree-pretty-print.c (dump_omp_clause): Remove cilkplus support.
(dump_generic_node): Ditto.
* tree.c (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
* tree.def (cilk_simd, cilk_for, cilk_spawn_stmt,
cilk_sync_stmt): Delete.
* tree.h (CILK_SPAWN_FN, EXPR_CILK_SPAWN): Delete.

gcc/c-family/
* array-notation-common.c: Delete.
* c-cilkplus.c: Ditto.
* c-common.c (_Cilk_spawn, _Cilk_sync, _Cilk_for): Remove.
* c-common.def (ARRAY_NOTATION_REF): Remove.
* c-common.h (RID_CILK_SPAWN, build_array_notation_expr,
build_array_notation_ref, C_ORT_CILK, c_check_cilk_loop,
c_validate_cilk_plus_loop, cilkplus_an_parts,
cilk_ignorable_spawn_rhs_op,
cilk_recognize_spawn): Remove.
* c-gimplify.c (CILK_SPAWN_STMT): Remove.
* c-omp.c: Remove CILK_SIMD check.
* c-pragma.c: Ditto.
* c-pragma.h: Remove CILK related pragmas.
* c-pretty-print.c (c_pretty_printer::postfix_expression): Remove
ARRAY_NOTATION_REF condition.
(c_pretty_printer::expression): Ditto.
* c.opt (fcilkplus): Remove.
* cilk.c: Delete.

gcc/c/
* Make-lang.in (c/c-array-notation.o): Remove.
* c-array-notation.c: Delete.
* c-decl.c: Remove cilkplus condition.
* c-parser.c (c_parser_cilk_simd, c_parser_cilk_for,
c_parser_cilk_verify_simd, c_parser_array_notation,
c_parser_cilk_clause_vectorlength, c_parser_cilk_grainsize,
c_parser_cilk_simd_fn_vector_attrs,
c_finish_cilk_simd_fn_tokens): Delete.
(c_parser_declaration_or_fndef): Remove cilkplus condition.
(c_parser_direct_declarator_inner): Ditto.
(CILK_SIMD_FN_CLAUSE_MASK): Delete.
(c_parser_attributes, c_parser_compound_statement,
c_parser_statement_after_labels, c_parser_if_statement,
c_parser_switch_statement, c_parser_while_statement,
c_parser_do_statement, c_parser_for_statement,
c_parser_unary_expression, c_parser_postfix_expression,
c_parser_postfix_expression_after_primary,
c_parser_pragma, c_parser_omp_clause_name, c_parser_omp_all_clauses,
c_parser_omp_for_loop,
c_finish_omp_declare_simd): Remove cilkplus support.
* c-typeck.c (build_array_ref, build_function_call_vec,
convert_arguments, lvalue_p, build_compound_expr, c_finish_return,
c_finish_if_stmt, c_finish_loop,
build_binary_op): Remove cilkplus support.

gcc/cp/
* Make-lang.in (cp/cp-array-notation.o, cp/cp-cilkplus.o): Delete.
* call.c (convert_for_arg_passing, build_cxx_call): Remove cilkplus.
* constexpr.c (potential_constant_expression_1): Ditto.
* cp-array-notation.c: Delete.
* cp-cilkplus.c: Ditto.
* cp-cilkplus.h: Ditto.
* cp-gimplify.c (cp_gimplify_expr, cp_fold_r, cp_genericize): Remove
cilkplus condition.
* cp-objcp-common.c (ARRAY_NOTATION_REF): Delete.
* cp-tree.h (cilkplus_an_triplet_types_ok_p): Delete.
* decl.c (grokfndecl, finish_function): Remove cilkplus condition.
* error.c (dump_decl, dump_expr): Remove ARRAY_NOTATION_REF condition.
* lambda.c (cp-cilkplus.h): Remove.
* parser.c (cp_parser_cilk_simd, cp_parser_cilk_for,
cp_parser_cilk_simd_vectorlength): Delete.
(cp_debug_parser, cp_parser_ctor_initializer_opt_and_function_body,
cp_parser_postfix_expression, cp_parser_postfix_open_square_expression,
cp_parser_statement, cp_parser_jump_statement,
cp_parser_direct_declarator,
cp_parser_late_return_type_opt, cp_parser_gnu_attribute_list,
cp_parser_omp_clause_name, cp_parser_omp_clause_aligned,
cp_parser_omp_clause_linear, cp_parser_omp_all_clauses,
cp_parser_omp_flush, cp_parser_omp_for_cond, cp_parser_omp_for_incr,
cp_parser_omp_for_loop_init, cp_parser_omp_for_loop,
cp_parser_omp_declare_simd): Remove cilkplus support.
(CILK_SIMD_FN_CLAUSE_MASK, cp_parser_late_parsing_cilk_simd_fn_info,
cp_parser_cilk_grainsize): Remove.
(cp_parser_pragma, c_parse_file): Remove cilkplus support.
(cp_parser_cilk_simd_vectorlength, cp_parser_cilk_simd_linear,
cp_parser_cilk_simd_clause_name, cp_parser_cilk_simd_all_clauses,
cp_parser_cilk_simd, cp_parser_cilk_for): Remove.
* parser.h (IN_CILK_SIMD_FOR, IN_CILK_SPAWN): Remove.
* pt.c (tsubst_attribute, tsubst_expr, tsubst_copy_and_build): Remove
cilkplus support.
* semantics.c (finish_goto_stmt, begin_while_stmt, finish_do_body,
finish_init_stmt, finish_switch_cond, simplify_aggr_init_expr,
finish_omp_clauses, finish_omp_clauses,
finish_omp_for): Remove cilkplus support.
* tree.c (lvalue_kind): Remove ARRAY_NOTATION_REF conditon.
* typeck.c (cp_build_array_ref, cp_build_compound_expr,
check_return_expr): Remove cilkplus support.

gcc/testsuite/
* c-c++-common/attr-simd-3.c: Delete.
* c-c++-common/cilk-plus/AN/an-if.c: Delete.
* c-c++-common/cilk-plus/AN/array_test1.c: Delete.
* c-c++-common/cilk-plus/AN/array_test2.c: Delete.
* c-c++-common/cilk-plus/AN/array_test_ND.c: Delete.
* c-c++-common/cilk-plus/AN/builtin_fn_custom.c: Delete.
* c-c++-common/cilk-plus/AN/builtin_fn_mutating.c: Delete.
* c-c++-common/cilk-plus/AN/builtin_func_double.c: Delete.
* c-c++-common/cilk-plus/AN/builtin_func_double2.c: Delete.
* c-c++-common/cilk-plus/AN/comma_exp.c: Delete.
* c-c++-common/cilk-plus/AN/conditional.c: Delete.
* c-c++-common/cilk-plus/AN/decl-ptr-colon.c: Delete.
* c-c++-common/cilk-plus/AN/dimensionless-arrays.c: Delete.
* c-c++-common/cilk-plus/AN/exec-once.c: Delete.
* c-c++-common/cilk-plus/AN/exec-once2.c: Delete.
* c-c++-common/cilk-plus/AN/fn_ptr-2.c: Delete.
* c-c++-common/cilk-plus/AN/fn_ptr.c: Delete.
* c-c++-common/cilk-plus/AN/fp_triplet_values.c: Delete.
* c-c++-common/cilk-plus/AN/gather-scatter-errors.c: Delete.
* c-c++-common/cilk-plus/AN/gather_scatter.c: Delete.
* c-c++-common/cilk-plus/AN/if_test.c: Delete.
* c-c++-common/cilk-plus/AN/if_test_errors.c: Delete.
* c-c++-common/cilk-plus/AN/misc.c: Delete.
* c-c++-common/cilk-plus/AN/n-ptr-test.c: Delete.
* c-c++-common/cilk-plus/AN/parser_errors.c: Delete.
* c-c++-common/cilk-plus/AN/parser_errors2.c: Delete.
* c-c++-common/cilk-plus/AN/parser_errors3.c: Delete.
* c-c++-common/cilk-plus/AN/parser_errors4.c: Delete.
* c-c++-common/cilk-plus/AN/pr57457-2.c: Delete.
* c-c++-common/cilk-plus/AN/pr57457.c: Delete.
* c-c++-common/cilk-plus/AN/pr57490.c: Delete.
* c-c++-common/cilk-plus/AN/pr57541-2.c: Delete.
* c-c++-common/cilk-plus/AN/pr57541.c: Delete.
* c-c++-common/cilk-plus/AN/pr57577.c: Delete.
* c-c++-common/cilk-plus/AN/pr58942.c: Delete.
* c-c++-common/cilk-plus/AN/pr61191.c: Delete.
* c-c++-common/cilk-plus/AN/pr61455-2.c: Delete.
* c-c++-common/cilk-plus/AN/pr61455.c: Delete.
* c-c++-common/cilk-plus/AN/pr61962.c: Delete.
* c-c++-common/cilk-plus/AN/pr61963.c: Delete.
* c-c++-common/cilk-plus/AN/pr62008.c: Delete.
* c-c++-common/cilk-plus/AN/pr63884.c: Delete.
* c-c++-common/cilk-plus/AN/rank_mismatch.c: Delete.
* c-c++-common/cilk-plus/AN/rank_mismatch2.c: Delete.
* c-c++-common/cilk-plus/AN/rank_mismatch3.c: Delete.
* c-c++-common/cilk-plus/AN/sec_implicit.c: Delete.
* c-c++-common/cilk-plus/AN/sec_implicit2.c: Delete.
* c-c++-common/cilk-plus/AN/sec_implicit_ex.c: Delete.
* c-c++-common/cilk-plus/AN/sec_reduce_ind_same_value.c: Delete.
* c-c++-common/cilk-plus/AN/sec_reduce_max_min_ind.c: Delete.
* c-c++-common/cilk-plus/AN/sec_reduce_return.c: Delete.
* c-c++-common/cilk-plus/AN/side-effects-1.c: Delete.
* c-c++-common/cilk-plus/AN/test_builtin_return.c: Delete.
* c-c++-common/cilk-plus/AN/test_sec_limits.c: Delete.
* c-c++-common/cilk-plus/AN/tst_lngth.c: Delete.
* c-c++-common/cilk-plus/AN/vla.c: Delete.
* c-c++-common/cilk-plus/CK/Wparentheses-1.c: Delete.
* c-c++-common/cilk-plus/CK/cilk-for-2.c: Delete.
* c-c++-common/cilk-plus/CK/cilk-for-3.c: Delete.
* c-c++-common/cilk-plus/CK/cilk-fors.c: Delete.
* c-c++-common/cilk-plus/CK/cilk_for_errors.c: Delete.
* c-c++-common/cilk-plus/CK/cilk_for_grain.c: Delete.
* c-c++-common/cilk-plus/CK/cilk_for_grain_errors.c: Delete.
* c-c++-common/cilk-plus/CK/cilk_for_ptr_iter.c: Delete.
* c-c++-common/cilk-plus/CK/compound_cilk_spawn.c: Delete.
* c-c++-common/cilk-plus/CK/concec_cilk_spawn.c: Delete.
* c-c++-common/cilk-plus/CK/errors.c: Delete.
* c-c++-common/cilk-plus/CK/fib.c: Delete.
* c-c++-common/cilk-plus/CK/fib_init_expr_xy.c: Delete.
* c-c++-common/cilk-plus/CK/fib_no_return.c: Delete.
* c-c++-common/cilk-plus/CK/fib_no_sync.c: Delete.
* c-c++-common/cilk-plus/CK/invalid_spawns.c: Delete.
* c-c++-common/cilk-plus/CK/invalid_sync.c: Delete.c
* c-c++-common/cilk-plus/CK/nested_cilk_for.c: Delete.
* c-c++-common/cilk-plus/CK/no_args_error.c: Delete.
* c-c++-common/cilk-plus/CK/pr59631.c: Delete.
* c-c++-common/cilk-plus/CK/pr60197-2.c: Delete.
* c-c++-common/cilk-plus/CK/pr60197.c: Delete.
* c-c++-common/cilk-plus/CK/pr60469.c: Delete.
* c-c++-common/cilk-plus/CK/pr60586.c: Delete.
* c-c++-common/cilk-plus/CK/pr63307.c: Delete.
* c-c++-common/cilk-plus/CK/pr69826-1.c: Delete.
* c-c++-common/cilk-plus/CK/pr69826-2.c: Delete.
* c-c++-common/cilk-plus/CK/pr79428-4.c: Delete.
* c-c++-common/cilk-plus/CK/pr79428-7.c: Delete.
* c-c++-common/cilk-plus/CK/spawn_in_return.c: Delete.
* c-c++-common/cilk-plus/CK/spawnee_inline.c: Delete.
* c-c++-common/cilk-plus/CK/spawner_inline.c: Delete.
* c-c++-common/cilk-plus/CK/spawning_arg.c: Delete.
* c-c++-common/cilk-plus/CK/steal_check.c: Delete.
* c-c++-common/cilk-plus/CK/sync_wo_spawn.c: Delete.
* c-c++-common/cilk-plus/CK/test__cilk.c: Delete.
* c-c++-common/cilk-plus/CK/varargs_test.c: Delete.
* c-c++-common/cilk-plus/PS/Wparentheses-1.c: Delete.
* c-c++-common/cilk-plus/PS/body.c: Delete.
* c-c++-common/cilk-plus/PS/clauses1.c: Delete.
* c-c++-common/cilk-plus/PS/clauses2.c: Delete.
* c-c++-common/cilk-plus/PS/clauses3.c: Delete.
* c-c++-common/cilk-plus/PS/clauses4.c: Delete.
* c-c++-common/cilk-plus/PS/for1.c: Delete.
* c-c++-common/cilk-plus/PS/for2.c: Delete.
* c-c++-common/cilk-plus/PS/for3.c: Delete.
* c-c++-common/cilk-plus/PS/pr69363.c: Delete.
* c-c++-common/cilk-plus/PS/reduction-1.c: Delete.
* c-c++-common/cilk-plus/PS/reduction-2.c: Delete.
* c-c++-common/cilk-plus/PS/reduction-3.c: Delete.
* c-c++-common/cilk-plus/PS/run-1.c: Delete.
* c-c++-common/cilk-plus/PS/safelen.c: Delete.
* c-c++-common/cilk-plus/PS/vectorlength-2.c: Delete.
* c-c++-common/cilk-plus/PS/vectorlength-3.c: Delete.
* c-c++-common/cilk-plus/PS/vectorlength.c: Delete.
* c-c++-common/cilk-plus/SE/ef_error.c: Delete.
* c-c++-common/cilk-plus/SE/ef_error2.c: Delete.
* c-c++-common/cilk-plus/SE/ef_error3.c: Delete.
* c-c++-common/cilk-plus/SE/ef_test.c: Delete.
* c-c++-common/cilk-plus/SE/ef_test2.c: Delete.
* c-c++-common/cilk-plus/SE/vlength_errors.c: Delete.
* g++.dg/cilk-plus/AN/array_function.c: Delete.
* g++.dg/cilk-plus/AN/array_test1_tplt.c: Delete.
* g++.dg/cilk-plus/AN/array_test2_tplt.c: Delete.
* g++.dg/cilk-plus/AN/array_test_ND_tplt.c: Delete.
* g++.dg/cilk-plus/AN/braced_list.c: Delete.
* g++.dg/cilk-plus/AN/builtin_fn_custom_tplt.c: Delete.
* g++.dg/cilk-plus/AN/builtin_fn_mutating_tplt.c: Delete.
* g++.dg/cilk-plus/AN/fp_triplet_values_tplt.c: Delete.
* g++.dg/cilk-plus/AN/postincr_test.c: Delete.
* g++.dg/cilk-plus/AN/preincr_test.c: Delete.
* g++.dg/cilk-plus/CK/catch_exc.c: Delete.
* g++.dg/cilk-plus/CK/cf3.c: Delete.
* g++.dg/cilk-plus/CK/cilk-for-tplt.c: Delete.
* g++.dg/cilk-plus/CK/const_spawn.c: Delete.
* g++.dg/cilk-plus/CK/fib-opr-overload.c: Delete.
* g++.dg/cilk-plus/CK/fib-tplt.c: Delete.
* g++.dg/cilk-plus/CK/for1.c: Delete.
* g++.dg/cilk-plus/CK/lambda_spawns.c: Delete.
* g++.dg/cilk-plus/CK/lambda_spawns_tplt.c: Delete.
* g++.dg/cilk-plus/CK/pr60586.c: Delete.
* g++.dg/cilk-plus/CK/pr66326.c: Delete.
* g++.dg/cilk-plus/CK/pr68001.c: Delete.
* g++.dg/cilk-plus/CK/pr68997.c: Delete.
* g++.dg/cilk-plus/CK/pr69024.c: Delete.
* g++.dg/cilk-plus/CK/pr69048.c: Delete.
* g++.dg/cilk-plus/CK/pr69267.c: Delete.
* g++.dg/cilk-plus/CK/pr80038.c: Delete.
* g++.dg/cilk-plus/CK/stl_iter.c: Delete.
* g++.dg/cilk-plus/CK/stl_rev_iter.c: Delete.
* g++.dg/cilk-plus/CK/stl_test.c: Delete.
* g++.dg/cilk-plus/cilk-plus.exp
* g++.dg/cilk-plus/ef_test.C: Delete.
* g++.dg/cilk-plus/for.C: Delete.
* g++.dg/cilk-plus/for2.C: Delete.
* g++.dg/cilk-plus/for3.C: Delete.
* g++.dg/cilk-plus/for4.C: Delete.
* g++.dg/cilk-plus/pr60967.C: Delete.
* g++.dg/cilk-plus/pr69028.C: Delete.
* g++.dg/cilk-plus/pr70565.C: Delete.
* g++.dg/pr57662.C: Delete.
* gcc.dg/cilk-plus/cilk-plus.exp
* gcc.dg/cilk-plus/for1.c: Delete.
* gcc.dg/cilk-plus/for2.c: Delete.
* gcc.dg/cilk-plus/jump-openmp.c: Delete.
* gcc.dg/cilk-plus/jump.c: Delete.
* gcc.dg/cilk-plus/pr69798-1.c: Delete.
* gcc.dg/cilk-plus/pr69798-2.c: Delete.
* gcc.dg/cilk-plus/pr78306.c: Delete.
* gcc.dg/cilk-plus/pr79116.c: Delete.
* gcc.dg/graphite/id-28.c: Delete.
* lib/cilk-plus-dg.exp: Delete.
* lib/target-supports.exp (cilkplus_runtime): Delete.

Co-Authored-By: Sebastian Peryt <sebastian.peryt@intel.com>
From-SVN: r255195

6 years ago[Patch AArch64] Fixup floating point division with -march=armv8-a+nosimd
Ramana Radhakrishnan [Tue, 28 Nov 2017 10:26:28 +0000 (10:26 +0000)]
[Patch AArch64] Fixup floating point division with -march=armv8-a+nosimd

The canonical examples is :

    double
    foo (double x, double y)
      {
        return x / y;
      }

    with -march=armv8-a+nosimd

generates a function that calls __divdf3. Ofcourse on AArch64 we don't
have any software floating point and this causes issues.

There is also a problem in +nosimd that has existed since the dawn of
time in the port with respect to long doubles (128 bit floating
point), here the ABI and the compiler expect the presence of the SIMD
unit as these parameters are passed in the vector registers. Thus
while +nosimd tries to prevent the use of SIMD instructions in the
compile we don't get this right as we end up using ldr qN / str qN
instructions and even there I think things go wrong in a simple
example that I tried.

Is that sufficient to consider marking +nosimd as deprecated in GCC-8
and remove this in a future release ?

That is not a subject for this patch but something separate but I
would like to put this into trunk and the release
branches. Bootstrapped and regression tested on my aarch64 desktop.

Ok ?

From-SVN: r255194

6 years agore PR rtl-optimization/81020 (wrong code with -O -fno-tree-bit-ccp -fno-tree-coalesce...
Jakub Jelinek [Tue, 28 Nov 2017 10:22:31 +0000 (11:22 +0100)]
re PR rtl-optimization/81020 (wrong code with -O -fno-tree-bit-ccp -fno-tree-coalesce-vars -fno-tree-vrp)

PR rtl-optimization/81020
* gcc.dg/pr81020.c: New test.

From-SVN: r255193

6 years agotree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree.
Jakub Jelinek [Tue, 28 Nov 2017 08:43:32 +0000 (09:43 +0100)]
tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree.

* tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree.
Adjust comment.
* tree.h (SWITCH_LABELS): Remove.
* gimplify.c (gimplify_switch_expr): Don't test SWITCH_LABELS,
assert SWITCH_BODY is non-NULL.
* tree-pretty-print.c (dump_generic_node): Remove SWITCH_LABELS
handling.
* tree.c (block_may_fallthru): Always return true; for SWITCH_EXPR.
c/
* c-typeck.c (c_start_case): Build SWITCH_EXPR using build2 instead
of build3.
cp/
* cp-gimplify.c (genericize_switch_stmt): Build SWITCH_EXPR using
build2_loc instead of build3_loc.
ada/
* gcc-interface/trans.c (Case_Statement_to_gnu): Build SWITCH_EXPR
using build2 instead of build3.
jit/
* jit-playback.c (add_switch): Build SWITCH_EXPR using build2 instead
of build3.  Formatting fixes.  Adjust funciton comment.
fortran/
* trans-decl.c (gfc_trans_entry_master_switch): Build SWITCH_EXPR
using fold_build2_loc instead of fold_build3_loc.
* trans-io.c (io_result): Likewise.
* trans-stmt.c (gfc_trans_integer_select, gfc_trans_character_select):
Likewise.
go/
* go-gcc.cc (Gcc_backend::switch_statement): Build SWITCH_EXPR using
build2_loc instead of build3_loc.
brig/
* brigfrontend/brig-branch-inst-handler.cc
(brig_branch_inst_handler::operator): Build SWITCH_EXPR using build2
instead of build3.

From-SVN: r255192

6 years agore PR tree-optimization/80788 (ICE in set_value_range, at tree-vrp.c:252)
Jakub Jelinek [Tue, 28 Nov 2017 08:40:36 +0000 (09:40 +0100)]
re PR tree-optimization/80788 (ICE in set_value_range, at tree-vrp.c:252)

PR tree-optimization/80788
* match.pd (X +- C1 CMP C2 -> X CMP C2 -+ C1): If res
has TREE_OVERFLOW set, call drop_tree_overflow.

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

From-SVN: r255191

6 years agore PR target/83158 (gcc.target/i386/pr78057.c fail)
Richard Biener [Tue, 28 Nov 2017 08:15:03 +0000 (08:15 +0000)]
re PR target/83158 (gcc.target/i386/pr78057.c fail)

2017-11-28  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83158
* tree-vrp.c (intersect_ranges): Prefer ~[0, 0] in a few more
cases.

From-SVN: r255190

6 years ago* MAINTAINERS (write after approval): Add myself.
Julia Koval [Tue, 28 Nov 2017 08:14:43 +0000 (09:14 +0100)]
* MAINTAINERS (write after approval): Add myself.

From-SVN: r255189

6 years agors6000: Improve comparison rtx_cost (PR81288)
Segher Boessenkool [Tue, 28 Nov 2017 01:28:57 +0000 (02:28 +0100)]
rs6000: Improve comparison rtx_cost (PR81288)

The current rs6000 rtx_cost for comparisons against 0 is very high if
TARGET_ISEL && !TARGET_MFCRF, much higher than for reg-reg comparisons,
much higher than a load of 0 and such a reg-reg-comparison.  This leads
to infinite recursion in CSE (see PR81288).

This patch removes the too-high cost, also simplifying this code.

PR 81288/target
* config/rs6000/rs6000.c (rs6000_rtx_costs): Do not handle
TARGET_ISEL && !TARGET_MFCRF differently.  Simplify code.

From-SVN: r255188

6 years agors6000: Improve scc isel
Segher Boessenkool [Tue, 28 Nov 2017 00:17:16 +0000 (01:17 +0100)]
rs6000: Improve scc isel

If we have a negative condition we can use a literal 0 in the isel,
instead of having to load it into a register.  If the condition is from
a comparison with an immediate we can change e.g. LT to LE and adjust
the immediate, saving a li instruction.

* config/rs6000/rs6000.md (<code><GPR:mode><GPR2:mode>2_isel): Change
LT/GT/LTU/GTU to LE/GE/LEU/GEU where possible.

From-SVN: r255186

6 years agoDaily bump.
GCC Administrator [Tue, 28 Nov 2017 00:16:20 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255185

6 years agoPR c++/83058 - ICE on C++ code with negative array index: in warn_placement_new_too_small
Martin Sebor [Tue, 28 Nov 2017 00:02:17 +0000 (00:02 +0000)]
PR c++/83058 - ICE on C++ code with negative array index: in warn_placement_new_too_small

gcc/cp/ChangeLog:

PR c++/83058
* init.c (warn_placement_new_too_small): Use offset_int instead of
HOST_WIDE_INT.

gcc/testsuite/ChangeLog:

PR c++/83058
* g++.dg/warn/Wplacement-new-size-5.C: New test.

From-SVN: r255182

6 years agore PR c++/81888 (Structured bindings stopped working)
Jakub Jelinek [Mon, 27 Nov 2017 21:54:25 +0000 (22:54 +0100)]
re PR c++/81888 (Structured bindings stopped working)

PR c++/81888
* parser.c (cp_parser_decomposition_declaration): Reject just
BRACE_ENCLOSED_INITIALIZER_P initializers with nelts != 1 rather
than all such CONSTRUCTORs, and only if is_direct_init is true.

* g++.dg/cpp1z/decomp30.C: Add a test for structured binding with
= {} and = { a, a } initializers.
* g++.dg/cpp1z/decomp31.C: New test.

From-SVN: r255180

6 years agopt.c (primary_template_specialization_p): Rename from
Jason Merrill [Mon, 27 Nov 2017 21:31:00 +0000 (16:31 -0500)]
pt.c (primary_template_specialization_p): Rename from

* pt.c (primary_template_specialization_p): Rename from

primary_template_instantiation_p.  Don't check
DECL_TEMPLATE_INSTANTIATION.
* call.c, cp-tree.h, decl2.c: Adjust.

From-SVN: r255179

6 years ago[gcc]
Michael Meissner [Mon, 27 Nov 2017 19:45:56 +0000 (19:45 +0000)]
[gcc]
2017-11-27  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR middle_end/82333
* varasm.c (compare_constant): Take the mode of the constants into
account when comparing floating point constants.

[gcc/testsuite]
2017-11-27  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR middle_end/82333
* gcc.target/powerpc/pr82333.c: New test.

From-SVN: r255177

6 years agoAdd missing noexcept in string_view::find_first_of declaration
Stephan Bergmann [Mon, 27 Nov 2017 19:43:40 +0000 (19:43 +0000)]
Add missing noexcept in string_view::find_first_of declaration

2017-11-27  Stephan Bergmann  <sbergman@redhat.com>

* include/std/string_view (basic_string_view::find_first_of): Add
missing noexcept.

From-SVN: r255176

6 years agohash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier from explicit instantiati...
Gerald Pfeifer [Mon, 27 Nov 2017 17:29:06 +0000 (17:29 +0000)]
hash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier from explicit instantiation of debug_helper.

* hash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier
from explicit instantiation of debug_helper.
* vec.h (DEFINE_DEBUG_VEC): Ditto.

From-SVN: r255175

6 years agoFix std::unordered_map deduction guide
Stephan Bergmann [Mon, 27 Nov 2017 16:43:39 +0000 (16:43 +0000)]
Fix std::unordered_map deduction guide

2017-11-27  Stephan Bergmann  <sbergman@redhat.com>

* include/bits/unordered_map.h (unordered_map): Fix deduction guide.
* include/debug/unordered_map (unordered_map): Likewise.

From-SVN: r255174

6 years agogimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code, refactor a bit.
Richard Biener [Mon, 27 Nov 2017 14:35:13 +0000 (14:35 +0000)]
gimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code, refactor a bit.

2017-11-27  Richard Biener  <rguenther@suse.de>

* gimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code,
refactor a bit.

From-SVN: r255172

6 years agotree.c (wide_int_to_tree): Free discarded INTEGER_CST.
Richard Biener [Mon, 27 Nov 2017 14:30:36 +0000 (14:30 +0000)]
tree.c (wide_int_to_tree): Free discarded INTEGER_CST.

2017-11-27  Richard Biener  <rguenther@suse.de>

* tree.c (wide_int_to_tree): Free discarded INTEGER_CST.
(type_hash_canon): Also clear int_cst_hash_table entry for
TYPE_MIN/MAX_VALUE.
(build_nonstandard_integer_type): Hash all TYPE_MAX_VALUEs.

From-SVN: r255171

6 years agoextend.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
Tamar Christina [Mon, 27 Nov 2017 14:21:18 +0000 (14:21 +0000)]
extend.texi: Add -A suffix (ARMv8*-A, ARMv7-A).

2017-11-27  Tamar Christina  <tamar.christina@arm.com>

* doc/extend.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
* doc/invoke.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
* doc/sourcebuild.texi: Add -A suffix (ARMv8*-A, ARMv7-A).

From-SVN: r255169

6 years agore PR c++/81675 (attribute(noreturn) of destructor in :? not honored)
Jakub Jelinek [Mon, 27 Nov 2017 13:13:22 +0000 (14:13 +0100)]
re PR c++/81675 (attribute(noreturn) of destructor in :? not honored)

PR c++/81675
* cp-gimplify.c (cp_fold) <case COND_EXPR>: Don't return immediately
for VOID_TYPE_P COND_EXPRs, instead fold the operands and if op0 is
INTEGER_CST, ensure that both op1 and op2 are non-NULL and fall
through into normal folding, otherwise just rebuild x if any op
changed.

* g++.dg/warn/pr81675.C: New test.

From-SVN: r255167

6 years agoFix UB in hash-map.h
Markus Trippelsdorf [Mon, 27 Nov 2017 12:53:16 +0000 (12:53 +0000)]
Fix UB in hash-map.h

bootstrap-ubsan shows:
  gcc/hash-map.h:277:19: runtime error: member access within null pointer of type 'struct hash_map'

Fix the issue by returning early.

From-SVN: r255166

6 years agocfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.
Eric Botcazou [Mon, 27 Nov 2017 11:56:36 +0000 (11:56 +0000)]
cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.

* cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.
* loop-unroll.c (decide_unroll_constant_iterations): Implement it.
(decide_unroll_runtime_iterations): Likewise.
(decide_unroll_stupid): Likewise.

From-SVN: r255165

6 years agoFix code generation for buildtin_longjmp with CET.
Igor Tsimbalist [Mon, 27 Nov 2017 11:54:17 +0000 (12:54 +0100)]
Fix code generation for buildtin_longjmp with CET.

According to the description of  inssp instruction from Intel CET it
adusts the shadow stack pointer (ssp) only by value in the range of
[0..255]. As a number of adjustment could be greater than 255 there
should be a loop generated to adjust ssp.

gcc/
* config/i386/i386.md: Add a loop with incssp.
* testsuite/gcc.target/i386/cet-sjlj-1.c: Fix test.
* testsuite/gcc.target/i386/cet-sjlj-4.c: Likewise.

From-SVN: r255164

6 years ago[PR 81248] Fix ipa-sra size check
Martin Jambor [Mon, 27 Nov 2017 10:33:06 +0000 (11:33 +0100)]
[PR 81248] Fix ipa-sra size check

2017-11-27  Martin Jambor  <mjambor@suse.cz>

PR tree-optimization/81248
* tree-sra.c (splice_param_accesses): Remove size check.
(decide_one_param_reduction): Fix size check.
* gimple-pretty-print.c (dump_profile): Silence warning.
* params.def (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Adjust description.

testsuite/
* g++.dg/ipa/pr81248.C: New test.
* gcc.dg/tree-ssa/ssa-pre-31.c: Disable IPA-SRA.
* gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-2.c: Likewise.

From-SVN: r255163

6 years agonull-8.C (bar): New function.
Jakub Jelinek [Mon, 27 Nov 2017 10:29:03 +0000 (11:29 +0100)]
null-8.C (bar): New function.

* g++.dg/ubsan/null-8.C (bar): New function.
(foo): Use bar instead of __builtin_printf.

From-SVN: r255162

6 years agore PR debug/81307 (g++.dg/debug/debug9.C -gstabs FAILs)
Jakub Jelinek [Mon, 27 Nov 2017 08:48:56 +0000 (09:48 +0100)]
re PR debug/81307 (g++.dg/debug/debug9.C -gstabs FAILs)

PR debug/81307
* dbxout.c (lastlineno): New variable.
(dbx_debug_hooks): Use dbxout_switch_text_section as
switch_text_section debug hook.
(dbxout_function_end): Switch to current_function_section
rather than function_section.  If crtl->has_bb_partition,
output just one N_FUN, depending on in_cold_section_p.
(dbxout_source_line): Remember last lineno in lastlineno.
(dbxout_switch_text_section): New function.
(dbxout_function_decl): Adjust dbxout_block caller.
(dbx_block_with_cold_children): New function.
(dbxout_block): Return true if any LBRAC/RBRAC have been
emitted.  Use dbx_block_with_cold_children at depth == 0
in second partition.  Add PARENT_BLOCKNUM argument, pass
it optionally adjusted to children.  Output LBRAC/RBRAC
around recursive call only if the block is in the current
partition, if not and anything was output, emit empty
range LBRAC/RBRAC.
* final.c (final_scan_insn): Compute cold_function_name
before calling switch_text_section debug hook.  Call
that hook even if dwarf2out_do_frame if not emitting
dwarf debug info.

* g++.dg/debug/debug9.C: Remove -fno-reorder-blocks-and-partition
workaround.

From-SVN: r255161

6 years agore PR target/83100 (powerpc: internal compiler error: in get_variable_section, at...
Jakub Jelinek [Mon, 27 Nov 2017 08:34:50 +0000 (09:34 +0100)]
re PR target/83100 (powerpc: internal compiler error: in get_variable_section, at varasm.c:1150 with -fdata-sections)

PR target/83100
* varasm.c (bss_initializer_p): Return true for DECL_COMMON
TREE_READONLY decls.

* gcc.dg/pr83100-1.c: New test.
* gcc.dg/pr83100-2.c: New test.
* gcc.dg/pr83100-3.c: New test.
* gcc.dg/pr83100-4.c: New test.

From-SVN: r255160

6 years agoFix PR82488 - signed integer overflow in expr.c
Markus Trippelsdorf [Mon, 27 Nov 2017 05:20:43 +0000 (05:20 +0000)]
Fix PR82488 - signed integer overflow in expr.c

bootstrap-ubsan shows:
 gcc/expr.c:4103:17: runtime error: signed integer overflow: 0 - -9223372036854775808 cannot be represented in type 'long int'

Fix by handling the saw_unknown case earlier.

PR rtl-optimization/82488
* expr.c (fixup_args_size_notes): Avoid signed integer overflow.

diff --git a/gcc/expr.c b/gcc/expr.c
index ee07de5aaa44..e9d8555c9452 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4100,10 +4100,13 @@ fixup_args_size_notes (rtx_insn *prev, rtx_insn *last, int end_args_size)
       if (STACK_GROWS_DOWNWARD)
  this_delta = -(unsigned HOST_WIDE_INT) this_delta;

-      args_size -= this_delta;
+      if (saw_unknown)
+ args_size = INT_MIN;
+      else
+ args_size -= this_delta;
     }

-  return saw_unknown ? INT_MIN : args_size;
+  return args_size;
 }

 #ifdef PUSH_ROUNDING
--
Markus

From-SVN: r255159

6 years agoDaily bump.
GCC Administrator [Mon, 27 Nov 2017 00:16:12 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r255158

6 years agoi386.c (processor_target_table): Add skylake_cost for skylake-avx512.
Uros Bizjak [Sun, 26 Nov 2017 16:11:29 +0000 (17:11 +0100)]
i386.c (processor_target_table): Add skylake_cost for skylake-avx512.

* config/i386/i386.c (processor_target_table): Add skylake_cost for
skylake-avx512.
* config/i386/x86-tune-costs.h (skylake_memcpy, skylake_memset,
skylake_cost): New.

* config/i386/driver-i386.c (host_detect_local_cpu):
Detect skylake-avx512.

* config.gcc: Add -march=cannonlake.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect cannonlake.
* config/i386/i386-c.c (ix86_target_macros_internal): Handle cannonlake.
* config/i386/i386.c (processor_costs): Add m_CANNONLAKE.
(PTA_CANNONLAKE): New.
(processor_target_table): Add cannonlake.
(ix86_option_override_internal): Ditto.
(fold_builtin_cpu): Ditto.
(get_builtin_code_for_version): Handle cannonlake.
(M_INTEL_COREI7_CANNONLAKE): New.
* config/i386/i386.h (TARGET_CANNONLAKE, PROCESSOR_CANNONLAKE): New.
* doc/invoke.texi: Add -march=cannonlake.

gcc/testsuite/

* gcc.target/i386/funcspec-56.inc: Handle new march.
* g++.dg/ext/mv16.C: Ditto.

libgcc/

* config/i386/cpuinfo.c (get_intel_cpu): Handle cannonlake.
* config/i386/cpuinfo.h (processor_subtypes): Add
INTEL_COREI7_CANNONLAKE.

From-SVN: r255155