public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/11965] New: On SPARC, gcc produces invalid assembler code for a shift << 32 operation
@ 2003-08-18 12:41 jk at tools dot de
2003-08-18 17:35 ` [Bug c/11965] " falk at debian dot org
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: jk at tools dot de @ 2003-08-18 12:41 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11965
Summary: On SPARC, gcc produces invalid assembler code for a
shift << 32 operation
Product: gcc
Version: 3.3
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jk at tools dot de
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: sparc-sun-solaris2.8
GCC host triplet: sparc-sun-solaris2.8
GCC target triplet: sparc-sun-solaris2.8
GCC 3.3 on Solaris SPARC produces invalid assembler code, for shift operator
shifting 32 bits.
GCC 3.3 is compiled to use the system's assembler, /usr/ccs/bin/as
To reproduce the issue (admitted, this code has undefined behaviour):
% cat shift.c
#if __GNUC__
#define ATTR_ALWAYS_INLINE __attribute__ ((__always_inline__))
#else
#define ATTR_ALWAYS_INLINE
#endif
static ATTR_ALWAYS_INLINE unsigned
put_bits(int n, unsigned int value)
{
return value << n;
}
main()
{
unsigned val = 1;
int i;
for (i = 0; i < 4; i++)
val = put_bits(32, val);
printf("val=%x\n", val);
}
% gcc -O3 -mcpu=ultrasparc -o shift shift.c
/usr/ccs/bin/as: "/tmp/cc0VFu29.s", line 20: error: shift count negative or too
big: 32
Looking at the generated assembler source...
% gcc -O3 -mcpu=ultrasparc -S shift.c
... there's a shift instruction with a constant shift count of 32, where the
immediate shift count is restricted to the range 0 .. 31 on SPARC:
sll %o1, 32, %o1
The same code used to compile with gcc 3.2 and erlier, and it does compile with
gcc 3.3 at optimization level -O2 or when option -mcpu=ultrasparc is not used.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c/11965] On SPARC, gcc produces invalid assembler code for a shift << 32 operation
2003-08-18 12:41 [Bug c/11965] New: On SPARC, gcc produces invalid assembler code for a shift << 32 operation jk at tools dot de
@ 2003-08-18 17:35 ` falk at debian dot org
2003-08-19 20:04 ` martin at netbsd dot org
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: falk at debian dot org @ 2003-08-18 17:35 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11965
falk at debian dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
------- Additional Comments From falk at debian dot org 2003-08-18 17:35 -------
I can reproduce this on Sparc Linux with gcc 3.3.1 20030728 (Debian prerelease).
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c/11965] On SPARC, gcc produces invalid assembler code for a shift << 32 operation
2003-08-18 12:41 [Bug c/11965] New: On SPARC, gcc produces invalid assembler code for a shift << 32 operation jk at tools dot de
2003-08-18 17:35 ` [Bug c/11965] " falk at debian dot org
@ 2003-08-19 20:04 ` martin at netbsd dot org
2003-08-23 1:22 ` dhazeghi at yahoo dot com
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: martin at netbsd dot org @ 2003-08-19 20:04 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11965
martin at netbsd dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |martin at netbsd dot org
------- Additional Comments From martin at netbsd dot org 2003-08-19 20:04 -------
Forgot to mention: I used gcc version 3.3.1.
I initially left out the 32bit changes (since that cases currently seem to not
be triggered), but Ian L. Taylor told me you can not rely on that and pointed to
the mips backends way of handling it.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c/11965] On SPARC, gcc produces invalid assembler code for a shift << 32 operation
2003-08-18 12:41 [Bug c/11965] New: On SPARC, gcc produces invalid assembler code for a shift << 32 operation jk at tools dot de
2003-08-18 17:35 ` [Bug c/11965] " falk at debian dot org
2003-08-19 20:04 ` martin at netbsd dot org
@ 2003-08-23 1:22 ` dhazeghi at yahoo dot com
2003-08-23 14:24 ` [Bug target/11965] [3.3/3.4 Regression] " pinskia at gcc dot gnu dot org
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: dhazeghi at yahoo dot com @ 2003-08-23 1:22 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11965
dhazeghi at yahoo dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |wrong-code
Target Milestone|3.4 |---
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/11965] [3.3/3.4 Regression] On SPARC, gcc produces invalid assembler code for a shift << 32 operation
2003-08-18 12:41 [Bug c/11965] New: On SPARC, gcc produces invalid assembler code for a shift << 32 operation jk at tools dot de
` (2 preceding siblings ...)
2003-08-23 1:22 ` dhazeghi at yahoo dot com
@ 2003-08-23 14:24 ` pinskia at gcc dot gnu dot org
2003-09-09 14:51 ` [Bug target/11965] [3.3/3.4 Regression] " ebotcazou at gcc dot gnu dot org
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2003-08-23 14:24 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11965
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|c |target
Summary|On SPARC, gcc produces |[3.3/3.4 Regression] On
|invalid assembler code for a|SPARC, gcc produces invalid
|shift << 32 operation |assembler code for a shift
| |<< 32 operation
Target Milestone|--- |3.3.2
------- Additional Comments From pinskia at gcc dot gnu dot org 2003-08-23 14:24 -------
This is a regression from 3.2.3 and there is even a patch.
Martin can you send the patch to gcc-patches saying this fixes this PR?
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/11965] [3.3/3.4 Regression] invalid assembler code for a shift << 32 operation
2003-08-18 12:41 [Bug c/11965] New: On SPARC, gcc produces invalid assembler code for a shift << 32 operation jk at tools dot de
` (3 preceding siblings ...)
2003-08-23 14:24 ` [Bug target/11965] [3.3/3.4 Regression] " pinskia at gcc dot gnu dot org
@ 2003-09-09 14:51 ` ebotcazou at gcc dot gnu dot org
2003-09-10 12:59 ` cvs-commit at gcc dot gnu dot org
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2003-09-09 14:51 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11965
ebotcazou at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |ebotcazou at gcc dot gnu dot
|dot org |org
Status|NEW |ASSIGNED
------- Additional Comments From ebotcazou at gcc dot gnu dot org 2003-09-09 14:51 -------
I'll bootstrap/regtest it for SPARC and SPARC64 on the 3.3 branch and install it.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/11965] [3.3/3.4 Regression] invalid assembler code for a shift << 32 operation
2003-08-18 12:41 [Bug c/11965] New: On SPARC, gcc produces invalid assembler code for a shift << 32 operation jk at tools dot de
` (4 preceding siblings ...)
2003-09-09 14:51 ` [Bug target/11965] [3.3/3.4 Regression] " ebotcazou at gcc dot gnu dot org
@ 2003-09-10 12:59 ` cvs-commit at gcc dot gnu dot org
2003-09-10 13:04 ` cvs-commit at gcc dot gnu dot org
2003-09-10 13:05 ` ebotcazou at gcc dot gnu dot org
7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2003-09-10 12:59 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11965
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2003-09-10 12:59 -------
Subject: Bug 11965
CVSROOT: /cvs/gcc
Module name: gcc
Changes by: ebotcazou@gcc.gnu.org 2003-09-10 12:59:36
Modified files:
gcc : ChangeLog
gcc/config/sparc: sparc.c sparc.md
gcc/testsuite : ChangeLog
Added files:
gcc/testsuite/gcc.dg: ultrasp10.c
Log message:
PR target/11965
* config/sparc/sparc.c (sparc_v8plus_shift): Protect against
constants greater than 63.
* config/sparc/sparc.md (ashlsi3, ashrsi3, lshrsi3): Protect
against constants greater than 31.
(*ashldi3_sp64, *ashrdi3_sp64, *lshrdi3_sp64): Protect against
constants greater than 63.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.1022&r2=2.1023
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.c.diff?cvsroot=gcc&r1=1.258&r2=1.259
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.md.diff?cvsroot=gcc&r1=1.190&r2=1.191
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.3047&r2=1.3048
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/ultrasp10.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/11965] [3.3/3.4 Regression] invalid assembler code for a shift << 32 operation
2003-08-18 12:41 [Bug c/11965] New: On SPARC, gcc produces invalid assembler code for a shift << 32 operation jk at tools dot de
` (5 preceding siblings ...)
2003-09-10 12:59 ` cvs-commit at gcc dot gnu dot org
@ 2003-09-10 13:04 ` cvs-commit at gcc dot gnu dot org
2003-09-10 13:05 ` ebotcazou at gcc dot gnu dot org
7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2003-09-10 13:04 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11965
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2003-09-10 13:04 -------
Subject: Bug 11965
CVSROOT: /cvs/gcc
Module name: gcc
Branch: gcc-3_3-branch
Changes by: ebotcazou@gcc.gnu.org 2003-09-10 13:04:00
Modified files:
gcc : ChangeLog
gcc/config/sparc: sparc.c sparc.md
gcc/testsuite : ChangeLog
Added files:
gcc/testsuite/gcc.dg: ultrasp10.c
Log message:
PR target/11965
* config/sparc/sparc.c (sparc_v8plus_shift): Protect against
constants greater than 63.
* config/sparc/sparc.md (ashlsi3, ashrsi3, lshrsi3): Protect
against constants greater than 31.
(*ashldi3_sp64, *ashrdi3_sp64, *lshrdi3_sp64): Protect against
constants greater than 63.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.16114.2.734&r2=1.16114.2.735
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.233.4.5&r2=1.233.4.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.md.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.181.4.6&r2=1.181.4.7
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.2261.2.276&r2=1.2261.2.277
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/ultrasp10.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=NONE&r2=1.1.2.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/11965] [3.3/3.4 Regression] invalid assembler code for a shift << 32 operation
2003-08-18 12:41 [Bug c/11965] New: On SPARC, gcc produces invalid assembler code for a shift << 32 operation jk at tools dot de
` (6 preceding siblings ...)
2003-09-10 13:04 ` cvs-commit at gcc dot gnu dot org
@ 2003-09-10 13:05 ` ebotcazou at gcc dot gnu dot org
7 siblings, 0 replies; 9+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2003-09-10 13:05 UTC (permalink / raw)
To: gcc-bugs
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11965
ebotcazou at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC|ebotcazou at gcc dot gnu dot|
|org |
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
------- Additional Comments From ebotcazou at gcc dot gnu dot org 2003-09-10 13:05 -------
Done.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2003-09-10 13:05 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-08-18 12:41 [Bug c/11965] New: On SPARC, gcc produces invalid assembler code for a shift << 32 operation jk at tools dot de
2003-08-18 17:35 ` [Bug c/11965] " falk at debian dot org
2003-08-19 20:04 ` martin at netbsd dot org
2003-08-23 1:22 ` dhazeghi at yahoo dot com
2003-08-23 14:24 ` [Bug target/11965] [3.3/3.4 Regression] " pinskia at gcc dot gnu dot org
2003-09-09 14:51 ` [Bug target/11965] [3.3/3.4 Regression] " ebotcazou at gcc dot gnu dot org
2003-09-10 12:59 ` cvs-commit at gcc dot gnu dot org
2003-09-10 13:04 ` cvs-commit at gcc dot gnu dot org
2003-09-10 13:05 ` ebotcazou 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).