]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
7 years ago PR target/81616
hubicka [Sat, 2 Dec 2017 09:22:41 +0000 (09:22 +0000)] 
PR target/81616
* x86-tune.def: Remove obsolette FIXMEs.
(X86_TUNE_PARTIAL_FLAG_REG_STALL): Disable for generic
(X86_TUNE_FUSE_CMP_AND_BRANCH_32, X86_TUNE_FUSE_CMP_AND_BRANCH_64,
X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, X86_TUNE_FUSE_ALU_AND_BRANCH):
Enable for generic.
(X86_TUNE_PAD_RETURNS): Disable for generic.
* gcc.target/i386/pad-1.c: Compile for amdfam10.
* gcc.target/i386/align-limit.c: Likewise.

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

7 years ago PR tree-optimization/83170
jakub [Sat, 2 Dec 2017 07:58:57 +0000 (07:58 +0000)] 
PR tree-optimization/83170
PR tree-optimization/83241
* gimple-ssa-store-merging.c
(imm_store_chain_info::try_coalesce_bswap): Update vuse field from
gimple_vuse (ins_stmt) in case it has changed.
(imm_store_chain_info::output_merged_store): Likewise.

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

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

7 years ago * tree-chkp.c (chkp_compute_bounds_for_assignment): Handle
jakub [Sat, 2 Dec 2017 07:58:05 +0000 (07:58 +0000)] 
* tree-chkp.c (chkp_compute_bounds_for_assignment): Handle
POINTER_DIFF_EXPR.

* gcc.target/i386/mpx/pointer-diff-1.c: New test.

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

7 years ago PR c++/81212
jakub [Sat, 2 Dec 2017 07:57:04 +0000 (07:57 +0000)] 
PR c++/81212
* tree-cfg.c (pass_warn_function_return::execute): Handle
__builtin_ubsan_handle_missing_return like __builtin_unreachable
with BUILTINS_LOCATION.

* g++.dg/ubsan/pr81212.C: New test.
* g++.dg/ubsan/return-1.C: Add -Wno-return-type to dg-options.
* g++.dg/ubsan/return-2.C: Likewise.
* g++.dg/ubsan/return-7.C: Likewise.

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

7 years ago PR target/78643
jakub [Sat, 2 Dec 2017 07:54:47 +0000 (07:54 +0000)] 
PR target/78643
PR target/80583
* expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
is BLKmode for vector field with vector raw mode, use TYPE_MODE
instead of DECL_MODE.

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

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

7 years ago * config/i386/i386-protos.h (standard_sse_constant_opcode): Change
jakub [Sat, 2 Dec 2017 07:37:50 +0000 (07:37 +0000)] 
* config/i386/i386-protos.h (standard_sse_constant_opcode): Change
last argument to rtx pointer.
* config/i386/i386.c (standard_sse_constant_opcode): Replace X argument
with OPERANDS.  For AVX+ 128-bit VEX encoded instructions over 256-bit
or 512-bit.  If setting EXT_REX_SSE_REG_P, use EVEX encoded insn
depending on the chosen ISAs.
* config/i386/i386.md (*movxi_internal_avx512f, *movoi_internal_avx,
*movti_internal, *movdi_internal, *movsi_internal, *movtf_internal,
*movdf_internal, *movsf_internal): Adjust standard_sse_constant_opcode
callers.
* config/i386/sse.md (mov<mode>_internal): Likewise.
* config/i386/mmx.md (*mov<mode>_internal): Likewise.

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

7 years agodoc update for -dp
segher [Sat, 2 Dec 2017 02:03:19 +0000 (02:03 +0000)] 
doc update for -dp

* doc/invoke.texi (-dp): Say that instruction cost is printed as well.

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

7 years agors6000: Improve fusion assembler output
segher [Sat, 2 Dec 2017 01:33:39 +0000 (01:33 +0000)] 
rs6000: Improve fusion assembler output

This improves the output for load and store fusion a little.  In most
cases it removes the comment output, because that makes the generated
assembler code hard to read, and equivalent info is available with -dp
anyway.  For the vector loads it puts the comment on the second insn,
where it doesn't interfere with other debug comments.

* config/rs6000/rs6000-protos.h (emit_fusion_addis): Remove last two
parameters from prototype.
* config/rs6000/rs6000.c (emit_fusion_addis): Remove last two
parameters.  Don't print a comment.
(emit_fusion_gpr_load): Adjust.
(emit_fusion_load_store): Adjust.
* config/rs6000/rs6000.md (*fusion_p9_<mode>_constant): Adjust.
* config/rs6000/vsx.md (two peepholes): Print the "vector load fusion"
comment on the second line.

gcc/testsuite/
* gcc.target/powerpc/fusion.c: Add -dp to options.  Adjust the expected
output.
* gcc.target/powerpc/fusion3.c: Ditto.
* gcc.target/powerpc/fusion4.c: Ditto.

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

7 years agors6000: Set rs6000_cpu correctly (PR43871)
segher [Sat, 2 Dec 2017 01:23:41 +0000 (01:23 +0000)] 
rs6000: Set rs6000_cpu correctly (PR43871)

We set rs6000_cpu based on tune_index, but it should be cpu_index.
This patch fixes it.

PR target/43871
* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
rs6000_cpu based on cpu_index, not tune_index.

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

7 years agofinal: Improve output for -dp and -fverbose-asm
segher [Sat, 2 Dec 2017 01:20:08 +0000 (01:20 +0000)] 
final: Improve output for -dp and -fverbose-asm

This improves the assembler output (for -dp and -fverbose-asm) in
several ways.  It always prints the insn_cost.  It does not print
"[length = NN]" but "[c=NN l=NN]", to save space.  It does not add one
to the instruction alternative number (everything else starts counting
those at 0, too).  And finally, it tries to keep things lined up in
columns a bit better.

* final.c (output_asm_name): Print insn_cost.  Shorten output.  Print
which_alternative instead of which_alternative + 1.
(output_asm_insn): Print an extra tab if the template is short.

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

7 years ago runtime: export cgoCheck functions
ian [Sat, 2 Dec 2017 00:46:00 +0000 (00:46 +0000)] 
runtime: export cgoCheck functions

    The functions cgoCheckPointer and cgoCheckResult are called by code
    generated by cgo. That means that we need to export them using
    go:linkname, as otherwise they are local symbols. The cgo code
    currently uses weak references to only call the symbols if they are
    defined, which is why it has been working--the cgo code has not been
    doing any checks.

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

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

7 years ago compiler: avoid GCC middle-end control warnings
ian [Sat, 2 Dec 2017 00:38:54 +0000 (00:38 +0000)] 
compiler: avoid GCC middle-end control warnings

    GCC has started emitting "control reaches end of non-void function"
    warnings. Avoid them for Go by 1) marking the builtin function panic
    and the compiler-generated function __go_runtime_error as not
    returning and 2) adding a default case to the switch used for select
    statements that simply calls __builtin_unreachable.

    Fixes golang/go#22767

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

* go-gcc.cc (Gcc_backend::Gcc_backend): Define
__builtin_unreachable.
(Gcc_backend::function): Add does_not_return parameter.

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

7 years agoDelete obsolete DWARF1 references.
wilson [Sat, 2 Dec 2017 00:24:36 +0000 (00:24 +0000)] 
Delete obsolete DWARF1 references.

gcc/
* common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from
comment.
* config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef.
* doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG
reference.
* doc/tm.texi: Regenerate.

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

7 years agoDaily bump.
gccadmin [Sat, 2 Dec 2017 00:16:15 +0000 (00:16 +0000)] 
Daily bump.

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

7 years ago[gcc]
meissner [Fri, 1 Dec 2017 23:52:20 +0000 (23:52 +0000)] 
[gcc]
2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/81959
* config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for
whether we can allocate pseudos before trying to fix an address.
* config/rs6000/rs6000.md (float_<mode>si2_hw): Make sure the
memory address is indexed or indirect.
(floatuns_<mode>si2_hw2): Likewise.

[gcct/testsuite]
2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/81959
* gcc.target/powerpc/pr81959.c: New test.

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

7 years ago compiler: introduce size threshold for nil checks
ian [Fri, 1 Dec 2017 23:12:13 +0000 (23:12 +0000)] 
compiler: introduce size threshold for nil checks

    Add a new control variable to the Gogo class that stores the size
    threshold for nil checks. This value can be used to control the
    policy for deciding when a given deference operation needs a check and
    when it does not. A size threshold of -1 means that every potentially
    faulting dereference needs an explicit check (and branch to error
    call). A size threshold of K (where K > 0) means that if the size of
    the object being dereferenced is >= K, then we need a check.

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

* go-c.h (go_create_gogo_args): Add nil_check_size_threshold
field.
* go-lang.c (go_langhook_init): Set nil_check_size_threshold.

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

7 years ago * doc/extend.texi: Mention C++14 library complex suffix.
jason [Fri, 1 Dec 2017 21:17:32 +0000 (21:17 +0000)] 
* doc/extend.texi: Mention C++14 library complex suffix.

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

7 years ago Give #include hints for <complex>.
jason [Fri, 1 Dec 2017 20:19:13 +0000 (20:19 +0000)] 
Give #include hints for <complex>.

* name-lookup.c (get_std_name_hint): Add <complex>.
* parser.c (cp_parser_diagnose_invalid_type_name): Call
suggest_alternative_in_explicit_scope.
(cp_parser_namespace_name): Likewise.

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

7 years ago PR c++/79228 - extensions hide C++14 complex literal operators
jason [Fri, 1 Dec 2017 20:19:07 +0000 (20:19 +0000)] 
PR c++/79228 - extensions hide C++14 complex literal operators

libcpp/
* expr.c (interpret_float_suffix): Ignore 'i' in C++14 and up.
(interpret_int_suffix): Likewise.
gcc/cp/
* parser.c (cp_parser_userdef_numeric_literal): Be helpful about
'i' in C++14 and up.

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

7 years ago * Makefile.in (TAGS): Add c-family/*.cc.
jason [Fri, 1 Dec 2017 20:19:01 +0000 (20:19 +0000)] 
* Makefile.in (TAGS): Add c-family/*.cc.

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

7 years ago[AArch64] Fix address printing on ILP32
wilco [Fri, 1 Dec 2017 19:54:29 +0000 (19:54 +0000)] 
[AArch64] Fix address printing on ILP32

Fix address printing for ILP32.  The md file uses 'a' in assembler
templates for symbolic addresses in adrp/add, which end up calling
aarch64_print_operand_address.  However in ILP32 these are not valid
memory addresses (being ptr_mode rather than Pmode), so the assert
triggers.  Since it is incorrect to use symbols in memory addresses
(besides literal pool accesses), change the 'a' to 'c' in the md file.

Skip one failing test in ILP32 which combines the 'p' modifier with the 'a'
assembler template to fake a memory reference.

    gcc/
* config/aarch64/aarch64.md (call_insn): Use %c rather than %a.
(call_value_insn): Likewise.
(sibcall_insn): Likewise.
(sibcall_value_insn): Likewise.
(movsi_aarch64): Likewise.
(movdi_aarch64): Likewise.
(add_losym_): Likewise.
(ldr_got_small_): Likewise.
(ldr_got_small_sidi): Likewise.
(ldr_got_small_28k_): Likewise.
(ldr_got_small_28k_sidi): Likewise.
* config/aarch64/aarch64.c (aarch64_print_address_internal):
Move output_addr_const to symbolic case. Add error check.
    testsuite/
* gcc.dg/asm-4.c: Skip on AArch64 with ILP32 as test is incorrect.

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

7 years agoFix an undefined behavior in fortran/decl.c
qinzhao [Fri, 1 Dec 2017 18:20:45 +0000 (18:20 +0000)] 
Fix an undefined behavior in fortran/decl.c

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

7 years ago2017-12-01 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Fri, 1 Dec 2017 18:06:31 +0000 (18:06 +0000)] 
2017-12-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/83224
* frontend-passes.c (create_var): Also handle
character arrays, handling deferred lenghts.

2017-12-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/83224
* gfortran.dg/dependency_51.f90: New test.

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

7 years agoFix narrowing conversions in string_view types
redi [Fri, 1 Dec 2017 16:10:31 +0000 (16:10 +0000)] 
Fix narrowing conversions in string_view types

* include/experimental/string_view (basic_string_view::_S_compare):
Use value-init so narrowing conversions are not ill-formed.
* include/std/string_view (basic_string_view::_S_compare): Likewise.

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

7 years agoDisable -Wliteral-suffix for standard UDLs
redi [Fri, 1 Dec 2017 16:10:25 +0000 (16:10 +0000)] 
Disable -Wliteral-suffix for standard UDLs

* include/bits/basic_string.h (operator""s): Add pragmas to disable
-Wliteral-suffix warnings.
* include/experimental/string_view (operator""sv): Likewise.
* include/std/chrono (operator""h, operator""min, operator""s)
(operator""ms, operator""us, operator""ns): Likewise.
* include/std/complex (operator""if, operator""i, operator""il):
Likewise.
* include/std/string_view (operator""sv): Likewise.
* testsuite/20_util/duration/literals/range.cc: Adjust dg-error.

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

7 years agoS/390: Split MVC instruction for better forwarding
krebbel [Fri, 1 Dec 2017 15:33:15 +0000 (15:33 +0000)] 
S/390: Split MVC instruction for better forwarding

Certain lengths used in an MVC instruction might disable operand
forwarding.  Split MVCs into up to 2 forwardable ones if possible.

gcc/ChangeLog:

2017-12-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/predicates.md (plus16_Q_operand): New predicate.
* config/s390/s390.md: Disable MVC merging peephole if it would
disable operand forwarding.
(new peephole2): Split MVCs if it would turn them into up to 2
forwardable MVCs.

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

7 years agoAdd comment to fix -Wfallthrough warning
redi [Fri, 1 Dec 2017 15:10:23 +0000 (15:10 +0000)] 
Add comment to fix -Wfallthrough warning

* include/bits/locale_facets_nonio.tcc (money_get::_M_extract): Add
fallthrough comment.

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

7 years agoFix -Wempty-body warnings for debug assertions
redi [Fri, 1 Dec 2017 15:10:20 +0000 (15:10 +0000)] 
Fix -Wempty-body warnings for debug assertions

* include/bits/node_handle.h (_Node_handle_common::operator=)
(_Node_handle_common::_M_swap): Add braces around debug assertions.

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

7 years agoUse const char* to fix -Wwrite-strings warning
redi [Fri, 1 Dec 2017 15:10:16 +0000 (15:10 +0000)] 
Use const char* to fix -Wwrite-strings warning

* include/ext/ropeimpl.h (rope::_S_dump): Use const char*.

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

7 years agoAdd [[noreturn]] attributes to fix warning
redi [Fri, 1 Dec 2017 15:10:13 +0000 (15:10 +0000)] 
Add [[noreturn]] attributes to fix warning

* libsupc++/nested_exception.h (__throw_with_nested_impl): Add
noreturn attribute.

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

7 years agoRemove stray semi-colons at namespace scope
redi [Fri, 1 Dec 2017 15:10:09 +0000 (15:10 +0000)] 
Remove stray semi-colons at namespace scope

* include/bits/regex_executor.tcc (_Executor::_M_rep_once_more):
Remove semi-colon after function body.
* include/bits/uniform_int_dist.h (_Power_of_2): Likewise.

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

7 years agoUse value-init syntax in std::__detail::__airy
redi [Fri, 1 Dec 2017 15:10:06 +0000 (15:10 +0000)] 
Use value-init syntax in std::__detail::__airy

* include/tr1/modified_bessel_func.tcc (__airy): Use value-init not
list-init.

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

7 years agoAdd noexcept to std::integral_constant members
redi [Fri, 1 Dec 2017 15:09:57 +0000 (15:09 +0000)] 
Add noexcept to std::integral_constant members

* include/std/type_traits (integral_constant): Make member functions
noexcept (LWG 2346).
* include/std/utility (integer_sequence): Likewise.

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

7 years ago2017-12-01 Paul Thomas <pault@gcc.gnu.org>
pault [Fri, 1 Dec 2017 15:05:55 +0000 (15:05 +0000)] 
2017-12-01  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82605
* resolve.c (get_pdt_constructor): Initialize 'cons' to NULL.
(resolve_pdt): Correct typo in prior comment. Emit an error if
any parameters are deferred and the object is neither pointer
nor allocatable.

PR fortran/82606
* decl.c (gfc_get_pdt_instance): Continue if the parameter sym
is not present or has no name. Select the parameter by name
of component, rather than component order. Remove all the other
manipulations of 'tail' when building the pdt instance.
(gfc_match_formal_arglist): Emit and error if a star is picked
up in a PDT decl parameter list.

PR fortran/82622
* trans-array.c (set_loop_bounds): If a GFC_SS_COMPONENT has an
info->end, use it rather than falling through to
gcc_unreachable.
(structure_alloc_comps): Check that param->name is non-null
before comparing with the component name.
* trans-decl.c (gfc_get_symbol_decl): Do not use the static
initializer for PDT symbols.
(gfc_init_default_dt): Do nothing for PDT symbols.
* trans-io.c (transfer_array_component): Parameterized array
components use the descriptor ubound since the shape is not
available.

PR fortran/82719
PR fortran/82720
* trans-expr.c (gfc_conv_component_ref): Do not use the charlen
backend_decl of pdt strings. Use the hidden component instead.
* trans-io.c (transfer_expr): Do not do IO on "hidden" string
lengths. Use the hidden string length for pdt string transfers
by adding it to the se structure. When finished nullify the
se string length.

PR fortran/82866
* decl.c (gfc_match_formal_arglist): If a name is not found or
star is found, while reading a type parameter list, emit an
immediate error.
(gfc_match_derived_decl): On reading a PDT parameter list, on
failure to match call gfc_error_recovery.

PR fortran/82978
* decl.c (build_struct): Character kind defaults to 1, so use
kind_expr whatever is the set value.
(gfc_get_pdt_instance): Ditto.
* trans-array.c (structure_alloc_comps): Copy the expression
for the PDT string length before parameter substitution. Use
this expression for evaluation and free it after use.

2017-12-01  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82605
* gfortran.dg/pdt_4.f03 : Incorporate the new error.

PR fortran/82606
* gfortran.dg/pdt_19.f03 : New test.
* gfortran.dg/pdt_21.f03 : New test.

PR fortran/82622
* gfortran.dg/pdt_20.f03 : New test.
* gfortran.dg/pdt_22.f03 : New test.

PR fortran/82719
PR fortran/82720
* gfortran.dg/pdt_23.f03 : New test.

PR fortran/82866
* gfortran.dg/pdt_24.f03 : New test.

PR fortran/82978
* gfortran.dg/pdt_10.f03 : Correct for error in coding the for
kind 4 component and change the kind check appropriately.
* gfortran.dg/pdt_25.f03 : New test.

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

7 years agoFix bug in an OpenACC async test case
cesar [Fri, 1 Dec 2017 14:26:07 +0000 (14:26 +0000)] 
Fix bug in an OpenACC async test case

libgomp/
* testsuite/libgomp.oacc-c-c++-common/data-2-lib.c: Add missing
call to acc_wait (1).

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

7 years ago2017-12-01 Richard Biener <rguenther@suse.de>
rguenth [Fri, 1 Dec 2017 13:33:40 +0000 (13:33 +0000)] 
2017-12-01  Richard Biener  <rguenther@suse.de>

PR tree-optimization/83232
* tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
detection of same access. Instead of breaking the group here
do not consider the duplicate.  Add comment explaining real fix.

* gfortran.dg/vect/pr83232.f90: New testcase.

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

7 years agoFix "central flowgraph" typo in machine desc docs
redi [Fri, 1 Dec 2017 13:31:23 +0000 (13:31 +0000)] 
Fix "central flowgraph" typo in machine desc docs

* doc/md.texi (Insn Splitting): Fix "central flowgraph" typo.

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

7 years agoRTEMS/Ada: Fix some POSIX types
sh [Fri, 1 Dec 2017 11:00:52 +0000 (11:00 +0000)] 
RTEMS/Ada: Fix some POSIX types

gcc/ada
* libgnarl/s-osinte__rtems.ads (pthread_cond_t): Use correct size and
alignment.
(pthread_mutex_t): Likewise.
(pthread_rwlock_t): Likewise.

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

7 years agoFix wrong code by arm_final_prescan with fp16 move instructions
sudi [Fri, 1 Dec 2017 10:12:55 +0000 (10:12 +0000)] 
Fix wrong code by arm_final_prescan with fp16 move instructions

ChangeLog entry are as follow:

*** gcc/ChangeLog ***

2017-12-01  Sudakshina Das  <sudi.das@arm.com>

* config/arm/vfp.md (*movhf_vfp_fp16): Add conds attribute.

*** gcc/testsuite/ChangeLog ***

2017-12-01  Sudakshina Das  <sudi.das@arm.com>

* gcc.target/arm/armv8_2-fp16-move-2.c: New test.

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

7 years ago * function.h (struct function): Remove cilk_frame_decl,
jakub [Fri, 1 Dec 2017 08:20:41 +0000 (08:20 +0000)] 
* function.h (struct function): Remove cilk_frame_decl,
is_cilk_function and calls_cilk_spawn fields.
* tree-inline.h (struct copy_body_data): Remove remap_var_for_cilk
field.
* omp-simd-clone.c (simd_clone_clauses_extract): Don't clear
cilk_elemental field.
* cgraph.h (struct cgraph_simd_clone): Remove cilk_elemental field.
* target.def: Adjust comment.
* config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
Don't test cilk_elemental.
c-family/
* c-attribs.c (c_common_attribute_table): Remove "cilk simd function"
attribute.
(handle_simd_attribute): Don't check for "cilk simd function"
attribute.  Reindent, formatting changes.
cp/
* parser.c (cp_parser_new): Don't clear cilk_simd_fn_info.
(parsing_nsdmi): Adjust comment.
(cp_parser_omp_for_loop_init): Likewise.
* parser.h (struct cp_omp_declare_simd_data): Adjust comment.
(struct cp_parser): Remove cilk_simd_fn_info field.
* cp-tree.h (cilk_valid_spawn): Remove.

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

7 years ago PR tree-optimization/83233
jakub [Fri, 1 Dec 2017 08:18:52 +0000 (08:18 +0000)] 
PR tree-optimization/83233
* gimple-ssa-store-merging.c (nop_stats, bswap_stats): Use
bswap_stat name for the struct.

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

7 years ago PR c/79153
jakub [Fri, 1 Dec 2017 08:17:06 +0000 (08:17 +0000)] 
PR c/79153
* tree.h (SWITCH_BREAK_LABEL_P): Define.
* gimplify.c (collect_fallthrough_labels): Handle GIMPLE_BIND
starting with a GIMPLE_SWITCH and ending with GIMPLE_LABEL with
SWITCH_BREAK_LABEL_P set on the label.
(gimplify_switch_expr): Set SWITCH_BREAK_LABEL_P on the label
added for default case if it was missing and not all cases covered.
Wrap GIMPLE_SWITCH and the switch_body_seq into a GIMPLE_BIND if
switch_body_seq ends with a GIMPLE_LABEL with SWITCH_BREAK_LABEL_P
set on the label.
* tree-chrec.c (evolution_function_is_univariate_p): Add return true;
to avoid -Wimplicit-fallthrough warning.
* config/i386/i386.c (ix86_expand_special_args_builtin): Add
FALLTHRU comment to avoid -Wimplicit-fallthrough warning.
c/
* c-parser.c: Include tree-iterator.h.
(c_parser_switch_statement): Emit LABEL_EXPR for the break label
into SWITCH_BODY instead of after it and set SWITCH_BREAK_LABEL_P
on it.
cp/
* cp-gimplify.c (genericize_switch_stmt): Emit LABEL_EXPR for the
break label into SWITCH_BODY instead of after it and set
SWITCH_BREAK_LABEL_P on it.
* parser.c (cp_parser_objc_expression): Add FALLTHRU comment to avoid
-Wimplicit-fallthrough warning.
fortran/
* match.c (gfc_match): Add FALLTHRU comment to avoid
-Wimplicit-fallthrough warning.
testsuite/
* c-c++-common/Wimplicit-fallthrough-7.c: Adjust expected warning
line.
* c-c++-common/Wimplicit-fallthrough-36.c: New test.

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

7 years ago PR tree-optimization/83221
jakub [Fri, 1 Dec 2017 08:14:21 +0000 (08:14 +0000)] 
PR tree-optimization/83221
* tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank
down by 16.
(init_reassoc): Formatting fix.

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

7 years ago PR sanitizer/81275
jakub [Fri, 1 Dec 2017 08:11:56 +0000 (08:11 +0000)] 
PR sanitizer/81275
* tree-cfg.c (group_case_labels_stmt): Don't optimize away
C++ FE implicitly added __builtin_unreachable () until -Wreturn-type
is diagnosed.

* c-c++-common/tsan/pr81275.c: Remove dg-skip-if.

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

7 years ago PR sanitizer/83219
jakub [Fri, 1 Dec 2017 08:08:55 +0000 (08:08 +0000)] 
PR sanitizer/83219
* tree-cfg.c: Include asan.h.
(gimple_seq_unreachable_p): Return false for -fsanitize=unreachable.

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

7 years ago2017-12-01 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Fri, 1 Dec 2017 07:35:50 +0000 (07:35 +0000)] 
2017-12-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/83224
* frontend-passes.c (realloc_string_callback): Handle
case for which the RHS is an array expression.

2017-12-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/83224
* gfortran.dg/dependency_50.f90: New test.

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

7 years agoFix movdi_internal to return MODE_TI with AVX512
kyukhin [Fri, 1 Dec 2017 06:40:27 +0000 (06:40 +0000)] 
Fix movdi_internal to return MODE_TI with AVX512

gcc/
* config/i386/i386.md: Fix AVX512 register width in AVX512 instruction.

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

7 years agoReplace __popcntq with two _popcnt32.
kyukhin [Fri, 1 Dec 2017 06:25:26 +0000 (06:25 +0000)] 
Replace __popcntq with two _popcnt32.

gcc/testsuite/
* gcc.target/i386/avx512f-vpcompressb-2.c: Fix popcnt for 64b case.

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

7 years agoFix wrong instruction vpcmpeqd generation
kyukhin [Fri, 1 Dec 2017 06:22:06 +0000 (06:22 +0000)] 
Fix wrong instruction vpcmpeqd generation

gcc/
* config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for
vpcmpeqd instruction.

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

7 years agoFix registers type for MODE_TI
kyukhin [Fri, 1 Dec 2017 05:59:33 +0000 (05:59 +0000)] 
Fix registers type for MODE_TI

gcc/
* config/i386/i386.c (standard_sse_constant_opcode): Fix
registers type for 128bit mode.

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

7 years ago2017-11-30 Michael Meissner <meissner@linux.vnet.ibm.com>
meissner [Fri, 1 Dec 2017 05:32:39 +0000 (05:32 +0000)] 
2017-11-30  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/_mulkc3.c (__mulkc3): Add forward declaration.
* config/rs6000/_divkc3.c (__divkc3): Likewise.

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

7 years agoDaily bump.
gccadmin [Fri, 1 Dec 2017 00:16:19 +0000 (00:16 +0000)] 
Daily bump.

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

7 years ago PR c/83222
jakub [Thu, 30 Nov 2017 23:43:10 +0000 (23:43 +0000)] 
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.

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

7 years ago * spellcheck-tree.c (test_find_closest_identifier): Use ; instead
jakub [Thu, 30 Nov 2017 22:47:51 +0000 (22:47 +0000)] 
* 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 ;;.

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

7 years agogcc/
chefmax [Thu, 30 Nov 2017 21:38:16 +0000 (21:38 +0000)] 
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.

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

7 years ago2017-11-30 Michael Meissner <meissner@linux.vnet.ibm.com>
meissner [Thu, 30 Nov 2017 20:52:27 +0000 (20:52 +0000)] 
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.

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

7 years agoCleanup riscv option docs.
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.

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

7 years ago PR c++/82219 - bogus -Wignored-qualifiers with template
jason [Thu, 30 Nov 2017 17:43:08 +0000 (17:43 +0000)] 
PR c++/82219 - bogus -Wignored-qualifiers with template

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

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

7 years agoPR libstdc++/65927 Fix -Wunused-but-set-parameter warning
redi [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.

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

7 years agoMove assertion from to_address to __to_address
redi [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.

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

7 years ago[ARC] Add trap instruction.
claziss [Thu, 30 Nov 2017 14:42:22 +0000 (14:42 +0000)] 
[ARC] Add trap instruction.

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

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

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

7 years ago[ARC] Don't allow the last ZOL insn to be in a delay slot.
claziss [Thu, 30 Nov 2017 14:42:12 +0000 (14:42 +0000)] 
[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

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

7 years ago[ARC] Update uses for hw-loop labels.
claziss [Thu, 30 Nov 2017 14:42:01 +0000 (14:42 +0000)] 
[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.

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

7 years ago[ARC] Use TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV.
claziss [Thu, 30 Nov 2017 14:41:49 +0000 (14:41 +0000)] 
[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.

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

7 years ago[testsuite]
willschm [Thu, 30 Nov 2017 14:38:33 +0000 (14:38 +0000)] 
[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.

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

7 years agoPR libstdc++/83226 avoid forming pointer-to-reference type
redi [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.

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

7 years agoRemove inv_list.
jkoval [Thu, 30 Nov 2017 12:17:16 +0000 (12:17 +0000)] 
Remove inv_list.

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

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

7 years ago PR target/83210
jakub [Thu, 30 Nov 2017 10:29:58 +0000 (10:29 +0000)] 
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.

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

7 years ago PR target/81616
hubicka [Thu, 30 Nov 2017 09:36:36 +0000 (09:36 +0000)] 
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.

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

7 years ago2017-11-30 Richard Biener <rguenther@suse.de>
rguenth [Thu, 30 Nov 2017 07:53:31 +0000 (07:53 +0000)] 
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.

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

7 years ago compiler: don't make map zero value constant
ian [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

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

7 years ago * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
danglin [Thu, 30 Nov 2017 00:53:16 +0000 (00:53 +0000)] 
* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.

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

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

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

7 years agocombine: Print to dump if some insn cannot be combined into i3
segher [Wed, 29 Nov 2017 22:51:16 +0000 (22:51 +0000)] 
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.

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

7 years agocombine: Do not throw away unneeded arms of parallels (PR83156)
segher [Wed, 29 Nov 2017 22:42:37 +0000 (22:42 +0000)] 
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.

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

7 years agors6000: Add second variant of adde
segher [Wed, 29 Nov 2017 22:30:24 +0000 (22:30 +0000)] 
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.

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

7 years ago2017-11-29 Vladimir Makarov <vmakarov@redhat.com>
vmakarov [Wed, 29 Nov 2017 22:19:25 +0000 (22:19 +0000)] 
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.

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

7 years agoRiscv patterns to optimize away some redundant zero/sign extends.
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.

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

7 years agoC++: improve location of static_assert errors
dmalcolm [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.

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

7 years ago/cp
paolo [Wed, 29 Nov 2017 21:54:18 +0000 (21:54 +0000)] 
/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.

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

7 years ago PR c++/82760 - memory corruption with aligned new.
jason [Wed, 29 Nov 2017 21:01:23 +0000 (21:01 +0000)] 
PR c++/82760 - memory corruption with aligned new.

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

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

7 years ago[testsuite]
willschm [Wed, 29 Nov 2017 20:10:52 +0000 (20:10 +0000)] 
[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.

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

7 years ago[testsuite]
willschm [Wed, 29 Nov 2017 19:58:29 +0000 (19:58 +0000)] 
[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.

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

7 years agonable VBMI2 support [7/7]
kyukhin [Wed, 29 Nov 2017 18:45:28 +0000 (18:45 +0000)] 
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.

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

7 years agoEnable VBMI2 support [6/7]
kyukhin [Wed, 29 Nov 2017 18:19:34 +0000 (18:19 +0000)] 
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.

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

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

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

7 years ago PR tree-optimization/83195
jakub [Wed, 29 Nov 2017 17:38:54 +0000 (17:38 +0000)] 
PR tree-optimization/83195
* gcc.dg/pr82929.c: Don't check for "Merging successful" on arm.
* gcc.dg/pr82929-2.c: New test.

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

7 years ago[SPARC] Recognize the load when accessing the GOT
danielh [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.

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

7 years ago[SPARC] Prevent -mfix-ut699 from generating b2bst errata sequences
danielh [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.

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

7 years ago[SPARC] Errata workaround for GRLIB-TN-0013
danielh [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.

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

7 years ago[SPARC] Errata workaround for GRLIB-TN-0010
danielh [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.

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

7 years ago[SPARC] Errata workaround for GRLIB-TN-0011
danielh [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.

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

7 years ago[SPARC] Errata workaround for GRLIB-TN-0012
danielh [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.

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

7 years ago2017-11-29 Richard Biener <rguenther@suse.de>
rguenth [Wed, 29 Nov 2017 14:38:06 +0000 (14:38 +0000)] 
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.

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

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

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

7 years ago[PATCH] complex type canonicalization
nathan [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.

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

7 years ago[AArch64] Fix ICE due to store_pair_lanes
wilco [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.

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

7 years ago PR middle-end/83185
jakub [Wed, 29 Nov 2017 10:33:06 +0000 (10:33 +0000)] 
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.

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

7 years ago PR middle-end/80929
jakub [Wed, 29 Nov 2017 10:31:36 +0000 (10:31 +0000)] 
PR middle-end/80929
* rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost.

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

7 years agofix merge conflict in libgfortran/ChangeLog
jb [Wed, 29 Nov 2017 09:01:49 +0000 (09:01 +0000)] 
fix merge conflict in libgfortran/ChangeLog

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