Hi, I have some IR files which can be compiled using llc-3.0 and gcc-4.6.3. I want to instrument these IR files. My instrumentation pass is implemented under LLVM-3.5 and some data structures in LLVM-3.5 are not available on LLVM-3.0, such as *AttributeSet* in *Attribute.h*. I tried to compile my instrumentation pass under LLVM-3.0 and it failed due to missing data types. So I am asking whether it is possible to use LLVM-3.5 to instrument the IR files? If not, is there any walk around? Thanks! Gaoyao -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140715/5b1c0eed/attachment.html>
On 7/15/14, 9:32 AM, Gaoyao Xiao wrote:> Hi, > > > I have some IR files which can be compiled using llc-3.0 and > gcc-4.6.3. I want to instrument these IR files. My instrumentation > pass is implemented under LLVM-3.5 and some data structures in > LLVM-3.5 are not available on LLVM-3.0, such as /AttributeSet/ in > /Attribute.h/. I tried to compile my instrumentation pass under > LLVM-3.0 and it failed due to missing data types. So I am asking > whether it is possible to use LLVM-3.5 to instrument the IR files? If > not, is there any walk around?I believe LLVM 3.5 is supposed to be able to read bitcode files from LLVM 3.0. It is possible, though, that bugs may prevent this from working. If it doesn't work, you should probably file a bug report with (if possible) a reduced test case. If reading the old bitcode files directly into opt/clang/whatever doesn't work, try disassembling the bitcode into an assembly file with llvm-dis from LLVM 3.0 and re-assembling the output using llvm-as from LLVM 3.5: llvm-dis-3.0 -f -o - file.bc | llvm-as-3.5 -f -o newfile.bc Regards, John Criswell> > Thanks! > Gaoyao > > > _______________________________________________ > 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/20140715/6559ceaf/attachment.html>
On 15 July 2014 15:46, John Criswell <jtcriswel at gmail.com> wrote:> I believe LLVM 3.5 is supposed to be able to read bitcode files from LLVM > 3.0.Not having tests for that makes it really hard to be sure it works, and we didn't particularly kept it as a design goal throughout development since then. Things like how unions and structures are represented and marshaled, how functions are called (PCS) and more drastically debug metadata have changed so much that it'd be near impossible to read any reasonably sized 3.0 IR with the current tools. cheers, --renato
On Tue, Jul 15, 2014 at 10:46 AM, John Criswell <jtcriswel at gmail.com> wrote:> On 7/15/14, 9:32 AM, Gaoyao Xiao wrote: > > Hi, > > > I have some IR files which can be compiled using llc-3.0 and gcc-4.6.3. > I want to instrument these IR files. My instrumentation pass is implemented > under LLVM-3.5 and some data structures in LLVM-3.5 are not available on > LLVM-3.0, such as *AttributeSet* in *Attribute.h*. I tried to compile my > instrumentation pass under LLVM-3.0 and it failed due to missing data > types. So I am asking whether it is possible to use LLVM-3.5 to instrument > the IR files? If not, is there any walk around? > > > I believe LLVM 3.5 is supposed to be able to read bitcode files from LLVM > 3.0. It is possible, though, that bugs may prevent this from working. If > it doesn't work, you should probably file a bug report with (if possible) a > reduced test case. > > If reading the old bitcode files directly into opt/clang/whatever doesn't > work, try disassembling the bitcode into an assembly file with llvm-dis > from LLVM 3.0 and re-assembling the output using llvm-as from LLVM 3.5: >opt and clang can read the bitcode but the produced binary cannot run.> > llvm-dis-3.0 -f -o - file.bc | llvm-as-3.5 -f -o newfile.bc >I tried this and the newfile.bc is incorrect. newfile.bc can be compiled to binary but cannot run. I also tried to this: *llvm-dis-3.0 -f -o - file.bc | llvm-as-3.5 -f -o newfile.bcllvm-dis-3.5 -f -o newfile.bc | llvm-as-3.0 -o newnewfile.bc* llvm-as-3.0 fails and give errors as below: llvm-as: /home/jun/New_SecondWrite_Output/benchmarks/bzip2_O3/bzip2_O3-3.5.ll:43:37: error: expected top-level entity declare void @perror(i8* nocapture) #0 So it seems llvm3.5 indeed is incompatible with llvm3.0.> > Regards, > > John Criswell > > > Thanks! > Gaoyao > > > _______________________________________________ > LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://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/20140715/a28267ed/attachment.html>