The contents of the <compare> header are not complete unless concepts
are supported, so the feature test macro should depend on the macro for
concepts.
As a result, the std::lexicographical_compare_three_way function will
not be defined unless concepts are supported, so there is no need to
check __cpp_lib_concepts before using concepts in those functions.
* include/bits/stl_algobase.h (__is_byte_iter, __min_cmp)
(lexicographical_compare_three_way): Do not depend on
__cpp_lib_concepts.
* include/std/version (__cpp_lib_three_way_comparison): Only define
when __cpp_lib_concepts is defined.
* libsupc++/compare (__cpp_lib_three_way_comparison): Likewise.
From-SVN: r279896
2020-01-05 Andrew Pinski <apinski@marvell.com>
* gcc.c-torture/compile/20200105-1.c: New testcase.
* gcc.c-torture/compile/20200105-2.c: New testcase.
* gcc.c-torture/compile/20200105-3.c: New testcase.
From-SVN: r279893
Recent platform linkers will no longer accept linking for a target
OS version less than 10.4. Recent SDKs no longer have the libgcc_s
shims used for 10.4 and 10.5. So we need to adjust tests that expect
these.
gcc/testsuite/ChangeLog:
2020-01-05 Iain Sandoe <iain@sandoe.co.uk>
* gcc.dg/darwin-version-1.c: Adjust test to use different
options for Darwin4-9 and Darwin10+.
From-SVN: r279888
PR target/93141
* config/i386/i386.md (SWIDWI): New mode iterator.
(DWI, dwi): Add TImode variants.
(addv<mode>4): Use SWIDWI iterator instead of SWI. Use
<general_hilo_operand> instead of <general_operand>. Use
CONST_SCALAR_INT_P instead of CONST_INT_P.
(*addv<mode>4_1): Rename to ...
(addv<mode>4_1): ... this.
(QWI): New mode attribute.
(*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New
define_insn_and_split patterns.
(*addv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn
patterns.
(uaddv<mode>4): Use SWIDWI iterator instead of SWI. Use
<general_hilo_operand> instead of <general_operand>.
(*addcarry<mode>_1): New define_insn.
(*add<dwi>3_doubleword_cc_overflow_1): New define_insn_and_split.
* gcc.target/i386/pr93141-1.c: New test.
* gcc.dg/pr67089-6.c: Expect 16 ADD_OVERFLOW calls even on ia32.
From-SVN: r279887
PR c++/93138
* parser.c (cp_parser_check_class_key): Disable access checks for the
simple name lookup.
(cp_parser_maybe_warn_enum_key): Likewise. Return early if
!warn_redundant_tags.
* g++.dg/warn/Wredundant-tags-2.C: New test.
From-SVN: r279886
PR c++/93046
* cp-gimplify.c (cp_gimplify_init_expr): Don't look through
TARGET_EXPR if it has been gimplified already.
* g++.dg/ext/cond4.C: New test.
From-SVN: r279884
The split_nonconstant_init piece is the only one necessary to fix the
testcase, but it occurred to me that we might as well not split when
-fno-exceptions.
* typeck2.c (split_nonconstant_init): Unshare non-decl.
* cp-gimplify.c (cp_gimplify_init_expr): Only split if -fexceptions.
From-SVN: r279871
These tests currently fail on targets that do not support intel asm
syntax.
gcc/testsuite/ChangeLog:
2020-01-03 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/avx512bw-pr92686-vpcmp-intelasm-1.c: Require
effective target masm_intel.
* gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c: Likewise.
From-SVN: r279869
Calling a function foo in gdb as "set foo()" results in a warning.
Disregarding, it looks wrong to call a function with "set". Let's use
"call" instead.
2019-11-14 Konstantin Kharlamov <Hi-Angel@yandex.ru>
* gdbinit.in (pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, pdd, pbs, pbm):
Use "call" instead of "set".
From-SVN: r279866
Clang now supports three-way comparisons. That causes both overloads of
std::lexicographical_compare_three_way to be defined, but the second one
uses std::compare_three_way which depends on concepts. Clang does not
yet support concepts, so the second overload should also depend on
__cpp_lib_concepts.
* include/bits/stl_algobase.h (lexicographical_compare_three_way):
Only define four-argument overload when __cpp_lib_concepts is defined.
From-SVN: r279861
gcc/fortran/
* trans-openmp.c (gfc_omp_check_optional_argument): Always return a
Boolean expression; handle unallocated/disassociated actual arguments
as absent if passed to nonallocatable/nonpointer dummy array arguments.
(gfc_build_cond_assign): Change to assume a Boolean expr not a pointer.
(gfc_omp_finish_clause, gfc_trans_omp_clauses): Assign NULL to generated
array-data variable if the argument is absent. Simplify code as
'present' is now a Boolean expression.
libgomp/
* testsuite/libgomp.fortran/optional-map.f90: Add test for
unallocated/disassociated actual arguments to nonallocatable/nonpointer
dummy arguments; those are/shall be regarded as absent arguments.
* testsuite/libgomp.fortran/use_device_ptr-optional-2.f90: Ditto.
* testsuite/libgomp.fortran/use_device_ptr-optional-3.f90: New.
From-SVN: r279858
PR target/93089
* config/i386/i386-options.c (ix86_simd_clone_adjust): If
TARGET_PREFER_AVX128, use prefer-vector-width=256 for 'c' and 'd'
simd clones. If TARGET_PREFER_AVX256, use prefer-vector-width=512
for 'e' simd clones.
* gcc.target/i386/pr93089-2.c: New test.
* gcc.target/i386/pr93089-3.c: New test.
From-SVN: r279857
PR target/93110
* config/i386/i386.md (abs<mode>2): Use expand_simple_binop instead of
emitting ASHIFTRT, XOR and MINUS by hand. Use gen_int_mode with QImode
instead of gen_int_shift_amount + convert_modes.
* gcc.dg/torture/pr93110.c: New test.
From-SVN: r279855
PR rtl-optimization/93088
* loop-iv.c (find_single_def_src): Punt after looking through
128 reg copies for regs with single definitions. Move definitions
to first uses.
* gcc.target/i386/pr93088.c: New test.
From-SVN: r279854
Right now we generate hash functions for all types, just in case they
are used as map keys. That's a lot of wasted effort and binary size
for types which will never be used as a map key. Instead, generate
hash functions only for types that we know are map keys.
Just doing that is a bit too simple, since maps with an interface type
as a key might have to hash any concrete key type that implements that
interface. So for that case, implement hashing of such types at
runtime (instead of with generated code). It will be slower, but only
for maps with interface types as keys, and maybe only a bit slower as
the aeshash time probably dominates the dispatch time.
Reorg where we keep the equals and hash functions. Move the hash function
from the key type to the map type, saving a field in every non-map type.
That leaves only one function in the alg structure, so get rid of that and
just keep the equal function in the type descriptor itself.
While we're here, reorganize the rtype struct to more closely match
the gc version.
This is the gofrontend version of https://golang.org/cl/191198.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/212843
From-SVN: r279848
Separate the generation of type equality and hash functions, rather
than doing them in a single operation.
This is almost entirely a pure refactoring in preparation for
generating hash functions only for types that are map keys. The only
change in generated code is that for types that are the size of
numeric types, but not aligned like numeric types, such as [8]byte,
now use standard hash functions. They previously used special-purpose
hash functions because they required special-purpose equal functions.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/212842
From-SVN: r279847
2020-01-02 Andrew Pinski <apinski@marvell.com>
* gcc.c-torture/execute/bitfld-8.c: New testcase.
* gcc.c-torture/execute/bitfld-9.c: New testcase.
From-SVN: r279846
PR c/90677
* cp-objcp-common.c (identifier_global_tag): Return NULL_TREE if name
has not been found, rather than error_mark_node.
* c-c++-common/pr90677-2.c: New test.
From-SVN: r279840
PR libfortran/90274
* io/format.c (parse_format_list): Implement the E0 exponent
width to provide smallest possible width for exponent fields.
Refactor code for correct parsing and better readability of the
code.
* io/io.h (write_real_w0): Change interface to pass in pointer
to fnode.
* io/transfer.c: Update all calls to write_real_w0 to use the
new interface.
* io/write.c ((write_real_w0): Use the new interface with fnode
to access both the decimal precision and exponent widths used in
build_float_string.
* io/write_float.def (build_float_string): Use the passed in
exponent width to calculate the used width in the case of E0.
From-SVN: r279828
PR target/67834
* config/pa/pa.c (pa_elf_select_rtx_section): New. Put references to
COMDAT group function labels in .data.rel.ro.local section.
* config/pa/pa32-linux.h (TARGET_ASM_SELECT_RTX_SECTION): Define.
From-SVN: r279823
2020-01-01 Andrew Pinski <pinskia@gmail.com>
PR libobjc/93099
* objc/objc-decls.h (objc_EXPORT): Define it to
extern for DLL_EXPORT define case.
From-SVN: r279822
PR target/93111
* config/pa/pa.md (scc): Use ordered_comparison_operator instead of
comparison_operator in B and S integer comparisons. Likewise, use
ordered_comparison_operator instead of cmpib_comparison_operator in
cmpib patterns.
* config/pa/predicates.md (cmpib_comparison_operator): Remove.
From-SVN: r279818
PR tree-optimization/93098
* match.pd (popcount): For shift amounts, use integer_onep
or wi::to_widest () == cst instead of tree_to_uhwi () == cst
tests. Make sure that precision is power of two larger than or equal
to 16. Ensure shift is never negative. Use HOST_WIDE_INT_UC macro
instead of ULL suffixed constants. Formatting fixes.
* gcc.c-torture/compile/pr93098.c: New test.
From-SVN: r279809
This code:
/* Make sure we don't accidentally use the old condition. */
cond_expr = NULL_TREE;
was misplaced, since it triggered even when we needed to force the
original unmodified cond_expr into a mask temporary and then invert it.
2019-12-31 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vect-stmts.c (vectorizable_condition): Only nullify cond_expr
if we've created a new condition. Don't nullify it if we've decided
to keep it and then invert the result.
gcc/testsuite/
* gcc.dg/vect/vect-cond-reduc-6.c: New test.
From-SVN: r279804