This patch incorporates TBAA information into LValueBaseInfo to they can be propagated as a whole. It shouldn't contain any functional changes.
Diff Detail
Event Timeline
Please make sure to add the mailing list as a subscriber when you post a patch. (I haven't looked at the patch yet.)
lib/CodeGen/CodeGenModule.cpp | ||
---|---|---|
55 | Oops. Will be removed. |
Hmm. I'm not sure I like the design of merging TBAAAccessInfo into LValueBaseInfo. LValueBaseInfo is currently the set of information that's generally preserved across l-value manipulations. It was extracted from LValue specifically to create an encapsulated entity that can just be mindlessly propagated in most of that code. But if you merge TBAA information into it, then l-value manipulations need to be aware of its contents, in the same way they have to be aware of everything else they're storing in the new LValue. The fact that code needs to be aware of it suggests it should continue to be an explicit argument, or at the very least be combined with something else that l-value manipulations generally already need to be aware of, like the type.
Indeed, if LValueBaseInfo is what we know about the very first value in a sequence, then TBAA info certainly should not be part of it. This also means whatever is specified as a direct base lvalue to the lvalue we are constructing should probably be passed as LValue, as suggested in D39177.
Thanks!
Oops. Will be removed.