On 2011-Sep-10 12:46:50 +0300, Andriy Gapon <a...@freebsd.org> wrote:
>on 10/09/2011 11:07 Andriy Gapon said the following:
>> Actually, removing either -mrtd _or_ -fno-unit-at-a-time produces the correct
>> code.  Puzzled.
>
>The problem is reproducible with base gcc and gcc42, it is not reproducible
>with gcc45, gcc46 and clang.

I was just checking gcc44 & gcc46.  gcc44 inlines the entire function
and I couldn't quickly find the offending code to see if the bug was
there or not.  I agree you've triggered a gcc bug but I'm not sure of
the correct approach to fix it.  I've tried a few trivial code
transforms within vdev_read_phys() but haven't stumbled on one that
avoids the problem.

Since -mrtd changes the calling convention, it's a more intrusive
change.  I'm not sure if there's any simple way to alter CFLAGS for
a single file (since we only want to alter the zfsboot.c compilation.

-- 
Peter Jeremy

Attachment: pgpmdN08zKeyD.pgp
Description: PGP signature

Reply via email to