FWIW, doesn't this just need a may_alias attribute on the definition? On Wed, Jul 5, 2017 at 2:39 PM James Y Knight via Phabricator via cfe-commits <cfe-commits@lists.llvm.org> wrote:
> jyknight added a comment. > > Ping. I don't think this got resolved, and I really wouldn't like to see > released in this state...can you either revert this from the library, or > implement the compiler support, before the 5.0 release branch? > > In https://reviews.llvm.org/D31022#716702, @jyknight wrote: > > > I believe this needs compiler support, too, in order to treat > > > > namespace std { enum class byte : unsigned char {}; } > > > > as directly having tbaa type "omnipotent char" instead of a subtype. > > > > That is, given: > > > > void foo(char* x, int *y) { > > x[1] = char(y[0] & 0xff); > > x[0] = char((y[0] & 0xff00) >> 8); > > } > > > > the compiler assumes that x and y might alias each-other, and thus must > have two loads of y[0]. If you replace "char" with "std::byte", the same > should happen, but as of now does not. > > > > > > https://reviews.llvm.org/D31022 > > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits