[LLVMdev] Metadata/Value split has landed

Keno Fischer kfischer at college.harvard.edu
Thu Dec 18 01:43:42 PST 2014

Hi Duncan,

I'm in the following situation for which this change caused an assertion

Three modules, let's say A B C
Two function, F in A, G in B

Now I CloneFunction F into B (call the new function F') and inline F' into
Now, for the problematic part, where I try to extract G (and all referenced
values) into C:

upon encountering any debug node in the inlined code, it tries to clone the
DISubprogram for F', so it creates a temporary. Since that refers to F',
it'll now go ahead and copy F'. However, here once again it tries to copy
the DISubprogram, which now just uses the temporary value from above (this
is fine). Unfortunately, right after, it calls resolveCycles on the debug
info annotation, which crashes with

Assertion failed: (!isa<MDNodeFwdDecl>(Op) && "Expected all forward
declarations to be resolved"), function resolveCycles, file
/Users/kfischer/julia/deps/llvm-svn/lib/IR/Metadata.cpp, line 459.

because we still have the temporary DISubprogram in there.

Any ideas what to do about this?

On Wed, Dec 10, 2014 at 12:22 AM, Duncan P. N. Exon Smith <
dexonsmith at apple.com> wrote:
> The `Metadata`/`Value` split (PR21532) landed in r223802 -- at least, the
> C++ side of it.  This was a rocky day, but I suppose that's what I get
> for failing to stage the change in smaller pieces.
> As of r223916 (lldb), I'm not aware of any remaining (in-tree) breakage,
> so if I've missed some problem in the sea of buildbot errors, please
> flag me down.
> I'll follow up soon with bitcode and assembly changes!
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141218/ceba8024/attachment.html>

More information about the llvm-dev mailing list