Hi All, I was searching for, extracting information about 'typedefed struct types' from 'module'. I have 'struct' typedefed in a .h file. I try to use this structure instance inside a function. My .ll file rightly defines this type in the beginning so that it can be used later. (for example below) %struct.DEBLOCK_UNIT = type { i8*, i8*, i8*, i8, i32, i32, %struct.DEBLOCK_UNIT*, %struct.DEBLOCK_UNIT*, %struct.DEBLOCK_UNIT* } ..... define void @DeblockAreaFetch(i8* %SrcY, i8* %SrcU, i8* %SrcV, i32 %FrameWidth, %struct.DEBLOCK_UNIT* nocapture %DeblockUnit, i32 %TransferWidth) nounwind { entry: } How to I get information about "%struct.DEBLOCK_UNIT" from the 'Module' of this file ? The approach I tried was to iterate through the "global variable list" and extract type from there. This works well for below case. %struct._D_ChannelReg = type { %struct._D_ChannelReg*, i8*, i8*, i32, i32, i32, [2 x i32] } @gInterPredD = external global %struct._D_ChannelReg* In this case "gInterPredD" is a global variable and hence I easily get information about it's type and their element type. But for the case, where an instance of this 'typedefed struct' is passed as a variable or used inside a function, In llvm2.9, we had TypeSymbolTable in module which used to have information about all the types explicitly. I think no such information is present from llvm3.0 onwards due to type system change. So, is it the case that I have to get the type information as and when I encounter any variable which is of type 'typedefed struct' only ? Thanks & Regards, Pankaj -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120922/d556fff9/attachment.html>
Hi Pankaj, you may find include/llvm/TypeFinder.h useful. Ciao, Duncan. On 22/09/12 16:26, Pankaj Gode wrote:> Hi All, > I was searching for, extracting information about 'typedefed struct types' from > 'module'. > I have 'struct' typedefed in a .h file. I try to use this structure instance > inside a function. > My .ll file rightly defines this type in the beginning so that it can be used > later. (for example below) > %struct.DEBLOCK_UNIT = type { i8*, i8*, i8*, i8, i32, i32, > %struct.DEBLOCK_UNIT*, %struct.DEBLOCK_UNIT*, %struct.DEBLOCK_UNIT* } > ..... > define void @DeblockAreaFetch(i8* %SrcY, i8* %SrcU, i8* %SrcV, i32 %FrameWidth, > %struct.DEBLOCK_UNIT* nocapture %DeblockUnit, i32 %TransferWidth) nounwind { > entry: > } > How to I get information about "%struct.DEBLOCK_UNIT" from the 'Module' of this > file ? > The approach I tried was to iterate through the "global variable list" and > extract type from there. This works well for below case. > %struct._D_ChannelReg = type { %struct._D_ChannelReg*, i8*, i8*, i32, i32, i32, > [2 x i32] } > @gInterPredD = external global %struct._D_ChannelReg* > In this case "gInterPredD" is a global variable and hence I easily get > information about it's type and their element type. > But for the case, where an instance of this 'typedefed struct' is passed as a > variable or used inside a function, > In llvm2.9, we had TypeSymbolTable in module which used to have information > about all the types explicitly. I think no such information is present from > llvm3.0 onwards due to type system change. > So, is it the case that I have to get the type information as and when I > encounter any variable which is of type 'typedefed struct' only ? > Thanks & Regards, > Pankaj > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
Thanks. This file was very much useful. I could get the required information by referencing contents from this file. Thanks & Regards, Pankaj ________________________________ From: Duncan Sands <baldrick at free.fr> To: llvmdev at cs.uiuc.edu Sent: Saturday, September 22, 2012 8:28 PM Subject: Re: [LLVMdev] Typedef struct types Hi Pankaj, you may find include/llvm/TypeFinder.h useful. Ciao, Duncan. On 22/09/12 16:26, Pankaj Gode wrote:> Hi All, > I was searching for, extracting information about 'typedefed struct types' from > 'module'. > I have 'struct' typedefed in a .h file. I try to use this structure instance > inside a function. > My .ll file rightly defines this type in the beginning so that it can be used > later. (for example below) > %struct.DEBLOCK_UNIT = type { i8*, i8*, i8*, i8, i32, i32, > %struct.DEBLOCK_UNIT*, %struct.DEBLOCK_UNIT*, %struct.DEBLOCK_UNIT* } > ..... > define void @DeblockAreaFetch(i8* %SrcY, i8* %SrcU, i8* %SrcV, i32 %FrameWidth, > %struct.DEBLOCK_UNIT* nocapture %DeblockUnit, i32 %TransferWidth) nounwind { > entry: > } > How to I get information about "%struct.DEBLOCK_UNIT" from the 'Module' of this > file ? > The approach I tried was to iterate through the "global variable list" and > extract type from there. This works well for below case. > %struct._D_ChannelReg = type { %struct._D_ChannelReg*, i8*, i8*, i32, i32, i32, > [2 x i32] } > @gInterPredD = external global %struct._D_ChannelReg* > In this case "gInterPredD" is a global variable and hence I easily get > information about it's type and their element type. > But for the case, where an instance of this 'typedefed struct' is passed as a > variable or used inside a function, > In llvm2.9, we had TypeSymbolTable in module which used to have information > about all the types explicitly. I think no such information is present from > llvm3.0 onwards due to type system change. > So, is it the case that I have to get the type information as and when I > encounter any variable which is of type 'typedefed struct' only ? > Thanks & Regards, > Pankaj > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >_______________________________________________ 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/20120924/2337e438/attachment.html>