[LLVMdev] Resolving an opaque type in llvm-assembly

Reid Kleckner rnk at google.com
Mon Feb 23 11:43:30 PST 2015


In the textual form of LLVM IR, forward references are legal, so you
shouldn't need this kind of redeclaration. You example could be:
%TF = type i32 (%TO*)
%TO = type %TF

However, llvm-as rejects it with "error: forward references to non-struct
type", but that's a different issue.

On Sun, Feb 22, 2015 at 10:31 AM, Rodney M. Bates <rodney_bates at lcwb.coop>
wrote:

> According to the Assembly language reference: "In LLVM, opaque types can
> eventually be resolved to any type (not just a structure type)."  But
> the only way I can think of to do so is to give it a type name, then
> later redeclare the name.  But that gives an error:
>
> %TO = type opaque
> %TF = type i32 ( %TO* )
> %TO = type %TF
>
> gives:
>
> $ llvm-as types1.ll
> llvm-as: types1.ll:3:1: error: redefinition of type
> %TO = type %TF
> ^
>
> Also, what is the set of things that can be done with an as-yet unresolved
> opaque type?
>
>
>
> --
> Rodney Bates
> rodney.m.bates at acm.org
> _______________________________________________
> 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/20150223/1d9d3fdd/attachment.html>


More information about the llvm-dev mailing list