Nathan Sidwell [Fri, 16 Jun 2017 14:33:28 +0000 (14:33 +0000)]
Fix keyboard flub.
From-SVN: r249262
Jakub Jelinek [Fri, 16 Jun 2017 14:29:55 +0000 (16:29 +0200)]
re PR libstdc++/81092 (Missing symbols for new std::wstring constructors)
PR libstdc++/81092
* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.
From-SVN: r249260
Nathan Sidwell [Fri, 16 Jun 2017 14:16:20 +0000 (14:16 +0000)]
Make rtti lazier
Make rtti lazier
* rtti.c (enum tinfo_kind): Add TK_DERIVED_TYPES,
TK_VMI_CLASS_TYPES, TK_MAX. Delete TK_FIXED.
(tinfo_names): New.
(typeid_ok_p): Add quotes to error messages. Use get_tinfo_desc.
(get_tinfo_decl): Use get_tinfo_desc.
(get_pseudo_ti_init): Likewise. Adjust VMI construction.
(create_pseudo_type_info): Delete.
(get_pseudo_ti_index): Just determine the index.
(get_tinfo_desc): New. Create all types lazily.
(create_tinfo_types): Just allocate the descriptor array.
(emit_support_tinfos): Use non-inserting type lookup. Set builtin
location.
From-SVN: r249258
Jonathan Wakely [Fri, 16 Jun 2017 13:23:42 +0000 (14:23 +0100)]
Fix std::wbuffer_convert::sync()
* include/bits/locale_conv.h (wbuffer_convert::sync): Fix condition.
* testsuite/22_locale/conversions/buffer/2.cc: New.
From-SVN: r249255
Richard Biener [Fri, 16 Jun 2017 12:19:24 +0000 (12:19 +0000)]
re PR tree-optimization/81090 ([graphite] ICE in loop_preheader_edge)
2017-06-16 Richard Biener <rguenther@suse.de>
PR tree-optimization/81090
* passes.def (pass_record_bounds): Remove.
* tree-pass.h (make_pass_record_bounds): Likewise.
* tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds,
make_pass_record_bounds): Likewise.
* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do
not free niter estimates at the beginning but at the end.
* tree-scalar-evolution.c (scev_finalize): Free niter estimates.
* gcc.dg/graphite/pr81090.c: New testcase.
From-SVN: r249249
Jonathan Wakely [Fri, 16 Jun 2017 11:54:59 +0000 (12:54 +0100)]
PR libstdc++/81092 add std::wstring symbols and bump library version
PR libstdc++/81092
* acinclude.m4: Bump libtool_VERSION.
* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
* config/abi/pre/gnu.ver: Add wstring constructor symbols to
GLIBCXX_3.4.24 version and move random_device::_M_get_entropy() symbol
to new GLIBCXX_3.4.25 version.
* doc/xml/manual/abi.xml: Document new versions.
* doc/html/*: Regenerate.
* testsuite/21_strings/basic_string/cons/char/8.cc: Use base object
constructors to ensure required symbols are exported.
* testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
* testsuite/util/testsuite_abi.cc: Add new version.
From-SVN: r249246
Richard Biener [Fri, 16 Jun 2017 11:47:00 +0000 (11:47 +0000)]
tree-switch-conversion.c (emit_case_bit_tests): Adjust initializer to workaround ICE in host GCC 4.8.
2017-06-16 Richard Biener <rguenther@suse.de>
* tree-switch-conversion.c (emit_case_bit_tests): Adjust
initializer to workaround ICE in host GCC 4.8.
From-SVN: r249245
Jan Hubicka [Fri, 16 Jun 2017 11:41:19 +0000 (13:41 +0200)]
ipa-inline-transform.c (update_noncloned_frequencies): Update also counts.
* ipa-inline-transform.c (update_noncloned_frequencies): Update also
counts.
(clone_inlined_nodes): Update.
From-SVN: r249244
Janus Weil [Fri, 16 Jun 2017 10:15:42 +0000 (12:15 +0200)]
re PR fortran/80983 ([F03] memory leak when calling procedure-pointer component with allocatable result)
2017-06-16 Janus Weil <janus@gcc.gnu.org>
PR fortran/80983
* gfortran.dg/proc_ptr_comp_51.f90: Repair test case.
From-SVN: r249243
Maxim Kuvyrkov [Fri, 16 Jun 2017 09:31:00 +0000 (09:31 +0000)]
Update prefetch tuning parameters for qdf24xx.
* config/aarch64/aarch64.c (qdf24xx_prefetch_tune): Update
prefetch settings, and enable prefetching by default at -O3.
Change-Id: I2f0da54a8c262f6fbd0dcfde4584141bb09f1013
From-SVN: r249242
Maxim Kuvyrkov [Fri, 16 Jun 2017 09:30:52 +0000 (09:30 +0000)]
Enable -fprefetch-loop-arrays at given optimization level.
* config/aarch64/aarch64.c (aarch64_override_options_internal):
Set flag_prefetch_loop_arrays according to tuning data.
Change-Id: Id41411e671e0a55dc7268e0ad0a4e8ff1421c90a
From-SVN: r249241
Maxim Kuvyrkov [Fri, 16 Jun 2017 09:30:43 +0000 (09:30 +0000)]
Add prefetch configuration to aarch64 backend.
* config/aarch64/aarch64-protos.h (struct cpu_prefetch_tune):
New tune structure.
(struct tune_params): Use cpu_prefetch_tune instead of cache_line_size.
[Unrelated to main purpose of the patch] Place the pointer field last
to enable type checking errors when tune structure are wrongly merged.
* config/aarch64/aarch64.c (generic_prefetch_tune,)
(exynosm1_prefetch_tune, qdf24xx_prefetch_tune,)
(thunderx2t99_prefetch_tune): New tune constants.
(tune_params *_tunings): Update all tunings (no functional change).
(aarch64_override_options_internal): Set PARAM_SIMULTANEOUS_PREFETCHES,
PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE, and PARAM_L2_CACHE_SIZE
from tunings structures.
Change-Id: I1ddbac1863dcf078a2e5b14dd904debc76a7da94
From-SVN: r249240
Jakub Jelinek [Fri, 16 Jun 2017 09:13:28 +0000 (11:13 +0200)]
re PR sanitizer/81094 (-fsanitize=object-size does not instrument aggregate call arguments)
PR sanitizer/81094
* ubsan.c (instrument_null): Add T argument, use it instead
of computing it based on IS_LHS.
(instrument_object_size): Likewise.
(pass_ubsan::execute): Adjust instrument_null and
instrument_object_size callers to pass gimple_get_lhs or
gimple_assign_rhs1 result to it. Use instrument_null instead of
calling get_base_address and instrument_mem_ref. Handle
aggregate call arguments for object-size sanitization.
* c-c++-common/ubsan/object-size-11.c: New test.
From-SVN: r249239
Jonathan Wakely [Fri, 16 Jun 2017 08:13:37 +0000 (09:13 +0100)]
Fix missing returns in libstdc++ header and tests
* include/bits/locale_conv.h (wbuffer_convert::_M_put): Add missing
return statement.
* testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
Return void.
* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
Likewise.
* testsuite/23_containers/map/modifiers/insert_or_assign/1.cc: Add
missing return statements.
* testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
Return void.
* testsuite/special_functions/14_expint/pr68397.cc: Likewise.
From-SVN: r249238
Yury Gribov [Fri, 16 Jun 2017 07:16:34 +0000 (07:16 +0000)]
re PR tree-optimization/81089 (ICE: tree check: expected ssa_name, have integer_cst in register_edge_assert_for_2, at tree-vrp.c:5023)
2017-06-16 Yury Gribov <tetra2005@gmail.com>
PR tree-optimization/81089
* tree-vrp.c (is_masked_range_test): Validate operands of
subexpression.
From-SVN: r249237
Rainer Orth [Fri, 16 Jun 2017 06:58:06 +0000 (06:58 +0000)]
Don't use >& for I/O redirection
* Makefile.am (check-go-tool): Don't use >& for I/O redirection.
* Makefile.in: Regenerate.
From-SVN: r249236
François Dumont [Fri, 16 Jun 2017 05:28:06 +0000 (05:28 +0000)]
stl_bvector.h (__fill_bvector(_Bit_type*, unsigned int, unsigned int, bool)): Change signature.
2017-06-16 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_bvector.h
(__fill_bvector(_Bit_type*, unsigned int, unsigned int, bool)):
Change signature.
(std::fill(_Bit_iterator, _Bit_iterator, bool)): Adapt.
(_Bvector_impl_data): New.
(_Bvector_impl): Inherits from latter.
(_Bvector_impl(_Bit_alloc_type&&)): Delete.
(_Bvector_impl(_Bvector_impl&&)): New, default.
(_Bvector_base()): Default.
(_Bvector_base(_Bvector_base&&)): Default.
(_Bvector_base::_M_move_data(_Bvector_base&&)): New.
(vector(vector&&, const allocator_type&)): Use latter.
(vector<bool>::operator=(vector&&)): Likewise.
(vector<bool>::vector()): Default.
(vector<bool>::vector(vector&&)): Default.
(vector<bool>::assign(_InputIterator, _InputIterator)): Use
_M_assign_aux.
(vector<bool>::assign(initializer_list<bool>)): Likewise.
(vector<bool>::_M_initialize_value(bool)): New.
(vector<bool>(size_type, const bool&, const allocator_type&)): Use
latter.
(vector<bool>::_M_initialize_dispatch(_Integer, _Integer, __true_type)):
Likewise.
(vector<bool>::_M_fill_assign(size_t, bool)): Likewise.
From-SVN: r249235
Martin Sebor [Fri, 16 Jun 2017 03:48:59 +0000 (03:48 +0000)]
PR c++/80560 - warn on undefined memory operations involving non-trivial types
gcc/c-family/ChangeLog:
PR c++/80560
* c.opt (-Wclass-memaccess): New option.
gcc/cp/ChangeLog:
PR c++/80560
* call.c (first_non_public_field, maybe_warn_class_memaccess): New
functions.
(has_trivial_copy_assign_p, has_trivial_copy_p): Ditto.
(build_cxx_call): Call maybe_warn_class_memaccess.
gcc/ChangeLog:
PR c++/80560
* dumpfile.c (dump_register): Avoid calling memset to initialize
a class with a default ctor.
* gcc.c (struct compiler): Remove const qualification.
* genattrtab.c (gen_insn_reserv): Replace memset with initialization.
* hash-table.h: Ditto.
* ipa-cp.c (allocate_and_init_ipcp_value): Replace memset with
assignment.
* ipa-prop.c (ipa_free_edge_args_substructures): Ditto.
* omp-low.c (lower_omp_ordered_clauses): Replace memset with
default ctor.
* params.h (struct param_info): Make struct members non-const.
* tree-switch-conversion.c (emit_case_bit_tests): Replace memset
with default initialization.
* vec.h (vec_copy_construct, vec_default_construct): New helper
functions.
(vec<T>::copy, vec<T>::splice, vec<T>::reserve): Replace memcpy
with vec_copy_construct.
(vect<T>::quick_grow_cleared): Replace memset with default ctor.
(vect<T>::vec_safe_grow_cleared, vec_safe_grow_cleared): Same.
* doc/invoke.texi (-Wclass-memaccess): Document.
libcpp/ChangeLog:
PR c++/80560
* line-map.c (line_maps::~line_maps): Avoid calling htab_delete
with a null pointer.
(linemap_init): Avoid calling memset on an object of a non-trivial
type.
libitm/ChangeLog:
PR c++/80560
* beginend.cc (GTM::gtm_thread::rollback): Avoid calling memset
on an object of a non-trivial type.
(GTM::gtm_transaction_cp::commit): Use assignment instead of memcpy
to copy an object.
* method-ml.cc (orec_iterator::reinit): Avoid -Wclass-memaccess.
gcc/testsuite/ChangeLog:
PR c++/80560
* g++.dg/Wclass-memaccess.C: New test.
From-SVN: r249234
GCC Administrator [Fri, 16 Jun 2017 00:16:24 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249233
Nicolas Boulenguez [Thu, 15 Jun 2017 22:21:56 +0000 (00:21 +0200)]
re PR ada/81105 (system-freebsd-x86.ads renamed but referenced by gcc/ada/gcc-interface/Makefile.in)
PR ada/81105
* gcc-interface/Makefile.in (x86 kfreebsd): Adjust system.ads setting.
(i[3456]86-pc-gnu): Likewise.
(x86_64 kfreebsd): Likewise.
From-SVN: r249228
Janus Weil [Thu, 15 Jun 2017 21:17:48 +0000 (23:17 +0200)]
re PR fortran/80983 ([F03] memory leak when calling procedure-pointer component with allocatable result)
2017-06-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/80983
* trans-expr.c (gfc_conv_procedure_call): Deallocate the result of
scalar allocatable procedure-pointer components.
2017-06-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/80983
* gfortran.dg/proc_ptr_comp_51.f90: New test.
From-SVN: r249227
François Dumont [Thu, 15 Jun 2017 20:32:09 +0000 (20:32 +0000)]
2017-06-15 François Dumont <fdumont@gcc.gnu.org>
* src/c++98/tree.cc [!_GLIBCXX_INLINE_VERSION]
(_Rb_tree_rotate_left, _Rb_tree_rotate_right): Delete.
From-SVN: r249226
Jan Hubicka [Thu, 15 Jun 2017 18:45:47 +0000 (18:45 +0000)]
Revert accidental checkin.
From-SVN: r249225
Jan Hubicka [Thu, 15 Jun 2017 18:42:10 +0000 (18:42 +0000)]
re PR lto/69866 (lto1: internal compiler error: in add_symbol_to_partition_1, at lto/lto-partition.c:158)
PR lto/69866
* lto-symtab.c (lto_symtab_merge_symbols): Drop useless definitions
that resolved externally.
* gcc.dg/lto/pr69866_0.c: New test.
* gcc.dg/lto/pr69866_1.c: Likewise.
From-SVN: r249224
Ramana Radhakrishnan [Thu, 15 Jun 2017 14:17:04 +0000 (14:17 +0000)]
Update comment about is_leaf
crtl->is_leaf has a comment above it referring to "Local Register
Allocation". However this is set by IRA and not LRA since the meaning
of Local Register Allocator in GCC has changed quite drastically since
1999 when this comment was introduced above the variable
current_function_is_leaf. From memory gcc in those days had "local"
and "global" register allocation - however all of this has changed
quite a bit drastically since.
This patch merely updates the comment as I did some head scratching
this morning about how this could be set before Local Register
Allocator especially given the comment in ira.c as below.
/* Determine if the current function is a leaf before running IRA
since this can impact optimizations done by the prologue and
epilogue thus changing register elimination offsets. */
crtl->is_leaf = leaf_function_p ();
From-SVN: r249223
Jozef Lawrynowicz [Thu, 15 Jun 2017 13:38:52 +0000 (13:38 +0000)]
Fix problems with the MSP430 port's handling of persistent data.
PR target/78818
gcc * config/msp430/msp430.c (msp430_data_attr): Check that it's possible
for a variable to have a section before checking if the section has a
name.
Set section to.persistent if persistent attribute is set.
Warn if .persistent attribute is used on an automatic variable.
tests * gcc.target/msp430/pr78818-real.c: New template for tests.
* gcc.target/msp430/pr78818-auto.c: New test.
* gcc.target/msp430/pr78818-data-region.c: New test.
* gcc.target/msp430/pr78818-data-sec.c: New test.
* gcc.target/msp430/pr78818-auto-warn.c: New test.
From-SVN: r249222
Eric Botcazou [Thu, 15 Jun 2017 13:24:53 +0000 (13:24 +0000)]
re PR rtl-optimization/80474 (ipa-cp wrongly adding LO(symbol) twice)
PR rtl-optimization/80474
* reorg.c (update_block): Do not ignore instructions in a delay slot.
From-SVN: r249219
Rainer Orth [Thu, 15 Jun 2017 12:18:05 +0000 (12:18 +0000)]
Use pthread effective-target in testsuite
* testsuite: Add dg-require-effective-target pthread to -pthread
tests.
Remove explicit target lists from dg-do and dg-options.
* testsuite/30_threads/async/forced_unwind.cc: Remove explit
target list from dg-options.
* testsuite/30_threads/packaged_task/forced_unwind.cc: Likewise.
* 30_threads/shared_mutex/cons/1.cc: Likewise.
Pass -pthread for all targets.
* 30_threads/shared_mutex/try_lock/1.cc: Likewise.
* 30_threads/shared_mutex/try_lock/2.cc: Likewise.
* 30_threads/shared_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/this_thread/57060.cc: Require c++11 via
dg-require-effective-target.
From-SVN: r249217
Thomas Preud'homme [Thu, 15 Jun 2017 09:31:04 +0000 (09:31 +0000)]
[ARM] Make gcc.target/arm/its.c more robust
2017-06-15 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/testsuite/
* gcc.target/arm/its.c: Check that no IT blocks has more than 2
instructions in it rather than the number of IT blocks being 2.
Transfer scan directive arm_thumb2 restriction to the whole
testcase and restrict further to Thumb-only targets.
From-SVN: r249215
Tamar Christina [Thu, 15 Jun 2017 09:23:28 +0000 (09:23 +0000)]
sdiv_costs_1.c: Use dg-add-options.
2017-06-15 Tamar Christina <tamar.christina@arm.com>
* gcc.target/arm/sdiv_costs_1.c:
Use dg-add-options.
From-SVN: r249214
Segher Boessenkool [Thu, 15 Jun 2017 06:49:17 +0000 (08:49 +0200)]
rs6000: Don't use REGNO in the add<mode>3 expander
The argument could be a subreg of reg instead, which means we have to
use reg_or_subregno instead of REGNO.
* config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
of REGNO.
From-SVN: r249213
GCC Administrator [Thu, 15 Jun 2017 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249212
Ian Lance Taylor [Wed, 14 Jun 2017 23:42:53 +0000 (23:42 +0000)]
compiler: avoid crash on erroneous type
If there is an error constructing the backend type, the GCC backend
will report that the size is 1. That will then cause construction of
the ptrmask to crash. Avoid that case by just generating an empty
ptrmask.
Noticed while compiling a broken package. The policy I've been
following is to not commit a test case for a compiler crash on invalid
code, so no test case.
Reviewed-on: https://go-review.googlesource.com/45775
From-SVN: r249208
Maciej W. Rozycki [Wed, 14 Jun 2017 23:26:40 +0000 (23:26 +0000)]
MIPS16/GCC: Emit bounds checking as RTL in `casesi'
gcc/
* config/mips/mips.md (MIPS16_T_REGNUM): Remove constant.
(casesi): Emit bounds checking as RTL.
(casesi_internal_mips16_<mode>): Remove bounds checking.
gcc/testsuite/
* gcc.target/mips/data-sym-jump.c: Adjust for whitespace changes.
* gcc.target/mips/pr51513-1.c: New test.
* gcc.target/mips/pr51513-2.c: New test.
From-SVN: r249207
Jonathan Wakely [Wed, 14 Jun 2017 19:38:30 +0000 (20:38 +0100)]
Fix libstdc++ testsuite failures with -D_GLIBCXX_USE_CXX11_ABI=0
* doc/xml/manual/test.xml: Correct instructions on running tests.
* testsuite/21_strings/basic_string/cons/char/deduction.cc: Adjust to
pass when -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS.
* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
From-SVN: r249206
Ian Lance Taylor [Wed, 14 Jun 2017 19:36:42 +0000 (19:36 +0000)]
Makefile.def: Add check-gotools to go check targets.
* Makefile.def: Add check-gotools to go check targets.
* Makefile.in: Rebuild.
From-SVN: r249204
Ian Lance Taylor [Wed, 14 Jun 2017 19:26:21 +0000 (19:26 +0000)]
Makefile.am (libgosrcdir): Define.
* Makefile.am (libgosrcdir): Define.
(check-head, check-gccgo, check-go-tool): New targets.
(CHECK_ENV): Define.
(check): New target.
(mostlyclean-local): New target.
* Makefile.in: Rebuild.
From-SVN: r249203
Max Filippov [Wed, 14 Jun 2017 17:19:44 +0000 (17:19 +0000)]
gcc: xtensa: allow XCHAL_* macros to be non-constant
XCHAL_* macros from the xtensa-config.h are used in a number of places
that require them to be preprocessor constants. Rewrite these places so
that non-constant XCHAL_* definitions could be used there.
2017-06-14 Max Filippov <jcmvbkbc@gmail.com>
gcc/
* config/xtensa/xtensa.c (xtensa_option_override): Append
MASK_CONST16 to target_flags in the absence of TARGET_L32R.
(hwloop_optimize, hwloop_fail, hwloop_pattern_reg,
xtensa_doloop_hooks): Define unconditionally.
(xtensa_reorg_loops): Only call reorg_loops in the presence of
TARGET_LOOPS.
* config/xtensa/xtensa.h (TARGET_L32R): New definition.
(TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account
for it in xtensa_option_override.
(HARD_FRAME_POINTER_IS_FRAME_POINTER,
HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions.
From-SVN: r249202
Boris Kolpackov [Wed, 14 Jun 2017 16:05:57 +0000 (16:05 +0000)]
Recognize '-' as special -MF argument (write to stdout)
Sometimes it is useful to generate pre-processed output to a file and
the dependency information to stdout for further analysis/processing.
For example:
g++ -E -MD -fdirectives-only -o test.ii test.cxx
This will generate the dependency information to test.d (as per the
documentation). While changing this behavior is probably unwise, one
traditional (e.g., supported by -o) way to handle this is to recognize
the special '-' file name as an instruction to write to stdout:
g++ -E -MD -fdirectives-only -o test.ii -MF - test.cxx
Currently this will create a file named '-'. The included patch
changes this behavior to write to stdout.
Note also that Clang has supported this from at least version 3.5.
gcc:
2017-06-14 Boris Kolpackov <boris@codesynthesis.com>
* doc/cppopts.texi: Document '-' special value to -MF.
gcc/c-family:
2017-06-14 Boris Kolpackov <boris@codesynthesis.com>
* c-opts.c (c_common_finish): Handle '-' special value to -MF.
From-SVN: r249201
Wilco Dijkstra [Wed, 14 Jun 2017 14:51:46 +0000 (14:51 +0000)]
Improve Cortex-A53 FP scheduler
The Cortex-A53 scheduler model of FMAC bypass is not quite right
for FMAC to FMAC forwarding. Experiments also show the latencies of
FP operations are too high as well. Rather than adding more bypasses,
adjust the latencies of FP instructions to get a better schedule on
average. As a result SPECFP2006 is 1.1% faster.
gcc/
* config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency.
(cortex_a53_fconst): Likewise.
(cortex_a53_fpmul): Likewise.
(cortex_a53_f_load_64): Likewise.
(cortex_a53_f_load_many): Likewise.
(cortex_a53_advsimd_alu): Likewise.
(cortex_a53_advsimd_alu_q): Likewise.
(cortex_a53_advsimd_mul): Likewise.
(cortex_a53_advsimd_mul_q): Likewise.
(fpmac bypass): Add new bypass for fpmac-fpmac case.
Add missing fmul, r2f_cvt and fconst cases.
From-SVN: r249200
Ian Lance Taylor [Wed, 14 Jun 2017 13:59:02 +0000 (13:59 +0000)]
cmd/cgo: make _cgo_flags consistent across runs
The go tool will pass -I objdir as one of the flags, where objdir is
the temporary build directory. Remove that from _cgo_flags: we don't
need it, and it will be different each time.
Sort the flags to avoid the unpredictable map iteration order.
This matters for gccgo because for a package that uses cgo, the go
tool when building for gccgo will store the _cgo_flags file in the
archive. That means that we want to generate identical _cgo_flags for
every run.
The test for this is the cmd/go testsuite, to follow in a future CL.
Reviewed-on: https://go-review.googlesource.com/45692
From-SVN: r249199
Ian Lance Taylor [Wed, 14 Jun 2017 13:56:04 +0000 (13:56 +0000)]
cmd/go: gccgo: consistent results, fix vendoring
Pass the -fdebug-prefix-map and -gno-record-gcc-switches compiler
options to gccgo to generate consistent results.
Fix the vendoring code to look for /vendor/, not just /vendor, to
avoid being confused by something like vendor/vendor.org.
Tested by the cmd/go tests in a followup CL.
Reviewed-on: https://go-review.googlesource.com/45695
From-SVN: r249198
Ian Lance Taylor [Wed, 14 Jun 2017 13:53:43 +0000 (13:53 +0000)]
cmd/go: skip tests that do not work with gccgo
These tests fail for various reasons, most commonly because gccgo
doesn't really have GOROOT, so things like `go build errors` fail.
Reviewed-on: https://go-review.googlesource.com/45696
From-SVN: r249197
Ian Lance Taylor [Wed, 14 Jun 2017 13:50:53 +0000 (13:50 +0000)]
go/build: use GCCGOTOOLDIR to find gccgo tools
Add the environment variable GCCGOTOOLDIR to permit overriding the default
directory where tools like cgo are found when building with gccgo.
This will be used by the cmd/go tests in a future CL.
Reviewed-on: https://go-review.googlesource.com/45694
From-SVN: r249196
Ian Lance Taylor [Wed, 14 Jun 2017 13:47:28 +0000 (13:47 +0000)]
internal/testenv: support testing gccgo
If GO_TESTING_GOTOOLS is set in the environment, permit tests using
gccgo to run the go tool. Like GO_BUILDER_NAME, this should not be set
normally. But it is needed when testing the go tool itself, and will
be set by the gotools Makefile in a future CL.
Reviewed-on: https://go-review.googlesource.com/45693
From-SVN: r249195
Ian Lance Taylor [Wed, 14 Jun 2017 13:37:48 +0000 (13:37 +0000)]
compiler: remove "DIR/../" when joining relative import path
Otherwise if DIR does not exist, the path does not work. This matches
what the gc cmd/compile tool does, because it calls path.Join.
The test for this is the cmd/go tests, to be added in a follow-up CL.
Reviewed-on: https://go-review.googlesource.com/45691
From-SVN: r249194
Richard Biener [Wed, 14 Jun 2017 11:43:31 +0000 (11:43 +0000)]
re PR tree-optimization/81083 (ICE: Unable to coalesce ssa_names 4 and 13 which are marked as MUST COALESCE)
2017-06-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/81083
* gcc.dg/torture/pr81083.c: Add prototypes.
From-SVN: r249193
Richard Biener [Wed, 14 Jun 2017 11:40:20 +0000 (11:40 +0000)]
re PR middle-end/81088 (UBSAN: false positive as a result of reassosiation)
2017-06-14 Richard Biener <rguenther@suse.de>
PR middle-end/81088
* fold-const.c (split_tree): Drop TREE_OVERFLOW flag from
literal constants.
(fold_binary_loc): When associating do not treat pre-existing
TREE_OVERFLOW on literal constants as a reason to allow
TREE_OVERFLOW on associated literal constants.
* c-c++-common/ubsan/pr81088.c: New testcase.
From-SVN: r249192
Jakub Jelinek [Wed, 14 Jun 2017 11:24:48 +0000 (13:24 +0200)]
cp-gimplify.c (cp_genericize_r): Turn most of the function into a switch (TREE_CODE (stmt)) statement from long...
* cp-gimplify.c (cp_genericize_r): Turn most of the function
into a switch (TREE_CODE (stmt)) statement from long else if
sequence.
From-SVN: r249191
Eric Botcazou [Wed, 14 Jun 2017 11:22:19 +0000 (11:22 +0000)]
sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
* config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
(MASK_FEATURES): New macro.
* config/sparc/sparc.c (sparc_option_override): Remove the special
handling of -mfpu and generalize it to all MASK_FEATURES switches.
From-SVN: r249189
Eric Botcazou [Wed, 14 Jun 2017 10:40:34 +0000 (10:40 +0000)]
simplify-rtx.c (simplify_binary_operation_1): Do not simplify a division of 0 if non-call exceptions are enabled.
* simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
a division of 0 if non-call exceptions are enabled.
From-SVN: r249188
Andrew Pinski [Wed, 14 Jun 2017 10:20:07 +0000 (10:20 +0000)]
re PR target/71663 (aarch64 Vector initialization can be improved slightly)
PR target/71663
gcc
* config/aarch64/aarch64.c (aarch64_expand_vector_init):
Improve vector initialization code gen for only variable case.
gcc/testsuite
* gcc.target/aarch64/vect-init-1.c: Newtestcase.
* gcc.target/aarch64/vect-init-2.c: Likewise.
* gcc.target/aarch64/vect-init-3.c: Likewise.
* gcc.target/aarch64/vect-init-4.c: Likewise.
* gcc.target/aarch64/vect-init-5.c: Likewise.
Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@cavium.com>
From-SVN: r249187
Paolo Carlini [Wed, 14 Jun 2017 09:18:57 +0000 (09:18 +0000)]
re PR c++/58541 ([c++11] Bogus "error: redeclaration ... differs in ‘constexpr’")
2017-06-14 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58541
* g++.dg/cpp0x/constexpr-58541.C: New.
From-SVN: r249186
Eric Botcazou [Wed, 14 Jun 2017 07:44:59 +0000 (07:44 +0000)]
* config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
From-SVN: r249183
Richard Biener [Wed, 14 Jun 2017 07:22:32 +0000 (07:22 +0000)]
re PR tree-optimization/81083 (ICE: Unable to coalesce ssa_names 4 and 13 which are marked as MUST COALESCE)
2017-06-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/81083
* tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
as values.
* gcc.dg/torture/pr81083.c: New testcase.
From-SVN: r249182
Jakub Jelinek [Wed, 14 Jun 2017 06:29:09 +0000 (08:29 +0200)]
vrp101.c: Fix scan-tree-dump regex.
* gcc.dg/tree-ssa/vrp101.c: Fix scan-tree-dump regex.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: Likewise. Adjust comment.
From-SVN: r249181
Jakub Jelinek [Wed, 14 Jun 2017 06:25:06 +0000 (08:25 +0200)]
vrp101.c: Fix scan-tree-dump regex.
* gcc.dg/tree-ssa/vrp101.c: Fix scan-tree-dump regex.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: Likewise. Adjust comment.
From-SVN: r249180
GCC Administrator [Wed, 14 Jun 2017 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249179
Jakub Jelinek [Tue, 13 Jun 2017 20:05:20 +0000 (22:05 +0200)]
re PR sanitizer/80973 (ICE with lambda and -fsanitize=undefined)
PR c++/80973
* cp-gimplify.c (cp_genericize_r): Don't instrument MEM_REF second
argument even if it has REFERENCE_TYPE.
* g++.dg/ubsan/pr80973.C: New test.
From-SVN: r249174
Jakub Jelinek [Tue, 13 Jun 2017 20:02:38 +0000 (22:02 +0200)]
re PR c++/80984 (ICE with label/variable ambiguity)
PR c++/80984
* cp-gimplify.c (cp_genericize): Only look for VAR_DECLs in
BLOCK_VARS (outer) chain.
(cxx_omp_const_qual_no_mutable): Likewise.
* g++.dg/opt/nrv18.C: New test.
From-SVN: r249173
Ian Lance Taylor [Tue, 13 Jun 2017 19:56:45 +0000 (19:56 +0000)]
re PR go/80964 (cross-gotools are not executable on host system)
PR go/80964
* configure.ac: Set NATIVE if host_alias = target_alias.
* configure: Rebuild.
From-SVN: r249172
Marek Polacek [Tue, 13 Jun 2017 17:30:58 +0000 (17:30 +0000)]
re PR objc/80949 (ICE in do_warn_duplicated_branches_r)
PR objc/80949
* c-warn.c (do_warn_duplicated_branches): Return if any of the
branches is null.
From-SVN: r249171
Segher Boessenkool [Tue, 13 Jun 2017 17:18:51 +0000 (19:18 +0200)]
rs6000: Comment fixes + some leftovers
* config/rs6000/rs6000.c: Update all comments that mentioned SPE.
(rs6000_expand_builtin): Remove RS6000_BTC_EVSEL.
* config/rs6000/rs6000.h (RS6000_BTC_EVSEL): Delete.
* config/rs6000/vxworks.h (VXCPU_FOR_8548): Delete. Adjust former use.
* config/rs6000/vxworksae.h (VXCPU_FOR_8548): Delete.
* config/rs6000/vxworksmils.h (VXCPU_FOR_8548): Delete.
From-SVN: r249170
Segher Boessenkool [Tue, 13 Jun 2017 17:17:54 +0000 (19:17 +0200)]
rs6000: Remove VECTOR_SPE
* config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete VECTOR_SPE.
* config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete VECTOR_SPE.
From-SVN: r249169
Segher Boessenkool [Tue, 13 Jun 2017 17:16:57 +0000 (19:16 +0200)]
rs6000: Remove FIXED_SCRATCH
* config/rs6000/rs6000.h (FIXED_SCRATCH): Delete.
From-SVN: r249168
Segher Boessenkool [Tue, 13 Jun 2017 17:15:42 +0000 (19:15 +0200)]
rs6000: Updates to t-rtems
* config/rs6000/t-rtems: Don't handle SPE.
From-SVN: r249167
Segher Boessenkool [Tue, 13 Jun 2017 17:14:25 +0000 (19:14 +0200)]
rs6000: Updates to t-linux
* config/rs6000/t-linux: Don't handle SPE.
From-SVN: r249166
Segher Boessenkool [Tue, 13 Jun 2017 17:13:24 +0000 (19:13 +0200)]
rs6000: Remove eabispe.h
* config/rs6000/eabispe.h: Delete file.
From-SVN: r249165
Segher Boessenkool [Tue, 13 Jun 2017 17:10:57 +0000 (19:10 +0200)]
rs6000: Remove t-spe
* config/rs6000/t-spe: Delete file.
From-SVN: r249164
Segher Boessenkool [Tue, 13 Jun 2017 17:06:37 +0000 (19:06 +0200)]
rs6000: Remove SPE_CONST_OFFSET_OK
* config/rs6000/rs6000.c (SPE_CONST_OFFSET_OK): Delete.
(rs6000_legitimate_offset_address_p): Return false for anything in
V2SImode or V2SFmode.
From-SVN: r249163
Segher Boessenkool [Tue, 13 Jun 2017 17:05:26 +0000 (19:05 +0200)]
rs6000: Sanitize vector modes
This removes the vector modes that were only used by SPE. It also
rearranges things so it is easier to see what is there, and for what.
* config/rs6000/rs6000-modes.def: Remove all 8-byte vector modes
except V2SF and V2SI. Rearrange the vector modes, and add comments.
* config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove V8QImode
and V4HImode.
(reg_offset_addressing_ok_p): Remove V4HImode and V1DImode.
(rs6000_legitimate_offset_address_p): Ditto.
(rs6000_emit_move): Ditto.
(rs6000_init_builtins): Remove V4HI_type_node.
From-SVN: r249162
Ian Lance Taylor [Tue, 13 Jun 2017 14:26:07 +0000 (14:26 +0000)]
compiler: containing small bfunction mixup in Gogo::write_globals
Fix buglet in Gogo::write_globals-- in a couple of places the
wrong Bfunction was being used for the containing (not target)
function when creating calls for init functions.
Reviewed-on: https://go-review.googlesource.com/45510
From-SVN: r249159
Martin Liska [Tue, 13 Jun 2017 13:59:05 +0000 (15:59 +0200)]
Implement no_sanitize function attribute
2017-06-13 Martin Liska <mliska@suse.cz>
PR sanitize/78204
* c-c++-common/ubsan/attrib-2.c (float_cast2): Enhance the
test by adding no_sanitize attribute.
* gcc.dg/asan/use-after-scope-4.c: Likewise.
2017-06-13 Martin Liska <mliska@suse.cz>
PR sanitize/78204
* c-attribs.c (add_no_sanitize_value): New function.
(handle_no_sanitize_attribute): Likewise.
(handle_no_sanitize_address_attribute): Use the function.
(handle_no_sanitize_thread_attribute): New function.
(handle_no_address_safety_analysis_attribute): Use
add_no_sanitize_value.
(handle_no_sanitize_undefined_attribute): Likewise.
* c-common.h: Declare new functions.
* c-ubsan.c (ubsan_instrument_division): Use sanitize_flags_p.
(ubsan_instrument_shift): Likewise.
(ubsan_instrument_bounds): Likewise.
(ubsan_maybe_instrument_array_ref): Likewise.
(ubsan_maybe_instrument_reference_or_call): Likewise.
2017-06-13 Martin Liska <mliska@suse.cz>
PR sanitize/78204
* asan.c (asan_sanitize_stack_p): Use sanitize_flags_p.
(gate_asan): Likewise.
* asan.h (asan_no_sanitize_address_p): Remove the function.
(sanitize_flags_p): New function.
* builtins.def: Fix coding style.
* common.opt: Use renamed enum value.
* convert.c (convert_to_integer_1): Use sanitize_flags_p.
* doc/extend.texi: Document no_sanitize attribute.
* flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT
to SANITIZE_UNDEFINED_NONDEFAULT.
* gcc.c (sanitize_spec_function): Use the renamed enum value.
* gimple-fold.c (optimize_atomic_compare_exchange_p):
Use sanitize_flags_p.
* gimplify.c (gimplify_function_tree): Likewise.
* ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise.
* opts.c (parse_no_sanitize_attribute): New function.
(common_handle_option): Use renamed enum value.
* opts.h (parse_no_sanitize_attribute): Declare.
* tree.c (sanitize_flags_p): New function.
* tree.h: Declared here.
* tsan.c: Use sanitize_flags_p.
* ubsan.c (ubsan_expand_null_ifn): Likewise.
(instrument_mem_ref): Likewise.
(instrument_bool_enum_load): Likewise.
(do_ubsan_in_current_function): Remove the function.
(pass_ubsan::execute): Use sanitize_flags_p.
* ubsan.h: Remove do_ubsan_in_current_function
* tree-cfg.c (print_no_sanitize_attr_value): New function.
(dump_function_to_file): Use it here.
2017-06-13 Martin Liska <mliska@suse.cz>
PR sanitize/78204
* class.c (build_base_path): Use sanitize_flags_p.
* cp-gimplify.c (cp_genericize_r): Likewise.
(cp_genericize_tree): Likewise.
(cp_genericize): Likewise.
* cp-ubsan.c (cp_ubsan_instrument_vptr_p): Likewise.
* decl.c (compute_array_index_type): Likewise.
(start_preparsed_function): Likewise.
* decl2.c (one_static_initialization_or_destruction): Likewise.
* init.c (finish_length_check): Likewise.
* lambda.c (maybe_add_lambda_conv_op): Likewise.
* typeck.c (cp_build_binary_op): Likewise.
(build_static_cast_1): Likewise.
2017-06-13 Martin Liska <mliska@suse.cz>
PR sanitize/78204
* c-convert.c (convert): Use sanitize_flags_p.
* c-decl.c (grokdeclarator): Likewise.
* c-typeck.c (convert_for_assignment): Likewise.
(c_finish_return): Likewise.
(build_binary_op): Likewise.
From-SVN: r249158
Renlin Li [Tue, 13 Jun 2017 13:57:45 +0000 (13:57 +0000)]
[ARM][Testsuite]make dump_stack function call conditional in cold-lc.c
After r249013, die () and dump_stack () are both in cold section. This makes
the compiler generate bl instruction for the function call, instead of
honoring the -mlong-calls option.
This patch changes the dump_stack function call conditional, which fixes the
regression.
gcc/testsuite/
* gcc.target/arm/cold-lc.c: Update coding style, call dump_stack
conditionally.
From-SVN: r249157
Ian Lance Taylor [Tue, 13 Jun 2017 13:29:26 +0000 (13:29 +0000)]
runtime: don't always show frames with no function in traceback
If there is no function name, the traceback is generally
uninformative. In earlier versions we did not show such frames.
Restore that behavior. These frames can be seen with GOTRACEBACK=system.
Reviewed-on: https://go-review.googlesource.com/45431
From-SVN: r249156
Martin Jambor [Tue, 13 Jun 2017 11:46:14 +0000 (13:46 +0200)]
Fixed spelling mistake in gcc/ChangeLog
From-SVN: r249155
Martin Jambor [Tue, 13 Jun 2017 11:40:24 +0000 (13:40 +0200)]
[PR80803 2/2] Diligent queuing in SRA grp_write prop
2017-06-13 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/80803
PR tree-optimization/81063
* tree-sra.c (subtree_mark_written_and_enqueue): Move up in the file.
(propagate_subaccesses_across_link): Enqueue subtree whneve necessary
instead of relying on the caller.
testsuite/
gcc.dg/tree-ssa/pr80803.c: New test.
gcc.dg/tree-ssa/pr81063.c: Likewise.
From-SVN: r249154
Martin Jambor [Tue, 13 Jun 2017 11:34:51 +0000 (13:34 +0200)]
[PR80803 1/2] Streamline SRA access enqueuing
2017-06-13 Martin Jambor <mjambor@suse.cz>
* tree-sra.c (add_access_to_work_queue): Only enqueue accesses
that have a first_link.
(sort_and_splice_var_accesses): Do not check first_link before
enquing.
(subtree_mark_written_and_enqueue): Likewise.
(propagate_all_subaccesses): Likewise and do not stop at first
parent with a first_link.
From-SVN: r249153
Martin Jambor [Tue, 13 Jun 2017 11:32:02 +0000 (13:32 +0200)]
Trivial fix in dump_access_tree_1
2017-06-13 Martin Jambor <mjambor@suse.cz>
* tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr
instead of f.
From-SVN: r249152
Yury Gribov [Tue, 13 Jun 2017 11:19:23 +0000 (11:19 +0000)]
match.pd: New pattern.
2017-06-13 Yury Gribov <tetra2005@gmail.com>
gcc/
* match.pd: New pattern.
gcc/testsuite/
* c-c++-common/fold-masked-cmp-3.c: New test.
From-SVN: r249151
Yury Gribov [Tue, 13 Jun 2017 11:16:15 +0000 (11:16 +0000)]
tree-vrp.c (is_masked_range_test): New function.
2017-06-13 Yury Gribov <tetra2005@gmail.com>
gcc/
* tree-vrp.c (is_masked_range_test): New function.
(register_edge_assert_for): Determine ranges for
some bit tests.
From-SVN: r249150
Yury Gribov [Tue, 13 Jun 2017 11:13:52 +0000 (11:13 +0000)]
re PR tree-optimization/67328 (range test rather than single bit test for code testing enum values)
2017-06-13 Yury Gribov <tetra2005@gmail.com>
gcc/
PR tree-optimization/67328
* fold-const.c (maskable_range_p): New function.
(build_range_check): Generate bittests if possible.
gcc/testsuite/
PR tree-optimization/67328
* c-c++-common/fold-masked-cmp-1.c: New test.
* c-c++-common/fold-masked-cmp-2.c: Likewise.
* gcc.dg/pr46309.c: Fix pattern.
* gcc.dg/pr46309-2.c: Likewise.
From-SVN: r249149
Tamar Christina [Tue, 13 Jun 2017 10:23:51 +0000 (10:23 +0000)]
sdiv_costs_1.c: Require arm_arch_v8a_ok and add march option.
2017-06-13 Tamar Christina <tamar.christina@arm.com>
* gcc.target/arm/sdiv_costs_1.c:
Require arm_arch_v8a_ok and add march option.
From-SVN: r249148
Martin Liska [Tue, 13 Jun 2017 08:59:28 +0000 (10:59 +0200)]
Enhance dump_probability function.
2017-06-13 Martin Liska <mliska@suse.cz>
* gimple-pretty-print.c (dump_probability): Add new argument.
(dump_edge_probability): Dump both probability and count.
(dump_gimple_label): Likewise.
(dump_gimple_bb_header): Likewise.
2017-06-13 Martin Liska <mliska@suse.cz>
* gcc.dg/tree-ssa/builtin-sprintf-2.c: Adjust scanned pattern.
* gcc.dg/tree-ssa/dump-2.c: Likewise.
* gcc.dg/tree-ssa/vrp101.c: Likewise.
From-SVN: r249147
Georg-Johann Lay [Tue, 13 Jun 2017 08:25:07 +0000 (08:25 +0000)]
re PR target/81072 ([avr] Support some XMEGA devices with flash seen in RAM address space.)
PR target/81072
* config/avr/avr-devices.c: Fix indentation.
* config/avr/gen-avr-mmcu-specs.c: Dito.
From-SVN: r249146
Richard Biener [Tue, 13 Jun 2017 07:10:06 +0000 (07:10 +0000)]
tree-vect-loop.c (vect_model_reduction_cost): Do not fail, instead get vector type from stmt_info.
2017-06-13 Richard Biener <rguenther@suse.de>
* tree-vect-loop.c (vect_model_reduction_cost): Do not fail,
instead get vector type from stmt_info.
(vectorizable_reduction): Adjust. Remove dead code.
From-SVN: r249145
Richard Biener [Tue, 13 Jun 2017 07:07:08 +0000 (07:07 +0000)]
re PR sanitizer/81065 (UBSAN: false positive as a result of distribution involving different types)
2017-06-13 Richard Biener <rguenther@suse.de>
PR middle-end/81065
* fold-const.c (extract_muldiv_1): Remove bogus distribution
case of C * (x * C2 + C3).
(fold_addr_of_array_ref_difference): Properly fold index difference.
* c-c++-common/ubsan/pr81065.c: New testcase.
From-SVN: r249144
Ian Lance Taylor [Tue, 13 Jun 2017 00:43:56 +0000 (00:43 +0000)]
runtime: clear isSystemGoroutine in goexit
Otherwise it may be set when the g struct is reused via gfput/gfget.
Test is golang.org/x/net/http2 with GOMAXPROCS=12.
Reviewed-on: https://go-review.googlesource.com/45430
From-SVN: r249143
GCC Administrator [Tue, 13 Jun 2017 00:16:26 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249142
Ian Lance Taylor [Mon, 12 Jun 2017 23:14:05 +0000 (23:14 +0000)]
runtime: ignore _Gscan bit when checking status in CgocallDone
Also always access the atomicstatus field atomically.
The effect of not checking the _Gscan bit is that if the GC decides to
scan the stack just as the goroutine is leaving the system call, the
goroutine might fail to call exitsyscall. Then then typically causes
a runtime assertion failure later on. If we do call exitsyscall as we
should, it will stall (in casgstatus) until the _Gscan bit is cleared.
No separate test. I've observed causing sporadic failures running the
misc/cgo tests, but we don't currently have a way to run those
routinely for gccgo. I should fix that.
Reviewed-on: https://go-review.googlesource.com/45392
From-SVN: r249138
Pedro Alves [Mon, 12 Jun 2017 22:22:39 +0000 (22:22 +0000)]
Finish implementing P0426R1 "Constexpr for std::char_traits" for C++17
As discussed in PR c++/80265 ("__builtin_{memcmp,memchr,strlen} are
not usable in constexpr functions"), use __builtin_constant_p to tell
whether we can defer to a constexpr algorithm.
I used __always_inline__ just to be thorough. It isn't really really
necessary as far as I could determine.
Changes like these:
if (__n == 0)
return 0;
- return wmemcmp(__s1, __s2, __n);
+ else
+ return wmemcmp(__s1, __s2, __n);
are necessary otherwise G++ complains that we're calling a
non-constexpr function, which looks like a a manifestation of PR67026
to me.
libstdc++-v3:
2017-06-12 Pedro Alves <palves@redhat.com>
* doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr
char_traits status.
* doc/html/*: Regenerate.
* include/bits/char_traits.h (_GLIBCXX_ALWAYS_INLINE): Define if
not already defined.
(__cpp_lib_constexpr_char_traits): Uncomment.
(__constant_string_p, __constant_char_array_p): New.
(std::char_traits<char>, std::char_traits<wchar_t>): Add
_GLIBCXX17_CONSTEXPR on compare, length and find and use
__constant_string_p, __constant_char_array_p and
__builtin_constant_p to defer to __gnu_cxx::char_traits at compile
time.
* testsuite/21_strings/char_traits/requirements/
constexpr_functions_c++17.cc: Uncomment
__cpp_lib_constexpr_char_traits tests. Uncomment
test_compare<char>, test_length<char>, test_find<char>,
test_compare<wchar_t>, test_length<wchar_t> and test_find<wchar_t>
static_assert tests.
From-SVN: r249137
François Dumont [Mon, 12 Jun 2017 20:38:16 +0000 (20:38 +0000)]
stl_tree.h (_Rb_tree_impl()): Restore _Node_allocator default init.
2017-06-12 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_tree.h (_Rb_tree_impl()): Restore _Node_allocator
default init.
* testsuite/util/testsuite_allocator.h
(__gnu_test::default_init_allocator<>) New.
* testsuite/23_containers/set/allocator/default_init.cc: New.
* testsuite/23_containers/map/allocator/default_init.cc: New.
From-SVN: r249136
David S. Miller [Mon, 12 Jun 2017 19:30:45 +0000 (19:30 +0000)]
More refinements to fixing sparc's PR target/80968.
gcc/
PR target/80968
* config/sparc/sparc.md (return expander): Emit frame blockage if
function uses alloca.
From-SVN: r249134
Ian Lance Taylor [Mon, 12 Jun 2017 17:51:52 +0000 (17:51 +0000)]
compiler: avoid orphaning Bexpressions when processing conversions
The method Type_conversion_expression::do_get_backend was (in some
circumstances) creating a Bexpression for the source expression of the
conversion and then throwing it away before using it. Fix up this
method to insure that the call to get_backend() on the source
expression is only made when the result will be used.
Reviewed-on: https://go-review.googlesource.com/45350
From-SVN: r249131
Jonathan Wakely [Mon, 12 Jun 2017 16:37:28 +0000 (17:37 +0100)]
PR libstdc++/55917 do not handle exceptions in std::thread
PR libstdc++/55917
* src/c++11/thread.cc (execute_native_thread_routine): Remove
try-block so that exceptions propagate out of the thread and terminate
is called by the exception-handling runtime.
(execute_native_thread_routine_compat): Likewise.
* testsuite/30_threads/thread/cons/terminate.cc: New.
From-SVN: r249130
Ian Lance Taylor [Mon, 12 Jun 2017 16:15:53 +0000 (16:15 +0000)]
split-1.c: Require split_stack, don't require freorder.
* gcc.dg/tree-prof/split-1.c: Require split_stack, don't require
freorder. Update comment to explain test.
From-SVN: r249129
Richard Sandiford [Mon, 12 Jun 2017 16:06:38 +0000 (16:06 +0000)]
Fix pessimistic DImode handling in combine.c:make_field_assignment
The make_field_assignment code:
src = force_to_mode (src, mode,
GET_MODE_PRECISION (mode) >= HOST_BITS_PER_WIDE_INT
? HOST_WIDE_INT_M1U
: (HOST_WIDE_INT_1U << len) - 1,
0);
would ignore the field length len for DImode, even though DImode can be
handled using HWIs. I think the code should be testing len instead.
2017-06-12 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* combine.c (make_field_assignment): Check len rather than the mode
precision when calling force_to_mode.
From-SVN: r249128
Tamar Christina [Mon, 12 Jun 2017 14:23:22 +0000 (14:23 +0000)]
inline-lrint_1.c: Broaden regexp.
2017-06-12 Tamar Christina <tamar.christina@arm.com>
* gcc.target/aarch64/inline-lrint_1.c: Broaden regexp.
* gcc.target/aarch64/inline-lrint_2.c: Likewise.
* gcc.target/aarch64/no-inline-lrint_1.c: Likewise.
* gcc.target/aarch64/no-inline-lrint_2.c: Likewise.
From-SVN: r249127
Tamar Christina [Mon, 12 Jun 2017 13:24:37 +0000 (13:24 +0000)]
sdiv_costs_1.c: Require arm_v8_vfp_ok.
2017-06-12 Tamar Christina <tamar.christina@arm.com>
* gcc.target/arm/sdiv_costs_1.c: Require arm_v8_vfp_ok.
From-SVN: r249125
Georg-Johann Lay [Mon, 12 Jun 2017 12:52:30 +0000 (12:52 +0000)]
Support multilibs and devices that see flash in RAM address range.
gcc/
Support multilibs and devices that see flash in RAM address range.
PR target/81072
* config/avr/avr-arch.h (avr_arch_id) <ARCH_AVRXMEGA3>: New enum.
(avr_mcu_t) <flash_pm_offset>: New field.
(avr_device_specific_features) <AVR_ISA_RCALL>: New enum.
* config/avr/avr.h (AVR_SHORT_CALLS): New define.
(AVR_HAVE_JMP_CALL): Don't set if AVR_SHORT_CALLS.
(AVR_TINY_PM_OFFSET): Remove macro.
* config/avr/avr.opt (-mshort-calls): New option.
* config/avr/gen-avr-mmcu-specs.c (print_mcu)
[*self_spec]: Add / remove -mshort-calls depending on AVR_ISA_RCALL.
* config/avr/avr-c.c (avr_cpu_cpp_builtins)
<__AVR_SHORT_CALLS__>: Built-in define if AVR_SHORT_CALLS.
<__AVR_HAVE_JMP_CALL__>: Use AVR_HAVE_JMP_CALL as condition
instead of avr_arch->have_jmp_call.
<__AVR_PM_BASE_ADDRESS__>: Built-in define if avr_arch->flash_pm_offset.
[AVR_TINY] <__AVR_TINY_PM_BASE_ADDRESS__>: Use
avr_arch->flash_pm_offset to define.
* config/avr/avr-devices.c (avr_arch_types): Add initializers for
new field flash_pm_offset. Add entry for avrxmega3.
(avr_texinfo): Add entry for avrxmega3.
* config/avr/avr-mcus.def: Add entries for: avrxmega3,
attiny212, attiny214,
attiny412, attiny414, attiny416, attiny417,
attiny814, attiny816, attiny817,
attiny1614, attiny1616, attiny1617,
attiny3214, attiny3216, attiny3217.
* config/avr/avr.c (avr_assemble_integer)[AVR_TINY]: Use
avr_arch->flash_pm_offset instead of AVR_TINY_PM_OFFSET.
(avr_print_operand_address) [AVR_TINY]: Same.
(avr_asm_init_sections) <readonly_data_section>: Only patch
callback if avr_arch->flash_pm_offset = 0.
(avr_asm_named_section) <avr_need_copy_data_p>: Skip setting it
for rodata if avr_arch->flash_pm_offset != 0.
(avr_encode_section_info) [AVR_TINY]: Adjust comment.
* config/avr/genmultilib.awk (dir_rcall, opt_rcall): New vars.
(opts) [AVR_ISA_RCALL]: Append opt_rcall.
(m_options): Append opt_rcall.
(m_dirnames): Append dir_rcall.
* config/avr/t-multilib: Regenerate.
* configure.ac [target=avr]: Check whether avrxmega3 default
linker description file works as needed.
* configure: Regenerate.
* doc/avr-mmcu.texi: Regenerate.
* doc/invoke.texi (AVR Options) <-mshort-calls>: Document it.
<__AVR_ARCH__>: Document avrxmega3 and 103.
<__AVR_HAVE_JMP_CALL__>: Adjust documentation.
<__AVR_SHORT_CALLS__>: Document it.
<__AVR_PM_BASE_ADDRESS__>: Document it.
* doc/extend.texi (AVR Options) <-mshort-calls>: Document it.
(AVR Variable Attributes) <progmem>: Document this is
not needed for avrxmega3.
(AVR Named Address Spaces) <__flash>: Dito.
From-SVN: r249124