mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-15 09:00:29 +08:00
combine.c: Adjust toplevel comment.
* combine.c: Adjust toplevel comment. (make_extraction): Adjust head comment and move up canonicalization. From-SVN: r193141
This commit is contained in:
parent
e1066560cc
commit
6c46750c83
@ -1,4 +1,10 @@
|
||||
2012-11-04 Alexandre Oliva <aoliva@redhat.com>, Jakub Jelinek <jakub@redhat.com>
|
||||
2012-11-04 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* combine.c: Adjust toplevel comment.
|
||||
(make_extraction): Adjust head comment and move up canonicalization.
|
||||
|
||||
2012-11-04 Alexandre Oliva <aoliva@redhat.com>
|
||||
Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/54693
|
||||
* tree-ssa-loop-ivopts.c (remove_unused_ivs): Emit debug temps
|
||||
|
@ -30,8 +30,10 @@ along with GCC; see the file COPYING3. If not see
|
||||
They were set up by the preceding pass (lifetime analysis).
|
||||
|
||||
We try to combine each pair of insns joined by a logical link.
|
||||
We also try to combine triples of insns A, B and C when
|
||||
C has a link back to B and B has a link back to A.
|
||||
We also try to combine triplets of insns A, B and C when C has
|
||||
a link back to B and B has a link back to A. Likewise for a
|
||||
small number of quadruplets of insns A, B, C and D for which
|
||||
there's high likelihood of of success.
|
||||
|
||||
LOG_LINKS does not have links for use of the CC0. They don't
|
||||
need to, because the insn that sets the CC0 is always immediately
|
||||
@ -6958,14 +6960,13 @@ expand_field_assignment (const_rtx x)
|
||||
}
|
||||
|
||||
/* Return an RTX for a reference to LEN bits of INNER. If POS_RTX is nonzero,
|
||||
it is an RTX that represents a variable starting position; otherwise,
|
||||
POS is the (constant) starting bit position (counted from the LSB).
|
||||
it is an RTX that represents the (variable) starting position; otherwise,
|
||||
POS is the (constant) starting bit position. Both are counted from the LSB.
|
||||
|
||||
UNSIGNEDP is nonzero for an unsigned reference and zero for a
|
||||
signed reference.
|
||||
UNSIGNEDP is nonzero for an unsigned reference and zero for a signed one.
|
||||
|
||||
IN_DEST is nonzero if this is a reference in the destination of a
|
||||
SET. This is used when a ZERO_ or SIGN_EXTRACT isn't needed. If nonzero,
|
||||
IN_DEST is nonzero if this is a reference in the destination of a SET.
|
||||
This is used when a ZERO_ or SIGN_EXTRACT isn't needed. If nonzero,
|
||||
a STRICT_LOW_PART will be used, if zero, ZERO_EXTEND or SIGN_EXTEND will
|
||||
be used.
|
||||
|
||||
@ -6996,6 +6997,9 @@ make_extraction (enum machine_mode mode, rtx inner, HOST_WIDE_INT pos,
|
||||
rtx orig_pos_rtx = pos_rtx;
|
||||
HOST_WIDE_INT orig_pos;
|
||||
|
||||
if (pos_rtx && CONST_INT_P (pos_rtx))
|
||||
pos = INTVAL (pos_rtx), pos_rtx = 0;
|
||||
|
||||
if (GET_CODE (inner) == SUBREG && subreg_lowpart_p (inner))
|
||||
{
|
||||
/* If going from (subreg:SI (mem:QI ...)) to (mem:QI ...),
|
||||
@ -7025,9 +7029,6 @@ make_extraction (enum machine_mode mode, rtx inner, HOST_WIDE_INT pos,
|
||||
|
||||
inner_mode = GET_MODE (inner);
|
||||
|
||||
if (pos_rtx && CONST_INT_P (pos_rtx))
|
||||
pos = INTVAL (pos_rtx), pos_rtx = 0;
|
||||
|
||||
/* See if this can be done without an extraction. We never can if the
|
||||
width of the field is not the same as that of some integer mode. For
|
||||
registers, we can only avoid the extraction if the position is at the
|
||||
|
Loading…
x
Reference in New Issue
Block a user