public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Corey Minyard <minyard@acm.org>
To: Richard Henderson <rth@redhat.com>
Cc: gcc@gcc.gnu.org
Subject: Re: Loop optimization bug with Ada front end on PPC (and probably Alpha)
Date: Mon, 19 Nov 2001 05:36:00 -0000	[thread overview]
Message-ID: <3C03EF09.60009@acm.org> (raw)
In-Reply-To: <20011127102856.A30042@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 1135 bytes --]

Unforunately, this causes my original problem to come back.  I'm nervous 
about this patch, too, I don't understand it at all.

The loop where the problem occurred in the regression was reversed after 
this was done, but I turned off the reversal and it had the same 
problem.  But it looks like the rest of the loop optimization code 
handles this (jumping over the first increment) situation correctly, the 
only problem occurrred in the doloop code.

I tried moving this test to doloop_modify_runtime in doloop.c and adding 
the increment to the "diff" rtx in this situation, and it works in my 
simple testcase and didn't cause the problem in the regression.  I 
haven't bootstrapped or run any tests yet, and I can't test the ia64 
case with it.  But I'll start a bootstrap now.

-Corey

Richard Henderson wrote:

>I've got a hack that appears to work -- the start label
>must be before the CONT marker.
>
>I'm nervous about this patch now, because I don't think
>we really understand the exact situation in which the
>original problem can ocurr.  But as I've as yet got no
>further failures to look at, I'll commit it anyway.
>


[-- Attachment #2: gcc-ppc4.diff --]
[-- Type: text/plain, Size: 1441 bytes --]

Index: doloop.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/doloop.c,v
retrieving revision 1.12
diff -u -p -r1.12 doloop.c
--- doloop.c	2001/11/16 02:26:38	1.12
+++ doloop.c	2001/11/27 19:45:17
@@ -546,6 +546,8 @@ doloop_modify_runtime (loop, iterations_
   rtx increment;
   int unsigned_p;
   enum rtx_code comparison_code;
+  struct loop_ivs *ivs = LOOP_IVS (loop);
+  struct iv_class *bl = REG_IV_CLASS (ivs, REGNO (loop_info->iteration_var));
 
   increment = loop_info->increment;
   initial_value = loop_info->initial_value;
@@ -595,6 +597,24 @@ doloop_modify_runtime (loop, iterations_
 			      copy_rtx (neg_inc ? initial_value : final_value),
 			      copy_rtx (neg_inc ? final_value : initial_value),
 			      NULL_RTX, unsigned_p, OPTAB_LIB_WIDEN);
+
+  if (loop->top
+      && reg_set_between_p (bl->biv->src_reg, loop->top, loop->scan_start))
+    {
+      if (loop_dump_stream)
+	fprintf (loop_dump_stream,
+		 "Loop iterations: Basic induction var skips initial incr.\n");
+      if (GET_CODE (increment) != CONST_INT)
+	{
+	  if (loop_dump_stream)
+	    fprintf (loop_dump_stream,
+		     "Loop iterations: Can't adjust with non-constant incr.\n");
+	  return 0;
+	}
+      diff = expand_simple_binop (GET_MODE (diff), PLUS,
+				  diff, GEN_INT (INTVAL (increment)),
+				  NULL_RTX, 1, OPTAB_LIB_WIDEN);
+    }
 
   if (abs_inc * loop_info->unroll_number != 1)
     {

WARNING: multiple messages have this Message-ID
From: Corey Minyard <minyard@acm.org>
To: Richard Henderson <rth@redhat.com>
Cc: gcc@gcc.gnu.org
Subject: Re: Loop optimization bug with Ada front end on PPC (and probably Alpha)
Date: Tue, 27 Nov 2001 11:51:00 -0000	[thread overview]
Message-ID: <3C03EF09.60009@acm.org> (raw)
Message-ID: <20011127115100.I8nIjeZGJErxLa2aoFWBfaFQC-49VUu_8Ubv9YJPK9w@z> (raw)
In-Reply-To: <20011127102856.A30042@redhat.com>

Unforunately, this causes my original problem to come back.  I'm nervous 
about this patch, too, I don't understand it at all.

The loop where the problem occurred in the regression was reversed after 
this was done, but I turned off the reversal and it had the same 
problem.  But it looks like the rest of the loop optimization code 
handles this (jumping over the first increment) situation correctly, the 
only problem occurrred in the doloop code.

I tried moving this test to doloop_modify_runtime in doloop.c and adding 
the increment to the "diff" rtx in this situation, and it works in my 
simple testcase and didn't cause the problem in the regression.  I 
haven't bootstrapped or run any tests yet, and I can't test the ia64 
case with it.  But I'll start a bootstrap now.

-Corey

Richard Henderson wrote:

>I've got a hack that appears to work -- the start label
>must be before the CONT marker.
>
>I'm nervous about this patch now, because I don't think
>we really understand the exact situation in which the
>original problem can ocurr.  But as I've as yet got no
>further failures to look at, I'll commit it anyway.
>

  reply	other threads:[~2001-11-27 19:51 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-11-13  5:20 Corey Minyard
2001-11-13  6:05 ` David Edelsohn
2001-11-14  8:05   ` Corey Minyard
2001-11-13  8:02 ` guerby
2001-11-13  9:48   ` Corey Minyard
2001-11-16 22:19     ` David Edelsohn
2001-11-26  7:39       ` David Edelsohn
2001-11-15  0:48 ` Richard Henderson
2001-11-15 14:19   ` Andreas Schwab
2001-11-15 16:20     ` Richard Henderson
2001-11-25 12:23       ` Richard Henderson
2001-11-18  9:18     ` Richard Henderson
2001-11-27  0:02       ` Richard Henderson
2001-11-25  8:57     ` Andreas Schwab
2001-11-15 18:02   ` Corey Minyard
2001-11-15 19:37     ` Richard Henderson
2001-11-25 15:52       ` Richard Henderson
2001-11-16  3:13     ` Richard Henderson
2001-11-16  3:42       ` Corey Minyard
2001-11-16  8:54         ` Bryce McKinlay
2001-11-26  0:47           ` Bryce McKinlay
2001-11-25 20:27         ` Corey Minyard
2001-11-17  1:33       ` Corey Minyard
2001-11-17  6:09         ` Corey Minyard
2001-11-26 10:22           ` Corey Minyard
2001-11-17 11:51         ` Richard Henderson
2001-11-17 15:20           ` Corey Minyard
2001-11-26 14:45             ` Corey Minyard
2001-11-18  5:15           ` Corey Minyard
2001-11-18  8:59             ` Richard Henderson
2001-11-19  2:58               ` Corey Minyard
2001-11-19  3:11                 ` Richard Henderson
2001-11-19  5:36                   ` Corey Minyard [this message]
2001-11-19  7:48                     ` Richard Henderson
2001-11-19  7:58                       ` Corey Minyard
2001-11-19  9:43                         ` Richard Henderson
2001-11-19 12:44                           ` Corey Minyard
2001-11-19 13:53                             ` Richard Henderson
2001-11-20 11:20                               ` Corey Minyard
2001-11-27 19:57                                 ` Corey Minyard
2001-11-27 15:31                               ` Richard Henderson
2001-11-27 15:04                             ` Corey Minyard
2001-11-27 14:27                           ` Richard Henderson
2001-11-27 13:25                         ` Corey Minyard
2001-11-27 12:58                       ` Richard Henderson
2001-11-27 11:51                     ` Corey Minyard
2001-11-27 10:29                   ` Richard Henderson
2001-11-27 10:08                 ` Corey Minyard
2001-11-26 23:18               ` Richard Henderson
2001-11-26 17:15             ` Corey Minyard
2001-11-26 13:49           ` Richard Henderson
2001-11-26  8:58         ` Corey Minyard
2001-11-25 17:58       ` Richard Henderson
2001-11-25 15:06     ` Corey Minyard
2001-11-15 18:47 Richard Kenner
2001-11-25 15:13 ` Richard Kenner
2001-11-15 19:05 dewar
2001-11-25 15:20 ` dewar

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=3C03EF09.60009@acm.org \
    --to=minyard@acm.org \
    --cc=gcc@gcc.gnu.org \
    --cc=rth@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).