[LLVMdev] how to get TargetData?
Zonr Chang
zonr.xchg at gmail.com
Fri May 28 11:06:32 PDT 2010
For those targets supported by LLVM, you can get their TargetData by
creating TargetMachine first (take X86 as example):
==== BEGIN CODE SNIPPET ====
const std::string TripleStr = "i686-unknown-linux"; // hard coded for
example
const std::string FeatureStr = ""; // hard coded for example
std::string Err;
const Target* T;
TargetMachine* TM = NULL;
const TargetData* TD;
// Or just call InitializeAllTargetInfos() and InitializeAllTargets()
for all targets enabled by your LLVM build.
LLVMInitializeX86TargetInfo();
LLVMInitializeX86Target();
T = TargetRegistry::lookupTarget(TripleStr, Err);
if(!Err.empty())
// error handling
// Create TargetMachine
TM = T->createTargetMachine(TripleStr, FeatureStr);
if(TM == NULL)
// error handling
// TD is what you want.
TD = TM->getTargetData();
[...]
// Free TM
delete TM;
==== END CODE SNIPPET ====
For your case, you should be able to find TripleStr and FeatureStr in
somewhere.
And also there's a constructor in TargetData (
http://llvm.org/doxygen/classllvm_1_1TargetData.html#a0d7acb06af9665b54fc74480e2c6c707)
takeing a string "TargetDescription". The string specifies the data layout
of a target and its format is described here
http://llvm.org/docs/LangRef.html#datalayout. Thus, if you are developing a
customized target and/or you are really know the data layout specification
about your target, you can get a TargetData instance by simply passing
the hand-coded data layout string to the constructor of TargetData.
Hope this will be helpful to you.
Zonr
On Fri, May 28, 2010 at 11:27 PM, Victor Zverovich <
victor.zverovich at googlemail.com> wrote:
> Dear all
>
> I am trying to get the size of an LLVM pointer type.
> getPrimitiveSizeInBits() returns 0 for it and the documentation for
> isSized() suggest to use TargetData.
> I figured out from Kaleidoscope example that one can get a pointer to
> TagetData object through the execution engine but it seems to be an
> overkill.
> What is the right way to do it?
>
> Best regards,
> Victor
>
>
> _______________________________________________
> 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/20100529/3e1c41f2/attachment.html>
More information about the llvm-dev
mailing list