public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: John Darrington <john@darrington.wattle.id.au>
To: Vladimir Makarov <vmakarov@redhat.com>
Cc: gcc@gcc.gnu.org
Subject: Special Memory Constraint [was Re: Indirect memory addresses vs. lra]
Date: Fri, 16 Aug 2019 11:24:00 -0000	[thread overview]
Message-ID: <20190816112357.ep7fns6skm5emoey@jocasta.intra> (raw)
In-Reply-To: <3c6c87ce-a38f-728d-e083-aa066d531790@redhat.com>

On Thu, Aug 15, 2019 at 02:23:45PM -0400, Vladimir Makarov wrote:

     > I tried this solution earlier.  But unfortunately it makes things worse.  What happens is it libgcc cannot
     > even be built -- ICEs occur on a memory from  address reg insn such as:
     > (insn 117 2981 3697 5 (set (mem/f:PSI (plus:PSI (reg:PSI 1309)
     >                  (const_int 102 [0x66])) [3 fs_129(D)->pc+0 S4 A8])
     > 		        (reg:PSI 1310)) "/home/jmd/Source/GCC2/libgcc/unwind-dw2.c":977:9 96 {movpsi}
     > 
     I see.?? Then for the insn, you could try to create a pattern
     "memory,special memory constraint".?? The special memory constraint
     should satisfy only spilled pseudo (pseudo with reg_renumber == -1).?? I
     believe lra-constraints.c can spill the pseudo and the end you will have
     mem[disp1 + r8|r9|sp] = mem[disp1+sp].

You mean something like this:

(define_special_memory_constraint "a"
 "My special memory constraint"
 (match_operand 0 "my_special_predicate")
)

(define_predicate "my_special_predicate"
		    (match_operand 0 "memory_operand")
 {
  debug_rtx (op);
  if (MEM_P (op))
  {
    op = XEXP (op, 0);
    if (GET_CODE (op) == PLUS)
      {
	op = XEXP (op, 0);
	if (REG_P (op))
	  {
	    fprintf (stderr, "Reg number is %d\n", REGNO (op));
	    if (REGNO (op) >= 0)
	      return false;
	  }
      }
  }
  return true;
})

When I use this I get lots of the following ICEs

     "internal compiler error: maximum number of generated reload insns per insn achieved (90)"

It seems logical to me that this would happen since the constraint is not going to match any
operand with resolved registers.  Thus it will continually reload.

... which makes me think I've probably misunderstood what you are saying.

J'


-- 
Avoid eavesdropping.  Send strong encrypted email.
PGP Public key ID: 1024D/2DE827B3 
fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.

  reply	other threads:[~2019-08-16 11:24 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-04 19:18 Indirect memory addresses vs. lra John Darrington
2019-08-08 16:25 ` Vladimir Makarov
2019-08-08 16:44   ` Paul Koning
2019-08-08 17:21     ` Segher Boessenkool
2019-08-08 17:25       ` Paul Koning
2019-08-08 19:09         ` Segher Boessenkool
2019-08-08 17:30       ` Paul Koning
2019-08-08 19:19         ` Segher Boessenkool
2019-08-08 19:57           ` Jeff Law
2019-08-09  8:14             ` John Darrington
2019-08-09 14:17               ` Segher Boessenkool
2019-08-09 14:23                 ` Paul Koning
2019-08-10  6:10                 ` John Darrington
2019-08-10 16:15                   ` Segher Boessenkool
2019-08-09 16:07               ` Jeff Law
2019-08-09 17:34               ` Vladimir Makarov
2019-08-10  6:06                 ` John Darrington
2019-08-10 16:12                   ` Segher Boessenkool
2019-08-12  6:47                     ` John Darrington
2019-08-12  8:40                       ` Segher Boessenkool
2019-08-12 13:35                   ` Vladimir Makarov
2019-08-15 16:29                   ` Vladimir Makarov
2019-08-15 16:38                     ` Richard Biener
2019-08-15 17:41                       ` John Darrington
2019-08-15 18:30                       ` Vladimir Makarov
2019-08-15 21:22                         ` Segher Boessenkool
2019-08-15 17:36                     ` John Darrington
2019-08-15 18:23                       ` Vladimir Makarov
2019-08-16 11:24                         ` John Darrington [this message]
2019-08-16 14:50                           ` Special Memory Constraint [was Re: Indirect memory addresses vs. lra] Vladimir Makarov
2019-08-19  7:36                             ` John Darrington
2019-08-19 13:14                               ` Vladimir Makarov
2019-08-19 15:07                                 ` Segher Boessenkool
2019-08-19 18:06                                   ` John Darrington
2019-08-20  6:56                                     ` Richard Biener
2019-08-20  7:07                                       ` John Darrington
2019-08-20  7:30                                         ` Richard Biener
2019-08-08 18:46     ` Indirect memory addresses vs. lra Vladimir Makarov

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=20190816112357.ep7fns6skm5emoey@jocasta.intra \
    --to=john@darrington.wattle.id.au \
    --cc=gcc@gcc.gnu.org \
    --cc=vmakarov@redhat.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).