Do you need specifically llvm-gfortran that is based on gcc 4.2? Since
that, DragonEgg has been introduced - a powerful plugin to gcc that
makes it possible to utilize regular gcc compilers as frontends to
llvm: http://dragonegg.llvm.org/
It generates Fortran90 programs for me very well.
- D.
2011/9/1 Ashay Rane <ashay...@tacc.utexas.edu>:
> _______________________________________________
> LLVM Developers mailing list
> LLV...@cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
_______________________________________________
LLVM Developers mailing list
LLV...@cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
[marcusmae@zacate recursive]$ make
dragonegg-gfortran -fplugin=/opt/kgen/lib64/dragonegg.so
-fplugin-arg-dragonegg-emit-ir -emit-llvm -S recursive.f -o
recursive.bc
llc -march=x86-64 recursive.bc -o recursive.s
gfortran recursive.s -o recursive
[marcusmae@zacate recursive]$ ./recursive
Enter number of repeats
10
x = 1
x = 2
x = 3
x = 4
x = 5
x = 6
x = 7
x = 8
x = 9
x = 10
Everything is in attached archive.
- D.
2011/9/1 Dmitry N. Mikushin <maem...@gmail.com>:
> I am not very familiar with Fortran programs. I saw a few programs that had
> a "MAIN" subroutine defined, some others that did not. Am I missing
> something while compiling the code? Is there a different way to compile
> bitcode (from Fortran programs) to a native binary?
For Fortran MAIN is indeed something similar to C main, but not
exactly the same.
You have to link the runtime library (libgfortran.a) in order to get
"proper" main, mak sure all stuff is initialized properly, etc.
--
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University
If I understand correctly, in hw.o you would have llvm bytecode, while
linker expects regular object binary. Probably first you need to emit
asm out of bytecode using llc?
- D.
2011/9/12 Ashay Rane <ashay...@tacc.utexas.edu>:
2011/9/13 Ashay Rane <ashay...@tacc.utexas.edu>:
2011/9/13 Ashay Rane <ashay...@tacc.utexas.edu>:
2011/9/13 Ashay Rane <ashay...@tacc.utexas.edu>:
> Sorry for the late reply. Using dragonegg worked well, thanks all!
>
> Just as a note... I had to use llvm-ld during the link step because
> gfortran could not link bitcode. Here's an example of the error shown
> when using gfortran instead of llvm-ld:
>
> $ ${GCC_4_5_0}/bin/gfortran hw.f -c -fplugin=
> ${DRAGONEGG_PLUGIN}/dragonegg.so -o hw.o -flto -emit-llvm -S
> $ ${LLVM_2_9}/bin/opt -mem2reg hw.o -o hw.o
> $ ${GCC_4_5_0}/bin/gfortran
> -fplugin=${DRAGONEGG_PLUGIN}/dragonegg.so ${GCC_4_5_0}/lib64/libgfortran.a
> hw.o -o hw
> hw.o: file not recognized: File format not recognized
> collect2: ld returned 1 exit status
>
> $ file hw.o
> hw.o: data
>
> Instead, using llvm-ld:
> $ ${LLVM_2_9}/bin/llvm-ld -native hw.o -o hw
> ${GCC_4_5_0}/lib64/libgfortran.a -lm
>
> llvm-gcc had the gold plugin. I wonder if there is any equivalent of
> that for dragonegg to be able to compile bitcode and native object code
> in a transparent manner.
can you please open a bug report about this. Hopefully there is a
straightforward way to use the gold plugin with dragonegg, but I never
thought about it (I always do LLVM LTO "by hand").
Ciao, Duncan.
>
> Thanks again!
> Ashay
>
>
> On Wed, Aug 31, 2011 at 4:29 PM, Anton Korobeynikov
> <an...@korobeynikov.info <mailto:an...@korobeynikov.info>> wrote:
>
> Hello
>
> > I am not very familiar with Fortran programs. I saw a few
> programs that had
> > a "MAIN" subroutine defined, some others that did not. Am I missing
> > something while compiling the code? Is there a different way to
> compile
> > bitcode (from Fortran programs) to a native binary?
> For Fortran MAIN is indeed something similar to C main, but not
> exactly the same.
> You have to link the runtime library (libgfortran.a) in order to get
> "proper" main, mak sure all stuff is initialized properly, etc.
>
> --
> With best regards, Anton Korobeynikov
> Faculty of Mathematics and Mechanics, Saint Petersburg State University
>
>
>
>