[llvm-dev] Canonical representation for empty lists in debug info metadata

Duncan P. N. Exon Smith via llvm-dev llvm-dev at lists.llvm.org
Fri Aug 21 16:54:10 PDT 2015

> On 2015-Aug-21, at 13:39, David Blaikie <dblaikie at gmail.com> wrote:
> While checking for serialization/deserialization without using pointee types, I've come across a few test cases that crash at head, without my debugging assertions for accessing pointee types.
> One of them is test/Transforms/StripSymbols/2010-06-30-StripDebug.ll
> Its retainedTypes metadata points to a metadata array of a single null element.
> This crashes the dyn_cast (because it's not a dyn_cast_or_null) Verifier.cpp:3785

The Verifier should crash in any case, it should just fail.

> Do you have a preferred/canonical representation intended in this case - an extant, but zero-length list, or no list at all? I tend to prefer no list at all, just because it simplifies reading of the debug info. Rather than seeing a "retainedTypes" property, following it to the metadata, only to find it's zero-length?

I agree: no list at all is better.

More information about the llvm-dev mailing list