public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jan Hubicka <jh@suse.cz>
To: law@redhat.com
Cc: Jan Hubicka <jh@suse.cz>,
	gcc@gcc.gnu.org, rth@cygnus.com, m.hayes@elec.canterbury.ac.nz,
	matzmich@cs.tu-berlin.de, dan@cgsoftware.com
Subject: Re: df.c and partial writes/REG_EQUAL notes
Date: Thu, 25 Oct 2001 06:23:00 -0000	[thread overview]
Message-ID: <20011025152259.E29132@atrey.karlin.mff.cuni.cz> (raw)
In-Reply-To: <3257.1003952277@localhost.localdomain>

>   In message <20010925161602.C13734@atrey.karlin.mff.cuni.cz>you write:
>   > yesterday I wanted to make myself familiar with the dataflow module and
>   > write simple code to construct webs early and split each pseudo consisting
>   > of multiple webs to assist CSE and other optimizations.
> Don't bother.  SSA will do this for you in a much more sane way and will
> probably be faster and generate better code anyway.

Hmm, I understand that you may get the renaming of pseudos as side effect
of SSA/deSSA converison, but why it will be faster/generate better code?

>   > Will currently use 5 increments, but if the various copies of A are
>   > split, the CSE/combine takes care to construct multiple moves.
> Err, so what is really looks like you want to do is splitting variables
> during unrolling.  I recommend you look at Morgan/Muchnik as they discuss
> variable expansion in this context.

I did.  What I wanted is to do in general - not only for loops unrolled by gcc.
> 
> 
>   > Problem 1
>   > =========
>   > 
>   > I've run into problems with dataflow analyzis and partial writes.  For inst
>   > ance following
>   > code:
>   > 
>   > 1: (set (reg:DI x) (const_int 0))
>   > 
>   > 2: (set (subreg:SI (reg:DI x) 0) (const_int 1))
>   > 
>   > 3: (use somewhere reg:DI x)
>   > 
>   > As currently impleemnted in df.c, there will be no depdendancy between
>   > insn 1 and insn 3,
> Right.  Review the movxx section in the Machine Descriptions part of the
> manual.  Quoting:
> 
> @cindex @code{mov@var{m}} instruction pattern
> @item @samp{mov@var{m}}
> Here @var{m} stands for a two-letter machine mode name, in lower case.
> This instruction pattern moves data with that machine mode from operand
> 1 to operand 0.  For example, @samp{movsi} moves full-word data.
> 
> If operand 0 is a @code{subreg} with mode @var{m} of a register whose
> own mode is wider than @var{m}, the effect of this instruction is
> to store the specified value in the part of the register that corresponds
> to mode @var{m}.  The effect on the rest of the register is undefined.
> 
> Based on that I believe there should be no dependency since insn #2
> leaves the rest of the DI register undefined.

Then the documentation is wrong - most ports use subreg in a way that it
clobbers the specified word only.

Honza

  parent reply	other threads:[~2001-10-25  6:23 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-09-25  7:16 Jan Hubicka
2001-09-25  7:55 ` Daniel Berlin
2001-09-25  7:59   ` Jan Hubicka
2001-09-25  8:33     ` Daniel Berlin
2001-09-25  8:35       ` Jan Hubicka
2001-09-26 13:03       ` Richard Henderson
2001-09-27  6:29         ` Daniel Berlin
2001-09-27  7:13           ` Gerald Pfeifer
2001-09-27  7:28             ` Daniel Berlin
2001-09-27  7:47               ` David Edelsohn
2001-09-27  7:27           ` Jan Hubicka
2001-09-27  7:38             ` Daniel Berlin
2001-09-27  7:58               ` Jan Hubicka
2001-09-27  9:40                 ` Daniel Berlin
2001-09-27 10:27           ` Richard Henderson
2001-09-27 11:21             ` Daniel Berlin
2001-10-01 17:07             ` Mark Mitchell
2001-09-27 20:12           ` law
2001-09-28 10:49     ` Michael Matz
2001-09-29  6:38       ` Jan Hubicka
2001-10-24 12:35 ` law
2001-10-24 13:00   ` Richard Henderson
2001-10-24 13:27   ` Michael Matz
2001-10-25 11:20     ` law
2001-10-25  6:23   ` Jan Hubicka [this message]
2001-10-25  6:36     ` Daniel Berlin
2001-09-27  8:52 Richard Kenner
2001-09-27 10:20 ` Jan Hubicka
2001-09-27 15:11   ` Daniel Berlin
2001-09-27 11:41 ` Daniel Berlin
2001-09-27 11:48 Richard Kenner
2001-09-27 14:16 mike stump

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20011025152259.E29132@atrey.karlin.mff.cuni.cz \
    --to=jh@suse.cz \
    --cc=dan@cgsoftware.com \
    --cc=gcc@gcc.gnu.org \
    --cc=law@redhat.com \
    --cc=m.hayes@elec.canterbury.ac.nz \
    --cc=matzmich@cs.tu-berlin.de \
    --cc=rth@cygnus.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).