Commit Graph

167948 Commits

Author SHA1 Message Date
Paolo Carlini
8d2318ffa3 re PR c++/89914 (ICE in nothrow_spec_p, at cp/except.c:1238)
/cp
2019-04-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/89914
	* semantics.c (trait_expr_value): Don't use TYPE_NOTHROW_P
	when maybe_instantiate_noexcept fails.
	(classtype_has_nothrow_assign_or_copy_p): Likewise.
	* method.c (implicitly_declare_fn): Avoid passing error_mark_node
	to build_exception_variant.

/testsuite
2019-04-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/89914
	* g++.dg/ext/has_nothrow_constructor-3.C: New.

From-SVN: r270201
2019-04-08 08:13:50 +00:00
Christophe Lyon
66d8ee9ce0 [testsuite,libstdc++-v3] Fix 27_io/filesystem/iterators/caching.cc
2019-04-08  Christophe Lyon  <christophe.lyon@linaro.org>

	* testsuite/27_io/filesystem/iterators/caching.cc: Add
	dg-require-filesystem-ts.

From-SVN: r270199
2019-04-08 09:17:30 +02:00
Chenghua Xu
636349faba re PR target/89623 (Can't build mips-wrs-vxworks cross-compiler)
2019-04-08  Chenghua Xu  <paul.hua.gm@gmail.com>

	gcc/
	PR target/89623
	* config/mips/mips.opt (LOONGSON_EXT2): Use Var instead of
	Mask.

From-SVN: r270198
2019-04-08 06:37:00 +00:00
GCC Administrator
d9c8519aa9 Daily bump.
From-SVN: r270195
2019-04-08 00:16:15 +00:00
Harald Anlauf
c8a5bef346 re PR fortran/89904 (ICE in gfortran starting with r270045)
2019-04-07  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/89904
	* ChangeLog: Correct ChangeLog entry.

From-SVN: r270192
2019-04-07 19:42:05 +00:00
Uros Bizjak
1e157fa312 ChangeLog: Fix whitespace.
* ChangeLog: Fix whitespace.
	* testsuite/ChangeLog: Ditto.

From-SVN: r270191
2019-04-07 21:30:22 +02:00
Uros Bizjak
45acde2fe0 re PR target/89945 (ICE in gen_lowpart_general, at rtlhooks.c:63)
PR target/89945
	* config/i386/i386.md (anddi_1 to andsi_1_zext splitter):
	Avoid calling gen_lowpart with SYMBOL_REF and LABEL_REF operand.

testsuite/ChangeLog:

	PR target/89945
	* gcc.target/i386/pr89945.c: New test.

From-SVN: r270190
2019-04-07 21:19:08 +02:00
Alan Modra
6d31ef2ab1 Regenerate libiberty/functions.texi
This patch just picks up changes made in r231983 (git 2afaef0360)
and r268793 (git 0f7c25df5f).

	* functions.texi: Regenerate.

From-SVN: r270189
2019-04-07 21:00:35 +09:30
Eric Botcazou
22be587359 c-ada-spec.c (is_float128): New predicate extracted from...
c-family/
	* c-ada-spec.c (is_float128): New predicate extracted from...
	(dump_ada_node) <COMPLEX_TYPE>: Use it to recognize __cfloat128.
	<REAL_TYPE>: ...here.  Call it.
ada/
	* libgnat/i-cexten.ads (CFloat_128): New type.

From-SVN: r270188
2019-04-07 10:34:19 +00:00
GCC Administrator
db9860b1df Daily bump.
From-SVN: r270187
2019-04-07 00:16:16 +00:00
Thomas Koenig
b81f7b8363 re PR fortran/87352 (Large stack usage with new gfortran)
2019-04-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/87352
	* gfortran.h (gfc_component): Add finalized field.
	* class.c (finalize_component): If the component is already
	finalized, return early.  Set component->finalized on exit.

2019-04-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/87352
	* gfortran.dg/finalize_28.f90: Adjust count of __builtin_free.
	* gfortran.dg/finalize_33.f90: Likewise.
	* gfortran.dg/finalize_34.f90: New test.

From-SVN: r270184
2019-04-06 22:10:28 +00:00
Thomas Koenig
2955784caf re PR fortran/89981 (gfortran -pedantic rejects code in 8.3.1 that is accepted with 8.3.0)
2019-04-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/89981
	* resolve.c (resolve_global_procedure): If the global symbol is an
	ENTRY, also look up its name among the entries.

2019-04-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/89981
	* gfortran.dg/entry_22.f90: New test.

From-SVN: r270182
2019-04-06 14:16:01 +00:00
GCC Administrator
f3c9ac23fe Daily bump.
From-SVN: r270181
2019-04-06 00:16:17 +00:00
Marek Polacek
adc06f45fb PR c++/87145 - bogus error converting class type in template arg list.
* pt.c (convert_nontype_argument): Don't call
	build_converted_constant_expr if it could involve calling a conversion
	function with a instantiation-dependent constructor as its argument.

	* g++.dg/cpp0x/constexpr-conv3.C: New test.
	* g++.dg/cpp0x/constexpr-conv4.C: New test.

From-SVN: r270178
2019-04-05 21:22:40 +00:00
Martin Sebor
6464d9b182 PR bootstrap/89980 - pointer initialization with empty string folded to zero
gcc/cp/ChangeLog:

	PR bootstrap/89980
	* decl.c (reshape_init_array_1): Avoid treating empty strings
	as zeros in array initializers.
	Use trivial_type_p () instead of TYPE_HAS_TRIVIAL_DFLT().

gcc/testsuite/ChangeLog:

	PR bootstrap/89980
	* g++.dg/init/array52.C: New test.

From-SVN: r270177
2019-04-05 13:49:38 -06:00
Jonathan Wakely
199b20e3cb Implement std::visit<R> for C++2a (P0655R1)
* doc/xml/manual/status_cxx2020.xml: Update status.
	* include/std/variant (visit<R>): Define for C++2a (P0655R1).
	* testsuite/20_util/variant/visit_r.cc: New test.

From-SVN: r270176
2019-04-05 19:06:02 +01:00
Jonathan Wakely
dd4a309e05 Use hidden friends for directory iterator comparisons
The equality operators for directory iterators are not explicitly
specified in the standard, they're only required to meet the iterator
requirements. This means we don't need to declare them at namespace
scope and can implement them as hidden friends.

Also add 'noexcept' to directory_iterator's dereference operators.

	* include/bits/fs_dir.h (directory_iterator::operator*)
	(directory_iterator::operator->): Add noexcept.
	(operator==, operator!=): Replace namespace-scope equality operators
	for directory iterators with hidden friends.

From-SVN: r270175
2019-04-05 17:56:31 +01:00
Jonathan Wakely
67087c7e53 PR libstdc++/89986 export directory_iterator::increment
PR libstdc++/89986
	* config/abi/pre/gnu.ver: Add missing exports.
	* testsuite/27_io/filesystem/iterators/directory_iterator.cc: Test
	increment member.

From-SVN: r270174
2019-04-05 17:56:27 +01:00
Jonathan Wakely
c7dde4a90a Share all recursive_directory_iterator state [LWG 2708]
Implement the proposed resolution of LWG 2708 by moving the _M_options
and _M_pending members out of the recursive_directory_iterator into the
shared _Dir_stack object. Because _Dir_stack is an opaque type, the
member functions that access the _M_options and _M_pending variables
cannot be inline. Move them into the library.

As a drive-by fix, add noexcept to the non-throwing member functions of
recursive_directory_iterator.

	* config/abi/pre/gnu.ver: Export new symbols.
	* include/bits/fs_dir.h (recursive_directory_iterator::options())
	(recursive_directory_iterator::recursion_pending())
	(recursive_directory_iterator::disable_recursion_pending()): Remove
	inline definitions. Make noexcept.
	(recursive_directory_iterator::depth())
	(recursive_directory_iterator::operator*())
	(recursive_directory_iterator::operator->()): Make noexcept.
	(recursive_directory_iterator::_M_options)
	(recursive_directory_iterator::_M_pending): Remove data members.
	* src/c++17/fs_path.cc (_Dir_stack): Add constructor and data members.
	(recursive_directory_iterator::recursive_directory_iterator): Remove
	ctor-initializer. Use new constructor for _Dir_stack.
	(recursive_directory_iterator::options())
	(recursive_directory_iterator::recursion_pending())
	(recursive_directory_iterator::disable_recursion_pending()): Add
	non-inline definitions.
	(recursive_directory_iterator::depth()): Make noexcept.
	(recursive_directory_iterator::increment(error_code&))
	(recursive_directory_iterator::pop(error_code&)): Adjust to new
	location of options and recursion_pending members.
	* testsuite/27_io/filesystem/iterators/recursion_pending.cc: New test.
	* testsuite/util/testsuite_fs.h (__gnu_test::scoped_file): Add
	user-declared move constructor and assignment operator, to make the
	type move-only.

From-SVN: r270173
2019-04-05 17:56:23 +01:00
Jonathan Wakely
5ed5c0da8b Fix directory_iterator handling of DT_UNKNOWN
We need to handle DT_UNKNOWN earlier, not only during directory
recursion, so that the cached file_type value in the directory_entry
won't be used.

	* src/c++17/fs_dir.cc (_Dir::advance(bool, error_code&)): Handle
	d_type == DT_UNKNOWN immediately.
	(_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown
	handling here.
	* testsuite/27_io/filesystem/iterators/caching.cc: New test.

From-SVN: r270172
2019-04-05 17:56:18 +01:00
Jonathan Wakely
d96f11a272 Make filesystem::path safe for self assignment
The standard says "If *this and p are the same object, has no effect."
Previously we ended up clearing the path.

	* include/bits/fs_path.h (path::operator=(path&&)): Check for self
	assignment.
	* src/c++17/fs_path.cc (path::operator=(const path&)): Likewise.
	* testsuite/27_io/filesystem/path/assign/copy.cc: Test self
	assignment.

From-SVN: r270171
2019-04-05 17:56:14 +01:00
Jonathan Wakely
10f26de915 PR libstdc++/87431 re-adjust never-valueless optimizations
Avoid creating arbitrarily large objects on the stack when emplacing
trivially copyable objects into a variant. Currently we provide the
strong exception-safety guarantee for all trivially copyable types, by
constructing a second variant and then doing a non-throwing move
assignment from the temporary. This patch restricts that behaviour to
trivially copyable types that are no larger than 256 bytes. For larger
types the object will be emplaced directly into the variant, and if its
initialization throws then the variant becomes valueless.

Also implement Antony Polukhin's suggestion to whitelist specific types
that are not trivially copyable but can be efficiently move-assigned.
Emplacing those types will never cause a variant to become valueless.
The whitelisted types are: std::shared_ptr, std::weak_ptr,
std::unique_ptr, std::function, and std::any. Additionally,
std::basic_string, std::vector, and __gnu_debug::vector are whitelisted
if their allocator traits give them a non-throwing move assignment
operator. Specifically, this means std::string is whitelisted, but
std::pmr::string is not.

As part of this patch, additional if-constexpr branches are added for
the cases where the initialization is known to be non-throwing (so the
overhead of the try-catch block can be avoided) and where a scalar is
being produced by a potentially-throwing conversion operator (so that
the overhead of constructing and move-assigning a variant is avoided).
These changes should have no semantic effect, just better codegen.

	PR libstdc++/87431 (again)
	* include/bits/basic_string.h (__variant::_Never_valueless_alt):
	Define partial specialization for basic_string.
	* include/bits/shared_ptr.h (_Never_valueless_alt): Likewise for
	shared_ptr and weak_ptr.
	* include/bits/std_function.h (_Never_valueless_alt): Likewise for
	function.
	* include/bits/stl_vector.h (_Never_valueless_alt): Likewise for
	vector.
	* include/bits/unique_ptr.h (_Never_valueless_alt): Likewise for
	unique_ptr.
	* include/debug/vector (_Never_valueless_alt): Likewise for debug
	vector.
	* include/std/any (_Never_valueless_alt): Define explicit
	specialization for any.
	* include/std/variant (_Never_valueless_alt): Define primary template.
	(__never_valueless): Use _Never_valueless_alt instead of
	is_trivially_copyable.
	(variant::emplace<N>(Args&&...)): Add special case for non-throwing
	initializations to avoid try-catch overhead. Add special case for
	scalars produced by potentially-throwing conversions. Use
	_Never_valueless_alt instead of is_trivially_copyable for the
	remaining strong exception-safety cases.
	(variant::emplace<N>(initializer_list<U>, Args&&...)): Likewise.
	* testsuite/20_util/variant/87431.cc: Run both test functions.
	* testsuite/20_util/variant/exception_safety.cc: New test.
	* testsuite/20_util/variant/run.cc: Use pmr::string instead of string,
	so the variant becomes valueless.

From-SVN: r270170
2019-04-05 17:56:09 +01:00
David Malcolm
34facf20ab Guard notes for -Waddress-of-packed-member on warning emission (PR c/89985)
gcc/c-family/ChangeLog:
	PR c/89985
	* c-warn.c (check_address_or_pointer_of_packed_member): Add
	auto_diagnostic_group.  Guard inform calls by result of
	warning_at call.

gcc/testsuite/ChangeLog:
	PR c/89985
	* c-c++-common/pr89985.c: New test.

From-SVN: r270169
2019-04-05 15:15:37 +00:00
Christophe Lyon
fe7c4fa981 [testsuite] PR71598: Fix testcases again
2019-04-05  Christophe Lyon  <christophe.lyon@linaro.org>

	PR c/71598
	* gcc.dg/torture/pr71598-1.c: dg-prune arm linker messages about
	size of enums.
	* gcc.dg/torture/pr71598-2.c: Likewise.

From-SVN: r270168
2019-04-05 17:10:12 +02:00
Joern Rennecke
e36710207c sched-deps.c (sched_macro_fuse_insns): Check return value of targetm.fixed_condition_code_regs.
* sched-deps.c (sched_macro_fuse_insns): Check return value of
        targetm.fixed_condition_code_regs.

From-SVN: r270167
2019-04-05 16:01:01 +01:00
Marek Polacek
05564120c6 PR c++/89973 - -Waddress-of-packed-member ICE with invalid conversion.
PR c++/89973 - -Waddress-of-packed-member ICE with invalid conversion. 
	* c-warn.c (check_address_or_pointer_of_packed_member): Check the type
	of RHS.

	* g++.dg/warn/Waddress-of-packed-member2.C: New test.

From-SVN: r270166
2019-04-05 14:56:53 +00:00
Richard Biener
25eafae67f re PR debug/89892 (gcc generates wrong debug information at -O2)
2019-04-05  Richard Biener  <rguenther@suse.de>

	PR debug/89892
	PR debug/89905
	* tree-cfgcleanup.c (remove_forwarder_block): Always move
	debug bind stmts but reset them if they are not valid at the
	destination.

	* gcc.dg/guality/pr89892.c: New testcase.
	* gcc.dg/guality/pr89905.c: Likewise.
	* gcc.dg/guality/loop-1.c: Likewise.

From-SVN: r270165
2019-04-05 11:55:45 +00:00
Martin Liska
2723350fc6 Fix ChangeLog entries.
contrib/ChangeLog:

2019-04-03  Martin Liska  <mliska@suse.cz>

	PR translation/89936
	* check-internal-format-escaping.py: Properly detect wrong
	apostrophes.

gcc/ChangeLog:

2019-04-03  Martin Liska  <mliska@suse.cz>

	PR translation/89936
	* collect-utils.c (collect_execute): Use %< and %>, or %qs in
	order to wrap keywords or arguments.
	* collect2.c (main): Likewise.
	(scan_prog_file): Likewise.
	(scan_libraries): Likewise.
	* common/config/riscv/riscv-common.c (riscv_subset_list::parsing_subset_version): Likewise.
	(riscv_subset_list::parse_std_ext): Likewise.
	* config/aarch64/aarch64.c (aarch64_override_options_internal): Likewise.
	* config/arm/arm.c (arm_option_override): Likewise.
	* config/cris/cris.c (cris_print_operand): Likewise.
	* config/darwin-c.c (darwin_pragma_options): Likewise.
	(darwin_pragma_unused): Likewise.
	(darwin_pragma_ms_struct): Likewise.
	* config/ft32/ft32.c (ft32_print_operand): Likewise.
	* config/i386/i386.c (print_reg): Likewise.
	(ix86_print_operand): Likewise.
	* config/i386/xm-djgpp.h: Likewise.
	* config/iq2000/iq2000.c (iq2000_print_operand): Likewise.
	* config/m32c/m32c.c (m32c_option_override): Likewise.
	* config/msp430/msp430.c (msp430_option_override): Likewise.
	* config/nds32/nds32.c (nds32_option_override): Likewise.
	* config/nvptx/mkoffload.c (main): Likewise.
	* config/rx/rx.c (rx_print_operand): Likewise.
	(valid_psw_flag): Likewise.
	* config/vms/vms-c.c (vms_pragma_member_alignment): Likewise.
	(vms_pragma_nomember_alignment): Likewise.
	(vms_pragma_extern_model): Likewise.
	* lto-wrapper.c (compile_offload_image): Likewise.
	* omp-offload.c (oacc_parse_default_dims): Likewise.
	* symtab.c (symtab_node::verify_base): Likewise.
	* tlink.c (recompile_files): Likewise.
	(start_tweaking): Likewise.
	* tree-profile.c (parse_profile_filter): Likewise.

gcc/objc/ChangeLog:

2019-04-03  Martin Liska  <mliska@suse.cz>

	PR translation/89936
	* objc-act.c (objc_add_property_declaration): Use %< and %>, or %qs in
	order to wrap keywords or arguments.
	(objc_add_synthesize_declaration_for_property): Likewise.

From-SVN: r270164
2019-04-05 09:04:41 +00:00
Martin Liska
904f3daa02 Remove usage of apostrophes in error and warning messages (PR translation/89935).
2019-04-05  Martin Liska  <mliska@suse.cz>

	PR translation/89935
	* check-internal-format-escaping.py: Properly detect wrong
	apostrophes.
2019-04-05  Martin Liska  <mliska@suse.cz>

	PR translation/89935
	* collect-utils.c (collect_execute): Use %< and %>, or %qs in
	order to wrap keywords or arguments.
	* collect2.c (main): Likewise.
	(scan_prog_file): Likewise.
	(scan_libraries): Likewise.
	* common/config/riscv/riscv-common.c (riscv_subset_list::parsing_subset_version): Likewise.
	(riscv_subset_list::parse_std_ext): Likewise.
	* config/aarch64/aarch64.c (aarch64_override_options_internal): Likewise.
	* config/arm/arm.c (arm_option_override): Likewise.
	* config/cris/cris.c (cris_print_operand): Likewise.
	* config/darwin-c.c (darwin_pragma_options): Likewise.
	(darwin_pragma_unused): Likewise.
	(darwin_pragma_ms_struct): Likewise.
	* config/ft32/ft32.c (ft32_print_operand): Likewise.
	* config/i386/i386.c (print_reg): Likewise.
	(ix86_print_operand): Likewise.
	* config/i386/xm-djgpp.h: Likewise.
	* config/iq2000/iq2000.c (iq2000_print_operand): Likewise.
	* config/m32c/m32c.c (m32c_option_override): Likewise.
	* config/msp430/msp430.c (msp430_option_override): Likewise.
	* config/nds32/nds32.c (nds32_option_override): Likewise.
	* config/nvptx/mkoffload.c (main): Likewise.
	* config/rx/rx.c (rx_print_operand): Likewise.
	(valid_psw_flag): Likewise.
	* config/vms/vms-c.c (vms_pragma_member_alignment): Likewise.
	(vms_pragma_nomember_alignment): Likewise.
	(vms_pragma_extern_model): Likewise.
	* lto-wrapper.c (compile_offload_image): Likewise.
	* omp-offload.c (oacc_parse_default_dims): Likewise.
	* symtab.c (symtab_node::verify_base): Likewise.
	* tlink.c (recompile_files): Likewise.
	(start_tweaking): Likewise.
	* tree-profile.c (parse_profile_filter): Likewise.
2019-04-05  Martin Liska  <mliska@suse.cz>

	PR translation/89935
	* objc-act.c (objc_add_property_declaration): Use %< and %>, or %qs in
	order to wrap keywords or arguments.
	(objc_add_synthesize_declaration_for_property): Likewise.

From-SVN: r270163
2019-04-05 08:37:44 +00:00
Richard Sandiford
8d6b13da61 Make FMA code cope with redundant negates (PR89956)
This patch fixes a case in which, due to forced missed optimisations
in earlier passes, we have:

    _1 = a * b
    _2 = -_1
    _3 = -_1
    _4 = _2 + _3

and treated _4 as two FNMA candidates, once via _2 and once via _3.

2019-04-05  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR tree-optimization/89956
	* tree-ssa-math-opts.c (convert_mult_to_fma): Protect against
	multiple negates of the same value.

gcc/testsuite/
	PR tree-optimization/89956
	* gfortran.dg/pr89956.f90: New test.

From-SVN: r270162
2019-04-05 07:31:12 +00:00
Jason Merrill
ce36ba09fe PR c++/89948 - ICE with break in statement-expr.
* constexpr.c (cxx_eval_statement_list): Jumping out of a
	statement-expr is non-constant.

From-SVN: r270161
2019-04-04 22:52:23 -04:00
Jason Merrill
950b198d4a PR c++/89966 - error with non-type auto tparm.
My patch for PR 86932 broke this testcase by passing tf_partial to
coerce_template_template_parms, which prevented do_auto_deduction from
actually replacing the auto.

	* pt.c (do_auto_deduction): Clear tf_partial.

From-SVN: r270160
2019-04-04 22:50:52 -04:00
Jason Merrill
17838af989 PR c++/86986 - ICE with TTP with parameter pack.
Three separate issues were breaking this testcase.  One, we were trying to
look at the type of a template template parameter to see if it's a valid
non-type template parameter.  Two, we were treating a parameter pack named
in the type of a template parameter pack of a TTP pack as being one of the
packs expanded by the outer pack.  Three, we weren't supplying all the
necessary levels of template arguments when TTP matching.

	* pt.c (coerce_template_parameter_pack): Only look at the type of a
	non-type parameter pack.
	(fixed_parameter_pack_p_1): Don't recurse into the type of a
	non-type parameter pack.
	(coerce_template_template_parms): Call add_outermost_template_args.

From-SVN: r270159
2019-04-04 22:50:18 -04:00
GCC Administrator
70604b0225 Daily bump.
From-SVN: r270158
2019-04-05 00:16:13 +00:00
Martin Sebor
187c6369c0 PR c++/89974 - ICE on a definition of a non-type specialization on a struct object with pointer to member function
PR c++/89974 - ICE on a definition of a non-type specialization on a struct object with pointer to member function
PR c++/89878 - same specializations on a zero-initialized struct object as a non-type parameter treated as distinct
PR c++/89833 - sorry, unimplemented: string literal in function template signature
PR c++/47488 - sorry, unimplemented: string literal in function template signature

gcc/cp/ChangeLog:

	PR c++/89974
	PR c++/89878
	PR c++/89833
	PR c++/47488
	* decl.c (reshape_init_array_1): Strip trailing zero-initializers
	from arrays of trivial type and known size.
	* mangle.c (write_expression): Convert braced initializer lists
	to STRING_CSTs.
	(write_expression): Trim trailing zero-initializers from arrays
	of trivial type.
	(write_template_arg_literal): Mangle strings the same as braced
	initializer lists.

gcc/testsuite/ChangeLog:

	PR c++/89974
	PR c++/89878
	PR c++/89833
	PR c++/47488
	* gcc/testsuite/g++.dg/abi/mangle69.C: New test.
	* gcc/testsuite/g++.dg/abi/mangle70.C: New test.
	* gcc/testsuite/g++.dg/abi/mangle71.C: New test.
	* gcc/testsuite/g++.dg/abi/mangle72.C: New test.
	* gcc/testsuite/g++.dg/cpp0x/constexpr-array19.C: New test.
	* gcc/testsuite/g++.dg/cpp2a/nontype-class15.C: New test.
	* gcc/testsuite/g++.dg/cpp2a/nontype-class16.C: New test.
	* gcc/testsuite/g++.dg/init/array51.C: New test.

From-SVN: r270155
2019-04-04 17:10:23 -06:00
Martin Sebor
1a9b15a7d7 PR middle-end/89957 - ICE calling strnlen with an int128_t bound in a known range
PR middle-end/89957 - ICE calling strnlen with an int128_t bound in a known range
PR middle-end/89911 - [9 Regression] ICE in get_attr_nonstring_decl

gcc/ChangeLog:

	PR middle-end/89957
	PR middle-end/89911
	* builtins.c (expand_builtin_strnlen): Make sure wi::ltu_p operands
	have the same precision since the function crashes otherwise.
	* calls.c (maybe_warn_nonstring_arg): Avoid assuming strnlen() call
	has non-zero arguments.

gcc/testsuite/ChangeLog:

	PR middle-end/89957
	PR middle-end/89911
	* gcc.dg/Wstringop-overflow-13.c: New test.

From-SVN: r270154
2019-04-04 16:38:10 -06:00
Martin Sebor
9a0cbb60d2 PR middle-end/89934 - ICE on a call with fewer arguments to strncpy declared without prototype
gcc/ChangeLog:

	PR middle-end/89934
	* gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Bail
	out if the number of arguments is less than expected.

gcc/testsuite/ChangeLog:

	PR middle-end/89934
	* gcc.dg/Wrestrict-19.c: New test.
	* gcc.dg/Wrestrict-5.c: Add comment.  Remove unused code.

From-SVN: r270152
2019-04-04 15:59:49 -06:00
Jeff Law
c2457887ea re PR target/89399 (ICE: RTL check: expected code 'set', 'clobber' or 'clobber_high', have 'parallel' in combine_reaching_defs, at ree.c:783)
PR rtl-optimization/89399
	* ree.c (combine_set_extension): Use single_set rather than
	digging into PATTERN for items on the candidate list.
	(combine_reaching_defs): Likewise.

	PR rtl-optimization/89399
	* gcc.c-torture/compile/pr89399.c: New test.

From-SVN: r270151
2019-04-04 14:52:16 -06:00
Harald Anlauf
aace91e285 re PR fortran/89904 (ICE in gfortran starting with r270045)
2019-04-04  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/89004
	* check.c (gfc_check_transfer): Reject procedures as actual
	arguments for SOURCE and MOLD of TRANSFER intrinsic.

	PR fortran/89004
	* gfortran.dg/pr85797.f90: Adjust testcase.

From-SVN: r270150
2019-04-04 20:38:33 +00:00
Paolo Carlini
3a36c1806a re PR c++/65619 (friend declaration with template template parameter not recognized)
2019-04-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/65619
	* g++.dg/template/friend67.C: New.

From-SVN: r270146
2019-04-04 15:49:30 +00:00
Paolo Carlini
a7f70a0925 re PR c++/61327 (Problem with friend template object)
2019-04-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/61327
	* g++.dg/cpp0x/friend4.C: New.
	* g++.dg/cpp0x/friend5.C: Likewise.

From-SVN: r270145
2019-04-04 15:38:05 +00:00
Paolo Carlini
7b74bfb106 re PR c++/56643 (Failure to match noexcept specifier of friend template function in template class)
2019-04-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/56643
	* g++.dg/cpp0x/noexcept40.C: New.

From-SVN: r270144
2019-04-04 15:15:59 +00:00
Christophe Lyon
f97cd76eb2 Fix typo in ChangeLog
From-SVN: r270143
2019-04-04 09:48:56 +02:00
Richard Sandiford
6541e97d4d DF usage in loop-invariant.c (PR46590)
- df_live is already present at -O2, so we only need to add it and
  mark all blocks dirty for -O

- df_process_deferred_rescans should be enough to force a rescan of
  blocks affected by moving invariants, but calling it in find_defs
  means that we don't do any rescans for the final loop

2019-04-04  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR rtl-optimization/46590
	* loop-invariant.c (find_defs): Move df_remove_problem and
	df_process_deferred_rescans to move_invariants.
	Move df_live_add_problem and df_live_set_all_dirty calls
	to move_invariants.
	(move_invariants): Likewise.
	(move_loop_invariants): Likewise, making the df_live calls
	conditional on -O.  Remove the problem again if we added it
	locally.

From-SVN: r270142
2019-04-04 07:35:34 +00:00
GCC Administrator
325d3f4642 Daily bump.
From-SVN: r270141
2019-04-04 00:16:12 +00:00
Jason Merrill
e53ec543e6 PR c++/81866 - ICE with member template and default targ.
This testcase manages to find a way to look up the partial instantiation of
B for the default argument of C before we've created the partial
instantiation of B as part of the normal instantiation of the members of A.
Which we can deal with, but we were getting confused because the partial
instantiation was stored with a RECORD_TYPE specialization rather than
TEMPLATE_DECL.

	* pt.c (tsubst_template_decl): Handle getting a type from
	retrieve_specialization.

From-SVN: r270138
2019-04-03 17:51:36 -04:00
Dominique d'Humieres
c17bad5326 [multiple changes]
2019-04-03  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/68567
	* expr.c (gfc_reduce_init_expr): Add extra check to avoid
	dereferencing a null pointer.

2019-04-03  Dominique d'Humieres  <dominiq@gcc.gnu.org>

	PR fortran/68567
	* gfortran.dg/parameter_array_error_1.f90: New test.

From-SVN: r270137
2019-04-03 23:32:13 +02:00
Jason Merrill
7a506c3c63 PR c++/86586 - -fcompare-debug=-Wsign-compare.
This patch limits constexpr folding for -Wsign-compare to only cases that we
would warn for without considering constant values, avoiding the folding in
the testcase in question.

gcc/c-family/
	* c-warn.c (warn_for_sign_compare): Call fold_for_warn.
gcc/cp/
	* typeck.c (cp_build_binary_op): Don't fold for -Wsign-compare.

From-SVN: r270136
2019-04-03 16:12:00 -04:00
Jason Merrill
b8836dbec1 PR c++/89331 - ICE with offsetof in incomplete class.
We were aborting when build_base_path returned an error because of the
derived class not being complete yet, which wasn't considered by the assert.
Fixed by checking for complete type first.  The semantics.c change avoids
a duplicate error message.

	* semantics.c (finish_offsetof): Handle error_mark_node.
	* typeck.c (build_class_member_access_expr): Call
	complete_type_or_maybe_complain before converting to base.

From-SVN: r270135
2019-04-03 16:09:17 -04:00
Qing Zhao
bc53dee0ba re PR tree-optimization/89730 (-flive-patching=inline-only-static should grant always_inline attribute for extern function)
2019-04-03  qing zhao  <qing.zhao@oracle.com>

	PR tree-optimization/89730
	* ipa-inline.c (can_inline_edge_p): Delete the checking for
	-flive-patching=inline-only-static.
	(can_inline_edge_by_limits_p): Add the checking for 
	-flive-patching=inline-only-static and grant always_inline
	even when -flive-patching=inline-only-static is specified. 

	* gcc.dg/live-patching-4.c: New test.

From-SVN: r270134
2019-04-03 19:00:25 +00:00