From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21270 invoked by alias); 22 Oct 2002 18:46:01 -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 21237 invoked by uid 71); 22 Oct 2002 18:46:01 -0000 Resent-Date: 22 Oct 2002 18:46:01 -0000 Resent-Message-ID: <20021022184601.21236.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, Peter.Barada@motorola.com Received: (qmail 17230 invoked by uid 61); 22 Oct 2002 18:36:01 -0000 Message-Id: <20021022183601.17229.qmail@sources.redhat.com> Date: Tue, 22 Oct 2002 11:46:00 -0000 From: Peter.Barada@motorola.com Reply-To: Peter.Barada@motorola.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: target/8309: m68k-elf-gcc -m5200 produces erroneous SImode set of short varaible on stack X-SW-Source: 2002-10/txt/msg00822.txt.bz2 List-Id: >Number: 8309 >Category: target >Synopsis: m68k-elf-gcc -m5200 produces erroneous SImode set of short varaible on stack >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Tue Oct 22 11:46:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Peter Barada >Release: gcc-3.2 >Organization: >Environment: --target=m68k-elf >Description: Compile the attached test files with: m68k-elf-gcc -O2 -fno-common -ffixed-a2 -m5200 -S -o yy.s yy.c -dp -da And in the ouptut of yy.c.21.greg, you'll find: (insn 492 283 284 (set (reg:SI 1 %d1) (const_int 1 [0x1])) 30 {*m68k.md:993} (nil) (nil)) (insn 284 492 285 (set (mem:SI (plus:SI (reg/f:SI 14 %a6) (const_int -40 [0xffffffd8])) [26 rotate S4 A16]) (plus:SI (mem:SI (plus:SI (reg/f:SI 14 %a6) (const_int -40 [0xffffffd8])) [26 rotate S4 A16]) (reg:SI 1 %d1))) 99 {*addsi3_5200} (nil) (nil)) But the 'rotate' variable is a *short*, so the 'set(mem:SI' will overwrite the adjacent variable on the stack. In fact the statement *increments* the 'fs' varaible which is at offset -38 from the frame... >How-To-Repeat: m68k-elf-gcc -O2 -fno-common -ffixed-a2 -m5200 -S -o yy.s yy.c -dp -da >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="yy.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="yy.c" Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX21vZGVfdDsKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgX19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBl ZGVmIGxvbmcgbG9uZyBfX2tlcm5lbF9sb2ZmX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVt b2RlX3Q7CgoKdHlwZWRlZiBfX2tlcm5lbF9tb2RlX3QgbW9kZV90Owp0eXBlZGVmIF9fa2VybmVs X2xvZmZfdCBsb2ZmX3Q7Cgp0eXBlZGVmIF9fa2VybmVsX3NpemVfdCBzaXplX3Q7CnR5cGVkZWYg X19rZXJuZWxfc3NpemVfdCBzc2l6ZV90OwoKdHlwZWRlZiBzaG9ydCBpbnQgbW1fc2VnbWVudF90 OwoKc3RydWN0IHRocmVhZF9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcga3NwOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgdXNwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNyOwogICAgICAg IHVuc2lnbmVkIHNob3J0IGZzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3JwWzJdOwogICAgICAg IHVuc2lnbmVkIGxvbmcgZXNwMDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZhZGRyOwogICAgICAg IGludCBzaWdubywgY29kZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZwWzgqM107CiAgICAgICAg dW5zaWduZWQgbG9uZyBmcGNudGxbM107CiAgICAgICAgdW5zaWduZWQgY2hhciBmcHN0YXRlWyg5 Ni9zaXplb2YodW5zaWduZWQgY2hhcikpXTsKfTsKCnN0cnVjdCBmaWxlOwpzdHJ1Y3QgaW5vZGU7 Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGtkZXZfdDsKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg aW50IGtkZXZfdF90b19ucihrZGV2X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVk IGludCkgKChkZXYpID4+IDgpKTw8OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8 PCA4KSAtIDEpKSk7Cn0Kc3RhdGljIGlubGluZSBrZGV2X3QgdG9fa2Rldl90KGludCBkZXYpCnsK ICAgICAgICBpbnQgbWFqb3IsIG1pbm9yOwogICAgICAgIG1ham9yID0gKGRldiA+PiA4KTsKICAg ICAgICBtaW5vciA9IChkZXYgJiAweGZmKTsKICAgICAgICByZXR1cm4gKCgobWFqb3IpIDw8IDgp IHwgKG1pbm9yKSk7Cn0KCnN0cnVjdCBmaWxlIHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpmX2Rl bnRyeTsKICAgICAgICBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmX29wOwogICAgICAgIGxvZmZf dCBmX3BvczsKfTsKCnN0cnVjdCBmaWxlX29wZXJhdGlvbnMgewogICAgICAgIHNzaXplX3QgKCpy ZWFkKSAoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICAgICAgICBz c2l6ZV90ICgqd3JpdGUpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9m Zl90ICopOwogICAgICAgIGludCAoKnJlbGVhc2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZp bGUgKik7Cn07CgppbnQgcHJpbnRrKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICBfX2F0dHJp YnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CgpleHRlcm4gaW50IGJsa2Rldl9vcGVu KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGludCBibGtkZXZfY2xvc2Uo c3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJh dGlvbnMgZGVmX2Jsa19mb3BzOwpleHRlcm4gdm9pZCBpbml0X3NwZWNpYWxfaW5vZGUoc3RydWN0 IGlub2RlICosIHVtb2RlX3QsIGludCk7CgpleHRlcm4gdm9pZCBpcHV0KHN0cnVjdCBpbm9kZSAq KTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGdldF9lbXB0eV9pbm9kZSh2b2lkKTsKCmV4dGVybiBr ZGV2X3QgUk9PVF9ERVY7CmV4dGVybiBjaGFyIHJvb3RfZGV2aWNlX25hbWVbXTsKZXh0ZXJuIGlu dCByZWFsX3Jvb3RfZGV2OwoKc3RydWN0IHRhc2tfc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgdGhy ZWFkX3N0cnVjdCB0aHJlYWQ7Cn07CgpyZWdpc3RlciBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnJl bnQgX19hc21fXygiJWEyIik7CmV4dGVybiB2b2lkICprbWFsbG9jKHNpemVfdCwgaW50KTsKZXh0 ZXJuIHZvaWQga2ZyZWUoY29uc3Qgdm9pZCAqKTsKCgp2b2lkIF9fYXR0cmlidXRlX18gKChfX3Nl Y3Rpb25fXyAoIi50ZXh0LmluaXQiKSkpIHJkX2xvYWRfaW1hZ2Uoa2Rldl90IGRldmljZSwgaW50 IG9mZnNldCwgaW50IHVuaXQpCnsKICBzdHJ1Y3QgaW5vZGUgKmlub2RlLCAqb3V0X2lub2RlOwog IHN0cnVjdCBmaWxlIGluZmlsZSwgb3V0ZmlsZTsKICBtbV9zZWdtZW50X3QgZnM7CiAga2Rldl90 IHJhbV9kZXZpY2U7CiAgaW50IG5ibG9ja3MsIGk7CiAgY2hhciAqYnVmOwogIHVuc2lnbmVkIHNo b3J0IHJvdGF0ZSA9IDA7CiAgdW5zaWduZWQgc2hvcnQgZGV2YmxvY2tzID0gMDsKICBjaGFyIHJv dGF0b3JbNF0gPSB7ICd8JyAsICcvJyAsICctJyAsICdcXCcgfTsKICByYW1fZGV2aWNlID0gKCgo MSkgPDwgOCkgfCAodW5pdCkpOwoKICBpZiAoKGlub2RlID0gZ2V0X2VtcHR5X2lub2RlKCkpID09 ICgodm9pZCAqKTApKQogICAgcmV0dXJuOwoKICBtZW1zZXQoKCZpbmZpbGUpLCgwKSwoc2l6ZW9m KGluZmlsZSkpKTsKICBpbmZpbGUuZl9vcCA9ICZkZWZfYmxrX2ZvcHM7CiAgaW5pdF9zcGVjaWFs X2lub2RlKGlub2RlLCAwMDYwMDAwIHwgMDA0MDAsIGtkZXZfdF90b19ucihkZXZpY2UpKTsKICBp ZiAoKG91dF9pbm9kZSA9IGdldF9lbXB0eV9pbm9kZSgpKSA9PSAoKHZvaWQgKikwKSkKICAgIGdv dG8gZnJlZV9pbm9kZTsKICBtZW1zZXQoKCZvdXRmaWxlKSwoMCksKHNpemVvZihvdXRmaWxlKSkp OwogIG91dGZpbGUuZl9vcCA9ICZkZWZfYmxrX2ZvcHM7CiAgaW5pdF9zcGVjaWFsX2lub2RlKG91 dF9pbm9kZSwgMDA2MDYwMCwga2Rldl90X3RvX25yKHJhbV9kZXZpY2UpKTsKICBpZiAoYmxrZGV2 X29wZW4oaW5vZGUsICZpbmZpbGUpICE9IDApIHsKICAgIGdvdG8gZnJlZV9pbm9kZTsKICB9CiAg aWYgKGJsa2Rldl9vcGVuKG91dF9pbm9kZSwgJm91dGZpbGUpICE9IDApCiAgICBnb3RvIGZyZWVf aW5vZGVzOwogIGZzID0gKGN1cnJlbnQtPnRocmVhZC5mcyk7CiAgbmJsb2NrcyA9IGlkZW50aWZ5 X3JhbWRpc2tfaW1hZ2UoZGV2aWNlLCAmaW5maWxlLCBvZmZzZXQpOwoKI2lmIDAKICBidWYgPSBr bWFsbG9jKCgxPDwxMCksICgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwgMHgxMDApKTsKI2Vu ZGlmCiAgZGV2YmxvY2tzID0gbmJsb2NrczsKICBmb3IgKGk9MDsgaSA8IG5ibG9ja3M7IGkrKykg ewogICAgaWYgKGkgJiYgKGkgJSBkZXZibG9ja3MgPT0gMCkpIHsKICAgICAgcm90YXRlID0gMDsK ICAgICAgaW5maWxlLmZfcG9zID0gMDsKICAgIH0KICAgIGlmICghKGkgJSAxNikpIHsKICAgICAg cHJpbnRrKCIlY1xiIiwgcm90YXRvcltyb3RhdGUgJiAweDNdKTsKICAgICAgcm90YXRlKys7CiAg ICB9CiAgfQogIFJPT1RfREVWID0gKCgoMSkgPDwgOCkgfCAodW5pdCkpOwoKICBpbmZpbGUuZl9v cC0+cmVsZWFzZShpbm9kZSwgJmluZmlsZSk7CiAgYmxrZGV2X2Nsb3NlKG91dF9pbm9kZSwgJm91 dGZpbGUpOwogIGlwdXQoaW5vZGUpOwogIGlwdXQob3V0X2lub2RlKTsKICAoY3VycmVudC0+dGhy ZWFkLmZzID0gKGZzKSk7CiAgcmV0dXJuOwogZnJlZV9pbm9kZXM6CiAgaXB1dChvdXRfaW5vZGUp OwogIGluZmlsZS5mX29wLT5yZWxlYXNlKGlub2RlLCAmaW5maWxlKTsKIGZyZWVfaW5vZGU6CiAg aXB1dChpbm9kZSk7Cn0K