[LLVMdev] Unknown or runtime type in function definition?
Daniel Dunbar
daniel at zuster.org
Fri Apr 9 18:24:51 PDT 2010
On Fri, Apr 9, 2010 at 3:11 PM, Eli Friedman <eli.friedman at gmail.com> wrote:
> On Fri, Apr 9, 2010 at 2:11 PM, Bueno, Denis <denbuen at sandia.gov> wrote:
>> Hello all,
>>
>> I'm trying to understand a bit of LLVM IR syntax. I have a function
>> definition which looks like this in IR:
>>
>> define void @foo(%1* ptr) { ...
>>
>> The C code for foo has a definition that looks like:
>>
>> typedef struct bar_struct bar;
>> ... Definition of struct bar_struct ...
>> void foo(bar *ptr) { ...
>>
>> I can't whittle down a convenient test source file just now; but I'm trying
>> to understand what the syntax of the 'define' above means -- specifically,
>> what does it mean for a parameter to have type '%1*'? What is the semantics
>> here? Inside the body of @foo, there is an SSA variable %1 -- is that
>> variable related to the %1 in the type of the parameter? (It doesn't seem
>> to be, which is why I ask.)
>
> In that context, %1 refers to an unnamed struct; whether %1 refers to
> a type or a value is determined by the context. Short example which
> should help:
FWIW, I personally regard this as a bug not a feature. It doesn't make
the IR any easier to read.
- Daniel
>
> %0 = type { i32, float, float, double }
> define i32 @a(%0*) {
> entry:
> getelementptr %0* %0, i32 0, i32 0
> load i32* %1
> ret i32 %2
> }
>
> -Eli
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
More information about the llvm-dev
mailing list