[LLVMdev] GSoC project questions.

Alex L arphaman at gmail.com
Fri Apr 12 05:04:36 PDT 2013


2013/4/12 Matthieu Brucher <matthieu.brucher at gmail.com>

> Hi,
>
>
> 2013/4/12 Alex L <arphaman at gmail.com>
>
>> Hello everyone, I have a couple of questions about good project ideas for
>> GSoC because I'm kind of stuck thinking what I should do.
>>
>> First of all, allow me to introduce myself - I'm Alex Lorenz, a Comp Sci
>> student from Ireland. I would like to participate in GSoC this year, and I
>> would love to do something for LLVM, because it's a great project. I am
>> familiar with LLVM api, as last year I wrote a compiler(for fun/education)
>> for my own language which used LLVM as a backend. I have a good experience
>> with C++(started self taught, more than 5 years ago), and I have used it in
>> several freelance projects and many of my own.
>>
>> However, I am not sure what my project should be. It would be interesting
>> to work on optimizations and/or code generation for LLVM, but I have no
>> idea what a good project for that would be. The Open Projects page
>> mentioned LLVM Superoptimizer, so would this be a viable project that would
>> benefit LLVM? It also mentions writing a frontend for another language, and
>> I think this would be a really good project, but there are so many
>> languages that I'm not sure which one to choose - perhaps Go or maybe even
>> http://magpie-lang.org/?
>>
>
> In the things that I think may be worthwhile for LLVM fame is Fortran.
> Complicated to do, but even just Fortran77 would be a tremendous
> achievement.
>
>
>> Another idea that I had for the project would be live editing/compilation
>> - probably for C/C++. The application is compiled using clang and ran with
>> an injected initialization code. Then, when a source file is modified, a
>> filesystem watcher or an IDE plugin notices this change. After that a diff
>> is performed on the file and clang is used(somehow) to see if this edit can
>> be injectected into the running application - basically it checks if the
>> edit is inside a non-inlined non-lamba function(s). The code that was
>> injected at the initialization of the application started an IPC thread to
>> communicate with the hypervisor which does the modification watch and file
>> diff. After the diff the hypervisor uses clang and LLVM to compile the
>> modified function(s) with relative addressing and sends it to the
>> application IPC thread which copies the instructions into memory which is
>> then marked as executable. The application also receives addresses of the
>> modified functions which are somehow obtained from the initial compilation.
>> Then the IPC thread pauses all other threads in this process and writes a
>> jump to new address at the start of each modified function. It sounds quite
>> complicated and ambitious, and I'm not sure if it really can be done, so
>> maybe someone can correct me?
>>
>> I'm open to any other suggestions as well, so if you have any please post
>> them.
>> Thanks in advance.
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>
>
> --
> Information System Engineer, Ph.D.
> Blog: http://matt.eifelle.com
> LinkedIn: http://www.linkedin.com/in/matthieubrucher
> Music band: http://liliejay.com/
>

I had a quick read through the Fortran 90 specification, and I must say I
would be able to write a frontend for it, although arrays and io would make
it harder. But isn't Fortran already supported with dragonegg?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130412/bb744d55/attachment.html>


More information about the llvm-dev mailing list