public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/16807] New: [lno] Weird loop unrolling
@ 2004-07-28 19:56 falk at debian dot org
  2004-07-30 19:18 ` [Bug tree-optimization/16807] " cvs-commit at gcc dot gnu dot org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: falk at debian dot org @ 2004-07-28 19:56 UTC (permalink / raw)
  To: gcc-bugs

gcc version 3.5-tree-ssa-lno 20040719 (merged 20040718)

For this code:

int g (int *p, int n) {
    int r = 0, i;
    for (i = 0; i < n; ++i)
	r += p[i];
    return r;
}

with -O3 -funroll-all-loops, I get:

g:
	.frame $30,0,$26,0
	.prologue 0
	mov $31,$0
	ble $17,$L4
	lda $17,-1($17)
	mov $31,$24
$L5:
	ldl $23,0($16)
	zapnot $17,15,$3
	lda $2,1($24)
	lda $3,1($3)
	lda $24,7($2)
	lda $4,1($2)
	lda $5,2($2)
	lda $6,3($2)
	lda $7,4($2)
	lda $8,5($2)
	lda $22,6($2)
	cmpeq $2,$3,$2
	cmpeq $4,$3,$4
	cmpeq $5,$3,$5
	cmpeq $6,$3,$6
	cmpeq $7,$3,$7
	cmpeq $8,$3,$8
	cmpeq $22,$3,$22
	cmpeq $24,$3,$25
	addl $0,$23,$0
	lda $3,4($16)
	bne $2,$L4
	ldl $1,0($3)
	lda $16,28($3)
	addl $0,$1,$0
	bne $4,$L4
	ldl $1,4($3)
	addl $0,$1,$0
	bne $5,$L4
	ldl $1,8($3)
	addl $0,$1,$0
	bne $6,$L4
	ldl $1,12($3)
	addl $0,$1,$0
	bne $7,$L4
	ldl $1,16($3)
	addl $0,$1,$0
	bne $8,$L4
	ldl $1,20($3)
	addl $0,$1,$0
	bne $22,$L4
	ldl $1,24($3)
	addl $0,$1,$0
	beq $25,$L5
	.align 4
$L4:
	ret $31,($26),1
	.end g

which strikes me as an extremely weird way of unrolling a loop, and in fact
it takes twice the time as the code 3.5 generates, which is:

g:
	.frame $30,0,$26,0
	.prologue 0
	mov $17,$25
	ble $17,$L38
	lda $17,-1($17)
	cmple $25,1,$1
	ldl $0,0($16)
	lda $24,1($31)
	and $17,7,$17
	lda $23,4($16)
	bne $1,$L4
	addl $31,$17,$17
	beq $17,$L5
	cmpeq $17,1,$1
	bne $1,$L31
	cmpeq $17,2,$1
	bne $1,$L32
	cmpeq $17,3,$1
	bne $1,$L33
	cmpeq $17,4,$1
	bne $1,$L34
	cmpeq $17,5,$1
	bne $1,$L35
	cmpeq $17,6,$1
	bne $1,$L36
	ldl $1,4($16)
	lda $23,8($16)
	lda $24,2($31)
	addl $0,$1,$0
$L36:
	ldl $1,0($23)
	addl $24,1,$24
	lda $23,4($23)
	addl $0,$1,$0
$L35:
	ldl $1,0($23)
	addl $24,1,$24
	lda $23,4($23)
	addl $0,$1,$0
$L34:
	ldl $1,0($23)
	addl $24,1,$24
	lda $23,4($23)
	addl $0,$1,$0
$L33:
	ldl $1,0($23)
	addl $24,1,$24
	lda $23,4($23)
	addl $0,$1,$0
$L32:
	ldl $1,0($23)
	addl $24,1,$24
	lda $23,4($23)
	addl $0,$1,$0
$L31:
	ldl $2,0($23)
	addl $24,1,$24
	lda $23,4($23)
	cmple $25,$24,$1
	addl $0,$2,$0
	bne $1,$L4
$L5:
	ldl $1,0($23)
	ldl $8,4($23)
	addl $24,8,$24
	ldl $6,8($23)
	ldl $7,12($23)
	cmple $25,$24,$22
	ldl $4,16($23)
	ldl $5,20($23)
	addl $0,$1,$1
	ldl $2,24($23)
	ldl $3,28($23)
	lda $23,32($23)
	addl $1,$8,$1
	addl $1,$6,$1
	addl $1,$7,$1
	addl $1,$4,$1
	addl $1,$5,$1
	addl $1,$2,$1
	addl $1,$3,$0
	beq $22,$L5
$L4:
	ret $31,($26),1
$L38:
	mov $31,$0
	ret $31,($26),1
	.end g

-- 
           Summary: [lno] Weird loop unrolling
           Product: gcc
           Version: lno
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: falk at debian dot org
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: alphaev68-unknown-linux-gnu
  GCC host triplet: alphaev68-unknown-linux-gnu
GCC target triplet: alphaev68-unknown-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16807


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

* [Bug tree-optimization/16807] [lno] Weird loop unrolling
  2004-07-28 19:56 [Bug tree-optimization/16807] New: [lno] Weird loop unrolling falk at debian dot org
@ 2004-07-30 19:18 ` cvs-commit at gcc dot gnu dot org
  2004-07-30 19:20 ` rakdver at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-07-30 19:18 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-07-30 19:18 -------
Subject: Bug 16807

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	lno-branch
Changes by:	rakdver@gcc.gnu.org	2004-07-30 19:18:48

Modified files:
	gcc            : ChangeLog.lno loop-iv.c 

Log message:
	PR tree-optimization/16807
	* loop-iv.c (dump_iv_info): Dump invariants correctly.
	(iv_subreg, iv_extend): Express value of invariant purely in
	base field.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.lno.diff?cvsroot=gcc&only_with_tag=lno-branch&r1=1.1.2.242&r2=1.1.2.243
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/loop-iv.c.diff?cvsroot=gcc&only_with_tag=lno-branch&r1=1.1.4.13&r2=1.1.4.14



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16807


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

* [Bug tree-optimization/16807] [lno] Weird loop unrolling
  2004-07-28 19:56 [Bug tree-optimization/16807] New: [lno] Weird loop unrolling falk at debian dot org
  2004-07-30 19:18 ` [Bug tree-optimization/16807] " cvs-commit at gcc dot gnu dot org
@ 2004-07-30 19:20 ` rakdver at gcc dot gnu dot org
  2004-08-06  9:41 ` cvs-commit at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: rakdver at gcc dot gnu dot org @ 2004-07-30 19:20 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From rakdver at gcc dot gnu dot org  2004-07-30 19:20 -------
Fixed in lno-branch.  The problem is also present in mainline.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2004-07-30 19:20:30
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16807


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

* [Bug tree-optimization/16807] [lno] Weird loop unrolling
  2004-07-28 19:56 [Bug tree-optimization/16807] New: [lno] Weird loop unrolling falk at debian dot org
  2004-07-30 19:18 ` [Bug tree-optimization/16807] " cvs-commit at gcc dot gnu dot org
  2004-07-30 19:20 ` rakdver at gcc dot gnu dot org
@ 2004-08-06  9:41 ` cvs-commit at gcc dot gnu dot org
  2004-08-06  9:43 ` rakdver at gcc dot gnu dot org
  2004-08-25 17:03 ` pinskia at gcc dot gnu dot org
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-08-06  9:41 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-08-06 09:41 -------
Subject: Bug 16807

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	rakdver@gcc.gnu.org	2004-08-06 09:40:40

Modified files:
	gcc            : ChangeLog loop-iv.c 

Log message:
	PR tree-optimization/16807
	* loop-iv.c (dump_iv_info): Dump invariants correctly.
	(iv_subreg, iv_extend): Express value of invariant purely in
	base field.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.4818&r2=2.4819
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/loop-iv.c.diff?cvsroot=gcc&r1=2.14&r2=2.15



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16807


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

* [Bug tree-optimization/16807] [lno] Weird loop unrolling
  2004-07-28 19:56 [Bug tree-optimization/16807] New: [lno] Weird loop unrolling falk at debian dot org
                   ` (2 preceding siblings ...)
  2004-08-06  9:41 ` cvs-commit at gcc dot gnu dot org
@ 2004-08-06  9:43 ` rakdver at gcc dot gnu dot org
  2004-08-25 17:03 ` pinskia at gcc dot gnu dot org
  4 siblings, 0 replies; 6+ messages in thread
From: rakdver at gcc dot gnu dot org @ 2004-08-06  9:43 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From rakdver at gcc dot gnu dot org  2004-08-06 09:43 -------
Fixed.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16807


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

* [Bug tree-optimization/16807] [lno] Weird loop unrolling
  2004-07-28 19:56 [Bug tree-optimization/16807] New: [lno] Weird loop unrolling falk at debian dot org
                   ` (3 preceding siblings ...)
  2004-08-06  9:43 ` rakdver at gcc dot gnu dot org
@ 2004-08-25 17:03 ` pinskia at gcc dot gnu dot org
  4 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-08-25 17:03 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |3.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16807


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

end of thread, other threads:[~2004-08-25 17:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-07-28 19:56 [Bug tree-optimization/16807] New: [lno] Weird loop unrolling falk at debian dot org
2004-07-30 19:18 ` [Bug tree-optimization/16807] " cvs-commit at gcc dot gnu dot org
2004-07-30 19:20 ` rakdver at gcc dot gnu dot org
2004-08-06  9:41 ` cvs-commit at gcc dot gnu dot org
2004-08-06  9:43 ` rakdver at gcc dot gnu dot org
2004-08-25 17:03 ` pinskia at gcc dot gnu dot org

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