<div>Hi</div><br><div>For this following code:</div><br><code><pre style="background-color:rgba(0,0,0,0.05);padding:0.2em 1em"><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(0, 0, 255)">class</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""> </font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(38, 127, 153)">Testpm</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""> {</font></div><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(0, 0, 255)">public:</span></font></div><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(0, 0, 255)">void</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""> </font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(121, 94, 38)">m_func1</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">() { cout << </font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(163, 21, 21)">"m_func1</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(255, 0, 0)">\n</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(163, 21, 21)">"</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">; }</font></div><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(0, 0, 255)">int</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""> a;</font></div><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">};</font></div><br><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(0, 0, 255)">void</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""> (Testpm::*pmfn)();</font></div><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(0, 0, 255)">int</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""> </font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(121, 94, 38)">orig61One_main</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">()</font></div><code><pre style="background-color:rgba(0,0,0,0.05);padding:0.2em 1em"><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">{</font></div><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">Testpm ATestpm;</font></div><br><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">pmfn = &Testpm::m_func1;</font></div><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">}</font></div></pre></code></pre></code><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">the clang generates following LLVM IR for the 'pmfn = &Testpm:</font><span data-emoji-typing="true"><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">:m_func1</font></span><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">':</font></div><br><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">store { i64, i64 } { i64 ptrtoint (void (%class.Testpm*)* @_ZN6Testpm7m_func1Ev to i64), i64 0 }, { i64, i64 }* @pmfn, align 8</font></div><br><div>I want to add instruction after or before this to extract what have stored in 'pmfn' (the target address). What I have is the StoreInst and associated Value (source) and Address (destination). Can anyone suggest a way to solve this problem?</div><br><div class="gmail_quote_attribution">On Sep 25 2018, at 5:08 pm, Mustakimur Rahman Khandaker (Mustakim) <mustakcsecuet@gmail.com> wrote:</div><blockquote><br><div><div>Hello</div><br><div>I am working on clang codegen module to parse some information in compile time. So, here is an example LLVM Value:</div><br><div>{ i64, i64 } { i64 ptrtoint (void (%class.Testpm*)* @_ZN6Testpm7m_func1Ev to i64), i64 0 }</div><br><div>I want to parse this Value so that I can check the source type using in <strong>ptrtoint</strong> casting instruction (i.e. <font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(0, 0, 255)">void</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""> (</font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(0, 0, 255)">%class.Testpm*</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">)*</font>). I have tried following:</div><br><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""><span style="color:rgb(175, 0, 219)">if</span></font><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback""> (isa<llvm::PtrToIntInst>(Val)) {</font></div><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">llvm::IntToPtrInst *iptr = dyn_cast<llvm::PtrToIntInst>(Val);</font></div><div><font style="font-family:"Droid Sans Mono", monospace, monospace, "Droid Sans Fallback"">}</font></div><br><div>but it is not working. Any idea?</div></div></blockquote><img class="mailspring-open" alt="Open Tracking" width="0" height="0" style="border:0; width:0; height:0;" src="https://link.getmailspring.com/open/1538154033.local-39e7939e-e706-v1.4.2-f587b7b7@getmailspring.com?recipient=Y2ZlLWRldkBsaXN0cy5sbHZtLm9yZw%3D%3D">