[PATCH] D31267: [codeview] Move type index remapping logic to type merger

Reid Kleckner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 22 16:42:45 PDT 2017


rnk added inline comments.


================
Comment at: lib/DebugInfo/CodeView/TypeStreamMerger.cpp:163
+Error TypeStreamMerger::visitKnownRecord(CVType &, ModifierRecord &R) {
+  return writeRecord(R, remapIndex(R.ModifiedType));
+}
----------------
zturner wrote:
> rnk wrote:
> > zturner wrote:
> > > I forgot why we store `LastError` and proceed through the type stream, instead of just returning the error right away and failing.  Do you happen to know?
> > Yes, we want to be able to recover from corrupted records by skipping the record and mapping all uses of it to the untranslated type index. One bad type index shouldn't make us throw away all type information when linking.
> Perhaps we could do a better job joining together the errors then.  Is it worth it to save *all* the errors?  If not, I think "first error" would be better than "last error".  Right now we skip a few (for example if `remapIndex` fails multiple times on a single record)
I think just the first would be good enough. If we really want to improve error handling, we'd make a note of which index from which source stream was problematic, since that's what you need to debug it.


https://reviews.llvm.org/D31267





More information about the llvm-commits mailing list