<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">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>