]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
6 years ago[arm] Rework multilib support
rearnsha [Fri, 16 Jun 2017 21:06:14 +0000 (21:06 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249305 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Rework multlib builds for symbianelf
rearnsha [Fri, 16 Jun 2017 21:06:07 +0000 (21:06 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249304 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] reset all multilib variables
rearnsha [Fri, 16 Jun 2017 21:06:01 +0000 (21:06 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249303 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Ensure all multilib variables are reset
rearnsha [Fri, 16 Jun 2017 21:05:55 +0000 (21:05 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249302 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Update t-rtems for new option framework
rearnsha [Fri, 16 Jun 2017 21:05:46 +0000 (21:05 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249301 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Rewrite t-rmprofile multilib specification
rearnsha [Fri, 16 Jun 2017 21:05:35 +0000 (21:05 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249300 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Use -march=armv7-a+fp when testing hard-float
rearnsha [Fri, 16 Jun 2017 21:05:26 +0000 (21:05 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249299 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Allow explicit periods to be escaped in
rearnsha [Fri, 16 Jun 2017 21:05:08 +0000 (21:05 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249298 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Explicitly set .fpu in cmse_nonsecure_call.S
rearnsha [Fri, 16 Jun 2017 21:04:52 +0000 (21:04 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249297 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Rewrite t-aprofile using new selector methodology
rearnsha [Fri, 16 Jun 2017 21:04:41 +0000 (21:04 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249296 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Make 'auto' the default FPU selection option.
rearnsha [Fri, 16 Jun 2017 21:04:23 +0000 (21:04 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249295 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[genmultilib] Update basic multilib configuration
rearnsha [Fri, 16 Jun 2017 21:04:14 +0000 (21:04 +0000)] 
[genmultilib] Update basic multilib configuration

The standard arm-eabi configuration comes with a basic set of multilibs that
are suitable mostly for simple testing of the compiler in various
configurations.  We try to keep the number of libraries build small so
that build times do not become too onerous.

Using the new auto-fp selection code we can now cover all supported
architectures except for those with single-precision only FP units with
just 4 multilibs.  This is done with the rewrite of t-arm-elf.  Now that we
canonicalize -mcpu into suitable -march definitions we don't need to match
CPU names to architectures any more; the driver will do this for us.

I also noticed whilst writing this patch that the existing MULTILIB_DEFAULTS
setting in the compiler was causing more problems than it was worth; and
furthermore was simply wrong if the compiler is ever configured with
--with-mode, --with-float or --with-endian.  The remaining options also
pertained to pre-eabi builds and aren't interesting today either.  It
seemed best to just delete the definition entirely.

* config/arm/elf.h (MULTILIB_DEFAULTS): Delete.
* config/arm/t-arm-elf: Rewritten.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249294 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Make -mfloat-abi=softfp work when there are no
rearnsha [Fri, 16 Jun 2017 21:04:07 +0000 (21:04 +0000)] 
[arm] Make -mfloat-abi=softfp work when there are no

Before this patch series it wasn't really possible to not have an FPU;
it was always there, even if the hardware didn't really support it.
Now that we have -mfpu=auto, the concept of not having an FPU becomes
real.  Consequently, when the -mfloat-abi switch is set to softfp
doing the Right Thing is much more important.  In this case we have a
soft-float ABI, but can use FP instructions if they are available.
To support this we have to separate out TARGET_HARD_FLOAT into two
use cases: one where the instructions exist and one when they don't.
We preserve the original meaning of TARGET_HARD_FLOAT (but add an extra
check) of meaning that we are generating HW FP instructions, and add a
new macro for the special case when use of FP instructions is permitted,
but might not be available at this time (the distinction is important
because they might be enabled by an attribute during the compilation).
TARGET_SOFT_FLOAT continues to be the exact inverse of TARGET_HARD_FLOAT,
but we now define it as such.

* config/arm/arm.h (TARGET_HARD_FLOAT): Also check that we
have some floating-point instructions.
(TARGET_SOFT_FLOAT): Define as inverse of TARGET_HARD_FLOAT.
(TARGET_MAYBE_HARD_FLOAT): New macro.
* config/arm/arm-builtins.c (arm_init_builtins): Use
TARGET_MAYBE_HARD_FLOAT.
* config/arm/arm.c (arm_option_override): Use TARGET_HARD_FLOAT_ABI.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249293 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Generate a canonical form for -march
rearnsha [Fri, 16 Jun 2017 21:04:02 +0000 (21:04 +0000)] 
[arm] Generate a canonical form for -march

This patch uses the driver and some spec rewrite rules to generate a
canonicalized form of the -march= option.  We want to do this for
several reasons, all relating to making multi-lib selection sane.

1) It can remove redundant extension options to produce a minimal
list.

2) The general syntax of the option permits a plethora of features,
these are permitted in any order.  Canonicalization ensures that there
is a single ordering of the options that are needed.

3) It can use additional options to remove extensions that aren't
relevant, such as removing all features that relate to the FPU when
use of that is disabled.

Once we have this information in a sensible form the multilib rules
can be vastly simplified making for much more understandable Makefile
fragments.

* common/config/arm/arm-common.c: Define INCLUDE_LIST.
(configargs.h): Include it.
(arm_print_hint_for_fpu_option): New function.
(arm_parse_fpu_option): New function.
(candidate_extension): New class.
(arm_canon_for_multilib): New function.
* config/arm/arm.h (CANON_ARCH_SPEC_FUNCTION): New macro.
(EXTRA_SPEC_FUNCTIONS): Add CANON_ARCH_SPEC_FUNCTION.
(ARCH_CANONICAL_SPECS): New macro.
(DRIVER_SELF_SPECS): Add ARCH_CANONICAL_SPECS.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249292 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Force a CPU default in the config args defaults
rearnsha [Fri, 16 Jun 2017 21:03:55 +0000 (21:03 +0000)] 
[arm] Force a CPU default in the config args defaults

Currently if the user does not specify a default CPU or architecture
the compiler provieds no default values in the spec defaults.  We can
try to work from TARGET_CPU_DEFAULT but pulling that into the driver
is a bit crufty and doesn't really work well with the general
spec-processing model.  A better way is to ensure that with_cpu is
always set appropirately during configure.  To avoid problems with the
multilib fragment processing we defer this until after we have
processed any required fragments before selecting the default.

* config.gcc (arm*-*-*): Ensure both target_cpu_cname and with_cpu
are set after handling multilib fragments.  Set target_cpu_default2
from with_cpu.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249291 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Allow new extended syntax CPU and architecture
rearnsha [Fri, 16 Jun 2017 21:03:46 +0000 (21:03 +0000)] 
[arm] Allow new extended syntax CPU and architecture

This patch extends support for the new extended-style architecture
strings to configure and the target default options.  We validate any
options passed by the user to configure against the permitted
extensions for that CPU or architecture.

* config.gcc (arm*-*-fucshia*): Set target_cpu_cname to the real
cpu name.
(arm*-*-*): Set target_cpu_default2 to a quoted string.
* config/arm/parsecpu.awk (check_cpu): Validate any extension
options.
(check_arch): Likewise.
* config/arm/arm.c (arm_configure_build_target): Handle
TARGET_CPU_DEFAULT being a string constant.  Scan any feature
options in the default.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249290 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Allow CPU and architecture extensions to be
rearnsha [Fri, 16 Jun 2017 21:03:39 +0000 (21:03 +0000)] 
[arm] Allow CPU and architecture extensions to be

A follow up patch to this one will start to canonicalize options to
simplify generating multilib fragments.  This patch is enabling work
for that.  If we have extension options that duplicate other options
(done principally for back-wards compatibility purposes) we need to
ensure that just one of them will be used consistently when generating
a canonical form of the user-specified options.  We do this by
explicitly noting when an option is defined as an alias of another.

Another aspect of canonicalization is to enforce a strict order in
which the options are inspected, we do this by ensuring that no later
option examined can be a subset of an earlier option (add and remove
options are treated separtely).

It's practically impossible to check all this in parsecpu.awk since
that premits use of C macros in the ISA features list, so instead we
enforce the ordering with a selftest function in the compiler, which
is only run when self tests are enabled (it's not something that will
change every day, so this should be sufficient).

* config/arm/arm-protos.h (cpu_arch_extension): Add field to record
when an option is an alias of another.
* config/arm/parsecpu.awk (optalias): New parser token.
(gen_comm_data): Mark non-alias options as such.  Emit entries
for extension aliases.
* config/arm/arm-cpus.in (armv5e): Make vfpv2 an alias.
(armv5te, armv5tej, armv6, armv6j, armv6k, armv6z): Likewise.
(armv6kz, armv6zk, armv6t2): Likewise.
(armv7): Make vfpv3-d16 an alias.
(armv7-a): Make vfpv3-d16, neon and neon-vfpv3 aliases.  Sort in
canonical order.
(armv7ve): Make vfpv4-d16, neon-vfpv3 and neon-vfpv4 aliases.
Sort in canonical order.
(armv8-a): Sort in canonical order.
(armv8.1-a, armv8.2-a):  Likewise.
(generic-armv7-a): Make neon and neon-vfpv3 aliases.  Sort in
canonical order.
(cortex-a9): Sort in canonical order.
* config/arm/arm.c (selftests.h): Include it.
(arm_test_cpu_arch_data): New function.
(arm_run_self_tests): New function.
(TARGET_RUN_TARGET_SELFTESTS): Redefine.
(targetm): Move declaration to the end of the file.
* arm-cpu-cdata.h: Regenerated.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249289 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Use standard option parsing code for detecting
rearnsha [Fri, 16 Jun 2017 21:03:30 +0000 (21:03 +0000)] 
[arm] Use standard option parsing code for detecting

Now that the standard CPU and architecture option parsing code is
available in the driver we can use the main CPU and architecture data
tables for driving the automatic enabling of Thumb code.

Doing this requires that the driver script tell the parser whether or
not the target string is a CPU name or an architecture, but beyond
that it is just standard use of the new capabilities.

We do, however, now get some error checking if the target isn't
recognized, when previously we just ignored unknown targets and hoped
that a later pass would pick up on this.

* config/arm/arm.h (TARGET_MODE_SPECS): Add additional parameter to
call to target_mode_check describing the type of option passed.
* common/config/arm/arm-common.c (arm_arch_core_flag): Delete.
(arm_target_thumb_only): Use arm_parse_arch_option_name or
arm_parse_cpu_option_name to match parameters against list of
available targets.
* config/arm/parsecpu.awk (gen_comm_data): Don't generate
arm_arch_core_flags data structure.
* config/arm/arm-cpu_cdata.h: Regenerated.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249288 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Move cpu and architecture option name parsing
rearnsha [Fri, 16 Jun 2017 21:03:17 +0000 (21:03 +0000)] 
[arm] Move cpu and architecture option name parsing

This patch has no functional change.  The code used for parsing -mcpu,
-mtune and -march options is simply moved from arm.c arm-common.c.
The list of FPU options is also moved.  Subsequent patches will make
use of this within the driver.

Some small adjustments are needed as a consequence of moving the
definitions of the data objects to another object file, in that we
no-longer have direct access to the size of the object.

* common/config/arm/arm-common.c (arm_initialize_isa): Moved here from
config/arm/arm.c.
(arm_print_hint_for_cpu_option): Likewise.
(arm_print_hint_for_arch_option): Likewise.
(arm_parse_cpu_option_name): Likewise.
(arm_parse_arch_option_name): Likewise.
* config/arm/arm.c (arm_identify_fpu_from_isa): Use the computed number
of entries in the all_fpus list.
* config/arm/arm-protos.h (all_architectures, all_cores): Declare.
(arm_parse_cpu_option_name): Declare.
(arm_parse_arch_option_name): Declare.
(arm_parse_option_features): Declare.
(arm_intialize_isa): Declare.
* config/arm/parsecpu.awk (gen_data): Move CPU and architecture
data tables to ...
(gen_comm_data): ... here.  Make definitions non-static.
* config/arm/arm-cpu-data.h: Regenerated.
* config/arm/arm-cpu-cdata.h: Regenerated.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249287 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Split CPU, architecture and tuning data tables.
rearnsha [Fri, 16 Jun 2017 21:03:08 +0000 (21:03 +0000)] 
[arm] Split CPU, architecture and tuning data tables.

The driver really needs to handle some canonicalization of the new
-mcpu and -march options in order to make multilib selection
tractable.  This will require moving much of the logic to parse the
new options into the common code file.  However, the tuning data
definitely does not want to be there as it is very specific to the
compiler passes.  To facilitate this we need to split up the generated
configuration data into architectural and tuning related tables.

This patch starts that process, but does not yet move any code out of
the compiler backend.  Since I'm reworking all that code I took the
opportunity to also separate out the CPU data tables from the
architecture data tables.  Although they are related, there is a lot
of redundancy in the CPU options that is best handled by simply
indirecting to the architecture entry.

* config/arm/arm-protos.h (arm_build_target): Remove arch_core.
(cpu_arch_extension): New structure.
(cpu_arch_option, arch_option, cpu_option): New structures.
* config/arm/parsecpu.awk (gen_headers): Build an enumeration of
architecture types.
(gen_data): Generate new format data tables.
* config/arm/arm.c (cpu_tune): New structure.
(cpu_option, processors): Delete.
(arm_print_hint_for_core_or_arch): Delete.  Replace with ...
(arm_print_hint_for_cpu_option): ... this and ...
(arm_print_hint_for_arch_option): ... this.
(arm_parse_arch_cpu_name): Delete.  Replace with ...
(arm_parse_cpu_option_name): ... this and ...
(arm_parse_arch_option_name): ... this.
(arm_unrecognized_feature): Change type of target parameter to
cpu_arch_option.
(arm_parse_arch_cpu_features): Delete.  Replace with ...
(arm_parse_option_features): ... this.
(arm_configure_build_target): Rework to use new configuration data
tables.
(arm_print_tune_info): Rework for new configuration data tables.
* config/arm/arm-cpu-data.h: Regenerated.
* config/arm/arm-cpu.h: Regenerated.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249286 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[build] Make sbitmap code available to the driver
rearnsha [Fri, 16 Jun 2017 21:02:59 +0000 (21:02 +0000)] 
[build] Make sbitmap code available to the driver

The ARM option parsing code uses sbitmap data structures to manage
features and upcoming patches will shortly need to use these bitmaps
within the driver.  This patch moves sbitmap.o from OBJS to
OBJS-libcommon to facilitate this.

The patch has no impact on targets that don't need this functionality,
since the object is part of an archive and will only be extracted if
needed.

* Makefile.in (OBJS): Move sbitmap.o from here ...
(OBJS-libcommon): ... to here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249285 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Add default FPUs for CPUs.
rearnsha [Fri, 16 Jun 2017 21:02:52 +0000 (21:02 +0000)] 
[arm] Add default FPUs for CPUs.

This patch adds the default CPUs for each cpu and provides options for
changing the FPU variant when appropriate.

It turns out to be easier to describe removal options using general
mask operations that disable a concept rather than specific bits.
Sometimes the helper definitions for enabling a feature are not excat
duals when it comes to disabling them - for example, +simd forcibly
turns on double-precision capabilities in the FPU, but disabling just
simd (+nosimd) should not forcibly disable that.

* config/arm/arm-isa.h (ISA_ALL_FPU_INTERNAL): Renamed from ISA_ALL_FPU.
(ISA_ALL_CRYPTO): New macro.
(ISA_ALL_SIMD): New macro
(ISA_ALL_FP): New macro.
* config/arm/arm.c (fpu_bitlist): Update initializer.
* config/arm/arm-cpus.in: Use new ISA_ALL macros to disable crypto,
simd or fp.
(arm9e): Add fpu.  Add option for nofp
(arm946e-s, arm966e-s, arm968e-s, arm10e, arm1020e, arm1022e): Likewise.
(arm926ej-s, arm1026ej-s): Likewise.
(generic-armv7-a): Add fpu.  Add options for simd, vfpv3, vfpv3-d16,
vfpv3-fp16, vfpv3-d16-fp16, vfpv4, vfpv4-d16, neon, neon-vfp3,
neon-fp16, neon-vfpv4, nofp and nosimd.
(cortex-a5, cortex-a7): Add fpu.  Add options for nosimd and nofp.
(cortex-a8): Add fpu.  Add option for nofp.
(cortex-a9): Add fpu.  Add options for nosimd and nofp.
(cortex-a12, cortex-a15, cortex-a17): Add fpu.  Add option for nofp.
(cortex-r4f): Add fpu.
(cortex-r5): Add fpu.  Add options for nofp.dp and nofp.
(cortex-r7): Use idiv option from architecture.  Add fpu.  Add option
for nofp.
(cortex-r8): Likewise.
(cortex-m4): Add fpu.  Add option for nofp.
(cortex-a15.cortex-a7): Add fpu.  Add option for nofp.
(cortex-a17.cortex-a7): Likewise.
(cortex-a32): Add fpu.  Add options for crypto and nofp.
(cortex-a35, cortex-a53): Likewise.
(cortex-a57): Add fpu.  Add option for crypto.
(cortex-a72, cortex-a73): Likewise.
(exynos-m1): Likewise.
(cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise.
(cortex-a73.cortex-a35, cortex-a73.cortex-a53): Likewise.
(cortex-m33): Add fpu.  Add option for nofp.
* config/arm/arm-cpu-cdata.h: Regenerated
* config/arm/arm-cpu-data.h: Regenerated.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249284 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Add architectural options
rearnsha [Fri, 16 Jun 2017 21:02:19 +0000 (21:02 +0000)] 
[arm] Add architectural options

This patch adds the currently supported architecture options to the
individual architectures.  For floating point and SIMD we only permit
variants that the relevant versions of the architecture permit.  We also
add short-hand versions (+fp, +simd, etc) that allows the user to
describe using floating point without having to know the precise version
of the floating point sub-architecture that that architecture requires.

In a small number of cases we need to provide more precise versions of the
floating point architecture.  In those cases we permit traditional -mfpu
style names in the architecture description.

* arm-cpus.in (armv5e): Add options fp, vfpv2 and nofp.
(armv5te, armv5tej): Likewise.
(armv6, armv6j, armv6k, armv6z, armv6kz, armv6zk, armv6t2): Likewise.
(armv7): Add options fp and vfpv3-d16.
(armv7-a): Add options fp, simd, vfpv3, vfpv3-d16, vfpv3-d16-fp16,
vfpv3-fp16, vfpv4, vfpv4-d16, neon, neon-vfpv3, neon-fp16, neon-vfpv4,
nofp and nosimd.
(armv7ve): Likewise.
(armv7-r): Add options fp, fp.sp, idiv, nofp and noidiv.
(armv7e-m): Add options fp, fpv5, fp.dp and nofp.
(armv8-a): Add nocrypto option.
(armv8.1-a, armv8.2-a): Likewise.
(armv8-m.main): add options fp, fp.dp and nofp.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249283 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Allow +opt on arbitrary cpu and architecture
rearnsha [Fri, 16 Jun 2017 21:02:10 +0000 (21:02 +0000)] 
[arm] Allow +opt on arbitrary cpu and architecture

This is the main patch to provide the infrastructure for adding
feature extensions to CPU and architecture specifications.  It does not,
however, add all the extensions that we intend to support (just a small
number to permit some basic testing).  Now, instead of having specific
entries in the architecture table for variants such as armv8-a+crc, the
crc extension is specified as an optional component of the armv8-a
architecture entry.  Similar control can be added to CPU option names.
In both cases the list of permitted options is controlled by the main
architecture or CPU name to prevent arbitrary cross-products of options.

* config/arm/arm-cpus.in (armv8-a): Add options crc, simd crypto and
nofp.
(armv8-a+crc): Delete.
(armv8.1-a): Add options simd, crypto and nofp.
(armv8.2-a): Add options fp16, simd, crypto and nofp.
(armv8.2-a+fp16): Delete.
(armv8-m.main): Add option dsp.
(armv8-m.main+dsp): Delete.
(cortex-a8): Add fpu.  Add nofp option.
(cortex-a9): Add fpu.  Add nofp and nosimd options.
* config/arm/parsecpu.awk (gen_data): Generate option tables and
link to main cpu and architecture data structures.
(gen_comm_data): Only put isa attributes from the main architecture
in common tables.
(option): New statement for architecture and CPU entries.
* arm.c (struct cpu_option): New structure.
(struct processors): Add entry for options.
(arm_unrecognized_feature): New function.
(arm_parse_arch_cpu_name): Ignore any characters after the first
'+' character.
(arm_parse_arch_cpu_feature): New function.
(arm_configure_build_target): Separate out any CPU and architecture
features and parse separately.  Don't error out if -mfpu=auto is
used with only an architecture string.
(arm_print_asm_arch_directives): New function.
(arm_file_start): Call it.
* config/arm/arm-cpu-cdata.h: Regenerated.
* config/arm/arm-cpu-data.h: Likewise.
* config/arm/arm-tables.opt: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249282 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Don't pass -mfpu=auto through to the assembler.
rearnsha [Fri, 16 Jun 2017 21:01:51 +0000 (21:01 +0000)] 
[arm] Don't pass -mfpu=auto through to the assembler.

The assembler doesn't understand -mfpu=auto.  The easiest way to handle this
is to surpress this value from being passed through, while still passing
through legacy values.

* config/arm/elf.h (ASM_SPEC): Only pass -mfpu through to the
assembler when it is not -mfpu=auto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249281 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Rewrite -march and -mcpu options for passing to
rearnsha [Fri, 16 Jun 2017 21:01:29 +0000 (21:01 +0000)] 
[arm] Rewrite -march and -mcpu options for passing to

The assembler does not understand all the '+' options accepted by the
compiler.  The best solution to this is to simply strip the extensions
and just pass the raw architecture or cpu name through to the
assembler.  We will use .arch and .arch_extension directives anyway to
turn on or off individual features.  We already do something similar
for big.little combinations and this just extends this principle a bit
further.  This patch also fixes a possible bug by ensuring that the
limited string copy is correctly NUL-terminated.

While messing with this code I've also taken the opportunity to clean up
the duplicate definitions of EXTRA_SPEC_FUNCTIONS by moving it outside of
the ifdef wrapper.

* config/arm/arm.h (BIG_LITTLE_SPEC): Delete macro.
(ASM_REWRITE_SPEC_FUNCTIONS): New macro.
(BIG_LITTLE_CPU_SPEC_FUNCTIONS): Delete macro.
(ASM_CPU_SPEC): Rewrite.
(MCPU_MTUNE_NATIVE_FUNCTIONS): New macro.
(EXTRA_SPEC_FUNCTIONS): Move outside of ifdef.  Use
MCPU_MTUNE_NATIVE_FUNCTIONS and ASM_REWRITE_SPEC_FUNCTIONS.  Remove
reference to BIG_LITTLE_CPU_SPEC_FUNCTIONS.
* common/config/arm/arm-common.c (arm_rewrite_selected_cpu): Ensure
copied string is NUL-terminated.  Also strip any characters prefixed
by '+'.
(arm_rewrite_selected_arch): New function.
(arm_rewrite_march): New function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249280 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[arm] Use strings for -march, -mcpu and -mtune options
rearnsha [Fri, 16 Jun 2017 21:01:22 +0000 (21:01 +0000)] 
[arm] Use strings for -march, -mcpu and -mtune options

In order to support more complex specifications for cpus and architectures
we need to move away from using enumerations to represent the set of
permitted options.  This basic change just moves the option parsing
infrastructure over to that, but changes nothing more beyond generating
a hint when the specified option does not match a known target (previously
the help option was able to print out all the permitted values, but we
can no-longer do that.

* config/arm/arm.opt (x_arm_arch_string): New TargetSave option.
(x_arm_cpu_string, x_arm_tune_string): Likewise.
(march, mcpu, mtune): Convert to string-based options.
* config/arm/arm.c (arm_print_hint_for_core_or_arch): New function.
(arm_parse_arch_cpu_name): New function.
(arm_configure_build_target): Use arm_parse_arch_cpu_name to
identify selected architecture or CPU.
(arm_option_save): New function.
(TARGET_OPTION_SAVE): Redefine.
(arm_option_restore): Restore string options.
(arm_option_print): Print string options.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249279 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR tree-optimization/80934 - bzero should be assumed not to escape pointer argument
msebor [Fri, 16 Jun 2017 20:52:03 +0000 (20:52 +0000)] 
PR tree-optimization/80934 - bzero should be assumed not to escape pointer argument
PR tree-optimization/80933 - redundant bzero/bcopy calls not eliminated

gcc/ChangeLog:

PR tree-optimization/80933
PR tree-optimization/80934
* builtins.c (fold_builtin_3): Do not handle bcmp here.
* gimple-fold.c (gimple_fold_builtin_bcmp): New function.
(gimple_fold_builtin_bcopy, gimple_fold_builtin_bzero): Likewise.
(gimple_fold_builtin): Call them.

gcc/testsuite/ChangeLog:

PR tree-optimization/80933
PR tree-optimization/80934
* gcc.dg/fold-bcopy.c: New test.
* gcc.dg/tree-ssa/ssa-dse-30.c: Likewise..
* gcc.dg/tree-ssa/alias-36.c: Likewise.
* gcc/testsuite/gcc.dg/pr79214.c: Adjust.
* gcc.dg/tree-prof/val-prof-7.c: Likewise.
* gcc.dg/Wsizeof-pointer-memaccess1.c: Likewise.
* gcc.dg/builtins-nonnull.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249278 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gimple-ssa-isolate-paths.c (isolate_path): Set edge leading to path
hubicka [Fri, 16 Jun 2017 19:02:46 +0000 (19:02 +0000)] 
* gimple-ssa-isolate-paths.c (isolate_path): Set edge leading to path
as unlikely; update profile.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249277 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * predict.c (force_edge_cold): Handle declaring edges impossible
hubicka [Fri, 16 Jun 2017 19:02:11 +0000 (19:02 +0000)] 
* predict.c (force_edge_cold): Handle declaring edges impossible
more aggresively.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249276 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update
hubicka [Fri, 16 Jun 2017 19:01:39 +0000 (19:01 +0000)] 
* tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update
profile.
(try_unroll_loop_completely): Fix reporting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249275 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * tree-ssa-tail-merge.c (replace_block_by): Fix profile updating.
hubicka [Fri, 16 Jun 2017 19:01:01 +0000 (19:01 +0000)] 
* tree-ssa-tail-merge.c (replace_block_by): Fix profile updating.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249274 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * pt.c (tsubst_baselink): Fix & clarify formatting.
nathan [Fri, 16 Jun 2017 18:38:28 +0000 (18:38 +0000)] 
* pt.c (tsubst_baselink): Fix & clarify formatting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249273 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[Patch ARM] Fix PR71778
jgreenhalgh [Fri, 16 Jun 2017 17:29:56 +0000 (17:29 +0000)] 
[Patch ARM] Fix PR71778

gcc/

PR target/71778
* config/arm/arm-builtins.c (arm_expand_builtin_args): Return TARGET
if given a non-constant argument for an intrinsic which requires a
constant.

gcc/testsuite/

PR target/71778
* gcc.target/arm/pr71778.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249272 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc.dg/tree-ssa/ssa-lim-11.c: Disable branch prediction.
hubicka [Fri, 16 Jun 2017 17:19:50 +0000 (17:19 +0000)] 
* gcc.dg/tree-ssa/ssa-lim-11.c: Disable branch prediction.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249271 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * profile.c (compare_freqs): New function.
hubicka [Fri, 16 Jun 2017 16:08:36 +0000 (16:08 +0000)] 
* profile.c (compare_freqs): New function.
(branch_prob): Sort edge list.
(find_spanning_tree): Assume that the list is priority sorted.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249270 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago gcc/cp/
nathan [Fri, 16 Jun 2017 15:42:33 +0000 (15:42 +0000)] 
gcc/cp/
* cp-tree.h (build_this_parm, cp_build_parm_decl)
build_artificial_parm): Add FN parm.
* decl.c (start_cleanup_fn): Adjust.
(build_this_parm): Add FN parm, pass it through.
(grokfndecl): Adjust parm building.
* decl2.c (cp_build_parm_decl): Add FN parm, set context.
(build_artificial_parm): Add FN parm, pass through.
(maybe_retrofit_in_chrg): Adjust parm building.
(start_static_storage_duration_function): Likwise.
* lambda.c (maybe_aadd_lambda_conv_op): Likewise.
* method.c (implicitly_declare_fn): Likewise.
* parser.c (inject_this_parameter): Likewise.

libcc1/
* libcp1plugin.cc (plugin_build_decl): Adjust parm building.
(--This line, and those below, will be ignored--

M    gcc/cp/parser.c
M    gcc/cp/ChangeLog
M    gcc/cp/decl.c
M    gcc/cp/lambda.c
M    gcc/cp/cp-tree.h
M    gcc/cp/method.c
M    gcc/cp/decl2.c
M    libcc1/libcp1plugin.cc
M    libcc1/ChangeLog

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249268 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAdd std::get_deleter overload with correct signature
redi [Fri, 16 Jun 2017 15:20:14 +0000 (15:20 +0000)] 
Add std::get_deleter overload with correct signature

* include/bits/shared_ptr.h (get_deleter): Add overload matching
standard signature.
* include/bits/shared_ptr_base.h (__shared_ptr): Declare new
get_deleter overload as a friend.
* testsuite/20_util/shared_ptr/misc/get_deleter.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249267 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Symbol tables are insert only.
nathan [Fri, 16 Jun 2017 14:54:39 +0000 (14:54 +0000)] 
Symbol tables are insert only.
* cp-tree.h (default_hash_traits <lang_identifier *>): Don't
derive from pointer_hash.  Make undeletable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249266 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * class.c (resort_type_method_vec): Avoid potential unsigned
nathan [Fri, 16 Jun 2017 14:49:35 +0000 (14:49 +0000)] 
* class.c (resort_type_method_vec): Avoid potential unsigned
overflow.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249265 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Don't defer noexcept_deferred_spec.
nathan [Fri, 16 Jun 2017 14:43:20 +0000 (14:43 +0000)] 
Don't defer noexcept_deferred_spec.
* cp-tree.h (unevaluated_noexcept_spec): Don't declare.
* decl.c (cxx_init_decl_processing): Initialize
noexcept_deferred_spec.
* except.c (unevaluated_noexcept_spec): Delete.
* class.c (deduce_noexcept_on_destructor): Use
noexcept_deferred_spec directly.
* method.c (implicitly_declare_fn): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249264 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Make keyed_classes a vector.
nathan [Fri, 16 Jun 2017 14:33:45 +0000 (14:33 +0000)] 
Make keyed_classes a vector.
* cp-tree.h (CPTI_KEYED_CLASSES, keyed_classes): Delete.
(keyed_classes): Declare as vector.
* decl.c (keyed_classes): Define.
(cxx_init_decl_processing): Allocate it.
(record_key_method_defined): Use vec_safe_push.
* class.c (finish_struct_1): Likewise.
* pt.c (instantiate_class_template_1): Likewise.
* decl2.c (c_parse_final_cleanups): Reverse iterate keyed_classes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249263 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix keyboard flub.
nathan [Fri, 16 Jun 2017 14:33:28 +0000 (14:33 +0000)] 
Fix keyboard flub.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249262 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR libstdc++/81092
jakub [Fri, 16 Jun 2017 14:29:55 +0000 (14:29 +0000)] 
PR libstdc++/81092
* config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update.
* config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update.
* config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249260 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago Make rtti lazier
nathan [Fri, 16 Jun 2017 14:16:20 +0000 (14:16 +0000)] 
Make rtti lazier
* rtti.c (enum tinfo_kind): Add TK_DERIVED_TYPES,
TK_VMI_CLASS_TYPES, TK_MAX.  Delete TK_FIXED.
(tinfo_names): New.
(typeid_ok_p): Add quotes to error messages.  Use get_tinfo_desc.
(get_tinfo_decl): Use get_tinfo_desc.
(get_pseudo_ti_init): Likewise. Adjust VMI construction.
(create_pseudo_type_info): Delete.
(get_pseudo_ti_index): Just determine the index.
(get_tinfo_desc): New.  Create all types lazily.
(create_tinfo_types): Just allocate the descriptor array.
(emit_support_tinfos): Use non-inserting type lookup.  Set builtin
location.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249258 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix std::wbuffer_convert::sync()
redi [Fri, 16 Jun 2017 13:23:42 +0000 (13:23 +0000)] 
Fix std::wbuffer_convert::sync()

* include/bits/locale_conv.h (wbuffer_convert::sync): Fix condition.
* testsuite/22_locale/conversions/buffer/2.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249255 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-16 Richard Biener <rguenther@suse.de>
rguenth [Fri, 16 Jun 2017 12:19:24 +0000 (12:19 +0000)] 
2017-06-16  Richard Biener  <rguenther@suse.de>

PR tree-optimization/81090
* passes.def (pass_record_bounds): Remove.
* tree-pass.h (make_pass_record_bounds): Likewise.
* tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds,
make_pass_record_bounds): Likewise.
* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do
not free niter estimates at the beginning but at the end.
* tree-scalar-evolution.c (scev_finalize): Free niter estimates.

* gcc.dg/graphite/pr81090.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249249 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR libstdc++/81092 add std::wstring symbols and bump library version
redi [Fri, 16 Jun 2017 11:54:59 +0000 (11:54 +0000)] 
PR libstdc++/81092 add std::wstring symbols and bump library version

PR libstdc++/81092
* acinclude.m4: Bump libtool_VERSION.
* config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update.
* config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update.
* config/abi/pre/gnu.ver: Add wstring constructor symbols to
GLIBCXX_3.4.24 version and move random_device::_M_get_entropy() symbol
to new GLIBCXX_3.4.25 version.
* doc/xml/manual/abi.xml: Document new versions.
* doc/html/*: Regenerate.
* testsuite/21_strings/basic_string/cons/char/8.cc: Use base object
constructors to ensure required symbols are exported.
* testsuite/21_strings/basic_string/cons/wchar_t/8.cc: Likewise.
* testsuite/util/testsuite_abi.cc: Add new version.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249246 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-16 Richard Biener <rguenther@suse.de>
rguenth [Fri, 16 Jun 2017 11:47:00 +0000 (11:47 +0000)] 
2017-06-16  Richard Biener  <rguenther@suse.de>

* tree-switch-conversion.c (emit_case_bit_tests): Adjust
initializer to workaround ICE in host GCC 4.8.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249245 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * ipa-inline-transform.c (update_noncloned_frequencies): Update also
hubicka [Fri, 16 Jun 2017 11:41:19 +0000 (11:41 +0000)] 
* ipa-inline-transform.c (update_noncloned_frequencies): Update also
counts.
(clone_inlined_nodes): Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249244 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-16 Janus Weil <janus@gcc.gnu.org>
janus [Fri, 16 Jun 2017 10:15:42 +0000 (10:15 +0000)] 
2017-06-16  Janus Weil  <janus@gcc.gnu.org>

PR fortran/80983
* gfortran.dg/proc_ptr_comp_51.f90: Repair test case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249243 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoUpdate prefetch tuning parameters for qdf24xx.
mkuvyrkov [Fri, 16 Jun 2017 09:31:00 +0000 (09:31 +0000)] 
Update prefetch tuning parameters for qdf24xx.

* config/aarch64/aarch64.c (qdf24xx_prefetch_tune): Update
prefetch settings, and enable prefetching by default at -O3.

Change-Id: I2f0da54a8c262f6fbd0dcfde4584141bb09f1013

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249242 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoEnable -fprefetch-loop-arrays at given optimization level.
mkuvyrkov [Fri, 16 Jun 2017 09:30:52 +0000 (09:30 +0000)] 
Enable -fprefetch-loop-arrays at given optimization level.

* config/aarch64/aarch64.c (aarch64_override_options_internal):
Set flag_prefetch_loop_arrays according to tuning data.

Change-Id: Id41411e671e0a55dc7268e0ad0a4e8ff1421c90a

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249241 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoAdd prefetch configuration to aarch64 backend.
mkuvyrkov [Fri, 16 Jun 2017 09:30:43 +0000 (09:30 +0000)] 
Add prefetch configuration to aarch64 backend.

* config/aarch64/aarch64-protos.h (struct cpu_prefetch_tune):
New tune structure.
(struct tune_params): Use cpu_prefetch_tune instead of cache_line_size.
[Unrelated to main purpose of the patch] Place the pointer field last
to enable type checking errors when tune structure are wrongly merged.
* config/aarch64/aarch64.c (generic_prefetch_tune,)
(exynosm1_prefetch_tune, qdf24xx_prefetch_tune,)
(thunderx2t99_prefetch_tune): New tune constants.
(tune_params *_tunings): Update all tunings (no functional change).
(aarch64_override_options_internal): Set PARAM_SIMULTANEOUS_PREFETCHES,
PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE, and PARAM_L2_CACHE_SIZE
from tunings structures.

Change-Id: I1ddbac1863dcf078a2e5b14dd904debc76a7da94

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249240 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR sanitizer/81094
jakub [Fri, 16 Jun 2017 09:13:28 +0000 (09:13 +0000)] 
PR sanitizer/81094
* ubsan.c (instrument_null): Add T argument, use it instead
of computing it based on IS_LHS.
(instrument_object_size): Likewise.
(pass_ubsan::execute): Adjust instrument_null and
instrument_object_size callers to pass gimple_get_lhs or
gimple_assign_rhs1 result to it.  Use instrument_null instead of
calling get_base_address and instrument_mem_ref.  Handle
aggregate call arguments for object-size sanitization.

* c-c++-common/ubsan/object-size-11.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249239 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix missing returns in libstdc++ header and tests
redi [Fri, 16 Jun 2017 08:13:37 +0000 (08:13 +0000)] 
Fix missing returns in libstdc++ header and tests

* include/bits/locale_conv.h (wbuffer_convert::_M_put): Add missing
return statement.
* testsuite/21_strings/basic_string_view/operations/copy/char/1.cc:
Return void.
* testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc:
Likewise.
* testsuite/23_containers/map/modifiers/insert_or_assign/1.cc: Add
missing return statements.
* testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc:
Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc:
Return void.
* testsuite/special_functions/14_expint/pr68397.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249238 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-16 Yury Gribov <tetra2005@gmail.com>
rguenth [Fri, 16 Jun 2017 07:16:34 +0000 (07:16 +0000)] 
2017-06-16  Yury Gribov  <tetra2005@gmail.com>

PR tree-optimization/81089
* tree-vrp.c (is_masked_range_test): Validate operands of
subexpression.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249237 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDon't use >& for I/O redirection
ro [Fri, 16 Jun 2017 06:58:06 +0000 (06:58 +0000)] 
Don't use >& for I/O redirection

* Makefile.am (check-go-tool): Don't use >& for I/O redirection.
* Makefile.in: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249236 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-16 François Dumont <fdumont@gcc.gnu.org>
fdumont [Fri, 16 Jun 2017 05:28:06 +0000 (05:28 +0000)] 
2017-06-16  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/stl_bvector.h
(__fill_bvector(_Bit_type*, unsigned int, unsigned int, bool)):
Change signature.
(std::fill(_Bit_iterator, _Bit_iterator, bool)): Adapt.
(_Bvector_impl_data): New.
(_Bvector_impl): Inherits from latter.
(_Bvector_impl(_Bit_alloc_type&&)): Delete.
(_Bvector_impl(_Bvector_impl&&)): New, default.
(_Bvector_base()): Default.
(_Bvector_base(_Bvector_base&&)): Default.
(_Bvector_base::_M_move_data(_Bvector_base&&)): New.
(vector(vector&&, const allocator_type&)): Use latter.
(vector<bool>::operator=(vector&&)): Likewise.
(vector<bool>::vector()): Default.
(vector<bool>::vector(vector&&)): Default.
(vector<bool>::assign(_InputIterator, _InputIterator)): Use
_M_assign_aux.
(vector<bool>::assign(initializer_list<bool>)): Likewise.
(vector<bool>::_M_initialize_value(bool)): New.
(vector<bool>(size_type, const bool&, const allocator_type&)): Use
latter.
(vector<bool>::_M_initialize_dispatch(_Integer, _Integer, __true_type)):
Likewise.
(vector<bool>::_M_fill_assign(size_t, bool)): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249235 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR c++/80560 - warn on undefined memory operations involving non-trivial types
msebor [Fri, 16 Jun 2017 03:48:59 +0000 (03:48 +0000)] 
PR c++/80560 - warn on undefined memory operations involving non-trivial types

gcc/c-family/ChangeLog:

PR c++/80560
* c.opt (-Wclass-memaccess): New option.

gcc/cp/ChangeLog:

PR c++/80560
* call.c (first_non_public_field, maybe_warn_class_memaccess): New
functions.
(has_trivial_copy_assign_p, has_trivial_copy_p): Ditto.
(build_cxx_call): Call maybe_warn_class_memaccess.

gcc/ChangeLog:

PR c++/80560
* dumpfile.c (dump_register): Avoid calling memset to initialize
a class with a default ctor.
* gcc.c (struct compiler): Remove const qualification.
* genattrtab.c (gen_insn_reserv): Replace memset with initialization.
* hash-table.h: Ditto.
* ipa-cp.c (allocate_and_init_ipcp_value): Replace memset with
  assignment.
* ipa-prop.c (ipa_free_edge_args_substructures): Ditto.
* omp-low.c (lower_omp_ordered_clauses): Replace memset with
default ctor.
* params.h (struct param_info): Make struct members non-const.
* tree-switch-conversion.c (emit_case_bit_tests): Replace memset
with default initialization.
* vec.h (vec_copy_construct, vec_default_construct): New helper
functions.
(vec<T>::copy, vec<T>::splice, vec<T>::reserve): Replace memcpy
with vec_copy_construct.
(vect<T>::quick_grow_cleared): Replace memset with default ctor.
(vect<T>::vec_safe_grow_cleared, vec_safe_grow_cleared): Same.
* doc/invoke.texi (-Wclass-memaccess): Document.

libcpp/ChangeLog:

PR c++/80560
* line-map.c (line_maps::~line_maps): Avoid calling htab_delete
with a null pointer.
(linemap_init): Avoid calling memset on an object of a non-trivial
type.

libitm/ChangeLog:

PR c++/80560
* beginend.cc (GTM::gtm_thread::rollback): Avoid calling memset
on an object of a non-trivial type.
(GTM::gtm_transaction_cp::commit): Use assignment instead of memcpy
to copy an object.
* method-ml.cc (orec_iterator::reinit): Avoid -Wclass-memaccess.

gcc/testsuite/ChangeLog:

PR c++/80560
* g++.dg/Wclass-memaccess.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249234 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Fri, 16 Jun 2017 00:16:24 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249233 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR ada/81105
ebotcazou [Thu, 15 Jun 2017 22:21:56 +0000 (22:21 +0000)] 
PR ada/81105
* gcc-interface/Makefile.in (x86 kfreebsd): Adjust system.ads setting.
(i[3456]86-pc-gnu): Likewise.
(x86_64 kfreebsd): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249228 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-15 Janus Weil <janus@gcc.gnu.org>
janus [Thu, 15 Jun 2017 21:17:48 +0000 (21:17 +0000)] 
2017-06-15  Janus Weil  <janus@gcc.gnu.org>

PR fortran/80983
* trans-expr.c (gfc_conv_procedure_call): Deallocate the result of
scalar allocatable procedure-pointer components.

2017-06-15  Janus Weil  <janus@gcc.gnu.org>

PR fortran/80983
* gfortran.dg/proc_ptr_comp_51.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249227 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-15 François Dumont <fdumont@gcc.gnu.org>
fdumont [Thu, 15 Jun 2017 20:32:09 +0000 (20:32 +0000)] 
2017-06-15  François Dumont  <fdumont@gcc.gnu.org>

* src/c++98/tree.cc  [!_GLIBCXX_INLINE_VERSION]
(_Rb_tree_rotate_left, _Rb_tree_rotate_right): Delete.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249226 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRevert accidental checkin.
hubicka [Thu, 15 Jun 2017 18:45:47 +0000 (18:45 +0000)] 
Revert accidental checkin.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249225 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR lto/69866
hubicka [Thu, 15 Jun 2017 18:42:10 +0000 (18:42 +0000)] 
PR lto/69866
* lto-symtab.c (lto_symtab_merge_symbols): Drop useless definitions
that resolved externally.

* gcc.dg/lto/pr69866_0.c: New test.
* gcc.dg/lto/pr69866_1.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249224 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoUpdate comment about is_leaf
ramana [Thu, 15 Jun 2017 14:17:04 +0000 (14:17 +0000)] 
Update comment about is_leaf

crtl->is_leaf has a comment above it referring to "Local Register
Allocation". However this is set by IRA and not LRA since the meaning
of Local Register Allocator in GCC has changed quite drastically since
1999 when this comment was introduced above the variable
current_function_is_leaf. From memory gcc in those days had "local"
and "global" register allocation - however all of this has changed
quite a bit drastically since.

This patch merely updates the comment as I did some head scratching
this morning about how this could be set before Local Register
Allocator especially given the comment in ira.c as below.

 /* Determine if the current function is a leaf before running IRA
     since this can impact optimizations done by the prologue and
     epilogue thus changing register elimination offsets.  */
  crtl->is_leaf = leaf_function_p ();

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249223 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix problems with the MSP430 port's handling of persistent data.
nickc [Thu, 15 Jun 2017 13:38:52 +0000 (13:38 +0000)] 
Fix problems with the MSP430 port's handling of persistent data.

PR target/78818
gcc * config/msp430/msp430.c (msp430_data_attr): Check that it's possible
for a variable to have a section before checking if the section has a
name.
Set section to.persistent if persistent attribute is set.
Warn if .persistent attribute is used on an automatic variable.

tests * gcc.target/msp430/pr78818-real.c: New template for tests.
* gcc.target/msp430/pr78818-auto.c: New test.
* gcc.target/msp430/pr78818-data-region.c: New test.
* gcc.target/msp430/pr78818-data-sec.c: New test.
* gcc.target/msp430/pr78818-auto-warn.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249222 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago PR rtl-optimization/80474
ebotcazou [Thu, 15 Jun 2017 13:24:53 +0000 (13:24 +0000)] 
PR rtl-optimization/80474
* reorg.c (update_block): Do not ignore instructions in a delay slot.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249219 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoUse pthread effective-target in testsuite
ro [Thu, 15 Jun 2017 12:18:05 +0000 (12:18 +0000)] 
Use pthread effective-target in testsuite

* testsuite: Add dg-require-effective-target pthread to -pthread
tests.
Remove explicit target lists from dg-do and dg-options.

* testsuite/30_threads/async/forced_unwind.cc: Remove explit
target list from dg-options.
* testsuite/30_threads/packaged_task/forced_unwind.cc: Likewise.

* 30_threads/shared_mutex/cons/1.cc: Likewise.
Pass -pthread for all targets.
* 30_threads/shared_mutex/try_lock/1.cc: Likewise.
* 30_threads/shared_mutex/try_lock/2.cc: Likewise.
* 30_threads/shared_mutex/unlock/1.cc: Likewise.

* testsuite/30_threads/this_thread/57060.cc: Require c++11 via
dg-require-effective-target.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249217 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago[ARM] Make gcc.target/arm/its.c more robust
thopre01 [Thu, 15 Jun 2017 09:31:04 +0000 (09:31 +0000)] 
[ARM] Make gcc.target/arm/its.c more robust

2017-06-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/testsuite/
    * gcc.target/arm/its.c: Check that no IT blocks has more than 2
    instructions in it rather than the number of IT blocks being 2.
    Transfer scan directive arm_thumb2 restriction to the whole
    testcase and restrict further to Thumb-only targets.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249215 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-15 Tamar Christina <tamar.christina@arm.com>
tnfchris [Thu, 15 Jun 2017 09:23:28 +0000 (09:23 +0000)] 
2017-06-15  Tamar Christina  <tamar.christina@arm.com>

* gcc.target/arm/sdiv_costs_1.c:
Use dg-add-options.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249214 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agors6000: Don't use REGNO in the add<mode>3 expander
segher [Thu, 15 Jun 2017 06:49:17 +0000 (06:49 +0000)] 
rs6000: Don't use REGNO in the add<mode>3 expander

The argument could be a subreg of reg instead, which means we have to
use reg_or_subregno instead of REGNO.

* config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
of REGNO.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249213 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Thu, 15 Jun 2017 00:16:20 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249212 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago compiler: avoid crash on erroneous type
ian [Wed, 14 Jun 2017 23:42:53 +0000 (23:42 +0000)] 
compiler: avoid crash on erroneous type

    If there is an error constructing the backend type, the GCC backend
    will report that the size is 1.  That will then cause construction of
    the ptrmask to crash.  Avoid that case by just generating an empty
    ptrmask.

    Noticed while compiling a broken package.  The policy I've been
    following is to not commit a test case for a compiler crash on invalid
    code, so no test case.

    Reviewed-on: https://go-review.googlesource.com/45775

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249208 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoMIPS16/GCC: Emit bounds checking as RTL in `casesi'
macro [Wed, 14 Jun 2017 23:26:40 +0000 (23:26 +0000)] 
MIPS16/GCC: Emit bounds checking as RTL in `casesi'

gcc/
* config/mips/mips.md (MIPS16_T_REGNUM): Remove constant.
(casesi): Emit bounds checking as RTL.
(casesi_internal_mips16_<mode>): Remove bounds checking.

gcc/testsuite/
* gcc.target/mips/data-sym-jump.c: Adjust for whitespace changes.
* gcc.target/mips/pr51513-1.c: New test.
* gcc.target/mips/pr51513-2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249207 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoFix libstdc++ testsuite failures with -D_GLIBCXX_USE_CXX11_ABI=0
redi [Wed, 14 Jun 2017 19:38:30 +0000 (19:38 +0000)] 
Fix libstdc++ testsuite failures with -D_GLIBCXX_USE_CXX11_ABI=0

* doc/xml/manual/test.xml: Correct instructions on running tests.
* testsuite/21_strings/basic_string/cons/char/deduction.cc: Adjust to
pass when -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS.
* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
exceptions_failbit.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/char/
exceptions_null.cc: Likewise.
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
exceptions_null.cc: Likewise.
* testsuite/27_io/ios_base/storage/2.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249206 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * Makefile.def: Add check-gotools to go check targets.
ian [Wed, 14 Jun 2017 19:36:42 +0000 (19:36 +0000)] 
* Makefile.def: Add check-gotools to go check targets.
* Makefile.in: Rebuild.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249204 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * Makefile.am (libgosrcdir): Define.
ian [Wed, 14 Jun 2017 19:26:21 +0000 (19:26 +0000)] 
* Makefile.am (libgosrcdir): Define.
(check-head, check-gccgo, check-go-tool): New targets.
(CHECK_ENV): Define.
(check): New target.
(mostlyclean-local): New target.
* Makefile.in: Rebuild.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249203 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agogcc: xtensa: allow XCHAL_* macros to be non-constant
jcmvbkbc [Wed, 14 Jun 2017 17:19:44 +0000 (17:19 +0000)] 
gcc: xtensa: allow XCHAL_* macros to be non-constant

XCHAL_* macros from the xtensa-config.h are used in a number of places
that require them to be preprocessor constants. Rewrite these places so
that non-constant XCHAL_* definitions could be used there.

2017-06-14  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
* config/xtensa/xtensa.c (xtensa_option_override): Append
MASK_CONST16 to target_flags in the absence of TARGET_L32R.
(hwloop_optimize, hwloop_fail, hwloop_pattern_reg,
 xtensa_doloop_hooks): Define unconditionally.
(xtensa_reorg_loops): Only call reorg_loops in the presence of
TARGET_LOOPS.
* config/xtensa/xtensa.h (TARGET_L32R): New definition.
(TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account
for it in xtensa_option_override.
(HARD_FRAME_POINTER_IS_FRAME_POINTER,
 HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249202 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoRecognize '-' as special -MF argument (write to stdout)
jsm28 [Wed, 14 Jun 2017 16:05:57 +0000 (16:05 +0000)] 
Recognize '-' as special -MF argument (write to stdout)

Sometimes it is useful to generate pre-processed output to a file and
the dependency information to stdout for further analysis/processing.
For example:

g++ -E -MD -fdirectives-only -o test.ii test.cxx

This will generate the dependency information to test.d (as per the
documentation). While changing this behavior is probably unwise, one
traditional (e.g., supported by -o) way to handle this is to recognize
the special '-' file name as an instruction to write to stdout:

g++ -E -MD -fdirectives-only -o test.ii -MF - test.cxx

Currently this will create a file named '-'. The included patch
changes this behavior to write to stdout.

Note also that Clang has supported this from at least version 3.5.

gcc:
2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>

* doc/cppopts.texi: Document '-' special value to -MF.

gcc/c-family:
2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>

* c-opts.c (c_common_finish): Handle '-' special value to -MF.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249201 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoImprove Cortex-A53 FP scheduler
wilco [Wed, 14 Jun 2017 14:51:46 +0000 (14:51 +0000)] 
Improve Cortex-A53 FP scheduler

The Cortex-A53 scheduler model of FMAC bypass is not quite right
for FMAC to FMAC forwarding.  Experiments also show the latencies of
FP operations are too high as well.  Rather than adding more bypasses,
adjust the latencies of FP instructions to get a better schedule on
average.  As a result SPECFP2006 is 1.1% faster.

    gcc/
* config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency.
(cortex_a53_fconst): Likewise.
(cortex_a53_fpmul): Likewise.
(cortex_a53_f_load_64): Likewise.
(cortex_a53_f_load_many): Likewise.
(cortex_a53_advsimd_alu): Likewise.
(cortex_a53_advsimd_alu_q): Likewise.
(cortex_a53_advsimd_mul): Likewise.
(cortex_a53_advsimd_mul_q): Likewise.
(fpmac bypass): Add new bypass for fpmac-fpmac case.
Add missing fmul, r2f_cvt and fconst cases.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249200 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago cmd/cgo: make _cgo_flags consistent across runs
ian [Wed, 14 Jun 2017 13:59:02 +0000 (13:59 +0000)] 
cmd/cgo: make _cgo_flags consistent across runs

    The go tool will pass -I objdir as one of the flags, where objdir is
    the temporary build directory. Remove that from _cgo_flags: we don't
    need it, and it will be different each time.

    Sort the flags to avoid the unpredictable map iteration order.

    This matters for gccgo because for a package that uses cgo, the go
    tool when building for gccgo will store the _cgo_flags file in the
    archive. That means that we want to generate identical _cgo_flags for
    every run.

    The test for this is the cmd/go testsuite, to follow in a future CL.

    Reviewed-on: https://go-review.googlesource.com/45692

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249199 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago cmd/go: gccgo: consistent results, fix vendoring
ian [Wed, 14 Jun 2017 13:56:04 +0000 (13:56 +0000)] 
cmd/go: gccgo: consistent results, fix vendoring

    Pass the -fdebug-prefix-map and -gno-record-gcc-switches compiler
    options to gccgo to generate consistent results.

    Fix the vendoring code to look for /vendor/, not just /vendor, to
    avoid being confused by something like vendor/vendor.org.

    Tested by the cmd/go tests in a followup CL.

    Reviewed-on: https://go-review.googlesource.com/45695

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249198 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago cmd/go: skip tests that do not work with gccgo
ian [Wed, 14 Jun 2017 13:53:43 +0000 (13:53 +0000)] 
cmd/go: skip tests that do not work with gccgo

    These tests fail for various reasons, most commonly because gccgo
    doesn't really have GOROOT, so things like `go build errors` fail.

    Reviewed-on: https://go-review.googlesource.com/45696

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249197 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago go/build: use GCCGOTOOLDIR to find gccgo tools
ian [Wed, 14 Jun 2017 13:50:53 +0000 (13:50 +0000)] 
go/build: use GCCGOTOOLDIR to find gccgo tools

    Add the environment variable GCCGOTOOLDIR to permit overriding the default
    directory where tools like cgo are found when building with gccgo.

    This will be used by the cmd/go tests in a future CL.

    Reviewed-on: https://go-review.googlesource.com/45694

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249196 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago internal/testenv: support testing gccgo
ian [Wed, 14 Jun 2017 13:47:28 +0000 (13:47 +0000)] 
internal/testenv: support testing gccgo

    If GO_TESTING_GOTOOLS is set in the environment, permit tests using
    gccgo to run the go tool. Like GO_BUILDER_NAME, this should not be set
    normally. But it is needed when testing the go tool itself, and will
    be set by the gotools Makefile in a future CL.

    Reviewed-on: https://go-review.googlesource.com/45693

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249195 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago compiler: remove "DIR/../" when joining relative import path
ian [Wed, 14 Jun 2017 13:37:48 +0000 (13:37 +0000)] 
compiler: remove "DIR/../" when joining relative import path

    Otherwise if DIR does not exist, the path does not work. This matches
    what the gc cmd/compile tool does, because it calls path.Join.

    The test for this is the cmd/go tests, to be added in a follow-up CL.

    Reviewed-on: https://go-review.googlesource.com/45691

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249194 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-14 Richard Biener <rguenther@suse.de>
rguenth [Wed, 14 Jun 2017 11:43:31 +0000 (11:43 +0000)] 
2017-06-14  Richard Biener  <rguenther@suse.de>

PR tree-optimization/81083
* gcc.dg/torture/pr81083.c: Add prototypes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249193 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-14 Richard Biener <rguenther@suse.de>
rguenth [Wed, 14 Jun 2017 11:40:20 +0000 (11:40 +0000)] 
2017-06-14  Richard Biener  <rguenther@suse.de>

PR middle-end/81088
* fold-const.c (split_tree): Drop TREE_OVERFLOW flag from
literal constants.
(fold_binary_loc): When associating do not treat pre-existing
TREE_OVERFLOW on literal constants as a reason to allow
TREE_OVERFLOW on associated literal constants.

* c-c++-common/ubsan/pr81088.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249192 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * cp-gimplify.c (cp_genericize_r): Turn most of the function
jakub [Wed, 14 Jun 2017 11:24:48 +0000 (11:24 +0000)] 
* cp-gimplify.c (cp_genericize_r): Turn most of the function
into a switch (TREE_CODE (stmt)) statement from long else if
sequence.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249191 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
ebotcazou [Wed, 14 Jun 2017 11:22:19 +0000 (11:22 +0000)] 
* config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
(MASK_FEATURES): New macro.
* config/sparc/sparc.c (sparc_option_override): Remove the special
handling of -mfpu and generalize it to all MASK_FEATURES switches.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249189 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
ebotcazou [Wed, 14 Jun 2017 10:40:34 +0000 (10:40 +0000)] 
* simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
a division of 0 if non-call exceptions are enabled.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249188 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoPR target/71663
naveenh [Wed, 14 Jun 2017 10:20:07 +0000 (10:20 +0000)] 
PR target/71663
gcc
* config/aarch64/aarch64.c (aarch64_expand_vector_init):
Improve vector initialization code gen for only variable case.

gcc/testsuite
* gcc.target/aarch64/vect-init-1.c: Newtestcase.
* gcc.target/aarch64/vect-init-2.c: Likewise.
* gcc.target/aarch64/vect-init-3.c: Likewise.
* gcc.target/aarch64/vect-init-4.c: Likewise.
* gcc.target/aarch64/vect-init-5.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249187 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-14 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Wed, 14 Jun 2017 09:18:57 +0000 (09:18 +0000)] 
2017-06-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58541
* g++.dg/cpp0x/constexpr-58541.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249186 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
ebotcazou [Wed, 14 Jun 2017 07:44:59 +0000 (07:44 +0000)] 
* config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249183 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago2017-06-14 Richard Biener <rguenther@suse.de>
rguenth [Wed, 14 Jun 2017 07:22:32 +0000 (07:22 +0000)] 
2017-06-14  Richard Biener  <rguenther@suse.de>

PR tree-optimization/81083
* tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
as values.

* gcc.dg/torture/pr81083.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249182 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc.dg/tree-ssa/vrp101.c: Fix scan-tree-dump regex.
jakub [Wed, 14 Jun 2017 06:29:09 +0000 (06:29 +0000)] 
* gcc.dg/tree-ssa/vrp101.c: Fix scan-tree-dump regex.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: Likewise.  Adjust comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249181 138bc75d-0d04-0410-961f-82ee72b054a4

6 years ago * gcc.dg/tree-ssa/vrp101.c: Fix scan-tree-dump regex.
jakub [Wed, 14 Jun 2017 06:25:06 +0000 (06:25 +0000)] 
* gcc.dg/tree-ssa/vrp101.c: Fix scan-tree-dump regex.
* gcc.dg/tree-ssa/builtin-sprintf-2.c: Likewise.  Adjust comment.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249180 138bc75d-0d04-0410-961f-82ee72b054a4

6 years agoDaily bump.
gccadmin [Wed, 14 Jun 2017 00:16:20 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249179 138bc75d-0d04-0410-961f-82ee72b054a4