kosarev added a comment.

With this patch applied we fail on bootstrapping stages of release builds 
(meaning enabled TBAA).

The reason is that for some casts we do not generate TBAA info that corresponds 
to the target type and leave them with TBAA info for the cast's operand 
expression. This results in invalid TBAA access descriptors. For example, for 
the following store we generate a TBAA descriptor with ##S## as the base type 
and ##unsigned## as the access type while the expected descriptor shall have 
##V## as the base type and ##unsigned## as the access type.

  struct V {
    unsigned n;
  };
  
  struct S {
    char bytes[4];
  };
  
  void foo(S *p) {
    ((V*)p->bytes)->n = 0;
  }


Repository:
  rL LLVM

https://reviews.llvm.org/D38796



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to