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