Jonathan Wakely [Thu, 22 Sep 2016 09:56:54 +0000 (10:56 +0100)]
Always qualify std::forward in <variant>
* include/bits/uses_allocator.h (__uses_allocator_construct): Qualify
std::forward and ::new. Cast pointer to void*.
* include/std/variant (_Variant_storage, _Union, _Variant_base)
(__access, __visit_invoke, variant, visit): Qualify std::forward.
* testsuite/20_util/variant/compile.cc: Test for ADL problems.
From-SVN: r240344
Tim Shen [Thu, 22 Sep 2016 08:45:55 +0000 (08:45 +0000)]
variant (variant::operator=): Fix assignment on references.
* libstdc++-v3/include/std/variant (variant::operator=): Fix assignment
on references.
* libstdc++-v3/testsuite/20_util/variant/compile.cc: Add test.
From-SVN: r240343
Paul Thomas [Thu, 22 Sep 2016 07:46:07 +0000 (07:46 +0000)]
interface.c (check_dtio_interface1): Introduce errors for alternate returns and incorrect numbers of arguments.
2016-09-22 Paul Thomas <pault@gcc.gnu.org>
* interface.c (check_dtio_interface1): Introduce errors for
alternate returns and incorrect numbers of arguments.
(gfc_find_specific_dtio_proc): Return cleanly if the derived
type either doesn't exist or has no namespace.
2016-09-22 Paul Thomas <pault@gcc.gnu.org>
* gfortran.dg/dtio_11.f90: Correct for changed error messages.
* gfortran.dg/dtio_13.f90: New test.
From-SVN: r240342
Louis Krupp [Thu, 22 Sep 2016 07:07:53 +0000 (07:07 +0000)]
re PR fortran/66107 (ICE on missing parameter value for initialisation (segfault))
2016-09-21 Louis Krupp <louis.krupp@zoho.com>
PR fortran/66107
* gfortran.dg/pr66107.f90: New test.
2016-09-21 Louis Krupp <louis.krupp@zoho.com>
PR fortran/66107
* decl.c (add_init_expr_to_sym): Catch variable character length
in parameter array.
From-SVN: r240341
Tim Shen [Thu, 22 Sep 2016 03:15:58 +0000 (03:15 +0000)]
re PR libstdc++/77641 (std::variant copy-initialization fails for type with non-trivial constexpr ctor)
PR libstdc++/77641
* include/std/variant (_Variant_storage::_Variant_storage):
Change _Variant_storage's union to be default constructible.
* testsuite/20_util/variant/compile.cc: New test.
From-SVN: r240340
GCC Administrator [Thu, 22 Sep 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r240339
Michael Meissner [Wed, 21 Sep 2016 22:12:13 +0000 (22:12 +0000)]
re PR target/77670 (PowerPC64 Spec 2006 fails on 453.povray using -mcpu=power9 -mpower9-minmax)
2016-09-21 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/77670
* config/rs6000/predicates.md (invert_fpmask_comparison_operator):
New predicate that matches the ISA 3.0 XSCMP{EQ,GT,GE}DP
instructions when you want to invert the test.
* config/rs6000/rs6000.md (fpmask<mode>): Use the arguments in the
correct order for XXSEL.
(mov<SFDF:mode><SFDF2:mode>cc_invert_p9): Define the inverted test
for using XSCMP{EQ,GT,GE}DP.
From-SVN: r240336
Michael Meissner [Wed, 21 Sep 2016 22:11:42 +0000 (22:11 +0000)]
re PR target/77670 (PowerPC64 Spec 2006 fails on 453.povray using -mcpu=power9 -mpower9-minmax)
2016-09-21 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/77670
* config/rs6000/predicates.md (invert_fpmask_comparison_operator):
New predicate that matches the ISA 3.0 XSCMP{EQ,GT,GE}DP
instructions when you want to invert the test.
* config/rs6000/rs6000.md (fpmask<mode>): Use the arguments in the
correct order for XXSEL.
(mov<SFDF:mode><SFDF2:mode>cc_invert_p9): Define the inverted test
for using XSCMP{EQ,GT,GE}DP.
From-SVN: r240335
Ian Lance Taylor [Wed, 21 Sep 2016 20:58:51 +0000 (20:58 +0000)]
compiler, runtime: replace hashmap code with Go 1.7 hashmap
This change removes the gccgo-specific hashmap code and replaces it with
the hashmap code from the Go 1.7 runtime. The Go 1.7 hashmap code is
more efficient, does a better job on details like when to update a key,
and provides some support against denial-of-service attacks.
The compiler is changed to call the new hashmap functions instead of the
old ones.
The compiler now tracks which types are reflexive and which require
updating when used as a map key, and records the information in map type
descriptors.
Map_index_expression is simplified. The special case for a map index on
the right hand side of a tuple expression has been unnecessary for some
time, and is removed. The support for specially marking a map index as
an lvalue is removed, in favor of lowering an assignment to a map index
into a function call. The long-obsolete support for a map index of a
pointer to a map is removed.
The __go_new_map_big function (known to the compiler as
Runtime::MAKEMAPBIG) is no longer needed, as the new runtime.makemap
function takes an int64 hint argument.
The old map descriptor type and supporting expression is removed.
The compiler was still supporting the long-obsolete syntax `m[k] = 0,
false` to delete a value from a map. That is now removed, requiring a
change to one of the gccgo-specific tests.
The builtin len function applied to a map or channel p is now compiled
as `p == nil ? 0 : *(*int)(p)`. The __go_chan_len function (known to
the compiler as Runtime::CHAN_LEN) is removed.
Support for a shared zero value for maps to large value types is
introduced, along the lines of the gc compiler. The zero value is
handled as a common variable.
The hash function is changed to take a seed argument, changing the
runtime hash functions and the compiler-generated hash functions.
Unlike the gc compiler, both the hash and equal functions continue to
take the type length.
Types that can not be compared now store nil for the hash and equal
functions, rather than pointing to functions that throw. Interface hash
and comparison functions now check explicitly for nil. This matches the
gc compiler and permits a simple implementation for ismapkey.
The compiler is changed to permit marking struct and array types as
incomparable, meaning that they have no hash or equal function. We use
this for thunk types, removing the existing special code to avoid
generating hash/equal functions for them.
The C runtime code adds memclr, memequal, and memmove functions.
The hashmap code uses go:linkname comments to make the functions
visible, as otherwise the compiler would discard them.
The hashmap code comments out the unused reference to the address of the
first parameter in the race code, as otherwise the compiler thinks that
the parameter escapes and copies it onto the heap. This is probably not
needed when we enable escape analysis.
Several runtime map tests that ere previously skipped for gccgo are now
run.
The Go runtime picks up type kind information and stubs. The type kind
information causes the generated runtime header file to define some
constants, including `empty`, and the C code is adjusted accordingly.
A Go-callable version of runtime.throw, that takes a Go string, is
added to be called from the hashmap code.
Reviewed-on: https://go-review.googlesource.com/29447
* go.go-torture/execute/map-1.go: Replace old map deletion syntax
with call to builtin delete function.
From-SVN: r240334
David Malcolm [Wed, 21 Sep 2016 20:55:06 +0000 (20:55 +0000)]
Introduce class rtx_reader
Bundle up various global variables within gensupport.c into a
class rtx_reader, with a view towards making it easier to run the
code more than once in-process.
gcc/ChangeLog:
* genconstants.c (main): Introduce noop_reader and convert call
to read_md_files to a method call.
* genenums.c (main): Likewise.
* genmddeps.c (main): Likewise.
* genpreds.c (write_tm_constrs_h): Replace use of "in_fname" with
rtx_reader_ptr->get_top_level_filename ().
(write_tm_preds_h): Likewise.
(write_insn_preds_c): Likewise.
* gensupport.c (class gen_reader): New subclass of rtx_reader.
(rtx_handle_directive): Convert to...
(gen_reader::handle_unknown_directive): ...this.
(init_rtx_reader_args_cb): Convert return type from bool to
rtx_reader *. Create a gen_reader instance, using it for the
call to read_md_files. Return it if no errors occur.
(init_rtx_reader_args): Convert return type from bool to
rtx_reader *.
* gensupport.h (init_rtx_reader_args_cb): Likewise.
(init_rtx_reader_args_cb): Likewise.
* read-md.c (struct file_name_list): Move to class rtx_reader.
(read_md_file): Delete in favor of rtx_reader::m_read_md_file.
(read_md_filename): Delete in favor of
rtx_reader::m_read_md_filename.
(read_md_lineno): Delete in favor of rtx_reader::m_read_md_lineno.
(in_fname): Delete in favor of rtx_reader::m_toplevel_fname.
(base_dir): Delete in favor of rtx_reader::m_base_dir.
(first_dir_md_include): Delete in favor of
rtx_reader::m_first_dir_md_include.
(last_dir_md_include_ptr): Delete in favor of
rtx_reader::m_last_dir_md_include_ptr.
(max_include_len): Delete.
(rtx_reader_ptr): New.
(fatal_with_file_and_line): Use get_filename and get_lineno
accessors of rtx_reader_ptr.
(require_char_ws): Likewise.
(rtx_reader::read_char): New method, based on ::read_char.
(rtx_reader::unread_char): New method, based on ::unread_char.
(read_escape): Use get_filename and get_lineno accessors of
rtx_reader_ptr.
(read_braced_string): Use get_lineno accessor of rtx_reader_ptr.
(read_string): Use get_filename and get_lineno accessors of
rtx_reader_ptr.
(rtx_reader::rtx_reader): New ctor.
(rtx_reader::~rtx_reader): New dtor.
(handle_include): Convert from a function to...
(rtx_reader::handle_include): ...this method, converting
handle_directive from a callback to a virtual function.
(handle_file): Likewise, converting to...
(rtx_reader::handle_file): ...this method.
(handle_toplevel_file): Likewise, converting to...
(rtx_reader::handle_toplevel_file): ...this method.
(rtx_reader::get_current_location): New method.
(parse_include): Convert from a function to...
(rtx_reader::add_include_path): ...this method, dropping redundant
update to unused max_include_len.
(read_md_files): Convert from a function to...
(rtx_reader::read_md_files): ...this method, converting
handle_directive from a callback to a virtual function.
(noop_reader::handle_unknown_directive): New method.
* read-md.h (directive_handler_t): Delete this typedef.
(in_fname): Delete.
(read_md_file): Delete.
(read_md_lineno): Delete.
(read_md_filename): Delete.
(class rtx_reader): New class.
(rtx_reader_ptr): New decl.
(class noop_reader): New subclass of rtx_reader.
(read_char): Reimplement in terms of rtx_reader::read_char.
(unread_char): Reimplement in terms of rtx_reader::unread_char.
(read_md_files): Delete.
* read-rtl.c (read_rtx_code): Update for deletion of globals
read_md_filename and read_md_lineno.
From-SVN: r240333
Michael Meissner [Wed, 21 Sep 2016 20:17:32 +0000 (20:17 +0000)]
Add PR target/71395 marker to 71395 fix
From-SVN: r240332
Bernd Edlinger [Wed, 21 Sep 2016 20:14:44 +0000 (20:14 +0000)]
c-common.c (c_common_truthvalue_conversion): Inhibit Wint-in-bool-context warning with from_macro_definition_at.
2016-09-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
* c-common.c (c_common_truthvalue_conversion): Inhibit
Wint-in-bool-context warning with from_macro_definition_at.
Mention the expression will always evaluate to true.
From-SVN: r240331
Jason Merrill [Wed, 21 Sep 2016 19:59:29 +0000 (15:59 -0400)]
Add from_macro_definition_at predicate for locations.
gcc/
* input.h (from_macro_definition_at): New.
libcpp/
* line-map.c (linemap_location_from_macro_definition_p): New.
* line-map.h: Declare it.
From-SVN: r240330
Jason Merrill [Wed, 21 Sep 2016 19:49:32 +0000 (15:49 -0400)]
Core 903
Core 903
* call.c (null_ptr_cst_p): Check char_type_p.
From-SVN: r240329
Joseph Myers [Wed, 21 Sep 2016 17:52:47 +0000 (18:52 +0100)]
Add _FloatN, _FloatNx tests for __builtin_fpclassify.
This patch adds tests for _FloatN and _FloatNx arguments to the
__builtin_fpclassify type-generic built-in function, omitted from the
original tests for type-generic functions on these types.
Tested for x86_64-pc-linux-gnu; all the supported new tests pass.
* gcc.dg/torture/float128-tg-3.c, gcc.dg/torture/float128x-tg-3.c,
gcc.dg/torture/float16-tg-3.c, gcc.dg/torture/float32-tg-3.c,
gcc.dg/torture/float32x-tg-3.c, gcc.dg/torture/float64-tg-3.c,
gcc.dg/torture/float64x-tg-3.c, gcc.dg/torture/floatn-tg-3.h: New
tests.
From-SVN: r240328
Segher Boessenkool [Wed, 21 Sep 2016 17:48:47 +0000 (19:48 +0200)]
Fix JUMP_LABEL documentation
* doc/rtl.texi (JUMP_LABEL): Document RETURN and SIMPLE_RETURN values.
From-SVN: r240325
Ville Voutilainen [Wed, 21 Sep 2016 17:37:17 +0000 (20:37 +0300)]
re PR libstdc++/77288 (Std::experimental::optional::operator= implementation is broken in gcc 6.1)
PR libstdc++/77288
* include/std/optional (__is_optional_impl, __is_optional): Remove.
(__converts_from_optional, __assigns_from_optional): New.
(optional(_Up&&)): Use is_same instead of __is_optional.
(optional(const optional<_Up>&)): Constrain with
__converts_from_optional.
(optional(optional<_Up>&&)): Likewise.
(operator=(_Up&&)): Use is_same instead of __is_optional, check
is_same and is_scalar.
(operator=(const optional<_Up>&)): Constrain with
__converts_from_optional and __assigns_from_optional.
(operator=(optional<_Up>&&)): Likewise.
* testsuite/20_util/optional/77288.cc: New.
* testsuite/20_util/optional/cons/value.cc: Adjust.
From-SVN: r240324
Ville Voutilainen [Wed, 21 Sep 2016 17:25:16 +0000 (20:25 +0300)]
Implement LWG 2729 for tuple.
* include/std/tuple (_Tuple_impl(_Tuple_impl&&)):
Suppress conditionally.
(_Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&&)): Likewise.
(__is_tuple_impl_trait_impl, __is_tuple_impl_trait): New.
(_Tuple_impl(const _Head&)): Constrain.
(_Tuple_impl(_UHead&&)): Likewise.
(_Tuple_impl(_Tuple_impl&&)): Suppress conditionally.
(_Tuple_impl(const _Tuple_impl<_Idx, _UHead>&)): Constrain.
(_Tuple_impl(_Tuple_impl<_Idx, _UHead>&&)): Likewise.
(operator=(const tuple&)): Enable conditionally.
(operator=(tuple&&)): Suppress conditionally.
(operator=(const tuple<_UElements...>&)): Constrain.
(operator=(tuple<_UElements...>&&)): Likewise.
(operator=(const tuple&)): Enable conditionally (2-param tuple).
(operator=(tuple&&)): Suppress conditionally (2-param tuple).
(operator=(const tuple<_U1, _U2>&)): Constrain.
(operator=(tuple<_U1, _U2>&&)): Likewise.
(operator=(const pair<_U1, _U2>&)): Likewise.
(operator=(pair<_U1, _U2>&&)): Likewise.
* testsuite/20_util/tuple/element_access/get_neg.cc: Adjust.
* testsuite/20_util/tuple/tuple_traits.cc: New.
From-SVN: r240323
Ville Voutilainen [Wed, 21 Sep 2016 16:48:35 +0000 (19:48 +0300)]
re PR libstdc++/77537 (pair constructors do not properly SFINAE)
PR libstdc++/77537
Implement LWG 2729 for pair.
* include/bits/stl_pair.h (_PCC): New.
(_ConstructiblePair, _ImplicitlyConvertiblePair):
Turn into static member functions of _PCC.
(_MoveConstructiblePair, _ImplicitlyMoveConvertiblePair): Likewise.
(_PCCP): New.
(pair(const _T1&, const _T2&)): Adjust.
(_PCCFP): New.
(pair(const pair<_U1, _U2>&)): Adjust.
(pair(_U1&&, const _T2&)): Likewise.
(pair(const _T1&, _U2&&)): Likewise.
(pair(_U1&&, _U2&&)): Likewise.
(pair(pair<_U1, _U2>&&)): Likewise.
(operator=(const pair&)): Make conditionally deleted.
(operator=(pair&&)): Make conditionally suppressed.
(operator=(const pair<_U1, _U2>&)): Constrain.
(operator=(pair<_U1, _U2>&&): Likewise.
* include/std/type_traits (__nonesuch): New.
* testsuite/20_util/pair/traits.cc: New.
From-SVN: r240322
Martin Sebor [Wed, 21 Sep 2016 16:13:12 +0000 (16:13 +0000)]
PR bootstrap/77676 - powerpc64 and powerpc64le stage2 bootstrap fail
* c.opt (fprintf-return-value): Temporarily initialize to zero
to unblock bootstrap failures.
From-SVN: r240321
Uros Bizjak [Wed, 21 Sep 2016 15:16:41 +0000 (17:16 +0200)]
dump-noaddr.x: Remove debug statements.
* gcc.c-torture/unsorted/dump-noaddr.x: Remove debug statements.
From-SVN: r240318
Jakub Jelinek [Wed, 21 Sep 2016 15:13:46 +0000 (17:13 +0200)]
re PR c++/77651 (c++ -Wno-aligned-new ICEs)
PR c++/77651
c-family/
* c.opt (Waligned-new=): Add RejectNegative.
(faligned-new=): Likewise. Spelling fix - change
aligned_new_threshhold to aligned_new_threshold.
* c-cppbuiltin.c (c_cpp_builtins): Change aligned_new_threshhold
to aligned_new_threshold.
cp/
* init.c (build_new_1): Don't suggest to use -faligned-new if
aligned_new_threshold is non-zero.
(type_has_new_extended_alignment): Change aligned_new_threshhold
to aligned_new_threshold.
* call.c (second_parm_is_size_t, aligned_allocation_fn_p,
aligned_deallocation_fn_p, build_op_delete_call): Likewise.
* decl.c (cxx_init_decl_processing): Likewise.
testsuite/
* g++.dg/cpp1z/aligned-new6.C: New test.
From-SVN: r240317
Jakub Jelinek [Wed, 21 Sep 2016 14:40:30 +0000 (16:40 +0200)]
re PR sanitizer/77567 (ASAN: Bugus error "alloc-dealloc-mismatch (malloc vs operator delete [])" with C++17's over-aligned types)
PR sanitizer/77567
* asan/asan_new_delete.cc: Cherry-pick upstream r282019.
From-SVN: r240316
Matthew Wahab [Wed, 21 Sep 2016 13:28:53 +0000 (13:28 +0000)]
[ARM] FP16 ARM Alternative format variants of AAPCS tests.
testsuite/
2016-09-21 Matthew Wahab <matthew.wahab@arm.com>
* gcc.target/arm/fp16-aapcs-3.c: New.
* gcc.target/arm/fp16-aapcs-4.c: New.
* gcc.target/arm/aapcs/aapcs/vfp22.c: New.
* gcc.target/arm/aapcs/aapcs/vfp23.c: New.
* gcc.target/arm/aapcs/aapcs/vfp24.c: New.
* gcc.target/arm/aapcs/aapcs/vfp25.c: New.
From-SVN: r240314
Bernd Edlinger [Wed, 21 Sep 2016 13:03:59 +0000 (13:03 +0000)]
re PR tree-optimization/77550 (std::deque with -O3 has infinite std::distance)
gcc:
2016-09-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR tree-optimization/77550
* tree-vect-stmts.c (create_array_ref): Change parameters.
(get_group_alias_ptr_type): New function.
(vectorizable_store, vectorizable_load): Use get_group_alias_ptr_type.
testsuite:
2016-09-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR tree-optimization/77550
* g++.dg/pr77550.C: New test.
From-SVN: r240313
Eric Botcazou [Wed, 21 Sep 2016 12:53:20 +0000 (12:53 +0000)]
configure.ac: Do not create links, only substitute the filenames.
* configure.ac: Do not create links, only substitute the filenames.
* configure: Regenerate.
* Makefile.in: Assign the substitution results to variables.
(LIBGCC_LINKS): Define.
(enable-execute-stack.c): New rule.
(unwind.h): Likewise.
(md-unwind-support.h): Likewise.
(sfp-machine.h): Likewise.
(gthr-default.h): Likewise.
Add $(LIBGCC_LINKS) to the prerequisites of all object files and
unwind.h as prerequisite of install-unwind_h-forbuild.
From-SVN: r240312
Marek Polacek [Wed, 21 Sep 2016 11:08:11 +0000 (11:08 +0000)]
gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length): Add falls through comment.
* gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length):
Add falls through comment.
From-SVN: r240311
Richard Biener [Wed, 21 Sep 2016 11:00:02 +0000 (11:00 +0000)]
dwarf2out.c (remove_child_with_prev): Clear child->die_sib.
2016-09-21 Richard Biener <rguenther@suse.de>
* dwarf2out.c (remove_child_with_prev): Clear child->die_sib.
(replace_child): Likewise.
(remove_child_TAG): Adjust.
(move_marked_base_types): Likewise.
(prune_unused_types_prune): Clear die_sib of removed children.
From-SVN: r240310
Janne Blomqvist [Wed, 21 Sep 2016 10:07:06 +0000 (13:07 +0300)]
Use rand_s on MinGW-w64, fix array bound overflow.
2016-09-21 Janne Blomqvist <jb@gcc.gnu.org>
* intrinsics/random.c (getosrandom): Use rand_s() on
MinGW-w64. Fix bounds overflow in fallback code.
From-SVN: r240309
Georg-Johann Lay [Wed, 21 Sep 2016 09:17:32 +0000 (09:17 +0000)]
re PR target/77326 ([avr] Invalid optimization omits comparison)
gcc/
PR target/77326
* config/avr/avr.c (avr_notice_update_cc) [CC_NONE]: If insn
touches some regs mentioned in cc_status, do CC_STATUS_INIT.
gcc/testsuite/
PR target/77326
* gcc.target/avr/torture/pr77326.c: New test.
From-SVN: r240306
Louis Krupp [Wed, 21 Sep 2016 08:30:51 +0000 (08:30 +0000)]
pr68078.f90: Run on x86_64_*_linux* only.
2016-09-21 Louis Krupp <louis.krupp@zoho.com>
* gfortran.dg/pr68078.f90: Run on x86_64_*_linux* only.
From-SVN: r240304
Richard Biener [Wed, 21 Sep 2016 07:38:33 +0000 (07:38 +0000)]
re PR tree-optimization/77648 (Setting conversion to a integer to double to 0 3/4 through a loop)
2016-09-21 Richard Biener <rguenther@suse.de>
PR tree-optimization/77648
* tree-ssa-structalias.c (process_constraint): Handle all DEREF
with complex RHS.
(make_transitive_closure_constraints): Adjust comment.
(make_any_offset_constraints): New function.
(handle_rhs_call): Make sure to first expand a pointer to all
subfields before transitively closing it.
(handle_const_call): Likewise. Properly expand returned
pointers as well.
(handle_pure_call): Likewise.
* gcc.dg/torture/pr77648-1.c: New testcase.
* gcc.dg/torture/pr77648-2.c: Likewise.
From-SVN: r240303
Richard Biener [Wed, 21 Sep 2016 07:37:18 +0000 (07:37 +0000)]
re PR tree-optimization/77621 (Internal compiler error for mtune=atom + msse2)
2016-09-21 Richard Biener <rguenther@suse.de>
Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/77621
* tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Split
group at non-vectorizable stmts.
* gcc.dg/pr77621.c: New testcase.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r240302
Paul Thomas [Wed, 21 Sep 2016 06:57:28 +0000 (06:57 +0000)]
re PR fortran/77657 (link error with implementation of user-defined derived type input/output (UD-DTIO) in child extending abstract parent)
2016-09-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/77657
* interface.c (gfc_find_specific_dtio_proc): Borrow trick from
resolve_typebound_generic_call to find dtio procedures that
over-ride those in the declared type.
2016-09-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/77657
* gfortran.dg/dtio_12.f90: New test.
From-SVN: r240301
Senthil Kumar Selvaraj [Wed, 21 Sep 2016 06:03:32 +0000 (06:03 +0000)]
Make integer size explicit
For the lower vrp bound to be 2/-2, unsigned ints must be 4 bytes wide. This
breaks targets like avr. Explicitly using __UINT32_TYPE__ (behind a typedef)
makes the testcase pass for all targets.
gcc/testsuite/ChangeLog:
2016-09-21 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
* gcc.dg/tree-ssa/pr64130.c: Use __UINT32_TYPE__ instead of int.
From-SVN: r240300
Kugan Vivekanandarajah [Wed, 21 Sep 2016 03:28:24 +0000 (03:28 +0000)]
Incorrect arithmetic optimization involving bitfield arguments
gcc/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
PR tree-optimization/72835
* tree-ssa-reassoc.c (make_new_ssa_for_def): New.
(make_new_ssa_for_all_defs): Likewise.
(zero_one_operation): Replace all SSA_NAMEs defined in the chain.
gcc/testsuite/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
PR tree-optimization/72835
* gcc.dg/tree-ssa/pr72835.c: New test.
From-SVN: r240299
Martin Sebor [Wed, 21 Sep 2016 01:39:27 +0000 (01:39 +0000)]
PR middle-end/49905 - Better sanity checking on sprintf src & dest to
gcc/ChangeLog:
PR middle-end/49905
* Makefile.in (OBJS): Add gimple-ssa-sprintf.o.
* config/linux.h (TARGET_PRINTF_POINTER_FORMAT): Redefine.
* config/linux.c (gnu_libc_printf_pointer_format): New function.
* config/sol2.h (TARGET_PRINTF_POINTER_FORMAT): Same.
* config/sol2.c (solaris_printf_pointer_format): New function.
* doc/invoke.texi (-Wformat-length, -fprintf-return-value): New
options.
* doc/tm.texi.in (TARGET_PRINTF_POINTER_FORMAT): Document.
* doc/tm.texi: Regenerate.
* gimple-fold.h (get_range_strlen): New function.
(get_maxval_strlen): Declare existing function.
* gimple-fold.c (get_range_strlen): Add arguments and compute both
maximum and minimum.
(get_range_strlen): Define overload.
(get_maxval_strlen): Adjust.
* gimple-ssa-sprintf.c: New file and pass.
* passes.def (pass_sprintf_length): Add new pass.
* targhooks.h (default_printf_pointer_format): Declare new function.
(gnu_libc_printf_pointer_format): Same.
(solaris_libc_printf_pointer_format): Same.
* targhooks.c (default_printf_pointer_format): Define new function.
* tree-pass.h (make_pass_sprintf_length): Declare new function.
* print-tree.c: Increase buffer size.
gcc/c-family/ChangeLog:
PR middle-end/49905
* c.opt: Add -Wformat-length and -fprintf-return-value.
gcc/testsuite/ChangeLog:
PR middle-end/49905
* gcc.dg/builtin-stringop-chk-1.c: Adjust.
* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-warn-4.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf.c: New test.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: New test.
From-SVN: r240298
GCC Administrator [Wed, 21 Sep 2016 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r240297
Kugan Vivekanandarajah [Tue, 20 Sep 2016 23:41:01 +0000 (23:41 +0000)]
Use ipa-vrp result in tree-vrp
gcc/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* tree-vrp.c (get_value_range): Teach PARM_DECL to use ipa-vrp
results.
gcc/testsuite/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* gcc.dg/guality/pr54519-1.c: Add -fno-ipa-vrp. Else constant
arguments/compare will be optimized away.
* gcc.dg/torture/ftrapv-1.c: Likewise.
From-SVN: r240293
Kugan Vivekanandarajah [Tue, 20 Sep 2016 23:29:05 +0000 (23:29 +0000)]
Add IPA VRP
gcc/lto/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* lto-partition.c: Include tree-vrp.h.
* lto.c: Likewise.
gcc/testsuite/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* g++.dg/ipa/pure-const-3.C: Add -fno-ipa-vrp. Else constant arguments
will be optimized away.
* gcc.dg/ipa/vrp1.c: New test.
* gcc.dg/ipa/vrp2.c: New test.
* gcc.dg/ipa/vrp3.c: New test.
gcc/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* common.opt: New option -fipa-vrp.
* ipa-cp.c (ipa_get_vr_lat): New.
(ipcp_vr_lattice::print): Likewise.
(print_all_lattices): Call ipcp_vr_lattice::print.
(ipcp_vr_lattice::meet_with): New.
(ipcp_vr_lattice::meet_with_1): Likewise.
(ipcp_vr_lattice::top_p): Likewise.
(ipcp_vr_lattice::bottom_p): Likewsie.
(ipcp_vr_lattice::set_to_bottom): Likewise.
(set_all_contains_variable): Call VR set_to_bottom.
(initialize_node_lattices): Init VR lattices.
(propagate_vr_accross_jump_function): New.
(propagate_constants_accross_call): Call
propagate_vr_accross_jump_function.
(ipcp_store_vr_results): New.
(ipcp_driver): Handle VR.
* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Handle VR.
(ipa_set_jf_unknown): Likewise.
(ipa_compute_jump_functions_for_edge): Likewise.
(ipa_node_params_t::duplicate): Likewise.
(ipa_write_jump_function): Likewise.
(ipa_read_jump_function): Likewise.
(write_ipcp_transformation_info): Likewise.
(read_ipcp_transformation_info): Likewise.
(ipcp_update_vr): New.
(ipcp_transform_function): Handle VR.
* ipa-prop.h (struct ipa_vr): New.
* cgraph.c: Include tree-vrp.h.
* cgraphunit.c: Likewise.
* ipa-utils.c: Likewise.
* ipa.c: Likewise.
From-SVN: r240292
Kugan Vivekanandarajah [Tue, 20 Sep 2016 23:23:55 +0000 (23:23 +0000)]
Add Early VRP
gcc/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* doc/invoke.texi: Document -fdump-tree-evrp.
* passes.def: Define new pass_early_vrp.
* timevar.def: Define new TV_TREE_EARLY_VRP.
* tree-pass.h (make_pass_early_vrp): New.
* tree-ssa-propagate.c: Make replace_uses_in non static.
* tree-ssa-propagate.h: Export replace_uses_in.
* tree-vrp.c (extract_range_for_var_from_comparison_expr): New.
(extract_range_from_assert): Factor out
extract_range_for_var_from_comparison_expr.
(vrp_initialize_lattice): New.
(vrp_initialize): Factor out vrp_initialize_lattice.
(vrp_valueize): Fix it to reject complex value ranges.
(vrp_free_lattice): New.
(evrp_dom_walker::before_dom_children): Likewise.
(evrp_dom_walker::after_dom_children): Likewise.
(evrp_dom_walker::push_value_range): Likewise.
(evrp_dom_walker::pop_value_range): Likewise.
(execute_early_vrp): Likewise.
(execute_vrp): Call vrp_initialize_lattice and
vrp_free_lattice.
(make_pass_early_vrp): New.
gcc/testsuite/ChangeLog:
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* g++.dg/tree-ssa/pr31146-2.C: Run with -fno-tree-evrp as evrp also
does the same transformation.
* g++.dg/warn/pr33738.C: XFAIL as optimization now happens in ccp.
* gcc.dg/tree-ssa/evrp1.c: New test.
* gcc.dg/tree-ssa/evrp2.c: New test.
* gcc.dg/tree-ssa/evrp3.c: New test.
* gcc.dg/tree-ssa/pr20657.c: Check for the pattern in evrp dump.
* gcc.dg/tree-ssa/pr22117.c: Likewise.
* gcc.dg/tree-ssa/pr61839_2.c: Likewise.
* gcc.dg/tree-ssa/pr64130.c: Likewise.
* gcc.dg/tree-ssa/pr37508.c: Change the pattern to be checked as
foling now happens early.
* gcc.dg/tree-ssa/vrp04.c: Likewise.
* gcc.dg/tree-ssa/vrp06.c: Likewise.
* gcc.dg/tree-ssa/vrp16.c: Likewise.
* gcc.dg/tree-ssa/vrp25.c: Likewise.
* gcc.dg/tree-ssa/vrp67.c: Likewise.
From-SVN: r240291
Christophe Lyon [Tue, 20 Sep 2016 20:15:30 +0000 (20:15 +0000)]
Report DejaGnu ERROR messages in dg-extract-results.
2016-09-20 Christophe Lyon <christophe.lyon@linaro.org>
* dg-extract-results.py: Report DejaGnu error in the final
summary.
* dg-extract-results.sh: Likewise.
From-SVN: r240289
Christophe Lyon [Tue, 20 Sep 2016 20:14:14 +0000 (20:14 +0000)]
Report DejaGnu ERROR messages in compare_tests
2016-09-20 Christophe Lyon <christophe.lyon@linaro.org>
* compare_tests: Take ERROR messages into account when
comparing.
From-SVN: r240288
Marek Polacek [Tue, 20 Sep 2016 18:41:14 +0000 (18:41 +0000)]
trans-intrinsic.c (conv_expr_ref_to_caf_ref): Adjust fall through comment.
* trans-intrinsic.c (conv_expr_ref_to_caf_ref): Adjust fall through
comment.
From-SVN: r240286
Ian Lance Taylor [Tue, 20 Sep 2016 18:26:55 +0000 (18:26 +0000)]
syscall: build export_unix_test.go on solaris
Patch from Rainer Orth.
Reviewed-on: https://go-review.googlesource.com/29436
From-SVN: r240285
Uros Bizjak [Tue, 20 Sep 2016 18:00:46 +0000 (20:00 +0200)]
i386.md (mult->ashift peephole2s): Use pow2p_hwi instead of exact_log2.
* config/i386/i386.md (mult->ashift peephole2s): Use pow2p_hwi
instead of exact_log2.
From-SVN: r240281
Ian Lance Taylor [Tue, 20 Sep 2016 17:52:23 +0000 (17:52 +0000)]
re PR go/77625 (go/gofrontend/ast-dump.cc:169:42: error: ‘new’ of type ‘std::ofstr eam {aka std::basic_ofstream<char>}’ with extended alignment 16)
PR go/77625
compiler: allocate std::ofstream as a local variable
GCC PR 77625 points out a warning about new std::ofstream. I don't know
how that is supposed to work, but in this case the std::ofstream may as
well be a local variable anyhow.
Reviewed-on: https://go-review.googlesource.com/29435
From-SVN: r240279
Uros Bizjak [Tue, 20 Sep 2016 17:36:03 +0000 (19:36 +0200)]
re PR tree-optimization/77621 (Internal compiler error for mtune=atom + msse2)
PR target/77621
* config/i386/i386.c (ix86_preferred_simd_mode) <case DFmode>:
Don't return word_mode for !TARGET_VECTORIZE_DOUBLE.
(ix86_add_stmt_cost): Penalize DFmode vector operations
for !TARGET_VECTORIZE_DOUBLE.
testsuite/ChangeLog:
PR target/77621
* gcc.target/i386/pr77621.c: New test.
* gcc.target/i386/vect-double-2.c: Update scan-tree-dump-times
pattern, loop should vectorize with -mtune=atom.
From-SVN: r240277
Ian Lance Taylor [Tue, 20 Sep 2016 16:48:19 +0000 (16:48 +0000)]
re PR go/77642 (GO Bootstrap fail starting with r239872 splitstack signature does not match)
PR go/77642
runtime: pass correct type to __splitstack_find
The code was passing uintptr* to a function that expected size_t*.
Based on patch by Andreas Krebbel.
Fixes GCC PR 77642.
Reviewed-on: https://go-review.googlesource.com/29433
From-SVN: r240275
Gerald Pfeifer [Tue, 20 Sep 2016 16:42:14 +0000 (16:42 +0000)]
invoke.texi (Warning Options): Simplify language.
* doc/invoke.texi (Warning Options): Simplify language.
(Optimize Options): Complete sentence.
From-SVN: r240274
David Edelsohn [Tue, 20 Sep 2016 16:37:08 +0000 (16:37 +0000)]
* dbxout.c (xcoff_debug_hooks): Add filename parameter to early_finish hook.
From-SVN: r240273
Michael Meissner [Tue, 20 Sep 2016 16:22:24 +0000 (16:22 +0000)]
rs6000.c (rs6000_expand_vector_init): For V4SF inits on power8 and above, use the VMRGEW instruction instead of a permute.
2016-09-20 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (rs6000_expand_vector_init): For V4SF
inits on power8 and above, use the VMRGEW instruction instead of a
permute.
* config/rs6000/altivec.md (UNSPEC_VMRGEW_DIRECT): New unspec.
(p8_vmrgew_v4sf_direct): New VMRGEW insn for V4SF floating
initialization.
From-SVN: r240272
Tamar Christina [Tue, 20 Sep 2016 15:53:00 +0000 (15:53 +0000)]
[PATCH] [AArch64] Add missing attributes to arm_neon.h
Committed on behalf of Tamar Christina <tamar.christina@arm.com>
gcc/
* config/aarch64/arm_neon.h
(vst2_s64, vst2_u64, vst2_f64, vst2_s8): Add missing attributes.
(vst3_s64, vst3_u64, vst3_f64, vst3_s8): Likewise.
(vst4_s64, vst4_u64, vst4_f64, vst4_s8): Likewise.
From-SVN: r240271
Bernd Edlinger [Tue, 20 Sep 2016 15:28:02 +0000 (15:28 +0000)]
vax.h (ELIMINABLE_REGS): Define.
2016-09-20 Bernd Edlinger <bernd.edlinger@hotmail.de>
* config/var/vax.h (ELIMINABLE_REGS): Define.
(INITIAL_ELIMINATION_OFFSET): Define.
From-SVN: r240269
Maxim Ostapenko [Tue, 20 Sep 2016 15:19:14 +0000 (15:19 +0000)]
re PR testsuite/63299 (ASan reported alloc-dealloc-mismatch in g++.old-deja/g++.jason/init3.C)
PR testsuite/63299
* g++.old-deja/g++.jason/init3.C (My_string::~My_string): Use delete[]
instead of delete.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r240268
Jakub Jelinek [Tue, 20 Sep 2016 15:18:31 +0000 (17:18 +0200)]
re PR c++/77626 (ICE with -Wall on x86_64-linux-gnu (internal compiler error: Segmentation fault, byte_from_pos, cxx_fold_indirect_ref))
PR c++/77626
* constexpr.c (cxx_fold_indirect_ref): Don't call byte_position on
FIELD_DECLs with error_mark_node type. Remove useless break; after
return.
* g++.dg/other/pr77626.C: New test.
From-SVN: r240267
Jakub Jelinek [Tue, 20 Sep 2016 15:17:41 +0000 (17:17 +0200)]
re PR c++/77638 (ICE on x86_64-linux-gnu (internal compiler error: tree check: expected tree that contains ‘decl common’ structure, have ‘error_mark’ in cp_parser_template_declaration_after_parameters, at cp/parser.c:25722))
PR c++/77638
* parser.c (cp_parser_template_declaration_after_parameter): For 2
argument operator"" template set ok to false for
parm == error_mark_node.
* g++.dg/cpp0x/udlit-tmpl-arg-neg2.C: New test.
From-SVN: r240266
Jakub Jelinek [Tue, 20 Sep 2016 15:16:55 +0000 (17:16 +0200)]
re PR c++/77637 (ICE on x86_64-linux-gnu (Segmentation fault, tree_check, cp_parser_std_attribute_list...))
PR c++/77637
* parser.c (cp_parser_std_attribute_list): Reject ... without
preceding attribute.
* g++.dg/cpp0x/gen-attrs-62.C: New test.
From-SVN: r240265
Ville Voutilainen [Tue, 20 Sep 2016 15:15:36 +0000 (18:15 +0300)]
re PR libstdc++/77619 (uninitialized_meow_construct and friends not exception safe)
PR libstdc++/77619
* include/bits/stl_construct.h: (_Construct_novalue): New.
(_Destroy_n_aux, _Destroy_n): New.
* include/bits/stl_uninitialized.h: (type_traits):
New include in C++11 mode.
(__uninitialized_default_novalue_1): New.
(__uninitialized_default_novalue_n_1): Likewise.
(__uninitialized_default_novalue): Likewise.
(__uninitialized_default_novalue_n): Likewise.
(__uninitialized_copy_n_pair): Likewise.
(uninitialized_default_construct):
Use __uninitialized_default_novalue.
(uninitialized_default_construct_n):
Use __uninitialized_default_novalue_n.
(uninitialized_value_construct): Use __uninitialized_default.
(uninitialized_value_construct_n): Use __uninitialized_default_n.
(uninitialized_move): Use uninitialized_copy.
(uninitialized_move_n): Use __uninitialized_copy_n_pair.
(destroy_at): Use _Destroy.
(destroy): Likewise.
(destroy_n): Likewise.
* testsuite/20_util/specialized_algorithms/
memory_management_tools/1.cc: Add tests for exceptions,
add tests for trivial cases for construct and move.
From-SVN: r240264
Jakub Jelinek [Tue, 20 Sep 2016 13:48:40 +0000 (15:48 +0200)]
re PR middle-end/77624 (ICE on x86_64-linux-gnu (internal compiler error: in fold_builtin_atomic_always_lock_free, at builtins.c:5583))
PR middle-end/77624
* builtins.c (fold_builtin_atomic_always_lock_free): Only look through
cast to void * if the cast is from some other pointer type.
* c-c++-common/pr77624-1.c: New test.
* c-c++-common/pr77624-2.c: New test.
From-SVN: r240263
Andre Vehreschild [Tue, 20 Sep 2016 12:39:31 +0000 (14:39 +0200)]
coarray_allocate_7.f08: Using + instead of fixed number of digits expected.
2016-09-20 Andre Vehreschild <vehre@gcc.gnu.org>
* gfortran.dg/coarray_allocate_7.f08: Using + instead of fixed number
of digits expected.
From-SVN: r240262
Richard Biener [Tue, 20 Sep 2016 12:20:37 +0000 (12:20 +0000)]
re PR tree-optimization/77646 (GCC Segfault with -O3)
2016-09-20 Richard Biener <rguenther@suse.de>
PR tree-optimization/77646
* tree-ssa-sccvn.c (visit_reference_op_call): Always value-number
a VDEF.
* gcc.dg/torture/pr77646.c: New testcase.
From-SVN: r240261
Jonathan Wakely [Tue, 20 Sep 2016 09:57:02 +0000 (10:57 +0100)]
Replace casts with floordiv operator in Python xmethods
* python/libstdcxx/v6/xmethods.py (DequeWorkerBase.__init__)
(DequeWorkerBase.index, VectorWorkerBase.get): Use // for division.
From-SVN: r240258
Tamar Christina [Tue, 20 Sep 2016 09:06:13 +0000 (09:06 +0000)]
[GCC][PATCH] Add __artificial__ attribute to Aarch64 NEON intrinsics
Committed on behalf of Tamar Christina <tamar.christina@arm.com>.
gcc/
* config/aarch64/arm_neon.h: Add gnu_inline and artificial
attributes to all inlined functions and make them extern.
From-SVN: r240256
Richard Biener [Tue, 20 Sep 2016 07:37:53 +0000 (07:37 +0000)]
debug.h (gcc_debug_hooks): Add filename parameter to early_finish hook.
2016-09-20 Richard Biener <rguenther@suse.de>
* debug.h (gcc_debug_hooks): Add filename parameter to early_finish
hook.
* debug.c (do_nothing_debug_hooks): Adjust.
* dbxout.c (dbx_debug_hooks): Likewise.
* sdbout.c (sdb_debug_hooks): Likewise.
* dwarf2out.c (dwarf2_lineno_debug_hooks): Likewise.
(dwarf2out_finish): Move producer, filename and
path annotation ...
(dwarf2out_early_finish): ... here. Remove in_lto_p special-casing.
* cgraphunit.c (symbol_table::finalize_compilation_unit): Adjust.
lto/
* lto.c (lto_main): Call early_finish with "<artificial>" as
filename.
From-SVN: r240255
GCC Administrator [Tue, 20 Sep 2016 00:16:21 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r240254
Bernd Edlinger [Mon, 19 Sep 2016 22:10:11 +0000 (22:10 +0000)]
re PR c++/77434 (warn about suspicious precedence of ternary operator (?:))
gcc:
2016-09-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR c++/77434
* doc/invoke.texi: Document -Wint-in-bool-context.
c-family:
2016-09-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR c++/77434
* c.opt (Wcond-in-bool-context): New warning.
* c-common.c (c_common_truthvalue_conversion): Warn on integer
constants in boolean context.
cp:
2016-09-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR c++/77434
* cvt.c (cp_convert_and_check): Suppress Wint-in-bool-context here.
testsuite:
2016-09-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR c++/77434
* c-c++-common/Wint-in-bool-context.c: New test.
From-SVN: r240251
Bernd Edlinger [Mon, 19 Sep 2016 21:57:46 +0000 (21:57 +0000)]
re PR other/77421 (Bugs found in GCC with the help of PVS-Studio)
2016-09-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR middle-end/77421
* dwarf2out.c (output_loc_operands): Fix an assertion.
From-SVN: r240250
Joseph Myers [Mon, 19 Sep 2016 21:53:30 +0000 (22:53 +0100)]
Define TS 18661-1 CR_DECIMAL_DIG in <float.h>.
TS 18661-1 defines a macro CR_DECIMAL_DIG in <float.h>, for the number
of decimal digits for which conversions between decimal character
strings and (IEEE) binary formats, in both directions, are correctly
rounded. This patch implements support for this macro in GCC's
<float.h>.
The definition __UINTMAX_MAX__ is the right one for GCC's conversions
of floating constants, since I made those use MPFR to make them
correctly rounding. The macro also covers standard library functions
such as strtod and printf. The definition is also correct for current
glibc. If any targets' libcs support correct rounding in a way that
conforms to TS 18661-1 with a smaller value of CR_DECIMAL_DIG, making
<float.h> reflect that could not be done in isolation without changes
to the interpretation of floating constants as well, since a smaller
CR_DECIMAL_DIG requires double rounding of floating constants (first
to CR_DECIMAL_DIG decimal digits, then to the desired binary format).
Boostrapped with no regressions on x86_64-pc-linux-gnu.
gcc:
* ginclude/float.h [__STDC_WANT_IEC_60559_BFP_EXT__]
(CR_DECIMAL_DIG): New macro.
gcc/testsuite:
* gcc.dg/cr-decimal-dig-1.c: New test.
From-SVN: r240249
Joseph Myers [Mon, 19 Sep 2016 21:51:56 +0000 (22:51 +0100)]
Make max_align_t respect _Float128.
The _FloatN, _FloatNx, _DecimalN and _DecimalNx types are specified in
such a way that they are basic types, meaning that max_align_t must be
at least as aligned as those types.
On 32-bit x86, max_align_t is currently 8-byte aligned, but
_Decimal128 and _Float128 are 16-byte aligned, so the alignment of
max_align_t needs to increase to meet the standard requirements for
these types.
This patch implements such an increase. Because max_align_t needs to
be usable for C++ as well as for C, <stddef.h> can't actually refer to
_Float128, but needs to use __float128 (or some other notation for the
type) instead. And since __float128 is architecture-specific, there
isn't a preprocessor conditional that means "__float128 is available"
(whereas one could test __FLT128_MANT_DIG__ to see if _Float128 is
available; __SIZEOF_FLOAT128__ is available on x86 only). But I
believe the only case that actually has an alignment problem here is
32-bit x86, and <stddef.h> already has lots of conditional specific to
particular architectures or OSes, so this patch uses a conditional on
__i386__; that also is the minimal change that ensures neither size
nor alignment of max_align_t is changed in any case other than where
it is necessary. If any other architectures turn out to have such an
issue, it will show up as failures of one of the testcases added by
this patch.
Such an increase is of course an ABI change, but a reasonably safe
one, in that max_align_t doesn't tend to appear in library interfaces
(rather, it's something to use when writing allocators and similar
code; most matches found on codesearch.debian.net look like copies of
the gnulib stddef.h module rather than anything actually using
max_align_t at all).
max_align_t_align has a corresponding change (adding _Float128 to the
types considered).
(I think glibc malloc alignment should also increase to 16-byte on
32-bit x86 so it works for allocating objects of these types, which is
now straightforward given the fix made for 32-bit powerpc.)
Bootstrapped with no regressions on x86_64-pc-linux-gnu, and
spot-tested with -m32 that the new float128-align.c test now compiles
where previously it didn't.
gcc:
* ginclude/stddef.h (max_align_t) [__i386__]: Add __float128
element.
gcc/c-family:
* c-common.c (max_align_t_align): Also consider alignment of
float128_type_node.
gcc/testsuite:
* gcc.dg/float128-align.c, gcc.dg/float128x-align.c,
gcc.dg/float16-align.c, gcc.dg/float32-align.c,
gcc.dg/float32x-align.c, gcc.dg/float64-align.c,
gcc.dg/float64x-align.c, gcc.dg/floatn-align.h: New tests.
From-SVN: r240248
Vladimir Makarov [Mon, 19 Sep 2016 21:38:27 +0000 (21:38 +0000)]
re PR rtl-optimization/77416 (LRA rematerializing use of CA reg across function call)
2016-09-19 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/77416
* lra-remat.c (operand_to_remat): Process hard coded insn
registers.
2016-09-19 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/77416
* gcc.target/powerpc/pr77416.c: New.
From-SVN: r240247
Patrick Palka [Mon, 19 Sep 2016 18:12:36 +0000 (18:12 +0000)]
Fix PR c++/77639 (ICE during error recovery)
gcc/cp/ChangeLog:
PR c++/77639
* parser.c (cp_parser_class_head): When
processing_template_parmlist, don't assume that the
class-head may start an explicit specialization.
gcc/testsuite/ChangeLog:
PR c++/77639
* g++.dg/template/error-recovery4.C: New test.
From-SVN: r240245
Jonathan Wakely [Mon, 19 Sep 2016 17:09:04 +0000 (18:09 +0100)]
libstdc++/77645 fix deque and vector xmethods for Python 3
PR libstdc++/77645
* python/libstdcxx/v6/xmethods.py (DequeWorkerBase.__init__)
(DequeWorkerBase.index, VectorWorkerBase.get): Cast results of
division to int to work with Python 3.
From-SVN: r240241
Bin Cheng [Mon, 19 Sep 2016 16:35:32 +0000 (16:35 +0000)]
pr57558-1.c: Use unsigned int instead of unsigned long.
gcc/testsuite
* gcc.dg/vect/pr57558-1.c: Use unsigned int instead of unsigned long.
From-SVN: r240239
Kyrylo Tkachov [Mon, 19 Sep 2016 16:15:57 +0000 (16:15 +0000)]
[simplify-rtx] (GTU (PLUS a C) (C - 1)) --> (LTU a -C)
* simplify-rtx.c (simplify_relational_operation_1): Add transformation
(GTU (PLUS a C) (C - 1)) --> (LTU a -C).
* gcc.target/aarch64/gtu_to_ltu_cmp_1.c: New test.
* gcc.target/aarch64/gtu_to_ltu_cmp_2.c: New test.
From-SVN: r240238
Jonathan Wakely [Mon, 19 Sep 2016 15:59:04 +0000 (16:59 +0100)]
Make libstdc++ tests FAIL on Python errors
* testsuite/lib/gdb-test.exp (gdb-test): Fail if Python error occurs.
From-SVN: r240237
Segher Boessenkool [Mon, 19 Sep 2016 15:54:12 +0000 (17:54 +0200)]
Fix lra_p text
* target.def (lra_p): Wordsmithing.
* doc/tm.texi: Regenerate.
From-SVN: r240236
Jonathan Wakely [Mon, 19 Sep 2016 15:49:27 +0000 (16:49 +0100)]
Improve pretty printer for std::variant
* python/libstdcxx/v6/printers.py (SingleObjContainerPrinter): Allow
display_hint to be set by subclasses.
(StdVariantPrinter): Use array for display_hint. Adjust output to be
more similar to std::any and std::optional output.
(register_type_printers): Add type printers for basic_string_view
typedefs and experimental::any. Adjust type printers for
fundamentals_v1 templates to match fundamentals_v2 and later.
* testsuite/libstdc++-prettyprinters/cxx17.cc: New.
From-SVN: r240234
Jonathan Wakely [Mon, 19 Sep 2016 15:49:19 +0000 (16:49 +0100)]
libstdc++/77645 Fix xmethods for std::list
PR libstdc++/77645
* python/libstdcxx/v6/xmethods.py (DequeWorkerBase.index): Rename
argument.
(ListWorkerBase.get_value_from_node): Define new method.
(ListFrontWorker.__call__, ListBackWorker.__call__): Use it.
From-SVN: r240233
Jakub Jelinek [Mon, 19 Sep 2016 14:36:38 +0000 (16:36 +0200)]
re PR ipa/77587 (C compiler produces incorrect stack alignment with __attribute__((weak)))
PR target/77587
* cgraph.c (cgraph_node::rtl_info): Pass &avail to
ultimate_alias_target call, return NULL if avail < AVAIL_AVAILABLE.
Call ultimate_alias_target just once, not up to 4 times.
* gcc.dg/pr77587.c: New test.
* gcc.dg/pr77587a.c: New file.
Co-Authored-By: Jan Hubicka <jh@suse.cz>
From-SVN: r240232
Andre Vehreschild [Mon, 19 Sep 2016 13:45:40 +0000 (15:45 +0200)]
libcaf.h: Add caf_reference_type.
libgfortran/ChangeLog:
2016-09-19 Andre Vehreschild <vehre@gcc.gnu.org>
* caf/libcaf.h: Add caf_reference_type.
* caf/mpi.c: Adapted signature of caf_register().
* caf/single.c (struct caf_single_token): Added to keep the pointer
to the memory registered and array descriptor.
(caf_internal_error): Added convenience interface.
(_gfortran_caf_register): Adapted to work with caf_single_token and
return memory in the array descriptor.
(_gfortran_caf_deregister): Same.
(assign_char1_from_char4): Fixed style.
(convert_type): Fixed incorrect conversion.
(_gfortran_caf_get): Adapted to work with caf_single_token.
(_gfortran_caf_send): Same.
(_gfortran_caf_sendget): Same.
(copy_data): Added to stop repeating it in all _by_ref functions.
(get_for_ref): Recursive getting of coarray data using a chain of
references.
(_gfortran_caf_get_by_ref): Driver for computing the memory needed for
the get and checking properties of the operation.
(send_by_ref): Same as get_for_ref but for sending data.
(_gfortran_caf_send_by_ref): Same like caf_get_by_ref but for sending.
(_gfortran_caf_sendget_by_ref): Uses get_by_ref and send_by_ref to
implement sendget for reference chains.
(_gfortran_caf_atomic_define): Adapted to work with caf_single_token.
(_gfortran_caf_atomic_ref): Likewise.
(_gfortran_caf_atomic_cas): Likewise.
(_gfortran_caf_atomic_op): Likewise.
(_gfortran_caf_event_post): Likewise.
(_gfortran_caf_event_wait): Likewise.
(_gfortran_caf_event_query): Likewise.
(_gfortran_caf_lock): Likewise.
(_gfortran_caf_unlock): Likewise.
gcc/testsuite/ChangeLog:
2016-09-19 Andre Vehreschild <vehre@gcc.gnu.org>
* gfortran.dg/coarray/alloc_comp_4.f90: New test.
* gfortran.dg/coarray_38.f90:
* gfortran.dg/coarray_alloc_comp_1.f08: New test.
* gfortran.dg/coarray_alloc_comp_2.f08: New test.
* gfortran.dg/coarray_allocate_7.f08: New test.
* gfortran.dg/coarray_allocate_8.f08: New test.
* gfortran.dg/coarray_allocate_9.f08: New test.
* gfortran.dg/coarray_lib_alloc_1.f90: Adapted scan-tree-dumps to expect
new caf_register.
* gfortran.dg/coarray_lib_alloc_2.f90: Same.
* gfortran.dg/coarray_lib_alloc_3.f90: Same.
* gfortran.dg/coarray_lib_comm_1.f90: Adapted scan-tree-dumps to expect
get_by_refs.
* gfortran.dg/coarray_lib_token_3.f90: Same as for coarray_lib_alloc2.
* gfortran.dg/coarray_lock_7.f90: Same.
* gfortran.dg/coarray_poly_5.f90: Same.
* gfortran.dg/coarray_poly_6.f90: Same.
* gfortran.dg/coarray_poly_7.f90: Same.
* gfortran.dg/coarray_poly_8.f90: Same.
* gfortran.dg/coindexed_1.f90: Changed errors expected.
gcc/fortran/ChangeLog:
2016-09-19 Andre Vehreschild <vehre@gcc.gnu.org>
* expr.c (gfc_check_assign): Added flag to control whether datatype
conversion is allowed.
* gfortran.h: Added caf-token-tree to gfc_component. Changed
prototypes mostly to add whether datatype conversion is allowed.
* gfortran.texi: Added documentation for the caf_reference_t and the
caf_*_by_ref function.
* primary.c (caf_variable_attr): Similar to gfc_variable_attr but
focused on the needs of coarrays.
(gfc_caf_attr): Same.
* resolve.c (resolve_ordinary_assign): Set the conversion allowed
flag when not in a coarray.
* trans-array.c (gfc_array_init_size): Moved setting of array
descriptor's datatype before the alloc, because caf_register needs it.
(gfc_array_allocate): Changed notion of whether an array is a coarray.
(gfc_array_deallocate): Same.
(gfc_alloc_allocatable_for_assignment): Added setting of coarray's
array descriptor datatype before the register. And using deregister/
register to mimmick a realloc for coarrays.
* trans-decl.c (gfc_build_builtin_function_decls): Corrected signatures
of old caf-functions and added signature definitions of the _by_ref
ones.
(generate_coarray_sym_init): Adapted to new caf_register signature.
* trans-expr.c (gfc_conv_scalar_to_descriptor): Make sure a constant
is translated to an lvalue expression before use in an array
descriptor.
(gfc_get_ultimate_alloc_ptr_comps_caf_token): New function. Get the
last allocatable component's coarray token.
(gfc_get_tree_for_caf_expr): For top-level object get the coarray
token and check for unsupported features.
(gfc_get_caf_token_offset): Getting the offset might procude new
statements, which now are stored in the pre and post of the current se.
(gfc_caf_get_image_index): For this image return a call to
caf_this_image.
(expr_may_alias_variables): Check that the result is set for testing
its properties.
(alloc_scalar_allocatable_for_assignment): Added auto allocation of
coarray components.
(gfc_trans_assignment_1): Rewrite an assign to a coarray object to
be a sendget.
* trans-intrinsic.c (conv_caf_vector_subscript_elem): Corrected
wrong comment.
(compute_component_offset): Compute the correct offset a structure
member.
(conv_expr_ref_to_caf_ref): Convert to a chain of refs into
caf_references.
(gfc_conv_intrinsic_caf_get): Call caf_get_by_ref instead of caf_get.
(conv_caf_send): Call caf_*_by_ref for coarrays that need
reallocation.
(gfc_conv_intrinsic_function): Adapted to new signuature of the caf
drivers.
(conv_intrinsic_atomic_op): Add pre and post statements correctly.
(conv_intrinsic_atomic_ref): Same.
(conv_intrinsic_atomic_cas): Same.
(conv_intrinsic_event_query): Same.
* trans-stmt.c (gfc_trans_lock_unlock): Same.
(gfc_trans_event_post_wait): Same.
(gfc_trans_allocate): Support allocation of allocatable coarrays.
(gfc_trans_deallocate): And there deallocation.
* trans-types.c (gfc_typenode_for_spec): Added flag to control whether
a component is part of coarray. When so, then add space to store a
coarray token.
(gfc_build_array_type): Same.
(gfc_get_array_descriptor_base): Same.
(gfc_get_array_type_bounds): Same.
(gfc_sym_type): Same.
(gfc_get_derived_type): Same.
(gfc_get_caf_reference_type): Declare the caf_reference_type.
* trans-types.h: Prototype changes only.
* trans.c (gfc_allocate_using_lib): Use the updated caf_register
signature.
(gfc_allocate_allocatable): Same.
(gfc_deallocate_with_status): Same.
* trans.h: Defined the runtime types for caf_reference_t and the enums.
From-SVN: r240231
Fritz Reese [Mon, 19 Sep 2016 11:32:09 +0000 (11:32 +0000)]
re PR fortran/77584 (Unclassifiable statement error with procedure pointer using template named "structure_")
2016-09-19 Fritz Reese <fritzoreese@gmail.com>
PR fortran/77584
* gcc/fortran/decl.c (match_record_decl, gfc_match_decl_type_spec):
Fixes to handling of structure/record from declaration-type-spec.
* gcc/testsuite/gfortran.dg/dec_structure_15.f90: New testcase.
From-SVN: r240230
Andrew Stubbs [Mon, 19 Sep 2016 10:02:56 +0000 (10:02 +0000)]
Fix zero-length parameter bug in pex_run.
2016-09-19 Andrew Stubbs <ams@codesourcery.com>
libiberty/
* pex-win32.c (argv_to_cmdline): Quote zero-length parameters.
libiberty/testsuite/
* test-pexecute.c (main): Insert check for zero-length parameters.
From-SVN: r240229
Richard Biener [Mon, 19 Sep 2016 07:20:16 +0000 (07:20 +0000)]
dwarf2out.c (early_dwarf_finished): New global.
2016-09-16 Richard Biener <rguenther@suse.de>
* dwarf2out.c (early_dwarf_finished): New global.
(set_early_dwarf::set_early_dwarf): Assert early_dwarf_finished
is false.
(dwarf2out_early_finish): Set early_dwarf_finished at the end,
if called from LTO exit early.
(dwarf2out_late_global_decl): When being during the early
debug phase do not add locations but only const value attributes.
Adjust the way we generate early DIEs for LTO.
lto/
* lto.c (lto_main): Invoke early_finish debug hook.
From-SVN: r240228
Richard Biener [Mon, 19 Sep 2016 06:55:17 +0000 (06:55 +0000)]
re PR tree-optimization/77605 (wrong code at -O3 on x86_64-linux-gnu)
2016-09-19 Richard Biener <rguenther@suse.de>
PR middle-end/77605
* tree-data-ref.c (analyze_subscript_affine_affine): Use the
proper niter to bound the loops.
* gcc.dg/torture/pr77605.c: New testcase.
From-SVN: r240227
Richard Biener [Mon, 19 Sep 2016 06:54:10 +0000 (06:54 +0000)]
re PR tree-optimization/77514 (ICE in VN_INFO_GET, at tree-ssa-sccvn.c:406 w/ -O2 (and above))
2016-09-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/77514
* tree-ssa-pre.c (create_expression_by_pieces): Optimize
search for folded stmt.
From-SVN: r240226
Louis Krupp [Mon, 19 Sep 2016 06:25:25 +0000 (06:25 +0000)]
pr68078.f90: XFAIL run on Darwin
2016-09-18 Louis Krupp <louis.krupp@zoho.com>
* gfortran.dg/pr68078.f90: XFAIL run on Darwin
From-SVN: r240225
GCC Administrator [Mon, 19 Sep 2016 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r240224
Jan Hubicka [Sun, 18 Sep 2016 18:44:53 +0000 (20:44 +0200)]
passes.def (pass_early_thread_jumps): Schedule after forwprop.
* passes.def (pass_early_thread_jumps): Schedule after forwprop.
* tree-pass.h (make_pass_early_thread_jumps): Declare.
* tree-ssa-threadbackward.c (fsm_find_thread_path,
fsm_find_thread_path, profitable_jump_thread_path,
fsm_find_control_statement_thread_paths,
find_jump_threads_backwards): Add speed_p parameter.
(pass_data_early_thread_jumps): New pass.
(make_pass_early_thread_jumps): New function.
* g++.dg/predict-loop-exit-1.C: Disable early jump threading.
* g++.dg/predict-loop-exit-2.C: Disable early jump threading.
* g++.dg/predict-loop-exit-3.C: Disable early jump threading.
* gcc.dg/tree-ssa/pr69196-1.c: Disable early jump threading.
* gcc.dg/tree-ssa/vrp01.c: Disable early jump threading.
* gcc.dg/tree-ssa/ssa-dom-thread-2b.c: Disable early jump threading.
* gcc.dg/tree-ssa/pr68198.c: Scan ethread dump.
* gcc.dg/tree-ssa/ssa-thread-13.c: Scan ethread dump.
* gcc.dg/tree-ssa/vrp56.c: Scan ethread dump.
* gcc.dg/tree-ssa/vrp92.c: Scan ethread dump.
* gcc.dg/uninit-15.c: Swap xfailed and non-xfailed alternative.
From-SVN: r240221
Kirill Yukhin [Sun, 18 Sep 2016 12:56:19 +0000 (12:56 +0000)]
pr68633.c: Fix expected result.
gcc/testsuite/
* gcc.target/i386/pr68633.c: Fix expected result.
From-SVN: r240220
Louis Krupp [Sun, 18 Sep 2016 05:52:23 +0000 (05:52 +0000)]
re PR fortran/68078 (segfault with allocate and stat for derived types with default initialization)
2016-09-17 Louis Krupp <louis.krupp@gmail.com>
PR fortran/68078
* gfortran.dg/pr68078.f90: New test.
* gfortran.dg/set_vm_limit.c: New, called by pr68078.
2016_09_17 Louis Krupp <louis.krupp@zoho.com>
PR fortran/68078
* resolve.c (resolve_allocate_expr): Check that derived type
pointer, object or array has been successfully allocated before
initializing.
From-SVN: r240219
GCC Administrator [Sun, 18 Sep 2016 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r240218
Jonathan Wakely [Sat, 17 Sep 2016 15:20:23 +0000 (16:20 +0100)]
Define pretty printers for C++17 library components
* python/libstdcxx/v6/printers.py (StdVariantPrinter): Define.
(StdExpAnyPrinter, StdExpOptionalPrinter, StdExpStringViewPrinter):
Register for C++17 components in namespace std. Strip inline namespace
from typename.
From-SVN: r240215
Andreas Schwab [Sat, 17 Sep 2016 09:39:37 +0000 (09:39 +0000)]
ia64.h (ASM_OUTPUT_DWARF_OFFSET): Add cast.
* config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): Add cast.
* config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Likewise.
From-SVN: r240214
GCC Administrator [Sat, 17 Sep 2016 00:16:13 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r240213
Jonathan Wakely [Fri, 16 Sep 2016 22:11:50 +0000 (23:11 +0100)]
Remove bogus entry in ChangeLog added by git-svn
From-SVN: r240206
Jonathan Wakely [Fri, 16 Sep 2016 22:11:46 +0000 (23:11 +0100)]
Fix documentation for overflow-checking builtins
* doc/extend.texi (Integer Overflow Builtins): Fix type of out
parameters for functions taking long long arguments.
From-SVN: r240205
Jonathan Wakely [Fri, 16 Sep 2016 22:09:15 +0000 (23:09 +0100)]
Fix typo in Libstdc++ Profile Mode docs
* doc/xml/manual/profile_mode.xml: Fix typo.
* doc/html/manual/profile_mode_devel.html: Regenerate.
From-SVN: r240204
Eric Botcazou [Fri, 16 Sep 2016 21:39:05 +0000 (21:39 +0000)]
recog.c (rest_of_handle_split_after_reload): Delete.
* recog.c (rest_of_handle_split_after_reload): Delete.
(pass_split_after_reload::gate): New method.
(pass_split_after_reload::execute): Call split_all_insns directly.
From-SVN: r240203
Jonathan Wakely [Fri, 16 Sep 2016 21:36:30 +0000 (22:36 +0100)]
Fix documentation for overflow-checking builtins
* doc/extend.texi (Integer Overflow Builtins): Fix type of out
parameters for functions taking long long arguments.
From-SVN: r240200