NoQ added a comment. Wow, this crash must have been hard to notice!
I think we shouldn't be default-binding non-lazy compound values. Normally we unpack them into field bindings right away, but it seems that nobody cared to implement this for unions. The current crash goes through `RegionStoreManager::bind()`, 2000 if (Ty->isVectorType()) 2001 return bindVector(B, TR, V); 2002 if (Ty->isUnionType()) -> 2003 return bindAggregate(B, TR, V); I think that instead of doing `bindAggregate()`, we should do something similar to what `RegionStoreManager::bindStruct()` does (the code that handles compound values should probably be factored out). It should be even easier because unions hold only one value. I'm not sure if my suggestion has any immediate benefits to overweight its complexity, but it should make improving support for unions easier in the future. Also, the code for the lazy compound value is really out of place here. All it does is works around the huge and famous FIXME in `getBindingForFieldOrElementCommon()`. But i don't think we should grow this FIXME into unions. Repository: rL LLVM https://reviews.llvm.org/D26442 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits