<div dir="ltr">Thanks again John. I am working on it. Once I get it working. I will post the relevant instructions for others to take a look, in future, and complete the loop. Thanks again. <div class="gmail_extra"><br>
<br><div class="gmail_quote">On Mon, Sep 1, 2014 at 5:13 PM, 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>Dear Manish,<br>
      <br>
      Union types in LLVM are points to structures, so casting 8, 16,
      32, and 64 bit values to a union pointer is probably not what you
      want.<br>
      <br>
      I think the easiest thing to do is to:<br>
      <br>
      1) Change the function in your run-time library to take the
      largest integer size supported by your target.<br>
      <br>
      2) Change the instrumentation code to cast all values (including
      pointers) to this type.<br>
      <br>
      I'm not sure if CastInst::isCastable() is what you want to use to
      check to see that the casting can be done.  I would just go ahead
      and use the bit-cast since, for the call, you should always be
      casting from a type with lower bit-width to higher bit-width.  If
      you enable assertions when you build LLVM, then you should get an
      assertion if you try to create a Bitcast instruction that isn't
      going to work.<br>
      <br>
      Regards,<br>
      <br>
      John Criswell<div><div><br>
      <br>
      <br>
      On 9/1/14, 4:50 PM, Manish Gupta wrote:<br>
    </div></div></div>
    <blockquote type="cite"><div><div>
      <div dir="ltr">
        <div>Hi All,</div>
        <div><br>
        </div>
        <div><br>
        </div>
        My instrumentation code needs to insert calls to transmit Value
        list. Each element in this list could be of different type. The
        list is sent to instrumenting function say void
        recordVarInputValues(int num, ...) . So, I have created a Union
        type in Tracing.cpp, which I link with my benchmark module at
        compile time. These steps are similar to giri instrumentation <a href="https://github.com/liuml07/giri" target="_blank">https://github.com/liuml07/giri</a>
        <div>
          <br>
        </div>
        <div>
          <div>union NumericType</div>
          <div>{</div>
          <div>    int         iValue;</div>
          <div>    long        lValue;  </div>
          <div>    double      dValue;  </div>
          <div>     ...</div>
          <div>};</div>
        </div>
        <div><br>
        </div>
        <div>Now, I would like to convert all the llvm Values, required
          by recordVarInputValues function, to be of NumericType. So
          that a variable length list of NumerricType values can be
          passed to my instrumentation function. This way I will not
          have to create different instrumentation functions for
          different data types. </div>
        <div><br>
        </div>
        <div>Can I cast say i32 value to NumericType value in my
          instrumentation code, without inserting additional
          instructions in my benchmark code. I tried inserting bitcast
          instructions and it doesn't work for me...</div>
        <div><br>
        </div>
        <div>
          <div>if(!CastInst::isCastable(Lvals[j]->getType(),
            UnionVar->getType())){</div>
          <div>      errs()<<"CAST TO NumericType NOT POSSIBLE\n";</div>
          <div>      exit(0);</div>
          <div>    }      </div>
          <div>    CastInst *I = CastInst::CreateZExtOrBitCast(Lvals[j],
            UnionVar->getType(), "", F);</div>
          <div> </div>
        </div>
        <div><br>
        </div>
        <div>Is this even possible or some other method will be better? </div>
        <div><br>
        </div>
        <div>Thanks!</div>
        <div>Manish</div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
    </blockquote>
    <br>
  </div>

</blockquote></div><br></div></div>