Jonathan Wakely [Wed, 14 Aug 2019 20:10:00 +0000 (21:10 +0100)]
PR c++/91436 fix C++ dialect for std::make_unique fix-it hint
The std::make_unique function wasn't added until C++14, and neither was
the std::complex_literals namespace.
gcc/cp:
PR c++/91436
* name-lookup.c (get_std_name_hint): Fix min_dialect field for
complex_literals and make_unique entries.
gcc/testsuite:
PR c++/91436
* g++.dg/lookup/missing-std-include-5.C: Limit test to C++14 and up.
* g++.dg/lookup/missing-std-include-6.C: Don't check make_unique in
test that runs for C++11.
* g++.dg/lookup/missing-std-include-8.C: Check make_unique here.
Thomas Koenig [Tue, 13 Aug 2019 20:01:43 +0000 (20:01 +0000)]
backport: re PR fortran/90561 (ICE in gimplify_var_or_parm_decl, at gimplify.c:2747)
2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
Backport from trunk
PR fortran/90561
* trans.h (gfc_evaluate_now_function_scope): New function.
* trans.c (gfc_evaluate_now_function_scope): New function.
* trans-expr.c (gfc_trans_assignment): Use it.
2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
Backport from trunk
PR fortran/90561
* gfortran.dg/deferred_character_34.f90: New test.
Jonathan Wakely [Tue, 13 Aug 2019 13:14:45 +0000 (14:14 +0100)]
PR libstdc++/90361 add missing macro definition
The src/c++17/string-inst.cc file needs to override the default string
ABI so that it still contains the expected symbols even when the library
is configured with --with-default-libstdcxx-abi=gcc4-compatible.
Backport from mainline
2019-08-12 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/90361
* src/c++17/string-inst.cc: Use _GLIBCXX_USE_CXX11_ABI=1 by default.
Thomas Koenig [Tue, 13 Aug 2019 10:05:44 +0000 (10:05 +0000)]
backport: re PR fortran/91424 (Extend warnings about DO loops)
2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
Backport from trunk
PR fortran/91424
* frontend-passes.c (do_subscript): Do not warn for an
expression a second time. Do not warn about a zero-trip loop.
(doloop_warn): Also look at contained namespaces.
2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
Backport from trunk
PR fortran/91424
* gfortran.dg/do_subscript_3.f90: New test.
* gfortran.dg/do_subscript_4.f90: New test.
* gfortran.dg/pr70754.f90: Use indices that to not overflow.
2019-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
Backport from trunk
PR fortran/91422
* testsuite/libgomp.oacc-fortran/routine-7.f90: Correct array
dimension.
Janne Blomqvist [Tue, 13 Aug 2019 08:42:43 +0000 (11:42 +0300)]
PR fortran/91414 Improve initialization of PRNG
As part of PR 91414 an improved PRNG was contributed to trunk. This is
a partial backport of some related changes to the PRNG. Namely when
seeding the PRNG, it needs only 8 bytes of randomness from the OS, and
uses a simple splitmix64 PRNG to fill in the rest of the state,
instead of getting all the state from the OS. This can be useful for
operating systems that can run out of entropy.
libgfortran/ChangeLog:
2019-08-13 Janne Blomqvist <jb@gcc.gnu.org>
Partial backport from trunk
PR fortran/91414
* intrinsics/random.c (lcg_parkmiller): Replace with splitmix64.
(splitmix64): New function.
(getosrandom): Fix return value, simplify.
(init_rand_state): Use getosrandom only to get 8 bytes, splitmix64
to fill rest of state.
Tom Honermann [Mon, 12 Aug 2019 17:46:37 +0000 (17:46 +0000)]
PR c++/88095, CTAD for literal operator templates per P0732
This patch fixes PR c++/88095: class nontype template parameter UDL string
literals doesn't accepts deduction placeholder
It also addresses a latent issue; literal operator templates with template
parameter packs of literal class type were previously accepted. The patch
corrects this and adds a test (udlit-class-nttp-neg.C).
This fix is needed for one of the char8_t remediation approaches documented
in P1423, and may be helpful for existing code bases impacted by the char8_t
changes adopted via P0482 for C++20.
gcc/cp/ChangeLog:
2019-08-02 Tom Honermann <tom@honermann.net>
* parser.c (cp_parser_template_declaration_after_parameters): Enable
class template argument deduction for non-type template parameters
in literal operator templates.
gcc/testsuite/ChangeLog:
2019-08-02 Tom Honermann <tom@honermann.net>
PR c++/88095
* g++.dg/cpp2a/udlit-class-nttp-ctad.C: New test.
* g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C: New test.
* g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C: New test.
* g++.dg/cpp2a/udlit-class-nttp.C: New test.
* g++.dg/cpp2a/udlit-class-nttp-neg.C: New test.
* g++.dg/cpp2a/udlit-class-nttp-neg2.C: New test.
Jason Merrill [Mon, 12 Aug 2019 17:46:32 +0000 (13:46 -0400)]
PR c++/91378 - ICE with noexcept and auto return type.
Here, since the call to g is not type-dependent, we call mark_used on it to
determine its return type. This also wants to instantiate the
noexcept-expression. But since nothing in maybe_instantiate_noexcept was
calling push_to_top_level, we substituted b.i with processing_template_decl
set, so we left it unresolved for later access checking. As a result, the
type of C::g<int> remained instantiation-dependent, leading to an ICE in
type_dependent_expression_p on the assert that the type of a function
template with no dependent template arguments must be non-dependent.
Jason Merrill [Mon, 12 Aug 2019 17:46:25 +0000 (13:46 -0400)]
PR c++/90538 - multiple expansions of capture packs
Previously, with init-capture the type of the closure field was a
DECLTYPE_TYPE of the initializer. But since each time we tsubst a lambda we
get a different lambda, that meant that if the initializer is a lambda, we'd
end up with different closure types in the field and initializer after
substitution (PR 87322). We dealt with this by remembering the lambda
instantiation within each pack expansion element, using
local_specialization_stack to separate the elements. But that broke this
testcase, because it lost lambda capture proxies that also use
local_specializations.
So, this patch removes the local_specializations changes from that patch and
fixes 87322 differently, by giving init-capture fields 'auto' type and doing
deduction later. There's a bit of a kludge to get the right number of
fields by pretending that 'auto...' uses the parameter packs from the
initializer, but it does the trick.
* cp-tree.h (DECLTYPE_FOR_INIT_CAPTURE): Remove.
* lambda.c (add_capture): Copy parameter packs from init.
(lambda_capture_field_type): Always use auto for init-capture.
* pt.c (uses_parameter_packs): Return tree.
(tsubst) [DECLTYPE_TYPE]: Remove init-capture handling.
(gen_elem_of_pack_expansion_instantiation): Don't push
local_specialization_stack.
(prepend_one_capture): New.
(tsubst_lambda_expr): Use it. Don't touch local_specializations.
(do_auto_deduction): Avoid redundant error.
Iain Sandoe [Mon, 5 Aug 2019 08:09:34 +0000 (08:09 +0000)]
Ada, backport push -shared-libgcc where needed.
Gnatlink has code that checks for duplicate '-shared-libgcc’ switches (but not
duplicate ‘static-libgcc’) and also pushes ’static-libgcc' onto the link line for
targets that default to static linking, provided '-shared-libgcc' is not present.
For targets that should use a shared libgcc we need the same process to be
applied (in inverse), in the event that they do not default to providing the
shared flag implicitly.
So this adds the complementary set of tests for the shared case and pushes
the shared flag as needed. As a minor tidy-up there’s no need push duplicates
of the libgcc switch onto the link line when one has already been seen (given by
the user).
The patch does not alter any of the platform defaults for static/shared libgcc,
but it ensures that the intent of the link is explicit.
2019-08-05 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-30 Iain Sandoe <iain@sandoe.co.uk>
* gnatlink.adb (Link_Step): Remove duplicate -static-libgcc switches.
Push -shared-libgcc explicitly, when it is the target default (unless
overidden by the static flag).
When the user has put an instance of shared/static-libgcc do not push
a duplicate of this.
Kito Cheng [Mon, 5 Aug 2019 07:54:31 +0000 (07:54 +0000)]
RISC-V: Promote type correctly for libcalls
- argument and return value for libcall won't promote at
default_promote_function_mode_always_promote, however we expect it
should sign-extend as normal function.
- Witout this patch, this test case will fail at -march=rv64i -mabi=lp64.
- The implementation of riscv_promote_function_mode is borrowed from MIPS.
gcc/ChangeLog
Backport from mainline
2019-08-05 Kito Cheng <kito.cheng@sifive.com>
* config/riscv/riscv.c (riscv_promote_function_mode): New.
(TARGET_PROMOTE_FUNCTION_MODE): Use riscv_promote_function_mode.
gcc/testsuite/ChangeLog
Backport from mainline
2019-08-05 Kito Cheng <kito.cheng@sifive.com>
Jerry DeLisle [Mon, 5 Aug 2019 00:47:41 +0000 (00:47 +0000)]
backport: re PR fortran/87233 (Constraint C1279 still followed after f2008 standard revision (?))
2019-08-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Backport from trunk
PR fortran/87233
* expr.c (check_restricted): Relax constraint C1279 which was
removed from F2008 and above.
* gfortran.dg/initialization_14.f90: Modify to now pass by
removing two dg-error commands. Added comments.
* gfortran.dg/initialization_30.f90: New test that includes the
two tests removed above with the 'dg-options -std=f95'.
Iain Sandoe [Sun, 4 Aug 2019 13:34:19 +0000 (13:34 +0000)]
Objective-C, NeXT, backport workaround for PR90709
Since we cannot parse the current NeXT headers, because of PR90709 and its
dependents, we have a large amount of testsuite noise for Darwin platforms.
In order to restore the usefulness of the testsuite, we are going add headers
without the modern syntax elements that trigger the bug, and use these for
test runs on newer Darwin.
The headers are imported from GNUStep, with some local modifications to make
sure that __BLOCKS__ is honoured as a gate for Apple-style blocks closures.
CF-CFString.h, F-NS*.h are proxy headers that use the installed CoreFoundation
or Foundation headers on systems <= Darwin12 and the GNUStep headers for newer.
Use the CF-CFString.h, F-NS*.h proxy headers where needed in the objective-c
testsuite. Make minor adjustments to tests as required, providing that those
do not alter the test intent.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-15 Iain Sandoe <iain@sandoe.co.uk>
PR objc/90709
* obj-c++.dg/proto-lossage-7.mm: Use proxy headers.
* obj-c++.dg/strings/const-cfstring-2.mm: Likewise.
* obj-c++.dg/strings/const-cfstring-5.mm: Likewise
* obj-c++.dg/strings/const-str-12.mm: Likewise.
* obj-c++.dg/syntax-error-1.mm: Likewise.
* obj-c++.dg/torture/strings/const-cfstring-1.mm: Likewise.
* obj-c++.dg/torture/strings/const-str-10.mm: Likewise.
* obj-c++.dg/torture/strings/const-str-11.mm: Likewise.
* obj-c++.dg/torture/strings/const-str-9.mm: Likewise.
* obj-c++.dg/cxx-ivars-3.mm: Skip on later Darwin, where the 10.4 API
in no longer supported, also on m64 where there's no meaning to it.
* obj-c++.dg/isa-field-1.mm: Suppress unwanted warning, add comment why.
* obj-c++.dg/objc-gc-3.mm: Skip for Darwin > 16, the API use is an error
there.
* obj-c++.dg/qual-types-1.mm: Prune a spurious l64 warning.
* obj-c++.dg/stubify-1.mm: Tidy up after better compiler warnings.
* obj-c++.dg/stubify-2.mm: Likewise.
* obj-c++.dg/try-catch-1.mm: Likewise.
* obj-c++.dg/try-catch-3.mm: Likewise.
Backport from mainline.
2019-06-15 Iain Sandoe <iain@sandoe.co.uk>
PR objc/90709
* objc.dg/encode-7-next-64bit.m: Use proxy headers.
* objc.dg/image-info.m: Likewise.
* objc.dg/method-6.m: Likewise.
* objc.dg/no-extra-load.m: Likewise.
* objc.dg/objc-foreach-4.m: Likewise.
* objc.dg/objc-foreach-5.m: Likewise.
* objc.dg/proto-lossage-7.m: Likewise.
* objc.dg/strings/const-cfstring-2.m: Likewise.
* objc.dg/strings/const-cfstring-5.m: Likewise.
* objc.dg/strings/const-str-12b.m: Likewise.
* objc.dg/symtab-1.m: Likewise.
* objc.dg/torture/strings/const-cfstring-1.m: Likewise.
* objc.dg/torture/strings/const-str-10.m: Likewise.
* objc.dg/torture/strings/const-str-11.m: Likewise.
* objc.dg/torture/strings/const-str-9.m: Likewise.
* objc.dg/zero-link-1.m: Likewise.
* objc.dg/zero-link-2.m: Likewise.
* objc.dg/zero-link-3.m: Likewise.
* objc.dg/isa-field-1.m: Suppress unwanted warning, add comment why.
* objc.dg/headers.m: XFAIL for Darwin14-19.
* objc.dg/objc-gc-4.m: Skip for Darwin > 16, the API use is an error
there.
Backport from mainline.
2019-06-15 Iain Sandoe <iain@sandoe.co.uk>
Iain Sandoe [Sun, 4 Aug 2019 13:17:15 +0000 (13:17 +0000)]
Darwin, PPC, testsuite, backport fix for bmi2-bzhi64-1a.c
This test is failing with older cpus because the included header needs both
altivec and vsx to be enabled to succeed in compiling. Without this (if these
are not defaults for the cpu) there are errors like:
In file included from ... x86intrin.h:41,
from ... bmi2-bzhi64-1a.c:6:
... xmmintrin.h: In function '_mm_loadu_ps':
... xmmintrin.h:122:11:
error: incompatible types when returning type 'int' but '__m128' {aka '__vector(4) float'} was expected
<snip>
... xmmintrin.h: In function '_mm_cvtps_pi32':
... xmmintrin.h:996:3:
error: use of 'long long' in AltiVec types is invalid without '-mvsx'
<snip>
Fixed by adding -maltivec -mvsx to the options
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-07-27 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/powerpc/bmi2-bzhi64-1a.c: Add options to enable altivec
and vsx.
Iain Sandoe [Sun, 4 Aug 2019 13:12:26 +0000 (13:12 +0000)]
Darwin, testsuite, backport fix for 91087.
The testcase is failing to instrument part of the source because of a bug
in the ordering of static DTORs. It seems unlikely that this is generically
fixable in the toolchain (and given that it's likely to be a dynamic loader
change would not be expected to be applied retrospectively to OS versions
that are out of support). To avoid the testsuite noise, xfail the count lines
that don't match (we can adjust the xfails as/when the upstream bug is fixed).
dejagnu xfails do not seem to work when embedded in a line like:
~Test (void) { .... /* count(1) { xfail ... } */ }
the closing brace seems to confuse the parser. The solution is to exapnd the
text onto three lines.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-07-25 Iain Sandoe <iain@sandoe.co.uk>
PR gcov-profile/91087
* g++.dg/gcov/pr16855.C: Xfail the count lines for the DTORs and the
"final" line for the failure summaries. Adjust source layout so that
dejagnu xfail expressions work.
Iain Sandoe [Sun, 4 Aug 2019 13:06:11 +0000 (13:06 +0000)]
Darwin, testsuite, backport removal of unused test.
During GCC-9, the codegen for unreachable switch case statements changed
such that the (undefined) behaviour of reaching such statements is directed
to one of the existing switch cases. This means that the testcase which
deals with the old behaviour can no longer work (and there is nothing to test
with it). The [Darwin-specific] test is now redundant and can be removed.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-07-12 Iain Sandoe <iain@sandoe.co.uk>
Iain Sandoe [Sun, 4 Aug 2019 12:52:31 +0000 (12:52 +0000)]
Darwin, testsuite - backport fix for cpp/isysroot-1.c.
For the test to succeed there needs to be some header that is to be found in
the 'expected' place i.e. <sysroot>/usr/include/. It's important that it is
not the name of a header for which fixincludes have been applied, since such
headers will be found in the gcc include-fixed dir and, in general, reference
additional headers. The dummy sysroot will prevent the additional headers
from being found, resulting in a failed test. The fix is to use a header name
that isn't expected to be present in a real sysroot.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-24 Iain Sandoe <iain@sandoe.co.uk>
* gcc.dg/cpp/isysroot-1.c: Use <example.h> as the test header.
* gcc.dg/cpp/usr/include/stdio.h: Rename...
* gcc.dg/cpp/usr/include/example.h: ... to this.
Iain Sandoe [Sun, 4 Aug 2019 12:46:00 +0000 (12:46 +0000)]
Darwin, PPC, testsuite, backport fix for pr80125.
Darwin (unlike most of the members of the PowerPC port family)
defaults to signed chars, so the test was failing to compile with
a "mismatched parameters" error.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-23 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/powerpc/pr80125.c (foo): Use an unsigned char
vector explicitly for the vec_perm.
Iain Sandoe [Sun, 4 Aug 2019 12:37:28 +0000 (12:37 +0000)]
Darwin, PPC, testsuite, backport fix for pr71785.
Firstly, we adjust the test conditions to use non-PIC code for Darwin.
Secondly, we have to account for out-of-line GPR restores which gives
a false positive on one of the scan-assembler-not. Lastly, we make the
test a bit more specific for Darwin - that it looks for absence of
branches to local labels.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-23 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/powerpc/pr71785.c: For Darwin, make test non-PIC,
expect the out-of-line GPR restore, and test specifically for
absence of branches to local labels.
Iain Sandoe [Sun, 4 Aug 2019 12:16:10 +0000 (12:16 +0000)]
Darwin, testsuite, backport fix for pr71694.
This test fails for Darwin m32 because it's scanning for absence
of an instruction that's validly used in PIC code. Fixed, in this
case, by using non-PIC codegen.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* g++.dg/pr71694.C: Use non-PIC codegen for Darwin m32.
Iain Sandoe [Sun, 4 Aug 2019 12:12:30 +0000 (12:12 +0000)]
Darwin, testsuite, backport fix for darwin-minversion-1,2.
Newer OS versions (10.14+) do not provide some of the CRTs that are used
for older ones (e.g. 10.5), and thus link tests that specify targeting
such a revision fail. We retain the testing of the correct defined OS
version number but switch to compile-only testing for these two tests.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-13 Iain Sandoe <iain@sandoe.co.uk>
* gcc.dg/darwin-minversion-1.c: Use compile rather than link/run.
* gcc.dg/darwin-minversion-2.c: Likewise.
Iain Sandoe [Sun, 4 Aug 2019 11:57:41 +0000 (11:57 +0000)]
Darwin, testsuite, backport fix for cpp0x/alignas4.C
Darwin produces aligned zerofill directives for the objects represented.
We can scan for these using lp64 and ilp32 to catch operation on both
X86 and PowerPC ports (the test is for the alignment which is the trailing
value in the zerofill directive, as a power of two).
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-06 Iain Sandoe <iain@sandoe.co.uk>
* g++.dg/cpp0x/alignas4.C: Amend test to check for zerofill syntax
on Darwin.
Iain Sandoe [Sun, 4 Aug 2019 11:54:13 +0000 (11:54 +0000)]
Darwin, X86, backport test adjusts for PR90698.
We don't have support for -mcmodel={medium, large, kernel} so don't
expect tests for those things to work.
For now mark them as xfail where possible and skip where that isn't.
These changes will be logged onto the PR and therefore can be backed
out when the facility is implemented.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-01 Iain Sandoe <iain@sandoe.co.uk>
PR target/90698
* gcc.target/i386/pr49866.c: XFAIL for Darwin.
* gcc.target/i386/pr63538.c: Likewise.
* gcc.target/i386/pr61599-1.c: Skip for Darwin.
Iain Sandoe [Sun, 4 Aug 2019 11:01:41 +0000 (11:01 +0000)]
Darwin, X86, backport fixes for three PIE tests.
Darwin requires PIC code in order to support PIE, amend the test scan-asms
to match this.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-05-26 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/pr39013-1.c: Adjust scan-asms for PIE to
account for PIC code on Darwin.
* gcc.target/i386/pr39013-2.c: Likewise.
* gcc.target/i386/pr64317.c: Likewise.
Iain Sandoe [Sun, 4 Aug 2019 10:40:16 +0000 (10:40 +0000)]
Darwin, X86, testsuite, backport matching fixes.
Some of the i386.exp tests fail on Darwin (and at least one passes
incorrectly on Linux) because their scan-asm match strings are too
general. In some cases the strings also match instances in the .file
and size directives or in comment output. This patch makes the match
strings more specific.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-05-24 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/pconfig-1.c: Scan for the string in the generated
code, not in comments or miscellaneous directives.
* gcc.target/i386/pr18041-1.c: Likewise.
* gcc.target/i386/pr18041-2.c: Likewise.
* gcc.target/i386/wbinvd-1.c: Likewise.
* gcc.target/i386/wbnoinvd-1.c: Likewise.
* gcc.target/i386/pr66819-3.c: Specifically, check that there is no
call to "bar".
* gcc.target/i386/pr66819-4.c: Likewise.
* gcc.target/i386/pr82662.c
* gcc.target/i386/ptwrite2.c: Make the checks look for the specific
destination register, don't try the m32 test on m64 targets.
Iain Sandoe [Sun, 4 Aug 2019 09:53:37 +0000 (09:53 +0000)]
Darwin, X86, backport fix for PR58321.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-05-20 Iain Sandoe <iain@sandoe.co.uk>
PR testsuite/58321
* gcc.target/i386/memcpy-strategy-3.c: Adjust count for Darwin and
add a comment as to the reason for the difference.
* gcc.target/i386/memset-strategy-1.c: Likewise.
Iain Sandoe [Sun, 4 Aug 2019 09:49:27 +0000 (09:49 +0000)]
Darwin, ppc, backport fixes to exclude Darwin from VSX, power8 & 9.
This fixes a large number of test fails when we build PPC Darwin
with an LLVM-based assembler (that recognises the insns).
The patch augments the tests for feature support for VSX,
power8 and power9 to exclude Darwin even if the assembler can
handle the instructions.
2019-08-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-05-15 Iain Sandoe <iain@sandoe.co.uk>
* lib/target-supports.exp
(check_effective_target_powerpc_p8vector_ok): No support for Darwin.
(check_effective_target_powerpc_p9vector_ok): Likewise.
(check_effective_target_powerpc_float128_sw_ok): Likewise.
(check_effective_target_powerpc_float128_hw_ok): Likewise.
(check_effective_target_powerpc_vsx_ok): Likewise.
* gcc.target/powerpc/bfp/bfp.exp: Don't try to run this for Darwin.
* gcc.target/powerpc/dfp/dfp.exp: Likewise.
This is about 32/64b host and multilib support across the range of Darwin
systems.
Prior to Darwin8 (OS X 10.4), the toolchains support only PowerPC and only 32b.
On Darwin8 it is possible to target a 64b multilib, but with support limited
to a few of the main libraries on the system (not a recommended configuration).
From Darwin9 to Darwin17 (OSX 10.5 to 10.13) it is possible to have either
32 or 64b hosted toolchains, with support for a 64 or 32b multilib respectively.
On Darwin9 the kernel is 32b, but with support for 64b executables, so it's
conventional to build a 32b host toolchain supporting a 64b multilib. However
this is not enforced (merely a convention).
There is also some platform hardware supporting Darwin10/11 which is only 32b
and for which the same situation applies. However, from Darwin10 to Darwin17,
the majority of platform hardware supports a 64b kernel and it's conventional
to build a 64b host toolchain with support for a 32b multilib.
On/from Darwin18 (OS X 10.14), the development headers (in the SDK) no longer
expose the interfaces for the 32b multilib support (although sufficient runtime
support remains installed that the testsuite can be run for a 32b multilib).
The PR is raised against this latter situation since the absence of exposed
interfaces causes a 'default' bootstrap fail regardless of the availability of
the runtimes. Given the number of permutations, I felt it warranted a general
solution, especially since the current scheme of target headers and t-make
fragments has become somewhat messy.
The changes here enforce the single 32b PowerPC multilib for Darwin < 8 and the
single X86 64b multilib for Darwin >= 18. This means that there is no longer
any need to configure Darwin18+ '--disable-multilib', but also that if you want
to use the ability to continue to test the compiler's 32b multilib there, you
need to make a configuration targeting an earlier OS version (and using the
SDK from that).
2019-08-03 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline
2019-07-24 Iain Sandoe <iain@sandoe.co.uk>
PR bootstrap/87030
* config/i386/darwin.h (REAL_LIBGCC_SPEC): Revert change from r273749.
PR bootstrap/87030
* config/i386/darwin.h (REAL_LIBGCC_SPEC): Move from here...
* config/i386/darwin32-biarch.h .. to here.
* config/i386/darwin64-biarch.h: Adjust comments.
* config/rs6000/darwin32-biarch.h: Likewise.
* config/rs6000/darwin64-biarch.h: Likewise.
* config.gcc: Missed commit from r273746
(*-*-darwin*): Don't include CPU t-darwin here.
(i[34567]86-*-darwin*): Adjust to use biarch files. Produce
an error message if i686-darwin configuration is attempted for
Darwin >= 18.
Backport from mainline
2019-07-23 Iain Sandoe <iain@sandoe.co.uk>
PR bootstrap/87030
* config.gcc (*-*-darwin*): Don't include CPU t-darwin here.
(i[34567]86-*-darwin*): Adjust to use biarch files. Produce
an error message if i686-darwin configuration is attempted for
Darwin >= 18.
(x86_64-*-darwin*): Switch to single multilib for Darwin >= 18.
(powerpc-*-darwin*): Use biarch files where needed.
(powerpc64-*-darwin*): Likewise.
* config/i386/darwin.h (REAL_LIBGCC_SPEC): Move to new biarch file.
(DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
arch case.
* config/i386/darwin32-biarch.h: New.
* config/i386/darwin64.h: Rename.
* gcc/config/i386/darwin64-biarch.h: To this.
* config/i386/t-darwin: Rename.
* gcc/config/i386/t-darwin32-biarch: To this.
* config/i386/t-darwin64: Rename.
* gcc/config/i386/t-darwin64-biarch: To this.
* config/rs6000/darwin32-biarch.h: New.
* config/rs6000/darwin64.h: Rename.
* config/rs6000/darwin64-biarch.h: To this.
(DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
arch case.
* config/rs6000/t-darwin8: Rename.
* config/rs6000/t-darwin32-biarch: To this.
* config/rs6000/t-darwin64 Rename.
* config/rs6000/t-darwin64-biarch: To this.
Iain Sandoe [Sat, 3 Aug 2019 20:05:21 +0000 (20:05 +0000)]
Darwin, backport codegen fix.
Darwin only supports "static" code in the kernel and
kernel extensions. This check tries to prevent the case
that cascaded PIC/PIE options on the command line cause
non-pic to be selected.
2019-08-03 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline
2019-07-07 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (darwin_override_options): Make a final check on PIC
options.
Iain Sandoe [Sat, 3 Aug 2019 19:53:51 +0000 (19:53 +0000)]
Darwin, ppc, Fix test fails that depend on installed headers.
Several port tests use headers that Darwin has not been
installing. This removes the override on the header install
thus making Darwin's set match the reset of the port.
2019-08-03 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline
2019-06-28 Iain Sandoe <iain@sandoe.co.uk>
* config.gcc (powerpc-*-darwin*, powerpc64-*-darwin*): Remove
override on extra_headers.
Iain Sandoe [Sat, 3 Aug 2019 19:36:37 +0000 (19:36 +0000)]
Darwin, ppc, backport build fix for unwinder.
When libgcc is built on Darwin, it is usually built for the earliest potential
target (Darwin8, 10.4). Build for that revision default to assuming that the
processor might be G3 (without vector ops) and there is an outlined function
used for save/restore that checks whether the processor is G3 or G4+ at run-
time. However, the unwinder itself needs to be built with the assumption of
vector usage so that the relevant outlined functions are called.
2019-08-03 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-06 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/t-darwin: Ensure that the unwinder is built with
altivec enabled.
Darwin has had long long functions for some considerable time and these are
exposed in Darwin8 and Darwin11+ headers. However, for some reason it was
elected to hide them behind __STRICT_ANSI__ and __STDC_VERSION__ on Darwin9
and Darwin10. This is a problem for G++/libstdc++ that expects the functions
to be available for strict ansi (-std=c++14, for example) and without
defining __STDC_VERSION__. The fix here follows the pattern used in
Darwin11+ headers where the functions may be explicitly hidden by defining
__DARWIN_NO_LONG_LONG.
This fixes the tr1 testsuite fails seen on Darwin9 and 10.
2019-08-03 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-21 Iain Sandoe <iain@sandoe.co.uk>
* inclhack.def: Replace the complex test using __STRICT_ANSI__ and
__STDC_VERSION__ with a test using __DARWIN_NO_LONG_LONG.
Ensure that the top level math.h uses <> to wrap included headers
rather than "".
* fixincl.x: Regenerated.
* tests/base/architecture/ppc/math.h: Update test to include the
__DARWIN_NO_LONG_LONG case.
Iain Sandoe [Sat, 3 Aug 2019 19:11:05 +0000 (19:11 +0000)]
Darwin, fixincludes - backport build fixes.
There are two issues with the Darwin14 (SDK) headers in which unguarded
advanced syntax elements causes any code including these headers to fail.
2019-08-03 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
2019-06-21 Iain Sandoe <iain@sandoe.co.uk>
* inclhack.def: Guard __has_attribute and __has_extension in
os/base.h.
Guard Apple blocks syntax in dispatch/object.h.
* fixincl.x: Regenerate.
* tests/base/dispatch/object.h: New file.
* tests/base/os/base.h: New file.