jyknight added a comment.

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

Reply via email to