[LLVMdev] infinitely recursive named struct types

Chris Lattner clattner at apple.com
Thu Oct 6 17:28:13 PDT 2011


On Oct 6, 2011, at 4:00 PM, NAKAMURA Takumi wrote:

> Chris,
> 
>>> Looks like it is possible to create an infinitely recursive struct type, llvm-as accepts this:
>>> %s = type { i32, i8, %s }
>> 
>> This should be illegal, and should probably be caught by the verifier.
> 
> I suppose Edwin would like llvm to check (and let failed) in type
> constructing, earlier than verifier.
> I guess, such a insane type building might cause in various point,
> ...to go in an infinite loop or stack overflow.

There is a balance between time and cost of what happens in asserts and the verifier.  If it's fast and has good algorithmic complexity, I wouldn't object to it as an assert.

-Chris



More information about the llvm-dev mailing list