From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28372 invoked by alias); 25 Jun 2002 16:16:05 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 28334 invoked by uid 71); 25 Jun 2002 16:16:01 -0000 Resent-Date: 25 Jun 2002 16:16:01 -0000 Resent-Message-ID: <20020625161601.28332.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, rth@twiddle.net Resent-Reply-To: gcc-gnats@gcc.gnu.org, rusty@rustcorp.com.au Received: (qmail 28217 invoked by uid 61); 25 Jun 2002 16:15:15 -0000 Message-Id: <20020625161515.28216.qmail@sources.redhat.com> Date: Tue, 25 Jun 2002 09:21:00 -0000 From: rusty@rustcorp.com.au Reply-To: rusty@rustcorp.com.au To: gcc-gnats@gcc.gnu.org Cc: rth@twiddle.net X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) X-GNATS-Notify: rth@twiddle.net Subject: optimization/7120: Run once loop should *always* be unrolled X-SW-Source: 2002-06/txt/msg00591.txt.bz2 List-Id: >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