[LLVMdev] Re: questions about LLVM
John Criswell
criswell at cs.uiuc.edu
Wed Nov 17 14:36:53 PST 2004
Dinakar Dhurjati wrote:
> Hi Shuo,
>
> I am CCing your questions to the LLVM developers list so others can
> reply or correct me.
>
>> I have a few questions about LLVM:
>> (1) The LLVM tutorial says LLVM can be used in architecture research.
>> If I want to run my program on an instruction set defined by myself,
>> is LLVM a right tool to do that?
>
> I don't think so.
I think it depends on what you need and what tools you currently have.
If you have developed your own instruction set, then LLVM might be
useful to you as an optimizing compiler for your instruction set.
The problem is that LLVM won't have a code generator for your
instruction set. You'd have to do one of the following:
1. Write a code generator (the LLVM code base makes this relatively easy).
2. Use the C Backend to generate C code from LLVM code, and then use a C
compiler that targets your instruction set to compile the resulting code.
The first option is good if there is no compiler for your instruction
set and you need to write one quickly. The second option is good if you
have a basic compiler for your instruction set but need LLVM to provide
more agressive optimization.
>
>> In this aspect, is LLVM similar to SimpleScalar simulator?
>>
> I am not familiar with a SimpleScalar simulators, may be others will reply.
>
>> (2) Can I compile large applications, such as Apache server, into LLVM
>> virtual instructions, then use LLVM intepreter to execute it?
>>
> Sure. I believe the website http://safecode.cs.uiuc.edu runs on just in
> time (JIT) execution of apache webserver compiled to llvm virtual
> instructions.
Dinakar is correct; the SAFECode website is a version of Apache compiled
with LLVM and running on the LLVM x86 JIT.
Povray is another large C program that we've compiled with LLVM, and
we've successfully compiled other small to midsize programs (see
http://llvm.cs.uiuc.edu/testresults/X86/ for some examples). I don't
know what other large applications we've compiled; anybody care to comment?
The known issues that are most likely to cause you grief are:
o C bitfields (don't always work properly)
o Inline assembly code (unsupported; probably the most common
compilation problem overall)
o Non-standard GCC union initializers
>
>> (3) If my program calls libc functions, e.g., malloc(), are the
>> instructions of malloc transformed to LLVM virtual instructions and
>> intepreted during its execution?
>>
> In general most library calls get translated to the LLVM's call
> instructions and they will be executed natively using the native libary
> call when you use the interpreter or the JIT. But if you can compile
> the library call in to LLVM instructions and link it in to your
> application then there is no reason why you shouldn't be able to
> interpret instructions of that call .
>
> Dinakar
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
-- John T.
--
*********************************************************************
* John T. Criswell Email: criswell at uiuc.edu *
* Research Programmer *
* University of Illinois at Urbana-Champaign *
* *
* "It's today!" said Piglet. "My favorite day," said Pooh. *
*********************************************************************
More information about the llvm-dev
mailing list