Thanks, I applied this to master.

On Tue, Sep 30, 2014 at 06:00:03PM -0700, Jarno Rajahalme wrote:
> I buy that,
> 
> Acked-by: Jarno Rajahalme <jrajaha...@nicira.com>
> 
> > On Sep 30, 2014, at 5:03 PM, Ben Pfaff <b...@nicira.com> wrote:
> > 
> > The C standard allows compilers to do type-based alias analysis, which
> > means that the compiler is allowed to assume that pointers to objects of
> > different types are pointers to different objects.  For example, a compiler
> > may assume that "uint16_t *a" and "uint32_t *b" point to different and
> > nonoverlapping locations because the pointed-to types are different.  This
> > can lead to surprising "optimizations" with compilers that by default do
> > this kind of analysis, which includes GCC and Clang.
> > 
> > The one escape clause that the C standard gives us is that character types
> > must be assumed to alias any other object.  We've always tried to use this
> > escape clause to avoid problems with type-based alias analysis in the past.
> > I think that we should continue to try to do this in the future.  It's hard
> > to tell what compiler we might want to use in the future, and one never
> > knows what kind of control that compiler allows over alias analysis.
> > 
> > However, recently I helped another developer debug a nasty and confusing
> > issue, which turned out to be the result of a surprising compiler
> > optimization due to alias analysis.  I've seen enough of these that I don't
> > think it's worthwhile to risk more problems than we have to.  Thus, this
> > commit turns off type-based alias analysis in GCC and Clang.
> > 
> > Linus Torvalds thinks that type-base alias analysis is not sane, at least
> > as GCC implements it: https://lkml.org/lkml/2003/2/26/158
> > 
> > The GCC manual says that -Wstrict-aliasing is only effective without
> > -fno-strict-aliasing, otherwise I'd keep -Wstrict-aliasing also.
> > 
> > Indications are that MSVC doesn't do type-based alias analysis by default.
> > 
> > Signed-off-by: Ben Pfaff <b...@nicira.com>
> > ---
> > configure.ac |    2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/configure.ac b/configure.ac
> > index 35e884a..62224b9 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -104,7 +104,6 @@ OVS_ENABLE_OPTION([-Wformat-security])
> > OVS_ENABLE_OPTION([-Wno-format-zero-length])
> > OVS_ENABLE_OPTION([-Wswitch-enum])
> > OVS_ENABLE_OPTION([-Wunused-parameter])
> > -OVS_ENABLE_OPTION([-Wstrict-aliasing])
> > OVS_ENABLE_OPTION([-Wbad-function-cast])
> > OVS_ENABLE_OPTION([-Wcast-align])
> > OVS_ENABLE_OPTION([-Wstrict-prototypes])
> > @@ -112,6 +111,7 @@ OVS_ENABLE_OPTION([-Wold-style-definition])
> > OVS_ENABLE_OPTION([-Wmissing-prototypes])
> > OVS_ENABLE_OPTION([-Wmissing-field-initializers])
> > OVS_ENABLE_OPTION([-Wthread-safety])
> > +OVS_ENABLE_OPTION([-fno-strict-aliasing])
> > OVS_CONDITIONAL_CC_OPTION([-Wno-unused], [HAVE_WNO_UNUSED])
> > OVS_CONDITIONAL_CC_OPTION([-Wno-unused-parameter], 
> > [HAVE_WNO_UNUSED_PARAMETER])
> > OVS_ENABLE_WERROR
> > -- 
> > 1.7.10.4
> > 
> > _______________________________________________
> > dev mailing list
> > dev@openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to