[LLVMbugs] [Bug 2911] Assert triggered when complex GC roots initialized

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sat Oct 25 08:08:01 PDT 2008


Gordon Henriksen <gordonhenriksen at mac.com> changed:

           What    |Removed                     |Added
                 CC|                            |gordonhenriksen at mac.com
             Status|NEW                         |RESOLVED
         Resolution|                            |LATER

--- Comment #1 from Gordon Henriksen <gordonhenriksen at mac.com>  2008-10-25 10:07:48 ---
This is by design. That is, the system only supports using pointers as gcroots.
I don't see this changing before a major redesign of the GC system (but patches
are welcome!).

A workaround would be to create (locally constant) pointers to your structs and
pass those to llvm.gcroot:

    %fp = alloca %FatPointerType
    store %FatPointerType { i8* null, i32 0 }, %FatPointerType* %fp
    %fp_root = alloca %FatPointerType*
    %fp_root2 = bitcast %FatPointerType** %fp_root to i8**
    call void @llvm.gcroot(i8** %fp_root2, i8* null)
    store %FatPointerType* %fp, %FatPointerType** %fp

This will cost an extra indirection in the collector and increase function call

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list