On Sun, Jan 5, 2014 at 6:25 AM, Tim Chase <[email protected]> wrote:
> Oops, sorry about the cut/paste error. Here's the proper commit for the
> hack-ish workaround to the GCC 4.8 aggressive loop optimization:
> https://github.com/dweeezil/zfs/commit/5495e9e110c41121cd6946e1b355537b9b7e8f64.
> Also, I mentioned that FreeBSD used an older version of GCC but I had
> forgotten that it was using clang/llvm these days. I do build under Linux
> with clang from time to time but hadn't tested whether this problem also
> manifests itself in that case.
>
>
Wow, that is pretty nasty. Seems that GCC is saying that it is no longer
valid to index off the end of an array. Maybe a proper fix would be to use
a union for the end of the dnode_phys_t:
union {
blkptr_t dn_blkptr[3];
struct {
blkptr_t dn_blkptr[1];
uint8_t dn_bonus[DN_MAX_BONUSLEN];
} dn_with_bonus;
struct {
blkptr_t dn_blkptr[1];
uint8_t dn_bonus[DN_MAX_BONUSLEN - sizeof (blkptr_t)];
blkptr_t dn_spill;
} dn_with_spill;
} dn_u;
--matt
_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer