This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

optimization/7120: Run once loop should *always* be unrolled


>Number:         7120
>Category:       optimization
>Synopsis:       Run once loop should *always* be unrolled
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          pessimizes-code
>Submitter-Id:   net
>Arrival-Date:   Tue Jun 25 09:16:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Rusty Russell
>Release:        gcc 3.0.4, gcc 2.95.4
>Organization:
>Environment:
ppc-linux, i386-linux
>Description:
Run-once loop should *always* be unrolled, and isn't:

/* gcc -S -dL -O2 */
#define NR_CPUS 1

extern void some_func(void);

void func(void)
{
	unsigned int cpu;

	for (cpu = 0; cpu < NR_CPUS; cpu++)
		some_func();
}		

foo.s:	.file	"foo.c"
gcc2_compiled.:
	.section	".text"
	.align 2
	.globl func
	.type	 func,@function
func:
	stwu 1,-16(1)
	mflr 0
	stw 31,12(1)
	stw 0,20(1)
	li 31,0
.L6:
	bl some_func
	addic. 31,31,1
	bc 12,2,.L6
	lwz 0,20(1)
	mtlr 0
	lwz 31,12(1)
	la 1,16(1)
	blr
.Lfe1:
	.size	 func,.Lfe1-func
	.ident	"GCC: (GNU) 2.95.4 20011002 (Debian prerelease)"

>How-To-Repeat:
Compile, browse source & .loop file.
RTH says the (< 1) test becomes (== 0), and breaks the unroll.
>Fix:
Please 8)
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="foo.c.loop"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="foo.c.loop"

Cjs7IEZ1bmN0aW9uIGZ1bmMKCgpMb29wIGZyb20gMTAgdG8gMzA6IDQgcmVhbCBpbnNucy4KQ29u
dGludWUgYXQgaW5zbiAyMS4KSW5zbiAyNDogcG9zc2libGUgYml2LCByZWcgODIsIGNvbnN0ID0x
ClJlZyA4MjogYml2IHZlcmlmaWVkCkJpdiA4MiBpbml0aWFsaXplZCBhdCBpbnNuIDk6IGluaXRp
YWwgdmFsdWUgMApMb29wIGl0ZXJhdGlvbnM6IEVRIGNvbXBhcmlzb24gbG9vcC4KQ2FuIHJldmVy
c2UgbG9vcApDYW5ub3QgZWxpbWluYXRlIGJpdiA4MjogYml2IHVzZWQgaW4gaW5zbiAxMi4KU29y
dGVkIGNvbWJpbmUgc3RhdGlzdGljczoKCgoKTG9vcCBmcm9tIDEwIHRvIDMwOiA0IHJlYWwgaW5z
bnMuCkNvbnRpbnVlIGF0IGluc24gMjEuCkluc24gMjQ6IHBvc3NpYmxlIGJpdiwgcmVnIDgyLCBj
b25zdCA9MQpSZWcgODI6IGJpdiB2ZXJpZmllZApCaXYgODIgaW5pdGlhbGl6ZWQgYXQgaW5zbiA5
OiBpbml0aWFsIHZhbHVlIDAKTG9vcCBpdGVyYXRpb25zOiBFUSBjb21wYXJpc29uIGxvb3AuCkNh
biByZXZlcnNlIGxvb3AKQ2Fubm90IGVsaW1pbmF0ZSBiaXYgODI6IGJpdiB1c2VkIGluIGluc24g
MTIuClNvcnRlZCBjb21iaW5lIHN0YXRpc3RpY3M6CgppbnNlcnRfYmN0IDA6IEJDVCBpbnN0cnVt
ZW50YXRpb24gZmFpbGVkOiBmdW5jdGlvbiBjYWxsIGluIGxvb3AKCihub3RlIDIgMCAzICIiIE5P
VEVfSU5TTl9ERUxFVEVEKQoKKG5vdGUgMyAyIDQgIiIgTk9URV9JTlNOX0ZVTkNUSU9OX0JFRykK
Cihub3RlIDQgMyA2ICIiIE5PVEVfSU5TTl9ERUxFVEVEKQoKKG5vdGUgNiA0IDQyIDAgTk9URV9J
TlNOX0JMT0NLX0JFRykKCihub3RlIDQyIDYgOSBbYmIgMF0gTk9URV9JTlNOX0JBU0lDX0JMT0NL
KQoKKGluc24gOSA0MiAzOCAoc2V0IChyZWcvdjpTSSA4MikKICAgICAgICAoY29uc3RfaW50IDAg
WzB4MF0pKSA0MjMge21vdnNpKzF9IChuaWwpCiAgICAoZXhwcl9saXN0OlJFR19FUVVBTCAoY29u
c3RfaW50IDAgWzB4MF0pCiAgICAgICAgKG5pbCkpKQoKKG5vdGUgMzggOSAxMCAiIiBOT1RFX0lO
U05fREVMRVRFRCkKCihub3RlIDEwIDM4IDE2ICIiIE5PVEVfSU5TTl9MT09QX0JFRykKCihjb2Rl
X2xhYmVsIDE2IDEwIDQzIDYgIiIgW251bSB1c2VzOiAxXSkKCihub3RlIDQzIDE2IDE5IFtiYiAx
XSBOT1RFX0lOU05fQkFTSUNfQkxPQ0spCgooY2FsbF9pbnNuIDE5IDQzIDIxIChwYXJhbGxlbFsg
CiAgICAgICAgICAgIChjYWxsIChtZW06U0kgKHN5bWJvbF9yZWY6U0kgKCJzb21lX2Z1bmMiKSkg
MCkKICAgICAgICAgICAgICAgIChjb25zdF9pbnQgMCBbMHgwXSkpCiAgICAgICAgICAgICh1c2Ug
KGNvbnN0X2ludCAwIFsweDBdKSkKICAgICAgICAgICAgKGNsb2JiZXIgKHNjcmF0Y2g6U0kpKQog
ICAgICAgIF0gKSAtMSAobmlsKQogICAgKG5pbCkKICAgIChuaWwpKQoKKG5vdGUgMjEgMTkgMjQg
IiIgTk9URV9JTlNOX0xPT1BfQ09OVCkKCihpbnNuIDI0IDIxIDQxIChzZXQgKHJlZy92OlNJIDgy
KQogICAgICAgIChwbHVzOlNJIChyZWcvdjpTSSA4MikKICAgICAgICAgICAgKGNvbnN0X2ludCAx
IFsweDFdKSkpIC0xIChuaWwpCiAgICAobmlsKSkKCihub3RlIDQxIDI0IDEyICIiIE5PVEVfSU5T
Tl9MT09QX1ZUT1ApCgooaW5zbiAxMiA0MSAxMyAoc2V0IChyZWcvczpDQyA4MykKICAgICAgICAo
Y29tcGFyZTpDQyAocmVnL3Y6U0kgODIpCiAgICAgICAgICAgIChjb25zdF9pbnQgMCBbMHgwXSkp
KSAtMSAobmlsKQogICAgKG5pbCkpCgooanVtcF9pbnNuIDEzIDEyIDMwIChzZXQgKHBjKQogICAg
ICAgIChpZl90aGVuX2Vsc2UgKGVxIChyZWcvczpDQyA4MykKICAgICAgICAgICAgICAgIChjb25z
dF9pbnQgMCBbMHgwXSkpCiAgICAgICAgICAgIChsYWJlbF9yZWYgMTYpCiAgICAgICAgICAgIChw
YykpKSAtMSAobmlsKQogICAgKG5pbCkpCgoobm90ZSAzMCAxMyAzMyAiIiBOT1RFX0lOU05fTE9P
UF9FTkQpCgoobm90ZSAzMyAzMCAwIDAgTk9URV9JTlNOX0JMT0NLX0VORCkK


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]