<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jul 15, 2014 at 2:00 PM, Gaoyao Xiao <span dir="ltr"><<a href="mailto:windxing2007@gmail.com" target="_blank">windxing2007@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div class="">On Tue, Jul 15, 2014 at 10:46 AM, John Criswell <span dir="ltr"><<a href="mailto:jtcriswel@gmail.com" target="_blank">jtcriswel@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000"><div>
    <div>On 7/15/14, 9:32 AM, Gaoyao Xiao wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">Hi,
        <div><br>
        </div>
        <div><br>
        </div>
        <div>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 <i>AttributeSet</i> in <i>Attribute.h</i>. 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?</div>
      </div>
    </blockquote>
    <br></div>
    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.<br>
    <br>
    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:<br></div></blockquote></div><div>opt and clang can read the bitcode but the produced binary cannot run.<br></div><div class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div bgcolor="#FFFFFF" text="#000000">
    <br>
    llvm-dis-3.0 -f -o - file.bc | llvm-as-3.5 -f -o newfile.bc<br></div></blockquote></div><div>I tried this and the newfile.bc is incorrect. newfile.bc can be compiled to binary but cannot run.<br></div></div></div></div>
</blockquote><div><br></div><div>This would be good to debug.  There isn't enough info here to know what went wrong.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><div>I also tried to this: 
    <br><i><div class="">llvm-dis-3.0 -f -o - file.bc | llvm-as-3.5 -f -o newfile.bc<br></div>llvm-dis-3.5 -f -o newfile.bc | llvm-as-3.0 -o newnewfile.bc</i></div></div></div></div></blockquote><div><br></div><div>This obviously won't work.  We will generate newer LLVM assembly than the old llvm-as can read.</div>
</div></div></div>