Gcc 3.x seems to create incorrect code
My apologies if this isn't the right place, but I'm not yet sure of the
exact causes behind the incorrect behaviour I'm seeing.
First, a little background. I'm a co-developer on a linux usb camera driver
for those devices which make use of sunplus spca50x chips. The project is
hosted at <http://sourceforge.net/projects/spca50x/>. As part of that,
I do most of my development on a debian unstable system.
The basic problem is that when I compile with 2.95.4, the driver works as
expected. However, when I use 3.0 or 3.2, the driver fails to correctly
detect the camera being plugged in. The detection code is called, but the
vendor id and device id are corrupt. From memory, the vendor id was always
coming back as 0xffff. It seems almost as if the structure passed into the
function is corrupt, or being read from incorrectly.
At least one other person has confirmed that this happens with the debian
gcc 3.2 compiler, and others have reported no problems on gcc 3.x with
As such, I've come here in the hope that someone can suggest how I might
find out the exact cause of the problem, as I've never had to try and track
down potential compiler bugs before.
Please let me know if there's somewhere more suitable to discuss this, or
if there's any more information I can provide.
Many thanks in advance.