Segher Boessenkool [Mon, 4 Dec 2017 15:38:20 +0000 (16:38 +0100)]
combine: Remove use_crosses_set_p
This removes use_crosses_set_p, and uses modified_between_p instead
everywhere it was used. This improves optimisation.
* combine.c: Adjust comment.
(use_crosses_set_p): Delete.
(can_combine_p): Use modified_between_p instead of use_crosses_set_p.
(try_combine): Ditto.
From-SVN: r255384
Richard Biener [Mon, 4 Dec 2017 14:04:36 +0000 (14:04 +0000)]
re PR tree-optimization/83255 ([graphite] Wrong code w/ -O1 -floop-nest-optimize)
2017-12-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/83255
* graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for):
Re-add zero-iteration check.
* gcc.dg/graphite/pr83255.c: New testcase.
From-SVN: r255382
Sebastian Huber [Mon, 4 Dec 2017 13:36:19 +0000 (13:36 +0000)]
RTEMS/Ada: Account for 64-bit time_t
The Newlib time_t has now 64 bits for RTEMS.
gcc/ada
* gcc-interface/Makefile.in (RTEMS): Use s-osprim__rtems.adb.
* libgnat/s-osprim__rtems.adb: New file.
* libgnarl/s-osinte__rtems.adb (pthread_cond_t): Fix alignment.
(pthread_mutexattr_t): Likewise.
(pthread_rwlockattr_t): Likewise.
(pthread_rwlock_t): Likewise.
(time_t): Use 64-bit integer.
From-SVN: r255380
Segher Boessenkool [Mon, 4 Dec 2017 09:30:37 +0000 (10:30 +0100)]
lra: Clobbers in a parallel are earlyclobbers (PR83245)
The documentation (rtl.texi) says:
When a @code{clobber} expression for a register appears inside a
@code{parallel} with other side effects, the register allocator
guarantees that the register is unoccupied both before and after that
insn if it is a hard register clobber.
and at least the rs6000 backend relies on that (see PR83245). This
patch restores that behaviour.
Registers that are also used as operands in the instruction are not
treated as earlyclobber, so such insns also still work (PR80818, an
s390 testcase).
PR rtl-optimization/83245
* lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand
hard registers as earlyclobber, also if not in an asm.
From-SVN: r255377
Segher Boessenkool [Mon, 4 Dec 2017 09:19:27 +0000 (10:19 +0100)]
re PR bootstrap/83265 (Bootstrap failure on powerpc64)
PR bootstrap/83265
Revert
2017-12-01 Segher Boessenkool <segher@kernel.crashing.org>
PR target/43871
* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
rs6000_cpu based on cpu_index, not tune_index.
From-SVN: r255376
Richard Biener [Mon, 4 Dec 2017 08:26:18 +0000 (08:26 +0000)]
re PR tree-optimization/83238 ([graphite] ICE in graphite_can_represent_scev, at graphite-scop-detection.c:971)
2017-12-04 Richard Biener <rguenther@suse.de>
PR tree-optimization/83238
* graphite-scop-detection.c (scop_detection::merge_sese): Make
code match comment, rejecting invalid SESE regions.
* gcc.dg/graphite/pr83238.c: New testcase.
From-SVN: r255375
Tom de Vries [Mon, 4 Dec 2017 06:58:22 +0000 (06:58 +0000)]
Require effective target alloca for pr82875.c
2017-12-04 Tom de Vries <tom@codesourcery.com>
* gcc.dg/pr82875.c: Require effective target alloca.
From-SVN: r255374
GCC Administrator [Mon, 4 Dec 2017 00:16:14 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r255372
John David Anglin [Sun, 3 Dec 2017 23:18:10 +0000 (23:18 +0000)]
pa.c (pa_legitimate_address_p): For scaled indexing...
* config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
require base operand is a REG_POINTER prior to reload on targets
with non-equivalent space registers.
From-SVN: r255369
Thomas Koenig [Sun, 3 Dec 2017 20:14:05 +0000 (20:14 +0000)]
re PR fortran/36313 ([F03] {MIN,MAX}{LOC,VAL} should accept character arguments)
2017-12-03 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/36313
* check.c (gfc_check_minval_maxval): Use
int_orLreal_or_char_check_f2003 for array argument.
* iresolve.c (gfc_resolve_maxval): Insert number in
function name for character arguments.
(gfc_resolve_minval): Likewise.
* trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc):
Fix comment.
(gfc_conv_intrinsic_minmaxval): Resort arguments and call library
function if dealing with a character function.
2017-12-03 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/36313
* Makefile.am: Add new files for character-valued
maxval and minval.
* Makefile.in: Regenerated.
* gfortran.map: Add new functions.
* m4/iforeach-s2.m4: New file.
* m4/ifunction-s2.m4: New file.
* m4/iparm.m4: Add intitval for minval and maxval.
* m4/maxval0s.m4: New file.
* m4/maxval1s.m4: New file.
* m4/minval0s.m4: New file.
* m4/minval1s.m4: New file.
* generated/maxval0_s1.c: New file.
* generated/maxval0_s4.c: New file.
* generated/maxval1_s1.c: New file.
* generated/maxval1_s4.c: New file.
* generated/minval0_s1.c: New file.
* generated/minval0_s4.c: New file.
* generated/minval1_s1.c: New file.
* generated/minval1_s4.c: New file.
2017-12-03 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/36313
* gfortran.dg/maxval_char_1.f90: New test.
* gfortran.dg/maxval_char_2.f90: New test.
* gfortran.dg/maxval_char_3.f90: New test.
* gfortran.dg/maxval_char_4.f90: New test.
* gfortran.dg/minval_char_1.f90: New test.
* gfortran.dg/minval_char_2.f90: New test.
* gfortran.dg/minval_char_3.f90: New test.
* gfortran.dg/minval_char_4.f90: New test.
From-SVN: r255367
Jerry DeLisle [Sun, 3 Dec 2017 16:49:37 +0000 (16:49 +0000)]
Fix typo in ChangeLog.
From-SVN: r255366
Jerry DeLisle [Sun, 3 Dec 2017 16:47:12 +0000 (16:47 +0000)]
re PR fortran/83191 (Writing a namelist with repeated complex numbers)
2017-12-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Dominique d'Humieres <dominiq@lps.ens.fr>
PR libgfortran/83191
* io/transfer.c (list_formatted_read_scalar): Do not set
namelist_mode bit here. (namelist_read): Likewise.
(data_transfer_init): Clear the mode bit here.
(finalize_transfer): Do set the mode bit just before any calls
to namelist_read or namelist_write. It can now be referred to
in complex_write.
^ io/write.c (write_complex): Suppress the leading blanks when
namelist_mode bit is not set to 1.
* gfortran.dg/namelist_95.f90: New test.
Co-Authored-By: Dominique d'Humieres <dominiq@lps.ens.fr>
From-SVN: r255365
Jerry DeLisle [Sun, 3 Dec 2017 04:42:09 +0000 (04:42 +0000)]
Fix spelling error in log.
From-SVN: r255363
Jerry DeLisle [Sun, 3 Dec 2017 03:26:09 +0000 (03:26 +0000)]
re PR fortran/83225 (runtime error in transfer.c)
2017-12-02 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/83225
* io/io.h (is_internal_unit): Use the unit_is_internal bit.
* io/transfer.c (data_transfer_init): Set the bit to true for
internal umits. Use that bit for checks for internal unit
initializations.
* io/unit.c (insert_unit): As a precaution, set the
internal_unit_kind to zero when a unit structure is first created.
From-SVN: r255362
GCC Administrator [Sun, 3 Dec 2017 00:16:12 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r255361
Jan Hubicka [Sat, 2 Dec 2017 09:48:24 +0000 (10:48 +0100)]
ipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.
* ipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.
(update_specialized_profile): Fix updating of counts.
(perhaps_add_new_callers): Likewise.
From-SVN: r255358
Jan Hubicka [Sat, 2 Dec 2017 09:22:41 +0000 (10:22 +0100)]
re PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)
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.
From-SVN: r255357
Jakub Jelinek [Sat, 2 Dec 2017 07:58:57 +0000 (08:58 +0100)]
re PR tree-optimization/83170 (ICE: Segmentation fault - during GIMPLE pass: store-merging)
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.
From-SVN: r255356
Jakub Jelinek [Sat, 2 Dec 2017 07:58:05 +0000 (08:58 +0100)]
tree-chkp.c (chkp_compute_bounds_for_assignment): Handle POINTER_DIFF_EXPR.
* tree-chkp.c (chkp_compute_bounds_for_assignment): Handle
POINTER_DIFF_EXPR.
* gcc.target/i386/mpx/pointer-diff-1.c: New test.
From-SVN: r255355
Jakub Jelinek [Sat, 2 Dec 2017 07:57:04 +0000 (08:57 +0100)]
re PR sanitizer/81212 (-Wreturn-type is disabled when used together with -fsanitize=return)
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.
From-SVN: r255354
Jakub Jelinek [Sat, 2 Dec 2017 07:54:47 +0000 (08:54 +0100)]
re PR target/78643 (ICE in convert_move, at expr.c:230)
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.
From-SVN: r255353
Jakub Jelinek [Sat, 2 Dec 2017 07:37:50 +0000 (08:37 +0100)]
i386-protos.h (standard_sse_constant_opcode): Change last argument to rtx pointer.
* 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.
From-SVN: r255352
Segher Boessenkool [Sat, 2 Dec 2017 02:03:19 +0000 (03:03 +0100)]
doc update for -dp
* doc/invoke.texi (-dp): Say that instruction cost is printed as well.
From-SVN: r255351
Segher Boessenkool [Sat, 2 Dec 2017 01:33:39 +0000 (02:33 +0100)]
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.
From-SVN: r255350
Segher Boessenkool [Sat, 2 Dec 2017 01:23:41 +0000 (02:23 +0100)]
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.
From-SVN: r255349
Segher Boessenkool [Sat, 2 Dec 2017 01:20:08 +0000 (02:20 +0100)]
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.
From-SVN: r255348
Ian Lance Taylor [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
From-SVN: r255347
Ian Lance Taylor [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.
From-SVN: r255346
Jim 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.
From-SVN: r255345
GCC Administrator [Sat, 2 Dec 2017 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r255344
Michael Meissner [Fri, 1 Dec 2017 23:52:20 +0000 (23:52 +0000)]
re PR target/81959 (PowerPC __float128 optimization fails with integer PRE_INC addresses)
[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.
From-SVN: r255341
Than McIntosh [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.
From-SVN: r255340
Jason Merrill [Fri, 1 Dec 2017 21:17:32 +0000 (16:17 -0500)]
* doc/extend.texi: Mention C++14 library complex suffix.
From-SVN: r255339
Jason Merrill [Fri, 1 Dec 2017 20:19:13 +0000 (15:19 -0500)]
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.
From-SVN: r255336
Jason Merrill [Fri, 1 Dec 2017 20:19:07 +0000 (15:19 -0500)]
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.
From-SVN: r255335
Jason Merrill [Fri, 1 Dec 2017 20:19:01 +0000 (15:19 -0500)]
* Makefile.in (TAGS): Add c-family/*.cc.
From-SVN: r255334
Wilco Dijkstra [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.
From-SVN: r255333
Qing Zhao [Fri, 1 Dec 2017 18:20:45 +0000 (18:20 +0000)]
Fix an undefined behavior in fortran/decl.c
From-SVN: r255332
Thomas Koenig [Fri, 1 Dec 2017 18:06:31 +0000 (18:06 +0000)]
re PR fortran/83224 (creating character array from elements shorter than declared does not pad with whitespace properly and aborts)
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.
From-SVN: r255331
Jonathan Wakely [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.
From-SVN: r255321
Jonathan Wakely [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.
From-SVN: r255320
Andreas 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.
From-SVN: r255319
Jonathan Wakely [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.
From-SVN: r255318
Jonathan Wakely [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.
From-SVN: r255317
Jonathan Wakely [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*.
From-SVN: r255316
Jonathan Wakely [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.
From-SVN: r255315
Jonathan Wakely [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.
From-SVN: r255314
Jonathan Wakely [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.
From-SVN: r255313
Jonathan Wakely [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.
From-SVN: r255312
Paul Thomas [Fri, 1 Dec 2017 15:05:55 +0000 (15:05 +0000)]
re PR fortran/82605 ([PDT] ICE in insert_parameter_exprs, at fortran/decl.c:3154)
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.
From-SVN: r255311
Cesar Philippidis [Fri, 1 Dec 2017 14:26:07 +0000 (06:26 -0800)]
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).
From-SVN: r255308
Richard Biener [Fri, 1 Dec 2017 13:33:40 +0000 (13:33 +0000)]
re PR tree-optimization/83232 (fma3d spec2000 regression on zen with -Ofast (generic tuning) after r255268 by missed SLP oppurtunity)
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.
From-SVN: r255307
Jonathan Wakely [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.
From-SVN: r255305
Sebastian Huber [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.
From-SVN: r255302
Sudakshina Das [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.
From-SVN: r255301
Jakub Jelinek [Fri, 1 Dec 2017 08:20:41 +0000 (09:20 +0100)]
function.h (struct function): Remove cilk_frame_decl, is_cilk_function and calls_cilk_spawn fields.
* 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.
From-SVN: r255300
Jakub Jelinek [Fri, 1 Dec 2017 08:18:52 +0000 (09:18 +0100)]
re PR tree-optimization/83233 (gimple-ssa-store-merging.c:183:3: warning: unnamed type with no linkage used to declare variable with linkage)
PR tree-optimization/83233
* gimple-ssa-store-merging.c (nop_stats, bswap_stats): Use
bswap_stat name for the struct.
From-SVN: r255299
Jakub Jelinek [Fri, 1 Dec 2017 08:17:06 +0000 (09:17 +0100)]
re PR c/79153 (-Wimplicit-fallthrough missed warning)
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.
From-SVN: r255298
Jakub Jelinek [Fri, 1 Dec 2017 08:14:21 +0000 (09:14 +0100)]
re PR tree-optimization/83221 (qsort comparator not anti-commutative: -
2147483648, -
2147483648)
PR tree-optimization/83221
* tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank
down by 16.
(init_reassoc): Formatting fix.
From-SVN: r255297
Jakub Jelinek [Fri, 1 Dec 2017 08:11:56 +0000 (09:11 +0100)]
re PR sanitizer/81275 (-fsanitize=thread produce incorrect -Wreturn-type warning)
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.
From-SVN: r255296
Jakub Jelinek [Fri, 1 Dec 2017 08:08:55 +0000 (09:08 +0100)]
re PR sanitizer/83219 (c-c++-common/ubsan/unreachable-2.c fails starting with r255201)
PR sanitizer/83219
* tree-cfg.c: Include asan.h.
(gimple_seq_unreachable_p): Return false for -fsanitize=unreachable.
From-SVN: r255295
Thomas Koenig [Fri, 1 Dec 2017 07:35:50 +0000 (07:35 +0000)]
re PR fortran/83224 (creating character array from elements shorter than declared does not pad with whitespace properly and aborts)
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.
From-SVN: r255294
Sergey Shalnov [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.
From-SVN: r255293
Kirill Yukhin [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.
From-SVN: r255292
Sergey Shalnov [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.
From-SVN: r255291
Sergey Shalnov [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.
From-SVN: r255290
Michael Meissner [Fri, 1 Dec 2017 05:32:39 +0000 (05:32 +0000)]
_mulkc3.c (__mulkc3): Add forward declaration.
2017-11-30 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/_mulkc3.c (__mulkc3): Add forward declaration.
* config/rs6000/_divkc3.c (__divkc3): Likewise.
From-SVN: r255289
GCC Administrator [Fri, 1 Dec 2017 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r255288
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
GCC Administrator [Thu, 30 Nov 2017 00:16:18 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r255264
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
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
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
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
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
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
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
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
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
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
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