public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/33138] New: [4.3 Regression] rejects valid? assembler, segfaults
@ 2007-08-21 15:32 tbm at cyrius dot com
2007-08-21 15:33 ` [Bug target/33138] " tbm at cyrius dot com
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: tbm at cyrius dot com @ 2007-08-21 15:32 UTC (permalink / raw)
To: gcc-bugs
There are two issues here:
- the inline assembly is rejected at -O. I don't know if the assembler
code is valid, but fwiw it's accepted by gcc 4.1 and 4.2.
- gcc segfaults.
I see this with current trunk and with trunk from 20070720.
(sid)27576:tbm@em64t: ~] /usr/lib/gcc-snapshot/bin/gcc -c -O
samhain-sh_tiger1_64.c
samhain-sh_tiger1_64.c: In function 'tiger_compress':
samhain-sh_tiger1_64.c:12: error: can't find a register in class 'GENERAL_REGS'
while reloading 'asm'
samhain-sh_tiger1_64.c:12: error: 'asm' operand has impossible constraints
samhain-sh_tiger1_64.c: In function 'tiger_t':
samhain-sh_tiger1_64.c:23: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
For Debian GNU/Linux specific bug reporting instructions,
see <URL:file:///usr/share/doc/gcc-4.2/README.Bugs>.
zsh: exit 1 /usr/lib/gcc-snapshot/bin/gcc -c -O samhain-sh_tiger1_64.c
(sid)27577:tbm@em64t: ~] gcc-4.1 -c -O samhain-sh_tiger1_64.c
(sid)27578:tbm@em64t: ~] gcc-4.2 -c -O samhain-sh_tiger1_64.c
(sid)27579:tbm@em64t: ~]
--
Summary: [4.3 Regression] rejects valid? assembler, segfaults
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbm at cyrius dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33138
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/33138] [4.3 Regression] rejects valid? assembler, segfaults
2007-08-21 15:32 [Bug target/33138] New: [4.3 Regression] rejects valid? assembler, segfaults tbm at cyrius dot com
2007-08-21 15:33 ` [Bug target/33138] " tbm at cyrius dot com
@ 2007-08-21 15:33 ` tbm at cyrius dot com
2007-08-28 23:57 ` pinskia at gcc dot gnu dot org
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: tbm at cyrius dot com @ 2007-08-21 15:33 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from tbm at cyrius dot com 2007-08-21 15:33 -------
BTW, the segfault goes away when I remove the last 3 lines (function tiger_t).
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33138
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/33138] [4.3 Regression] rejects valid? assembler, segfaults
2007-08-21 15:32 [Bug target/33138] New: [4.3 Regression] rejects valid? assembler, segfaults tbm at cyrius dot com
@ 2007-08-21 15:33 ` tbm at cyrius dot com
2007-08-21 15:33 ` tbm at cyrius dot com
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: tbm at cyrius dot com @ 2007-08-21 15:33 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from tbm at cyrius dot com 2007-08-21 15:32 -------
typedef unsigned long int word64;
extern word64 tiger_table[4 * 256];
tiger_compress (word64 * str, word64 state[3])
{
{
register word64 a, b, c;
word64 aa, bb, cc;
word64 x0, x1, x2, x3, x4, x5, x6, x7;
b = ((word64 *) state)[1];
bb = b;
cc = c;
__asm__ (" movl %10, %%ebx \n" " movq %11, %%rcx \n" "
movq %13, %%rdx \n" " movq %6, %%r8 \n" " xorq %%r8, %2
\n" " andq %2, %%rbx \n" " andq %2, %%rcx \n" "
andq %2, %%rdx \n" " shrl $(16-3), %%ebx \n" " shrq $(32-3),
%%rcx \n" " shrq $(48-3), %%rdx \n" " movzbl %2b, %%eax \n" "
movzwl %2w, %
%edi \n" " movq (%7,%%rax,8), %%rsi \n" " shrl $(8), %%edi
\n" " movq %2, %%
rax \n" " xorq (2048*1)(%7,%%rbx), %%rsi \n" " movq %2,
%%rbx \n" " shrl $24, %%eax \n" " andq %12, %%rbx \n" " xorq
(2048*2)(%7,%%rcx), %%rsi \n" " shrq $(40-3), %%rbx \n" " movq
%2, %%rcx \n" " xorq (2048*3)(%7,%%rdx), %%rsi \n"
" movq (2048*3)(%7,%%rdi,8), %%rdx \n" " shrq $56, %%rcx \n"
" xorq (2048*
2)(%7,%%rax,8), %%rdx \n" " xorq (2048*1)(%7,%%rbx), %%rdx \n" "
subq %%rsi, %0 \n"
" xorq (%7,%%rcx,8), %%rdx \n" " addq %%rdx, %1 \n" "leaq
(%1,%1,8), %1\n": "+r"
(c), "+r" (a), "+r" (b): "r" (c), "r" (a), "r" (b), "m" (x7), "r"
(&tiger_table), "i" (0xFFL), "i" (0
xFF00L), "i" (0xFF0000L), "r" (0xFF00000000LL), "r" (0xFF0000000000LL), "r"
(0xFF000000000000LL):"3",
"%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%edi",
"%r8");
{
}
b -= bb;
c += cc;
((word64 *) state)[1] = b;
((word64 *) state)[2] = c;
};
}
tiger_t (word64 * str, word64 length, word64 res[3])
{
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33138
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/33138] [4.3 Regression] rejects valid? assembler, segfaults
2007-08-21 15:32 [Bug target/33138] New: [4.3 Regression] rejects valid? assembler, segfaults tbm at cyrius dot com
2007-08-21 15:33 ` [Bug target/33138] " tbm at cyrius dot com
2007-08-21 15:33 ` tbm at cyrius dot com
@ 2007-08-28 23:57 ` pinskia at gcc dot gnu dot org
2007-09-05 2:17 ` mmitchel at gcc dot gnu dot org
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2007-08-28 23:57 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from pinskia at gcc dot gnu dot org 2007-08-28 23:57 -------
The seg fault was fixed by:
2007-08-28 Jakub Jelinek <jakub@redhat.com>
PR middle-end/32370
* passes.c (init_optimization_passes): Move pass_df_finish
after pass_postreload sublist.
Also I don't think there is enough registers to do anything with this
inline-asm.
I count 10 "r" constraints (or "+r"). Plus 7 clobbers. That does not leave
any registers for GCC to fill the 10 constraints.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |4.3.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33138
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/33138] [4.3 Regression] rejects valid? assembler, segfaults
2007-08-21 15:32 [Bug target/33138] New: [4.3 Regression] rejects valid? assembler, segfaults tbm at cyrius dot com
` (2 preceding siblings ...)
2007-08-28 23:57 ` pinskia at gcc dot gnu dot org
@ 2007-09-05 2:17 ` mmitchel at gcc dot gnu dot org
2007-09-05 15:42 ` jakub at gcc dot gnu dot org
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2007-09-05 2:17 UTC (permalink / raw)
To: gcc-bugs
--
mmitchel at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33138
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/33138] [4.3 Regression] rejects valid? assembler, segfaults
2007-08-21 15:32 [Bug target/33138] New: [4.3 Regression] rejects valid? assembler, segfaults tbm at cyrius dot com
` (3 preceding siblings ...)
2007-09-05 2:17 ` mmitchel at gcc dot gnu dot org
@ 2007-09-05 15:42 ` jakub at gcc dot gnu dot org
2007-09-05 18:39 ` tbm at cyrius dot com
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: jakub at gcc dot gnu dot org @ 2007-09-05 15:42 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from jakub at gcc dot gnu dot org 2007-09-05 15:42 -------
Yeah, the asm is bogus for multiple reasons.
But can be fixed easily, e.g. %3, %4 nor %5 aren't used anywhere, so
just nuking the unneeded
"r" (c), "r" (a), "r" (b),
makes this to compile.
Apparently e.g. gcc 4.1.x decided to give %0 the same register %3, %1 as %4
and so it happened to compile, still the constraints cause extreme register
preassure.
What is that "3" doing among clobbers? A fancy way to duplicate "%rbx"
clobber?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33138
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/33138] [4.3 Regression] rejects valid? assembler, segfaults
2007-08-21 15:32 [Bug target/33138] New: [4.3 Regression] rejects valid? assembler, segfaults tbm at cyrius dot com
` (4 preceding siblings ...)
2007-09-05 15:42 ` jakub at gcc dot gnu dot org
@ 2007-09-05 18:39 ` tbm at cyrius dot com
2007-10-09 14:58 ` rguenth at gcc dot gnu dot org
2007-10-10 7:35 ` tbm at cyrius dot com
7 siblings, 0 replies; 9+ messages in thread
From: tbm at cyrius dot com @ 2007-09-05 18:39 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from tbm at cyrius dot com 2007-09-05 18:38 -------
(In reply to comment #4)
> Yeah, the asm is bogus for multiple reasons.
...
> What is that "3" doing among clobbers? A fancy way to duplicate "%rbx"
> clobber?
I don't know. I made the testcase based on an application that I found in
Debian. I'll forward your comments to the developer of that application to
make them aware of the problems with their code.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33138
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/33138] [4.3 Regression] rejects valid? assembler, segfaults
2007-08-21 15:32 [Bug target/33138] New: [4.3 Regression] rejects valid? assembler, segfaults tbm at cyrius dot com
` (5 preceding siblings ...)
2007-09-05 18:39 ` tbm at cyrius dot com
@ 2007-10-09 14:58 ` rguenth at gcc dot gnu dot org
2007-10-10 7:35 ` tbm at cyrius dot com
7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2007-10-09 14:58 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from rguenth at gcc dot gnu dot org 2007-10-09 14:58 -------
Works for me with r129166. I suppose this was x86_64. And a dup of either
PR33600 or PR33552.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
GCC target triplet| |x86_64-*-*
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33138
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug target/33138] [4.3 Regression] rejects valid? assembler, segfaults
2007-08-21 15:32 [Bug target/33138] New: [4.3 Regression] rejects valid? assembler, segfaults tbm at cyrius dot com
` (6 preceding siblings ...)
2007-10-09 14:58 ` rguenth at gcc dot gnu dot org
@ 2007-10-10 7:35 ` tbm at cyrius dot com
7 siblings, 0 replies; 9+ messages in thread
From: tbm at cyrius dot com @ 2007-10-10 7:35 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from tbm at cyrius dot com 2007-10-10 07:35 -------
(In reply to comment #6)
> Works for me with r129166. I suppose this was x86_64. And a dup of either
> PR33600 or PR33552.
Yeah, it was a dup.
*** This bug has been marked as a duplicate of 32370 ***
--
tbm at cyrius dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |DUPLICATE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33138
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-10-10 7:35 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-21 15:32 [Bug target/33138] New: [4.3 Regression] rejects valid? assembler, segfaults tbm at cyrius dot com
2007-08-21 15:33 ` [Bug target/33138] " tbm at cyrius dot com
2007-08-21 15:33 ` tbm at cyrius dot com
2007-08-28 23:57 ` pinskia at gcc dot gnu dot org
2007-09-05 2:17 ` mmitchel at gcc dot gnu dot org
2007-09-05 15:42 ` jakub at gcc dot gnu dot org
2007-09-05 18:39 ` tbm at cyrius dot com
2007-10-09 14:58 ` rguenth at gcc dot gnu dot org
2007-10-10 7:35 ` tbm at cyrius dot com
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).