David,
As you suggested, I try to compile the following test code:
*include "llvm/IR/Instruction.h"#include "stdint.h"extern
void
callback(intptr_t);void foo(){ llvm::Instruction* i; intptr_t
zzzz=static_cast<intptr_t>(i); callback(zzzz);}*
but got this compilation error:
* 'intptr_t' (aka 'long') is not allowed intptr_t
zzzz=static_cast<intptr_t>(i); ^~~~~~~~~~~~~~~~~~~~~~~~1
warning and 1 error generated.*
For information, my OS is a Ubuntu 14.04 (VM), and my command line used to
compile the program is
*clang prog.cpp -c -fno-rtti -std=c++11 `llvm-config --cxxflags` -o
prog.cpp.bc *
Any idea on why the casting does not work? Thanks in advance.
Zhoulai
On Wed, May 6, 2015 at 4:12 PM, David Blaikie <dblaikie at gmail.com>
wrote:
> intptr_t id = static_cast<intptr_t>(inst);
>
> ?
>
> On Wed, May 6, 2015 at 3:33 PM, Zhoulai <zell08v at gmail.com> wrote:
>
>> Hi,
>>
>> I wonder whether we can easily retrieve an LLVM instruction ID that
>> uniquely identifies the instruction. In my case, I need to avoid using
>> llvm::Instruction* directly. Given an 'inst' of type
llvm::instruction*, is
>> there some readily usable method as simple as "int id =
inst->id( )"?
>> Thanks.
>>
>> Zhoulai
>>
>> _______________________________________________
>> 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/20150506/4db542f4/attachment.html>
I just tried with reinterpret-cast instead of static_cast. It seems working. I hope it is safe. Zhoulai On Wed, May 6, 2015 at 5:21 PM, Zhoulai <zell08v at gmail.com> wrote:> David, > > As you suggested, I try to compile the following test code: > > > > > > > > > > *include "llvm/IR/Instruction.h"#include "stdint.h"extern void > callback(intptr_t);void foo(){ llvm::Instruction* i; intptr_t > zzzz=static_cast<intptr_t>(i); callback(zzzz);}* > but got this compilation error: > > > > > > * 'intptr_t' (aka 'long') is not allowed intptr_t > zzzz=static_cast<intptr_t>(i); ^~~~~~~~~~~~~~~~~~~~~~~~1 > warning and 1 error generated.* > > For information, my OS is a Ubuntu 14.04 (VM), and my command line used to > compile the program is > > > *clang prog.cpp -c -fno-rtti -std=c++11 `llvm-config --cxxflags` -o > prog.cpp.bc * > Any idea on why the casting does not work? Thanks in advance. > > Zhoulai > > On Wed, May 6, 2015 at 4:12 PM, David Blaikie <dblaikie at gmail.com> wrote: > >> intptr_t id = static_cast<intptr_t>(inst); >> >> ? >> >> On Wed, May 6, 2015 at 3:33 PM, Zhoulai <zell08v at gmail.com> wrote: >> >>> Hi, >>> >>> I wonder whether we can easily retrieve an LLVM instruction ID that >>> uniquely identifies the instruction. In my case, I need to avoid using >>> llvm::Instruction* directly. Given an 'inst' of type llvm::instruction*, is >>> there some readily usable method as simple as "int id = inst->id( )"? >>> Thanks. >>> >>> Zhoulai >>> >>> _______________________________________________ >>> 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/20150506/5dd0f4ed/attachment.html>
On Wed, May 6, 2015 at 5:30 PM, Zhoulai <zell08v at gmail.com> wrote:> I just tried with reinterpret-cast instead of static_cast. It seems > working. I hope it is safe. >Yep, my mistake. reinterpret_cast is the right tool for this conversion.> > > Zhoulai > > On Wed, May 6, 2015 at 5:21 PM, Zhoulai <zell08v at gmail.com> wrote: > >> David, >> >> As you suggested, I try to compile the following test code: >> >> >> >> >> >> >> >> >> >> *include "llvm/IR/Instruction.h"#include "stdint.h"extern void >> callback(intptr_t);void foo(){ llvm::Instruction* i; intptr_t >> zzzz=static_cast<intptr_t>(i); callback(zzzz);}* >> but got this compilation error: >> >> >> >> >> >> * 'intptr_t' (aka 'long') is not allowed intptr_t >> zzzz=static_cast<intptr_t>(i); ^~~~~~~~~~~~~~~~~~~~~~~~1 >> warning and 1 error generated.* >> >> For information, my OS is a Ubuntu 14.04 (VM), and my command line used >> to compile the program is >> >> >> *clang prog.cpp -c -fno-rtti -std=c++11 `llvm-config --cxxflags` -o >> prog.cpp.bc * >> Any idea on why the casting does not work? Thanks in advance. >> >> Zhoulai >> >> On Wed, May 6, 2015 at 4:12 PM, David Blaikie <dblaikie at gmail.com> wrote: >> >>> intptr_t id = static_cast<intptr_t>(inst); >>> >>> ? >>> >>> On Wed, May 6, 2015 at 3:33 PM, Zhoulai <zell08v at gmail.com> wrote: >>> >>>> Hi, >>>> >>>> I wonder whether we can easily retrieve an LLVM instruction ID that >>>> uniquely identifies the instruction. In my case, I need to avoid using >>>> llvm::Instruction* directly. Given an 'inst' of type llvm::instruction*, is >>>> there some readily usable method as simple as “int id = inst->id( )”? >>>> Thanks. >>>> >>>> Zhoulai >>>> >>>> _______________________________________________ >>>> 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/20150507/3dcf7222/attachment.html>