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

Philipp Schwaha philipp at schwaha.net
Wed Mar 6 04:20:37 PST 2013

Hi Dmitry,

thank you very much for the very illuminating example!

On 2013-03-02 16:31, Dmitry Mikushin wrote:
> 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.
yes, the resemblance is quite remarkable.

> 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.
source to source is exactly what would be the goal. I realize it is a 
quite painful process and thus would like to use as much existing 
infrastructure as possible before reinventing already excellent 

> 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.
thank you very much for all your help, it is very much appreciated!

best regards

> 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 [1]
>>>     http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev [2]
>>>     <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev [3]>
> Links:
> ------
> [1] http://llvm.cs.uiuc.edu
> [2] http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev
> [3] http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list