[llvm-dev] How to "use" the LLVM API?
Thomas Krüger via llvm-dev
llvm-dev at lists.llvm.org
Sun Mar 26 23:07:05 PDT 2017
I currently work with the LLVM API in the C language and try to program
a compiler for my own simple programming language, but it is very hard
for me to work with the LLVM API. The concept behind creating a frontend
and use the LLVM API with the complete LLVM backend is great, but to
puzzle over the API calls is very tiring. :-|
My current state:
Yesterday I solved the problem of assigning a text to a new created heap
i8 array indirect with the help of the strncpy stdlib function. But how
to access the "last" array element for terminating sign is unclear for
me. Do not want to use strcat for this case, it have to be easier. ^^
Creating a simple c file and converting it to LLVM IR does not help,
because it does not saying anything about the related API calls to
create this LLVM IR.
Is there any good documentation about "using" the LLVM API?
Do I anything fundamental wrong in the kind of working with the API
I found this kind of Kaleidoscope tutorial, but it do not answer my
questions. The plain API documentation is complete, but does not say
about the "using" these calls. For example LLVMBuildArrayMalloc(...):
Checking the parameters from LLVMBuildArrayMalloc shows up that it is
ideal for creating an dynamic heap array, but it has no description and
most of the API call signatures are not that easy to identify like the
I would love to see help for these simple standard cases:
- How to assign a text to a string variable?
- How to access for example the 4th element in a heap-allocated array?
- How to create local variables which are not part of the global scope?
- How to create complex structures like classes and objects?
- and so on
Some hints in the internet say tht I should move my "problems" into C
language, so writing functions for my compiler in plain C and link this
file to the compiler, so there is less need for knowing how to do things
in the LLVM API. But I want to write everything with the API, because it
is full type safe and it does make more sence for me. It is currently
harder for me to use the LLVM API than to create a workable new
programming language, should be vice versa. ^^
Thanks in advance for help. :)
More information about the llvm-dev