public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/29440] New: 4.2 20061007 experiemental misscompiles libavcodec/h264.o
@ 2006-10-12 14:23 poirierg at gmail dot com
2006-10-12 14:26 ` [Bug c/29440] " poirierg at gmail dot com
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: poirierg at gmail dot com @ 2006-10-12 14:23 UTC (permalink / raw)
To: gcc-bugs
4.2 misscompiles libavcodec/h264.o from FFmpeg project.
The likely cause of this problem is lies in the file cabac.h (in attachment)
gcc-4.0 and 4.1.0 compile this file correctly.
Here's the commandline:
/home/guillaume/Prgm/gcc/bin/gcc -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE -I.. -I.. -I../libavutil
-Wdeclaration-after-statement -fno-PIC -O4 -march=pentium-m -mtune=pentium-m
-pipe -ffast-math -fomit-frame-pointer -D_REENTRANT -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -I/usr/include -I/usr/include/SDL
-D_REENTRANT -I/usr/include/kde/artsc -pthread -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include -I/usr/include -I/usr/include/dvdnav
-I/usr/include/freetype2 -c -o h264.o h264.c -v -save-temps
gcc: warning: -pipe ignored because -save-temps specified
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.2-20061007/configure
--prefix=/home/guillaume/Prgm/gcc/
Thread model: posix
gcc version 4.2.0 20061007 (experimental)
/home/guillaume/Prgm/gcc/bin/../libexec/gcc/i686-pc-linux-gnu/4.2.0/cc1 -E
-quiet -v -I.. -I.. -I../libavutil -I/usr/include -I/usr/include/SDL
-I/usr/include/kde/artsc -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-I/usr/include -I/usr/include/dvdnav -I/usr/include/freetype2 -iprefix
/home/guillaume/Prgm/gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.0/ -D_REENTRANT
-DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE
-D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
-D_REENTRANT h264.c -march=pentium-m -mtune=pentium-m
-Wdeclaration-after-statement -fno-PIC -ffast-math -fomit-frame-pointer -O4
-fpch-preprocess -o h264.i
ignoring nonexistent directory
"/home/guillaume/Prgm/gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.0/../../../../i686-pc-linux-gnu/include"
ignoring duplicate directory
"/home/guillaume/Prgm/gcc//lib/gcc/i686-pc-linux-gnu/4.2.0/include"
ignoring nonexistent directory
"/home/guillaume/Prgm/gcc//lib/gcc/i686-pc-linux-gnu/4.2.0/../../../../i686-pc-linux-gnu/include"
ignoring duplicate directory ".."
ignoring duplicate directory "/usr/include"
as it is a non-system directory that duplicates a system directory
ignoring duplicate directory "/usr/include"
as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
..
../libavutil
/usr/include/SDL
/usr/include/kde/artsc
/usr/include/glib-2.0
/usr/lib/glib-2.0/include
/usr/include/dvdnav
/usr/include/freetype2
/home/guillaume/Prgm/gcc/bin/../lib/gcc/i686-pc-linux-gnu/4.2.0/include
/usr/local/include
/home/guillaume/Prgm/gcc//include
/usr/include
End of search list.
/home/guillaume/Prgm/gcc/bin/../libexec/gcc/i686-pc-linux-gnu/4.2.0/cc1
-fpreprocessed h264.i -quiet -dumpbase h264.c -march=pentium-m -mtune=pentium-m
-auxbase-strip h264.o -O4 -Wdeclaration-after-statement -version -fno-PIC
-ffast-math -fomit-frame-pointer -o h264.s
GNU C version 4.2.0 20061007 (experimental) (i686-pc-linux-gnu)
compiled by GNU C version 4.2.0 20061007 (experimental).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 9d78c482f3158f545a4217a7c698d3a2
h264.c: In function 'decode_cabac_residual':
h264.c:6120: warning: initialization from incompatible pointer type
as -V -Qy -o h264.o h264.s
GNU assembler version 2.16.91 (i486-linux-gnu) using BFD version 2.16.91
20060118 Debian GNU/Linux
--
Summary: 4.2 20061007 experiemental misscompiles
libavcodec/h264.o
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: poirierg at gmail dot com
GCC build triplet: (no options)
GCC host triplet: i686, Linux, debian
GCC target triplet: i686, Linux, debian
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29440
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c/29440] 4.2 20061007 experiemental misscompiles libavcodec/h264.o
2006-10-12 14:23 [Bug c/29440] New: 4.2 20061007 experiemental misscompiles libavcodec/h264.o poirierg at gmail dot com
@ 2006-10-12 14:26 ` poirierg at gmail dot com
2006-10-12 14:28 ` poirierg at gmail dot com
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: poirierg at gmail dot com @ 2006-10-12 14:26 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from poirierg at gmail dot com 2006-10-12 14:25 -------
Created an attachment (id=12418)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12418&action=view)
the offending file (results in a grey picture)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29440
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug c/29440] 4.2 20061007 experiemental misscompiles libavcodec/h264.o
2006-10-12 14:23 [Bug c/29440] New: 4.2 20061007 experiemental misscompiles libavcodec/h264.o poirierg at gmail dot com
2006-10-12 14:26 ` [Bug c/29440] " poirierg at gmail dot com
@ 2006-10-12 14:28 ` poirierg at gmail dot com
2006-10-12 14:30 ` [Bug middle-end/29440] 4.2 20061007 experimental " pinskia at gcc dot gnu dot org
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: poirierg at gmail dot com @ 2006-10-12 14:28 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from poirierg at gmail dot com 2006-10-12 14:28 -------
Created an attachment (id=12419)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=12419&action=view)
The header that seems to hold the code that's misscompiled
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29440
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/29440] 4.2 20061007 experimental misscompiles libavcodec/h264.o
2006-10-12 14:23 [Bug c/29440] New: 4.2 20061007 experiemental misscompiles libavcodec/h264.o poirierg at gmail dot com
2006-10-12 14:26 ` [Bug c/29440] " poirierg at gmail dot com
2006-10-12 14:28 ` poirierg at gmail dot com
@ 2006-10-12 14:30 ` pinskia at gcc dot gnu dot org
2006-10-12 14:34 ` pinskia 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 @ 2006-10-12 14:30 UTC (permalink / raw)
To: gcc-bugs
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|major |normal
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29440
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/29440] 4.2 20061007 experimental misscompiles libavcodec/h264.o
2006-10-12 14:23 [Bug c/29440] New: 4.2 20061007 experiemental misscompiles libavcodec/h264.o poirierg at gmail dot com
` (2 preceding siblings ...)
2006-10-12 14:30 ` [Bug middle-end/29440] 4.2 20061007 experimental " pinskia at gcc dot gnu dot org
@ 2006-10-12 14:34 ` pinskia at gcc dot gnu dot org
2006-10-12 14:40 ` pluto at agmk dot net
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-10-12 14:34 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from pinskia at gcc dot gnu dot org 2006-10-12 14:34 -------
Does it work when compiled with -O0 instead of -O4? How about -O1?
Besies above, I noticed that the asm in get_cabac looks to be clobbering memory
but is not marked as such.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29440
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/29440] 4.2 20061007 experimental misscompiles libavcodec/h264.o
2006-10-12 14:23 [Bug c/29440] New: 4.2 20061007 experiemental misscompiles libavcodec/h264.o poirierg at gmail dot com
` (3 preceding siblings ...)
2006-10-12 14:34 ` pinskia at gcc dot gnu dot org
@ 2006-10-12 14:40 ` pluto at agmk dot net
2006-10-12 14:53 ` poirierg at gmail dot com
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: pluto at agmk dot net @ 2006-10-12 14:40 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from pluto at agmk dot net 2006-10-12 14:40 -------
(In reply to comment #3)
> Does it work when compiled with -O0 instead of -O4? How about -O1?
>
> Besies above, I noticed that the asm in get_cabac looks to be clobbering memory
> but is not marked as such.
>
Andrew, this testcase violates aliasing rules.
h264.c: In function 'filter_mb_fast':
h264.c:7074: warning: dereferencing type-punned pointer will break
strict-aliasing rules
--
pluto at agmk dot net changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |pluto at agmk dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29440
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/29440] 4.2 20061007 experimental misscompiles libavcodec/h264.o
2006-10-12 14:23 [Bug c/29440] New: 4.2 20061007 experiemental misscompiles libavcodec/h264.o poirierg at gmail dot com
` (4 preceding siblings ...)
2006-10-12 14:40 ` pluto at agmk dot net
@ 2006-10-12 14:53 ` poirierg at gmail dot com
2006-10-12 15:03 ` poirierg at gmail dot com
2006-10-13 7:37 ` poirierg at gmail dot com
7 siblings, 0 replies; 9+ messages in thread
From: poirierg at gmail dot com @ 2006-10-12 14:53 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from poirierg at gmail dot com 2006-10-12 14:53 -------
Hello,
(In reply to comment #3)
> Does it work when compiled with -O0 instead of -O4? How about -O1?
The code compiles and produces the expected result with -O1, O2, but can't be
compiled with -O0:
In file included from h264.c:36:
cabac.h: In function 'get_cabac':
cabac.h:454: error: can't find a register in class 'GENERAL_REGS' while
reloading 'asm'
cabac.h:454: error: 'asm' operand has impossible constraints
h264.c: In function 'decode_cabac_residual':
h264.c:6120: warning: initialization from incompatible pointer type
> Besies above, I noticed that the asm in get_cabac looks to be clobbering memory
> but is not marked as such.
I can't really comment on that as I'm not too inline-asm fluent... however, I
can say that this code can't be compiled without -fomit-frame-pointer.
Is GCC supposed to produce valid code with this source to begin with?
Guillaume
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29440
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/29440] 4.2 20061007 experimental misscompiles libavcodec/h264.o
2006-10-12 14:23 [Bug c/29440] New: 4.2 20061007 experiemental misscompiles libavcodec/h264.o poirierg at gmail dot com
` (5 preceding siblings ...)
2006-10-12 14:53 ` poirierg at gmail dot com
@ 2006-10-12 15:03 ` poirierg at gmail dot com
2006-10-13 7:37 ` poirierg at gmail dot com
7 siblings, 0 replies; 9+ messages in thread
From: poirierg at gmail dot com @ 2006-10-12 15:03 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from poirierg at gmail dot com 2006-10-12 15:03 -------
(In reply to comment #4)
> (In reply to comment #3)
> > Does it work when compiled with -O0 instead of -O4? How about -O1?
> >
> > Besies above, I noticed that the asm in get_cabac looks to be clobbering memory
> > but is not marked as such.
> >
>
> Andrew, this testcase violates aliasing rules.
>
> h264.c: In function 'filter_mb_fast':
> h264.c:7074: warning: dereferencing type-punned pointer will break
> strict-aliasing rules
For what it's worth, the code around line 7074 compiled correctly with snapshot
4.2-20060909 and has been in FFmpeg since Mon Aug 28 09:33:01 2006 UTC, so IMHO
it shouldn't be the cause of the problem I'm reporting today.
However, if you have a suggestion to improve this code, I'm all ears
Guillaume
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29440
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/29440] 4.2 20061007 experimental misscompiles libavcodec/h264.o
2006-10-12 14:23 [Bug c/29440] New: 4.2 20061007 experiemental misscompiles libavcodec/h264.o poirierg at gmail dot com
` (6 preceding siblings ...)
2006-10-12 15:03 ` poirierg at gmail dot com
@ 2006-10-13 7:37 ` poirierg at gmail dot com
7 siblings, 0 replies; 9+ messages in thread
From: poirierg at gmail dot com @ 2006-10-13 7:37 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from poirierg at gmail dot com 2006-10-13 07:37 -------
(In reply to comment #3)
> Does it work when compiled with -O0 instead of -O4? How about -O1?
>
> Besies above, I noticed that the asm in get_cabac looks to be clobbering memory
> but is not marked as such.
Damn, that was the bug. I don't quite understand why 4.0 and 4.1 weren't
affected on Linux, whereas 3.4.6 was affected.
Sorry for the trouble, and thanks for the great work!
Guillaume
--
poirierg at gmail dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29440
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2006-10-13 7:37 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-10-12 14:23 [Bug c/29440] New: 4.2 20061007 experiemental misscompiles libavcodec/h264.o poirierg at gmail dot com
2006-10-12 14:26 ` [Bug c/29440] " poirierg at gmail dot com
2006-10-12 14:28 ` poirierg at gmail dot com
2006-10-12 14:30 ` [Bug middle-end/29440] 4.2 20061007 experimental " pinskia at gcc dot gnu dot org
2006-10-12 14:34 ` pinskia at gcc dot gnu dot org
2006-10-12 14:40 ` pluto at agmk dot net
2006-10-12 14:53 ` poirierg at gmail dot com
2006-10-12 15:03 ` poirierg at gmail dot com
2006-10-13 7:37 ` poirierg at gmail 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).