similar to: [LLVMdev] Linking with C Library

Displaying 20 results from an estimated 3000 matches similar to: "[LLVMdev] Linking with C Library"

2010 Apr 05
2
[LLVMdev] Linking with C Library
I tried running nm - D | grep "puts" on the binary compiled by the OCaml compiler. It outputs the following: 08161b00 T camlRuntime__rt_fputs_208 08161a20 T camlRuntime__rt_puts_198 U fputs I'm assuming this means that fputs is linked dynamically, and puts is not. I tried modifying my code to use fputs instead of puts instead, but had no success, however, I still get:
2010 Apr 04
0
[LLVMdev] Linking with C Library
In C, on Linux, you would have to link your JIT compiler with -rdynamic or -Wl,-export-dynamic (they're synonyms). I'm not sure what the equivalent linker flag is for OCaml. You can see what symbols are available to the JIT with `nm -D`. On Sun, Apr 4, 2010 at 8:41 AM, Nyx <mcheva at cs.mcgill.ca> wrote: > > I'm coding a JIT compiler for C source in OCaml, using LLVM.
2010 Apr 05
3
[LLVMdev] Linking with C Library
>> You need to figure out how to pass -rdynamic to the linker, like I said before. http://llvm.org/docs/tutorial/OCamlLangImpl7.html mentions it, but I don't know enough about the ocaml build process to say whether that'll work. I believe I'm already doing that, properly by passing -ccopt -rdynamic to ocamlopt: ocamlopt -cc g++ -ccopt -rdynamic -linkall $(LIBFILES) -o alpha
2010 Apr 06
0
[LLVMdev] Linking with C Library
On Mon, Apr 5, 2010 at 3:27 PM, Nyx <mcheva at cs.mcgill.ca> wrote: > >>> You need to figure out how to pass -rdynamic to the linker, like I > said before. http://llvm.org/docs/tutorial/OCamlLangImpl7.html > mentions it, but I don't know enough about the ocaml build process to > say whether that'll work. > > I believe I'm already doing that, properly by
2010 Apr 05
0
[LLVMdev] Linking with C Library
On Sun, Apr 4, 2010 at 5:24 PM, Maxime Chevalier-Boisvert <mcheva at cs.mcgill.ca> wrote: > I tried running nm - D | grep "puts" on the binary compiled by the OCaml > compiler. It outputs the following: > > 08161b00 T camlRuntime__rt_fputs_208 > 08161a20 T camlRuntime__rt_puts_198 >        U fputs > > I'm assuming this means that fputs is linked
2009 Jun 18
2
[LLVMdev] Explicitly Freeing Allocas
That sounds rather cumbersome, is there no simpler way to get the actual size of a struct? John Criswell wrote: > > Nyx wrote: >> Hello, >> >> I would just like to ask if it's possible to explicitly free allocas. >> This >> is because I need to call functions that take structs of different sizes >> as >> input, (possibly inside of loops) and I
2009 Jul 24
1
[LLVMdev] setOnlyReadsMemory / setDoesNotAccessMemory
But, which optimization pass will take advantage of those flags? As for nounwind, that means "can't throw an exception"? - Maxime John McCall-2 wrote: > > Nyx wrote: >> Hello, >> >> I'm in a situation where my code is calling many native functions. >> Sometimes, these calls are simply calls to static "accessor" methods that >>
2009 Jun 29
2
[LLVMdev] Instruction Combining Pass *Breaking* Struct Reads?
I'm in a situation where I have code that works fine if I don't run the instruction combining optimization pass, but breaks when I do. The code in question is meant to allocate space for two structs on the stack using alloca, and then pass pointers to these to a callee function. One struct serves to store the input to the function, the other serves for the callee function to write its
2009 Jun 29
0
[LLVMdev] Instruction Combining Pass *Breaking* Struct Reads?
On Mon, Jun 29, 2009 at 5:54 AM, Nyx<mcheva at cs.mcgill.ca> wrote: > As you can see, I allocate two structs, one taking 16 bytes (containing two > i64 values), and one taking 12 bytes (containing a pointer and an i64 value, > this is on a 32-bit machine) Are you sure that's right? If the target data specifies that a pointer is 64 bits or that i64 has an alignment of 64 bits,
2010 Mar 10
4
[LLVMdev] On-Stack Replacement & Code Patching
I am interested in writing a JIT that makes use of on-stack replacement. This essentially means that the JIT must be able to compile new versions of already compiled functions (eg: more optimized versions) and ensure that the code for the new functions is executed. I was wondering if LLVM offers any support for this. Suppose a function f calls a function g, and f is recompiled while g is running,
2009 Jun 18
0
[LLVMdev] Explicitly Freeing Allocas
In the TargetData class (available from you ExecutionEngine), you have some informations available (such as StructLayout...). On Thu, Jun 18, 2009 at 5:08 PM, Nyx <mcheva at cs.mcgill.ca> wrote: > > That sounds rather cumbersome, is there no simpler way to get the actual > size > of a struct? > > > John Criswell wrote: > > > > Nyx wrote: > >>
2010 Feb 24
5
[LLVMdev] C Compiler written in OCaml, Pointers Wanted
Hello, For a course project, I am required to write a compiler for some language of my choice, and this compiler has to be implemented in a functional language. I have chosen create a *JIT* compiler for C source, and to implement my compiler in OCaml using LLVM for the back-end. I have experience using LLVM in C++ (I wrote a MATLAB JIT compiler not long ago), however, I am a bit puzzled as to how
2009 Jun 05
2
[LLVMdev] Int1 to Double Type Conversion
Hello, I would like to know if there is an instruction to convert values from the Int1 type to the Double type in LLVM. I would like to achieve the equivalent of casting a bool value to a double value in C++. Doing the simple CreateSIToFP or CreateUIToFP does not work, it throws an assertion ("invalid cast"). I simply want to avoid branching it's not necessary. What's the
2009 Jun 12
1
[LLVMdev] Defining/Accessing Structs Dynamically
I have most of the code working but I'm running into two issues: 1. I'm not sure exactly how to return a structure on the stack. Right now, I'm allocating one with alloca, but it seems I can only return a pointer to it, not the structure itself. Is there any way to dereference the pointer? 2. On the calling side, I get a structure as a return value. However, it seems GEP is
2009 Jun 10
1
[LLVMdev] Phi Node Question
I'm designing a JIT compiler and I have a potentially problematic situation. The functions I compile may need to create/access an object during their execution. In the case where this object won't be needed, I'd rather avoid generating code to creating the object, as this is a slight performance waste. Unfortunately, it's rather difficult to know whether this will be the case
2009 Jun 10
2
[LLVMdev] Defining/Accessing Structs Dynamically
Sorry for the high number of questions I've been posting lately! I'm currently facing a design problem. I'm making a JIT for a subset of the MATLAB language and in that language, functions can return many parameters. The issue is that they will not necessarily return *all* the parameters they could return. The actual number of returned parameters is defined at run-time. For speed, I
2009 Mar 16
2
[LLVMdev] Printing x86 ASM for Function
Hello, I would like to know how to go about printing the x86 assembly output for a compiled function (I'm using the JIT). I saw there is a X86IntelAsmPrinter on doxygen. However, it takes several arguments I don't know how to fill in. Is there a helper function to create such a pass? Once I have the pass created, do I just add it to a FunctionPassManager? Thank you for your time, -
2009 Mar 14
3
[LLVMdev] Strange LLVM Crash
Nyx wrote: > The linkage type is set to external, I have little code snippet I use to > register those native functions in the first post of this topic. The global > DCE pass deletes the unused native functions when run. I commented it out > for now... Can you make this happen by writing a custom .ll to demonstrate the problem? For example: $ cat gdce.ll define i32 @foo() {
2009 Mar 27
2
[LLVMdev] JIT Optimization Levels?
Hello, Is there a way to control how optimized the x86 code generated by the JIT is? I mean the actual x86 code, not the llvm IR (I know about those optimization passes). I would like to make it as optimized as reasonably possible. Thank you for your time, - Maxime -- View this message in context: http://www.nabble.com/JIT-Optimization-Levels--tp22749693p22749693.html Sent from the LLVM - Dev
2009 Mar 17
0
[LLVMdev] Printing x86 ASM for Function
Dear Maxime, Nyx wrote: > Hello, > > I would like to know how to go about printing the x86 assembly output for a > compiled function (I'm using the JIT). I saw there is a X86IntelAsmPrinter > on doxygen. However, it takes several arguments I don't know how to fill in. > Is there a helper function to create such a pass? Once I have the pass > created, do I just add it