This is the mail archive of the gcc-cvs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

r242169 - in /branches/ARM/sve-branch/gcc: call...


Author: rsandifo
Date: Fri Nov 11 17:12:14 2016
New Revision: 242169

URL: https://gcc.gnu.org/viewcvs?rev=242169&root=gcc&view=rev
Log:
Add a partial_subreg_p predicate

This patch adds a partial_subreg_p predicate to go alongside
paradoxical_subreg_p.

The first two changes to cse_insn preserve the current behaviour,
but the condition seems strange.  Shouldn't we be able to continue
to cse if the inner modes of the two subregs have the same size?

The patch also preserves the existing condition in
simplify_operand_subreg, but perhaps it should be using
a df_read_modify_subreg_p-style check instead.  We don't
need to reload the inner value first if the inner value
is no bigger than a word, for example.

The use in curr_insn_transform also seemed strange.  Surely the
modes of the SET_DEST and SET_SRC will be the same?

Like the paradoxical_subreg_p patch, this one replaces
some tests that were based on GET_MODE_SIZE rather than
GET_MODE_PRECISION.  In each case the change should be
a no-op or an improvement.

Some of the places changed here are tracking the widest
access mode found for a register.  The series tries to
standardise on:

  if (partial_mode_p (widest_seen, new_mode))
    widest_seen = new_mode;

rather than:

  if (paradoxical_subreg_p (new_mode, widest_seen))
    widest_seen = new_mode;

Either would have been OK.

Modified:
    branches/ARM/sve-branch/gcc/caller-save.c
    branches/ARM/sve-branch/gcc/calls.c
    branches/ARM/sve-branch/gcc/combine.c
    branches/ARM/sve-branch/gcc/cse.c
    branches/ARM/sve-branch/gcc/cselib.c
    branches/ARM/sve-branch/gcc/df-scan.c
    branches/ARM/sve-branch/gcc/emit-rtl.c
    branches/ARM/sve-branch/gcc/expmed.c
    branches/ARM/sve-branch/gcc/function.c
    branches/ARM/sve-branch/gcc/ifcvt.c
    branches/ARM/sve-branch/gcc/ira-build.c
    branches/ARM/sve-branch/gcc/lra-coalesce.c
    branches/ARM/sve-branch/gcc/lra-constraints.c
    branches/ARM/sve-branch/gcc/lra-lives.c
    branches/ARM/sve-branch/gcc/lra.c
    branches/ARM/sve-branch/gcc/regcprop.c
    branches/ARM/sve-branch/gcc/reload.c
    branches/ARM/sve-branch/gcc/reload1.c
    branches/ARM/sve-branch/gcc/rtl.h
    branches/ARM/sve-branch/gcc/simplify-rtx.c


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]