llvm flang使用

查看帮助

flang -help

Flang编译器支持接受所有clang 4.0编译器选项,并支持许多以及以下特定于flang的编译器选项:

  • -noFlangLibs Do not link against Flang libraries
  • -mp Enable OpenMP and link with with OpenMP library libomp
  • -nomp Do not link with OpenMP library libomp
  • -Mbackslash Treat backslash character like a C-style escape character
  • -Mno-backslash Treat backslash like any other character
  • -Mbyteswapio Swap byte-order for unformatted input/output
  • -Mfixed Assume fixed-format source
  • -Mextend Allow source lines up to 132 characters
  • -Mfreeform Assume free-format source
  • -Mpreprocess Run preprocessor for Fortran files
  • -Mrecursive Generate code to allow recursive subprograms
  • -Mstandard Check standard conformance
  • -Msave Assume all variables have SAVE attribute
  • -module path to module file (-I also works)
  • -Mallocatable=95 Select Fortran 95 semantics for assignments to allocatable objects (Default)
  • -Mallocatable=03 Select Fortran 03 semantics for assignments to allocatable objects
  • -static-flang-libs Link using static Flang libraries
  • -M[no]daz Treat denormalized numbers as zero
  • -M[no]flushz Set SSE to flush-to-zero mode
  • -Mcache_align Align large objects on cache-line boundaries
  • -M[no]fprelaxed This option is ignored
  • -fdefault-integer-8 Treat INTEGER and LOGICAL as INTEGER8 and LOGICAL8
  • -fdefault-real-8 Treat REAL as REAL*8
  • -i8 Treat INTEGER and LOGICAL as INTEGER8 and LOGICAL8
  • -r8 Treat REAL as REAL*8
  • -fno-fortran-main Don't link in Fortran main

我编写了一个f90的hello world,来讲述flang的使用。

代码如下:

program main
 
write(*,*) "hello fortran world."
 
end program main 

使用flang产生IR文件

flang -emit-llvm helloworld.f90 -S -o helloworld.ll

我们也可以在此过程中加入 -O3选项,来进一步优化。

flang -O3 -emit-llvm helloworld.f90 -S -o helloworld.ll

生成bitcode

llvm-as helloworld.ll

生成.o文件

llc -filetype=obj helloworld.bc -o helloworld.o

产生可执行文件

flang helloworld.o -o helloworld

运行

./helloworld
hello fortran world

你可能感兴趣的:(llvm,llvm,fortran)