[LLVMdev] dragon egg + llvm for fortran to c translation

Dmitry Mikushin dmitry at kernelgen.org
Sat Mar 2 07:31:10 PST 2013


Hi Philipp,

Let me provide you with an example back from September 2011. Attached is
original Fortran source, optimized LLVM IR and what we regenerated back
into C from LLVM IR by means of C backend. As you can see, the C code
closely resembles LLVM IR.

I don't know what you intend to use it for (maybe some source-to-source
compiler or DSL?), but to our experience, we had a system using C backend,
but dropped it in favor of native LLVM backend for the target architecture
(NVPTX in our case). Source-to-sourcing is generally very painful, there is
a great chance to spend 90% of resources on stupid technical problems and
only 10% - for ideas/innovation.

Note we were only users of C backend, and only had to make minor fixes to a
working system. Developers are Chris, Duncan (replied on this thread too)
and others. They may have more insight, if you would need implementation
details.

Best,
- D.

2013/3/2 Philipp Schwaha <philipp at schwaha.net>

> Thank you for your reply Dmitry!
>
> It would not be too great a deal, if I need to use previous versions as
> long as it would get the desired results :)
> Would the code from the IR be portable to different C compilers? I
> guess the resulting C code will not have too much resemblance to the input?
>
> cheers
>         Philipp
>
> On 03/01/2013 05:02 PM, Dmitry Mikushin wrote:
> > DragonEgg only converts GCC's IR to LLVM IR. And -march=c is C backend.
> > We used it for a while last year, but its support has been dropped
> > several months ago. There are people, who are still using it privately,
> > as far as I know.
> >
> > - D.
> >
> > 2013/3/1 Philipp Schwaha <philipp at schwaha.net <mailto:
> philipp at schwaha.net>>
> >
> >     hi!
> >
> >     I would like to know if it is feasible to use the dragon egg gcc
> >     plugin to automatically convert fortran code to c. Having found that
> >     it is possible to output llvm byte code back to c (at least
> >     something like this gave me this impression/hope: llc -march=c -o
> >     test.c) I am hoping to use dragon egg to generate the byte code from
> >     fortran 90 which than output to c.
> >     Does this seem feasible at all? How much in terms of variable names
> >     etc. could be retained in this manner?
> >
> >     thanks for any suggestions or comments
> >        Philipp
> >     _________________________________________________
> >     LLVM Developers mailing list
> >     LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
> >     http://llvm.cs.uiuc.edu
> >     http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev
> >     <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev>
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130302/e040c8c3/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sincos.sincos_loop_1_kernelgen.c.device.F90
Type: application/octet-stream
Size: 425 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130302/e040c8c3/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sincos.sincos_loop_1_kernelgen.c.device.F90.ir.c
Type: text/x-csrc
Size: 12241 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130302/e040c8c3/attachment.c>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sincos.sincos_loop_1_kernelgen.c.device.F90.opt.ir
Type: application/octet-stream
Size: 3354 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130302/e040c8c3/attachment-0001.obj>


More information about the llvm-dev mailing list