[llvm-dev] Recursive Structure Type

Mehdi Amini via llvm-dev llvm-dev at lists.llvm.org
Fri Sep 23 09:04:29 PDT 2016


I am wondering about this IR:

%struct.__sFILE = type { %struct.__sFILE }

This seems invalid to me (but one may consider that the structure it just empty maybe?), but test/Verifier/recursive-struct-param.ll was committed while back to ensure the verifier accepts it.

LangRef says "Identified types can be recursive”, which I always read as with an implicit “through a pointer”.

So, what is the intention here? Do we support this construct? (Bonus: what is the use case?).

If we support this, we should fix the bitcode reader:

$ opt test/Verifier/recursive-struct-param.ll   | opt
error: Invalid TYPE table: Only named structs can be forward referenced (Producer: 'LLVM4.0.0svn' Reader: 'LLVM 4.0.0svn’)


More information about the llvm-dev mailing list