public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/2466: Testsuite failure gcc.c-torture/execute/loop-2b.c -O2
@ 2001-10-29 10:52 neil
  0 siblings, 0 replies; 3+ messages in thread
From: neil @ 2001-10-29 10:52 UTC (permalink / raw)
  To: David.Billinghurst, bernds, gcc-bugs, gcc-prs, nobody

Synopsis: Testsuite failure gcc.c-torture/execute/loop-2b.c -O2

State-Changed-From-To: analyzed->closed
State-Changed-By: neil
State-Changed-When: Mon Oct 29 10:52:06 2001
State-Changed-Why:
    This appears to have been passing for a couple of weeks now.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=2466&database=gcc


^ permalink raw reply	[flat|nested] 3+ messages in thread

* re: c/2466 Testsuite failure gcc.c-torture/execute/loop-2b.c -O2
@ 2001-05-01 18:06 Billinghurst, David (CRTS)
  0 siblings, 0 replies; 3+ messages in thread
From: Billinghurst, David (CRTS) @ 2001-05-01 18:06 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/2466; it has been noted by GNATS.

From: "Billinghurst, David (CRTS)" <David.Billinghurst@riotinto.com>
To: "'gcc-gnats@gcc.gnu.org'" <gcc-gnats@gcc.gnu.org>,
        "'nobody@gcc.gnu.org'" <nobody@gcc.gnu.org>
Cc: "'gcc-bugs@gcc.gnu.org'" <gcc-bugs@gcc.gnu.org>
Subject: re: c/2466 Testsuite failure gcc.c-torture/execute/loop-2b.c -O2 
Date: Wed, 2 May 2001 00:58:36 -0000 

 Richard Henderson [rth@redhat.com] tells me:
 
 > That bug fails off and on depending on 
 > the optimizers that run before and how good a job they do.
 > The bug wasn't fixed for 2.95, merely obscured.  Nor was 
 > it really broken by the patch you reference in the PR.
 
 so this PR has been analysed, and I guess it can be downgraded or even
 closed.
 
 


^ permalink raw reply	[flat|nested] 3+ messages in thread

* c/2466: Testsuite failure gcc.c-torture/execute/loop-2b.c -O2
@ 2001-04-02 23:36 David.Billinghurst
  0 siblings, 0 replies; 3+ messages in thread
From: David.Billinghurst @ 2001-04-02 23:36 UTC (permalink / raw)
  To: gcc-gnats; +Cc: bernds

>Number:         2466
>Category:       c
>Synopsis:       Testsuite failure gcc.c-torture/execute/loop-2b.c -O2
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Apr 02 23:36:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     David Billinghurst
>Release:        gcc 3.0 (prerelease) & gcc 3.1 (experimental)
>Organization:
>Environment:
i686-pc-gnu-linux
i686-pc-cygwin
>Description:
Test gcc.c-torture/execute/loop-2b.c has been failing with -O2 on:
 * i?86-pc-gnu-linux
 * i?86-pc-cygwin
since mid September 2000.

A search found that cvs code from:
 * 2000-09-19 16:00 UTC passes the test, while
 * 2000-09-19 16:05 UTC fails

This patch that triggers this bug is

2000-09-19  Bernd Schmidt  <bernds@redhat.co.uk>

	* final.c (insn_current_reference_address): Use INSN_SHUID of seq
	rather than that of branch.
	(shorten_branches): Don't increment insn_current_address twice.

	Undo most of the Wed Jan 27 23:39:53 1999 patch:
	* loop.h (struct induction): Delete members derived, ix and last_use.
	(struct loop_ivs): Delete members first_increment_giv and
	last_increment_giv.
	* loop.c (verify_dominator, find_life_end, cmp_recombine_givs_stats,
	recombine_givs): Delete functions.
	(find_and_verify_loops): Don't initialize cont_dominator.
	(strength_reduce): Lose code to try to find bivs that can be
	expressed as givs of another biv, and to convert biv increments
	into givs.
	Lose loop_scan_start variable, always use loop->scan_start.
	Don't call recombine_givs.  Don't handle derived givs.
	(record_giv): Don't initialize derived and last_use fields.
	(biv_eliminiation_giv_has_0_offset): Lose code to handle derived
	givs.
	* unroll.c (derived_regs): Delete static variable.
	(unroll_loop): Don't initialize it.
	(copy_loop_body): Lose code to handle derived givs.
	(find_splittable_givs): Don't check for givs made from biv
	increments.
	Don't set derived_regs.

	Fix misapplied earlier patch:
	* config/sh/sh.md (floatsisf_ie): Reenable.  Remove explicit reference
	to fpul.
	(floatsisf2): Generate floatsisf_ie by default.
	(floatsisf_i4): Conditional on TARGET_SH4.

	(floatsisf2, floatsidf2, extendsfdf2): Also use reg_no_subreg_operand
	predicate for the expanders.


I split the test case into two files, and found the error was localized to f.c

:::::::::::: m.c :::::::::::::::
int a[2];
void f (int i);
main ()
{
  a[0] = a[1] = 0;
  f (0);
  if (a[0] != -2 || a[1] != -2)
    abort ();
  exit (0);
}
:::::::::::: f.c :::::::::::::::
int a[2];

void 
f (int i)
{
  for (; i < 2147483647; i++)
    {
      a[i] = -2;
      if (&a[i] == &a[1])
	break;
    }
}
:::::::::::::::::::::::::::::::::

Code was compiled "gcc -c -O2 -da f.c" 

File f.c.08.gcse seems OK, but f.c.09.loop is clearly wrong

Starting at insn 97, with i=0 in SI 42

    insn  97: SI 58 = SI 42 = i
    insn  99: SI 59 = 4 * SI 42 = 4*i
    insn 101: SI 57 = SI 59 + &a = &a[i]
    insn 106: SI 61 = SI 42 = i
    insn 108: SI 62 = SI 42 * 4 = 4*i
    insn 110: SI 60 = SI 62 = 4*i
    insn 112: SI 64 = &a
    insn 114: SI 63 = SI 64 - 8 = &a - 8   <-- ???????
    insn  95: SI 57 = SI 57 + 4 = &a[i] (for next i)
    insn 104: SI 60 = SI 60 + 4 = 4*i   (for next i)
    insn  45: SI 42 = SI 42 + 1 = i+1
    insn  12: compare(SI 57,SI 63) 
            = compare(&a[i],&a-8)          <- always true
    insn  13: if > 0 goto label_ref 52
    insn  27: mem(SI 60 + &a) = a[i] = -2

In summary:
 * insn 114 looks strange
 * comparison at insn 12 is always true
 * jump at insn 13 is always taken
 * a[1] is not set to -2 
 * test fails.

:::::::::::::: end of f.c.09.loop ::::::::::::::::
(insn 97 73 99 (set (reg:SI 58)
        (reg/v:SI 42)) -1 (nil)
    (nil))

(insn 99 97 101 (parallel[ 
            (set (reg:SI 59)
                (ashift:SI (reg:SI 58)
                    (const_int 2 [0x2])))
            (clobber (reg:CC 17 flags))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (mult:SI (reg/v:SI 42)
            (const_int 4 [0x4]))
        (nil)))

(insn 101 99 106 (parallel[ 
            (set (reg/f:SI 57)
                (plus:SI (reg:SI 59)
                    (symbol_ref:SI ("a"))))
            (clobber (reg:CC 17 flags))
        ] ) -1 (nil)
    (nil))

(insn 106 101 108 (set (reg:SI 61)
        (reg/v:SI 42)) -1 (nil)
    (nil))

(insn 108 106 110 (parallel[ 
            (set (reg:SI 62)
                (ashift:SI (reg:SI 61)
                    (const_int 2 [0x2])))
            (clobber (reg:CC 17 flags))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (mult:SI (reg/v:SI 42)
            (const_int 4 [0x4]))
        (nil)))

(insn 110 108 112 (set (reg:SI 60)
        (reg:SI 62)) -1 (nil)
    (nil))

(insn 112 110 114 (set (reg/f:SI 64)
        (symbol_ref:SI ("a"))) -1 (nil)
    (nil))

(insn 114 112 10 (parallel[ 
            (set (reg/f:SI 63)
                (plus:SI (reg/f:SI 64)
                    (const_int -8 [0xfffffff8])))
            (clobber (reg:CC 17 flags))
        ] ) -1 (nil)
    (nil))

(note 10 114 42 NOTE_INSN_LOOP_BEG 0)

(note 42 10 43 NOTE_INSN_LOOP_CONT 0)

(code_label 43 42 57 5 "" "" [1 uses])

(note 57 43 95 [bb 2] NOTE_INSN_BASIC_BLOCK 0)

(insn 95 57 104 (parallel[ 
            (set (reg/f:SI 57)
                (plus:SI (reg/f:SI 57)
                    (const_int 4 [0x4])))
            (clobber (reg:CC 17 flags))
        ] ) -1 (nil)
    (nil))

(insn 104 95 45 (parallel[ 
            (set (reg:SI 60)
                (plus:SI (reg:SI 60)
                    (const_int 4 [0x4])))
            (clobber (reg:CC 17 flags))
        ] ) -1 (nil)
    (nil))

(insn 45 104 76 (parallel[ 
            (set (reg/v:SI 42)
                (plus:SI (reg/v:SI 42)
                    (const_int 1 [0x1])))
            (clobber (reg:CC 17 flags))
        ] ) -1 (nil)
    (nil))

(note 76 45 12 NOTE_INSN_LOOP_VTOP 0)

(insn 12 76 13 (set (reg:CCGC 17 flags)
        (compare:CCGC (reg/f:SI 57)
            (reg/f:SI 63))) -1 (nil)
    (nil))

(jump_insn 13 12 59 (set (pc)
        (if_then_else (gt (reg:CCGC 17 flags)
                (const_int 0 [0x0]))
            (label_ref/s 52)
            (pc))) -1 (nil)
    (nil))

(note 59 13 27 [bb 3] NOTE_INSN_BASIC_BLOCK 0)

(insn 27 59 35 (set (mem/s:SI (plus:SI (reg:SI 60)
                (symbol_ref:SI ("a"))) 1)
        (const_int -2 [0xfffffffe])) -1 (nil)
    (nil))

(insn 35 27 36 (set (reg:CCZ 17 flags)
        (compare:CCZ (reg/f:SI 57)
            (const:SI (plus:SI (symbol_ref:SI ("a"))
                    (const_int 4 [0x4]))))) -1 (nil)
    (nil))

(jump_insn 36 35 51 (set (pc)
        (if_then_else (ne (reg:CCZ 17 flags)
                (const_int 0 [0x0]))
            (label_ref 43)
            (pc))) -1 (nil)
    (nil))

(note 51 36 52 NOTE_INSN_LOOP_END 0)

(code_label 52 51 61 4 "" "" [3 uses])

(note 61 52 53 [bb 4] NOTE_INSN_BASIC_BLOCK 0)

(note 53 61 0 NOTE_INSN_FUNCTION_END 0)

+++++++++++++++++++++++++++++++++++++++++
(Mr) David Billinghurst
Comalco Research Centre
PO Box 316, Thomastown, Vic, Australia, 3074
Phone:	+61 3 9469 0642
FAX:	+61 3 9462 2700
Email:	David.Billinghurst@riotinto.com


>How-To-Repeat:
gcc.c-torture/execute/loop-2b.c execute with -O2
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2001-10-29 10:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-29 10:52 c/2466: Testsuite failure gcc.c-torture/execute/loop-2b.c -O2 neil
  -- strict thread matches above, loose matches on Subject: below --
2001-05-01 18:06 c/2466 " Billinghurst, David (CRTS)
2001-04-02 23:36 c/2466: " David.Billinghurst

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).