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]

r242237 - in /branches/ARM/sve-branch/gcc: alia...


Author: rsandifo
Date: Fri Nov 11 17:25:06 2016
New Revision: 242237

URL: https://gcc.gnu.org/viewcvs?rev=242237&root=gcc&view=rev
Log:
poly_int: SUBREG_BYTE

This patch changes SUBREG_BYTE from an int to a polynomial.
Since valid SUBREG_BYTEs must be contained within the mode of the
SUBREG_REG, the required range is the same as for GET_MODE_SIZE.
At the moment GET_MODE_SIZE is an unsigned char, but later patches
bump it to unsigned short in order to handle 256-byte modes
(the maximum size allowed by SVE).  The patch therefore uses
poly_uint16 for the SUBREG_BYTE.

Using polynomial rtx fields requires a new field code ('p').
Since there are no other uses of 'p' besides SUBREG_BYTE,
the patch doesn't add an XPOLY or whatever; all uses should
go via SUBREG_BYTE instead.

The patch doesn't bother implementing 'p' support for
legacy define_peepholes, since none of the remaining ones
have subregs in their patterns.

As it happened, the rtl documentation used SUBREG as an
example of a code with mixed field types, accessed via
XEXP (x, 0) and XINT (x, 1).  Since there's no direct
replacement for XINT, and since people should never use
it even there were, the patch changes the example to use
UNSPEC instead.

The patch also changes subreg-related helper functions so
that they too take and return polynomial offsets.  This makes
the patch quite big, but it's mostly mechanical.

Modified:
    branches/ARM/sve-branch/gcc/alias.c
    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/doc/rtl.texi
    branches/ARM/sve-branch/gcc/dse.c
    branches/ARM/sve-branch/gcc/dwarf2out.c
    branches/ARM/sve-branch/gcc/emit-rtl.c
    branches/ARM/sve-branch/gcc/expmed.c
    branches/ARM/sve-branch/gcc/expr.c
    branches/ARM/sve-branch/gcc/final.c
    branches/ARM/sve-branch/gcc/function.c
    branches/ARM/sve-branch/gcc/fwprop.c
    branches/ARM/sve-branch/gcc/genattrtab.c
    branches/ARM/sve-branch/gcc/genemit.c
    branches/ARM/sve-branch/gcc/gengenrtl.c
    branches/ARM/sve-branch/gcc/gengtype.c
    branches/ARM/sve-branch/gcc/genpeep.c
    branches/ARM/sve-branch/gcc/genrecog.c
    branches/ARM/sve-branch/gcc/gensupport.c
    branches/ARM/sve-branch/gcc/ifcvt.c
    branches/ARM/sve-branch/gcc/ira-conflicts.c
    branches/ARM/sve-branch/gcc/ira-lives.c
    branches/ARM/sve-branch/gcc/ira.c
    branches/ARM/sve-branch/gcc/jump.c
    branches/ARM/sve-branch/gcc/loop-invariant.c
    branches/ARM/sve-branch/gcc/lower-subreg.c
    branches/ARM/sve-branch/gcc/lra-constraints.c
    branches/ARM/sve-branch/gcc/lra-spills.c
    branches/ARM/sve-branch/gcc/postreload.c
    branches/ARM/sve-branch/gcc/pretty-print.c
    branches/ARM/sve-branch/gcc/pretty-print.h
    branches/ARM/sve-branch/gcc/print-rtl.c
    branches/ARM/sve-branch/gcc/read-rtl.c
    branches/ARM/sve-branch/gcc/recog.c
    branches/ARM/sve-branch/gcc/regcprop.c
    branches/ARM/sve-branch/gcc/reginfo.c
    branches/ARM/sve-branch/gcc/reload.c
    branches/ARM/sve-branch/gcc/reload1.c
    branches/ARM/sve-branch/gcc/rtl.c
    branches/ARM/sve-branch/gcc/rtl.def
    branches/ARM/sve-branch/gcc/rtl.h
    branches/ARM/sve-branch/gcc/rtlanal.c
    branches/ARM/sve-branch/gcc/rtlhash.c
    branches/ARM/sve-branch/gcc/rtlhooks.c
    branches/ARM/sve-branch/gcc/simplify-rtx.c
    branches/ARM/sve-branch/gcc/valtrack.c
    branches/ARM/sve-branch/gcc/var-tracking.c


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