Commit Graph

154499 Commits

Author SHA1 Message Date
Nathan Sidwell
c14c0b1568 re PR c++/81119 (-Wshadow warns on "typedef struct foo foo;")
PR c++/81119
	* name-lookup.c (update_binding): Only warn about constructors
	hidden by functions.

	PR c++/81119
	* g++.dg/warn/pr81119.C: New.

From-SVN: r249369
2017-06-19 14:13:58 +00:00
Martin Liska
a6e5212a77 Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST (PR sanitizer/80879).
2017-06-19  Martin Liska  <mliska@suse.cz>

	PR sanitizer/80879
	* gimplify.c (gimplify_switch_expr):
	Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST.
2017-06-19  Martin Liska  <mliska@suse.cz>

	PR sanitizer/80879
	* gcc.dg/asan/use-after-scope-switch-4.c: New test.

From-SVN: r249368
2017-06-19 13:27:48 +00:00
Martin Liska
1a1e0df1cd Enable -flto in all PGO stages for bootstrap-lto-{,noplugin}.mk.
2017-06-19  Martin Liska  <mliska@suse.cz>

	* bootstrap-lto-noplugin.mk: Enable -flto in all PGO stages.
	* bootstrap-lto.mk: Likewise.

From-SVN: r249367
2017-06-19 13:20:20 +00:00
Martin Liska
0d053a49b6 Introduce 4-stages profiledbootstrap to get a better profile.
2017-06-19  Martin Liska  <mliska@suse.cz>

	* doc/install.texi: Document that PGO runs in 4 stages.
2017-06-19  Martin Liska  <mliska@suse.cz>

	* Makefile.def: Define 4 stages PGO bootstrap.
	* Makefile.tpl: Define FLAGS.
	* Makefile.in: Regenerate.

From-SVN: r249366
2017-06-19 13:19:56 +00:00
Martin Liska
871cc215f7 Fix multi-versioning issues (PR ipa/80732).
2017-06-19  Martin Liska  <mliska@suse.cz>

	PR ipa/80732
	* attribs.c (make_dispatcher_decl): Do not append '.ifunc'
	to dispatcher function name.
	* multiple_target.c (replace_function_decl): New function.
	(create_dispatcher_calls): Redirect both edges and references.
2017-06-19  Martin Liska  <mliska@suse.cz>

	PR ipa/80732
	* gcc.target/i386/mvc5.c: Scan indirect_function.
	* gcc.target/i386/mvc7.c: Likewise.
	* gcc.target/i386/pr80732.c: New test.

From-SVN: r249365
2017-06-19 13:12:51 +00:00
Paolo Carlini
431abe69f1 re PR c++/66093 (g++ produces incorrect output on code with constexpr function initializing class with private fields)
2017-06-19  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/66093
	* g++.dg/cpp1y/constexpr-66093.C: New.

From-SVN: r249364
2017-06-19 10:15:57 +00:00
Rainer Orth
a06a538548 Update Solaris baselines for GCC 8.0 (PR libstdc++/81092)
* config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate.
	* config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise.
	* config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise.
	* config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise.
	* config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise.
	* config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt:
	Likewise.
	* config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise.
	* config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt:
	Likewise.

From-SVN: r249362
2017-06-19 10:06:41 +00:00
Jan Hubicka
b2c2a7e468 Fix typo
From-SVN: r249361
2017-06-19 09:50:13 +00:00
Jan Hubicka
4e9a497f07 profile-count.c (profile_count::dump): Dump quality.
* profile-count.c (profile_count::dump): Dump quality.
	(profile_count::differs_from_p): Update for unsigned val.
	* profile-count.h (profile_count_quality): New enum.
	(profile_count): Turn m_val to 62bit unsigned, add quality tracking.

From-SVN: r249360
2017-06-19 09:47:31 +00:00
Rainer Orth
fe1ae16592 Remove reference to Solaris 2.[56]
* g++.dg/other/unused1.C: Remove *-*-solaris2.[56]* from
	dg-skip-if list.

From-SVN: r249359
2017-06-19 09:29:16 +00:00
Richard Biener
adb7eaa2ba tree-ssa-loop-niter.h (estimate_numbers_of_iterations): Take struct function as arg.
2017-06-19  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop-niter.h (estimate_numbers_of_iterations): Take
	struct function as arg.
	(estimate_numbers_of_iterations): Export overload with loop arg.
	(free_numbers_of_iterations_estimates_loop): Use an overload of
	free_numbers_of_iterations_estimates instead.
	* tree-cfg.c (remove_bb): Adjust.
	* tree-cfgcleanup.c (remove_forwarder_block_with_phi): Likewise.
	* tree-parloops.c (gen_parallel_loop): Likewise.
	* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
	Likewise.
	(tree_unroll_loops_completely): Likewise.
	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
	Use an overload instead and export.
	(estimated_loop_iterations): Adjust.
	(max_loop_iterations): Likewise.
	(likely_max_loop_iterations): Likewise.
	(estimate_numbers_of_iterations): Take struct function as arg
	and adjust.
	(loop_exits_before_overflow): Adjust.
	(free_numbers_of_iterations_estimates_loop): Use an overload.
	* tree-vect-loop.c (vect_analyze_loop_form): Adjust.
	* tree-vectorizer.c (vect_free_loop_info_assumptions): Likewise.

From-SVN: r249358
2017-06-19 07:26:50 +00:00
Richard Biener
db9bbdeca4 re PR ipa/81112 (internal compiler error: tree check: expected integer_cst, have range_expr in get_len, at tree.h:5321)
2017-06-19  Richard Biener  <rguenther@suse.de>

	PR ipa/81112
	* ipa-prop.c (find_constructor_constant_at_offset): Handle
	RANGE_EXPR conservatively.

	* g++.dg/torture/pr81112.C: New testcase.

From-SVN: r249357
2017-06-19 07:17:55 +00:00
GCC Administrator
245ad722ca Daily bump.
From-SVN: r249356
2017-06-19 00:16:29 +00:00
Jan Hubicka
1815484627 * gcc.dg/lto/pr69866_0.c: This test needs alias.
From-SVN: r249352
2017-06-18 19:56:45 +00:00
Thomas Koenig
5dace4bf90 re PR fortran/52473 (CSHIFT slow - inline it?)
2017-06-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/52473
	* m4/cshift0.m4:  For arrays that are contiguous up to
	shift, implement blocked algorighm for cshift.
	* generated/cshift0_c10.c:  Regenerated.
	* generated/cshift0_c16.c:  Regenerated.
	* generated/cshift0_c4.c:  Regenerated.
	* generated/cshift0_c8.c:  Regenerated.
	* generated/cshift0_i1.c:  Regenerated.
	* generated/cshift0_i16.c:  Regenerated.
	* generated/cshift0_i2.c:  Regenerated.
	* generated/cshift0_i4.c:  Regenerated.
	* generated/cshift0_i8.c:  Regenerated.
	* generated/cshift0_r10.c:  Regenerated.
	* generated/cshift0_r16.c:  Regenerated.
	* generated/cshift0_r4.c:  Regenerated.
	* generated/cshift0_r8.c:  Regenerated.

2017-06-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/52473
	* gfortran.dg/cshift_1.f90:  New test.

From-SVN: r249350
2017-06-18 18:04:19 +00:00
H.J. Lu
82aa64e5af x32: Update baseline_symbols.txt
PR libstdc++/81092
	* config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated.

From-SVN: r249349
2017-06-18 09:43:53 -07:00
Andreas Schwab
60a51885f2 re PR libstdc++/81092 (Missing symbols for new std::wstring constructors)
PR libstdc++/81092
* config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Update.

From-SVN: r249348
2017-06-18 14:36:02 +00:00
Jason Merrill
20ef9df1cf PR c++/60063 - -Wunused-local-typedefs and templates.
* decl2.c (is_late_template_attribute): Return false for "used".

From-SVN: r249347
2017-06-18 00:55:02 -04:00
Jason Merrill
5ebcc5477a PR c++/70844 - -Wuseless-cast and inheriting constructor.
* method.c (forward_parm): Suppress warn_useless_cast.

From-SVN: r249344
2017-06-18 00:25:15 -04:00
GCC Administrator
28ab5c5ea9 Daily bump.
From-SVN: r249343
2017-06-18 00:16:40 +00:00
Rainer Orth
4f4b0ab85f Get rid of dg-skip-if etc. default args
libstdc++-v3:
	* testsuite: Remove dg-skip-if, dg-xfail-if, dg-xfail-run-if
	default args.

	libgomp:
	* testsuite/libgomp.fortran/strassen.f90: Remove dg-skip-if
	default args.
	* testsuite/libgomp.oacc-c-c++-common/vprop.c: Remove
	dg-xfail-run-if default args.

	gcc/testsuite:
	Remove dg-skip-if, dg-xfail-if, dg-xfail-run-if default args.

From-SVN: r249339
2017-06-17 15:32:28 +00:00
Jonathan Wakely
14d8a91212 PR libstdc++/80893 don't run test for C++98 modes
PR libstdc++/80893
	* testsuite/23_containers/vector/bool/80893.cc: Add { target c++11 }.

From-SVN: r249338
2017-06-17 13:11:47 +01:00
Carl Love
394a527f85 altivec.md (define_mode_attr VF_sxddp): Move to vsx.md.
gcc/ChangeLog:

2017-06-16  Carl Love  <cel@us.ibm.com>

	* config/rs6000/altivec.md (define_mode_attr VF_sxddp): Move to vsx.md.
	* config/rs6000/vsx.md (define_mode_attr VF_sxddp
	define_expand "floate<mode>",
	define_expand "floato<mode>"): Add VF_sxddp definition, replace
	undefined VFC_inst with VF_sxddp definition

From-SVN: r249337
2017-06-17 03:14:53 +00:00
Carl Love
b36a612c99 ChangeLog: Update for commit 249311 didn't get committed
2017-06-16  Carl Love  <cel@us.ibm.com>

	* gcc/ChangeLog: Update for commit 249311 didn't get committed

	* gcc/testsuite/ChangeLog: Update for commit commit 249311 didn't
	get committed.

From-SVN: r249336
2017-06-17 03:12:12 +00:00
Jason Merrill
e8cc8c92f0 fix ChangeLog
From-SVN: r249334
2017-06-16 22:48:52 -04:00
Jason Merrill
ccb7042db8 PR c++/81045 - Wrong type-dependence with auto return type.
* pt.c (type_dependent_expression_p): An undeduced auto outside the
	template isn't dependent.
	* call.c (build_over_call): Instantiate undeduced auto even in a
	template.

From-SVN: r249323
2017-06-16 22:28:25 -04:00
Jason Merrill
d4b1d43cec PR c++/80465 - ICE with generic lambda with noexcept-specifier.
* lambda.c (maybe_add_lambda_conv_op): Keep processing_template_decl
	set longer for a generic lambda.

From-SVN: r249322
2017-06-16 22:28:18 -04:00
Jason Merrill
cc14602e32 PR c++/80614 - Wrong mangling for C++17 noexcept type
* mangle.c (write_type): Put the eh spec back on the function type.

From-SVN: r249321
2017-06-16 22:28:06 -04:00
Jason Merrill
3da557ec14 PR c++/81102 - Wrong error with partial specialization.
* pt.c (unify) [TEMPLATE_PARM_INDEX]: Strip reference when comparing
	types.  Do type deduction later.

From-SVN: r249320
2017-06-16 22:27:59 -04:00
Jason Merrill
157420b4bd PR c++/80174 - ICE with partial specialization of member template.
PR c++/71747
	* pt.c (get_partial_spec_bindings): Only coerce innermost args.

From-SVN: r249319
2017-06-16 22:27:52 -04:00
Jason Merrill
3eec359d0d PR c++/80831 - ICE with -fsyntax-only.
* decl2.c (c_parse_final_cleanups): Use cgraph_node::get_create.

From-SVN: r249318
2017-06-16 22:27:45 -04:00
Jason Merrill
b126bff44d PR c++/80639 - ICE with invalid PMF initialization.
PR c++/80043 - ICE with -fpermissive
	* typeck.c (convert_for_assignment): Recurse when instantiate_type
	returns without an error.

From-SVN: r249317
2017-06-16 22:27:33 -04:00
GCC Administrator
c0a73a40e9 Daily bump.
From-SVN: r249316
2017-06-17 00:16:27 +00:00
Carl Love
be1418c7a4 rs6000-c.c (altivec_overloaded_builtins): Add definitions for vec_float, vec_float2, vec_floato, vec_floate built-ins.
gcc/ChangeLog:

2017-06-16  Carl Love  <cel@us.ibm.com>

	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
	definitions for vec_float, vec_float2, vec_floato,
	vec_floate built-ins.
	* config/rs6000/vsx.md (define_c_enum "unspec"): Add RTL code
	for instructions vsx_xvcvsxws vsx_xvcvuxwsp, float2, floato and
	floate.
	* config/rs6000/rs6000-builtin.def (FLOAT2_V2DI, FLOATE_V2DF,
	FLOATE_2DI, FLOATO_V2DF, FLOATEE_V2DI, XVCVSXWSP_V4SF,
	UNS_FLOATO_V2DI, UNS_FLOATE_V2DI): Add definitions.
	* config/altivec.md (define_insn "p8_vmrgew_<mode>",
	define_mode_attr VF_sxddp): Add V4SF type to p8_vmrgew.
	* config/rs6000/altivec.h (vec_float, vec_float2, vec_floate,
	vec_floato): Add builtin defines.
	* doc/extend.texi (vec_float, vec_float2, vec_floate, vec_floato):
	Update the built-in documentation file for the new built-in
	functions.

gcc/testsuite/ChangeLog:

2017-06-16  Carl Love  <cel@us.ibm.com>

	* gcc.target/powerpc/builtins-3-runnable.c (test_result_sp,
	main): Add runnable tests and test checker for vec_float,
	vec_float2, vec_floate and vec_floato builtins.

From-SVN: r249311
2017-06-16 22:34:28 +00:00
Richard Earnshaw
e3e266bfb1 [arm] Fix various tests
The neon-thumb2-move.c test was overriding the options that had been
detected as being necessary to enable Neon.  The result was that the
combination of the test's options and those auto-detected were not
compatible with neon leading to a test failure.  The correct fix here
is to stick with the options that dg-add-options arm_neon has worked
out.

The thumb2-slow-flash-data tests were relying (incorrectly) on a
particular FPU being enabled by default.  These tests are fixed by
adding +fp to the architecture selected.

	* gcc.target/arm/neon-thumb2-move.c (dg-options): Don't override
	the architecture options added by dg-add-options arm_neon.
	* gcc.target/arm/thumb2-slow-flash-data-2.c (dg-opitions): Add +fp
	to the architecture.
	* gcc.target/arm/thumb3-slow-flash-data-3.c (dg-opitions): Likewise.
	* gcc.target/arm/thumb4-slow-flash-data-3.c (dg-opitions): Likewise.
	* gcc.target/arm/thumb5-slow-flash-data-3.c (dg-opitions): Likewise.

From-SVN: r249310
2017-06-16 21:07:20 +00:00
Richard Earnshaw
718a3eab29 [arm] Mark -marm and -mthumb as being inverse options
-marm and -mthumb are opposites: one cancels out the other.  This patch
marks them as such so that the driver will eliminate all but the last
option on the command line.  This aids multilib selection which otherwise
can get confused if both are present.

	* config/arm/arm.opt (marm): Mark as the negative of of -mthumb.
	(mthumb): Mark as the negative of -marm.

From-SVN: r249309
2017-06-16 21:07:11 +00:00
Richard Earnshaw
f54133eaab [arm][doc] Document changes to -mcpu, -mtune and -mfpu.
This patch adds the remainder of the main documentation changes.  It
adds the changes for -mcpu, -mtune and -mfpu.  I've chosen to document
the extension options under -mcpu rather than under -mtune because,
while they are permitted with -mtune, they do not affect the behaviour
of the tuning done by the compiler.

I've also inverted the sense of the table (making the primary index
the extension name and then listing the CPU names to which it applies.
This is because the extensions are much more orthoganal in meaning
here and having a primary entry via the CPU name would lead to
enormous duplication.

Finally, it adds the relevant changes to -mfpu.  I haven't stated yet
that any setting of -mfpu other than 'auto' is deprecated, but that is
certainly the long-term goal of this patch series.

	* doc/invoke.texi (ARM Options, -mcpu): Document supported
	extension options.
	(ARM Options, -mtune): Document that this accepts the same
	extension options as -mcpu.
	(ARM Options, -mfpu): Document addition of -mfpu=auto.

From-SVN: r249308
2017-06-16 21:07:03 +00:00
Richard Earnshaw
6d2f99aae1 [arm][doc] Document new -march= syntax.
This adds documentation for the new extension options to -march= on ARM.
I tried a number of different ways of formatting the information, but this
seems the best, given what can be achieved in texinfo format.

	* doc/invoke.texi (ARM Options, -march=): Document new syntax and
	permitted extensions.

From-SVN: r249307
2017-06-16 21:06:51 +00:00
Richard Earnshaw
ffc126904b [arm] Add a few missing architecture extension options.
Reviewing the list of options for the purposes of writing the
documentation revealed that a small number of options were missing.
Mostly these are aliases for existing options, but in a couple of
cases we lacked the ability to disable certain other options.

	* config/arm/arm-cpus.in (armv7): Add extension +nofp.
	(armv7-r): Add aliases vfpv3xd and vfpv3-d16.
	(armv8-m.main): Add option +nodsp.
	* config/arm/arm-cpu-cdata.h: Regenerated.

From-SVN: r249306
2017-06-16 21:06:36 +00:00
Richard Earnshaw
be5c4e0687 [arm] Rework multilib support
It looks like the fuchsia port relied on inheriting the multilib rules from
the bare-metal port (the t-arm-elf makefile fragment), but that has now been
rewritten on the assuption that the base architecture is ARMv4t; fuchsia
has a base architecture of ARMv7-a.

To account for this, I've cloned the original t-arm-elf rules into a
new makefile fragment t-fuchsia and arranged for that to be used when
targetting this system.

	* config/arm/t-fuchsia: New file.
	* config.gcc (arm*-*-fuchsia*): Use it.

From-SVN: r249305
2017-06-16 21:06:14 +00:00
Richard Earnshaw
e61a3cdd25 [arm] Rework multlib builds for symbianelf
Symbianelf used to build multilib for armv5t with softfp, but that
architecture doesn't really support floating point instructions.  This
patch reworks the multilib configuration to use armv5te as the base
when building for floating point.

I'm not sure just how useful the symbian port is these days, so this
has only been very lightly tested (checks that libgcc builds for all
multilib variants).  Perhaps we should consider deprecating this
config?

	* config/arm/t-symbian: Rewrite for new option infrastructure.

From-SVN: r249304
2017-06-16 21:06:07 +00:00
Richard Earnshaw
99d6bcf7ae [arm] reset all multilib variables
NB.  This configuration does not build in GCC-7 and doesn't build now either.

This patch resets a couple of multlib variables which previously were
not cleared.

It almost certainly needs further work to make it use the new option
framework correctly, but since the library configurations are already
clearly wrong, it's not clear what the changes need to be.  In
particular it tries to build a hard-float library for ARM7TDMI in both
ARM and thumb modes, but ARMv4t does not support any floating-point
instructions; furthermore, GCC has never supported a hard-float thumb1
library.

	* config/arm/t-phoenix (MULTILIB_REUSE): Clear variable.
	(MULTILIB_REQUIRED): Likewise.

From-SVN: r249303
2017-06-16 21:06:01 +00:00
Richard Earnshaw
e167433768 [arm] Ensure all multilib variables are reset
No real change, but for consistency reset all multilib related variables.

	* config/arm/t-linux-eabi (MULTILIB_EXCEPTIONS): Set to empty.
	(MULTILIB_RESUE): Likewise.
	(MULTILIB_MATCHES): Likewise.
	(MULTLIB_REQUIRED): Likewise.

From-SVN: r249302
2017-06-16 21:05:55 +00:00
Richard Earnshaw
d59ee314a8 [arm] Update t-rtems for new option framework
[This patch has only been fairly lightly tested (I've built a compiler
with all the relevant multilibs and smoke-tested a few combinations to
check that the tools still produce a sensible object file).]

This patch updates the RTEMS build to use the new option framework.
It tries as far as possible to keep the existing supported options,
but there are two necessary changes and one cleanup.  I've also
restructed the file slightly to make it slightly easier (IMO) to
understand.

Necessary changes:

1: ARMv4t does not support a hard-float ABI, the earliest supported
architecture with floating-point support is ARMv5te, so I've rebased
the original fpu/hard libraries to that revision of the architecture.

2: Similarly, the earliest version of the -m profile to support
hardware floating-point is armv7e-m (not armv7-m), so the base
architecture for m-profile with FP has been correspondingly updated.

Clean-up:

1: For greater consistency I've changed the
-mcpu=cortex-m7/-mfpu=fpv5-d16/-mhard-float to
-march=armv7e-m+fp.dp/-mhard-float.  The built-in -mcpu rewrite rules
take care of mapping the existing option sets onto the architecture
string to ensure compatibility.

Since the existing rule set does not contain any MULTILIB_REUSE rules,
I have not added any here this time around, but it would be worth the
maintainers of this file considering whether adding some rules would
make their toolchain more friendly to users.

Finally, I've added lines to reset all the multilib variables at the
head of the file.  I found during testing that some definitions from
t-arm-elf were leaking through and causing unexpected behviour.

	* config/arm/t-rtems: Rewrite for new option framework.

From-SVN: r249301
2017-06-16 21:05:46 +00:00
Richard Earnshaw
420938809a [arm] Rewrite t-rmprofile multilib specification
This is the R- & M-profile equivalent of the previous A-profile
multilib rewrite.  Additionally this patch adds some top-level rules
to help find suitable multilibs for general cases when certain
libraries are not built, or when building for legacy cores.

gcc:

	* config/arm/t-aprofile (v7_a_nosimd_variants, v7_a_simd_variants)
	(v7ve_nosimd_variatns, v7ve_vfpv3_simd_variants)
	(v7ve_vfpv4_simd_variants, v8_a_nosimd_variants, v8_a_simd_variants)
	(v8_1_a_simd_variants, v8_2_a_simd_variants): Move to ...
	* config/arm/t-multilib: ... here.
	(MULTILIB_OPTIONS): Add armv7 and armv7+fp architectures.
	(MULTILIB_MATCHES): Use armv7 libraries for armv7-r.  Also use for
	armv7-a and armv8*-a when A-profile libraries have not been built.
	* config/arm/t-rmprofile: Rewrite.

gcc/testsuite:
	* gcc.target/arm/multilib.exp (rmprofile): New tests when rm-profile
	multilibs have been built.

From-SVN: r249300
2017-06-16 21:05:35 +00:00
Richard Earnshaw
c5742a17ac [arm] Use -march=armv7-a+fp when testing hard-float
Some tests explicitly test with -march=armv7-a and -mfloat-abi=hard.
However, with the new -mfpu=auto code, this architectural specifiction
lacks any floating-point capabilities.  To rectify this, change the
architecture to armv7-a+fp.

gcc/testsuite:

	* gcc.dg/pr59418.c: On ARM, change architecture to armv7-a+fp.
	* gcc.target/arm/pr51915.c: Likewise.
	* gcc.target/arm/pr52006.c: Likewise.
	* gcc.target/arm/pr53187.c: Likewise.

From-SVN: r249299
2017-06-16 21:05:26 +00:00
Richard Earnshaw
fa0b638fed [arm] Allow explicit periods to be escaped in
The MULTILIB_REUSE mapping rules are built up using periods to
represent the placement of '=' signs in the command line syntax.  This
presents a problem if the option contains an explicit period because
that is translated unconditionally.  The result is that it is not
currently possible to write a reuse rule that would match the
ARMv8-M mainline architecture:

	-march=armv8-m.main

To fix this, this patch allows an explicit period to be escaped by writing
\. and by then preserving the period into the generated multilib header.

	* genmultilib (multilib_reuse): Allow an explicit period to be escaped
	with a backslash.  Remove the backslash after substituting unescaped
	periods.
	* doc/fragments.texi (MULTILIB_REUSE): Document it.

From-SVN: r249298
2017-06-16 21:05:08 +00:00
Richard Earnshaw
f0cd49c501 [arm] Explicitly set .fpu in cmse_nonsecure_call.S
This file is missing a .fpu directive and was relying on the compiler
driver passing through a -mfpu= command line option.  When the FPU is
auto, that will not be passed through correctly, so set something
suitable within the file itself.

libgcc:
	 * config/arm/cmse_nonsecure_call.S: Explicitly set the FPU.

From-SVN: r249297
2017-06-16 21:04:52 +00:00
Richard Earnshaw
93aa40fee6 [arm] Rewrite t-aprofile using new selector methodology
Now that the default FPU is 'auto' we can finally rewrite (and
simplify) the rules for mapping compiler options to multilibs.  We
no-longer need to know the specific CPU, since the driver will
construct a suitable -march flag for us; this greatly simplifies the
overall logic.  This patch rewrites the library list for A-profile
cores.  We use various Make extention rules to simplify the logic even
further.

A couple of minor tweaks to the configure script and to the main
driver ensures that we always know the setting of -mfloat-abi and
-marm/-mthumb.  Again, this helps simplify the logic further.  The
change to arm_target_thumb_only relies on the fact that this routine
is only called if neither -marm nor -mthumb has been previously
selected or specified by the user.

A new testsuite module is added to check the libraries generated.  The
new tests are only run if the compiler is configured with the relevant
multilibs enabled.

gcc:
	* config.gcc: (arm*-*-*): When building a-profile libraries, force
	the driver to pass through the default setting of -mfloat-abi.
	* common/config/arm/arm-common.c (arm_target_thumb_only): Return -marm
	rather than NULL.
	* config/arm/t-multilib (MULTILIB_REUSE): Initialize to empty.
	(all_feat_combs): New rule.
	(MULTILIB_OPTIONS): Use explicit ARM and Thumb directories.  Rework
	default libraries.
	* config/arm/t-aprofile: Rewrite.

gcc/testsuite:
	* gcc.target/arm/multilibs.exp: New file.

From-SVN: r249296
2017-06-16 21:04:41 +00:00
Richard Earnshaw
1138961024 [arm] Make 'auto' the default FPU selection option.
Finally, we can make 'auto' the default choice for the FPU option.  It's
still possible to override this during configure, but we will eventually
deprecate that, moving to the new cpu/architecture selection mechanism.

	* config/arm/arm.h (FPUTYPE_AUTO): Define.
	* config/arm/arm.c (arm_option_override): Use FPUTYPE_AUTO if the
	fpu is not specified by the user/command-line.
	* config/arm/bpabi.h (FPUTYPE_DEFAULT): Delete.
	* config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Delete.
	* config/arm/linux-elf.h (FPUTYPE_DEFAULT): Delete.
	* config/arm/vxworks.h (FPUTYPE_DEFAULT): Delete.
	* common/config/arm/arm-common.c (arm_canon_arch_option): Use
	FPUTYPE_AUTO insted of FPUTYPE_DEFAULT.

From-SVN: r249295
2017-06-16 21:04:23 +00:00