This patch adds support for:
- -S in Flang's compiler and frontend drivers
and implements (these options were already available as placeholders):
- -emit-obj in Flang's frontend driver and -c in Flang's compiler driver
The semantics of these options in Clang and Flang are identical.
The EmitObjAction frontend action is renamed as BackendAction. The
new name more accurately reflects the fact that this action will
primarily run the code-gen/backend pipeline in LLVM. It also makes more
sense as an action implementing both -emit-obj and -S (originally it
was just -emit-obj).
tripleName in FirContext.cpp is updated from fir.triple to
llvm.target_triple. The former was effectively ignored. The latter is
used when lowering from the LLVM dialect in MLIR to LLVM IR (i.e. it's
embedded in the generated LLVM IR module). The driver can then re-use
that when configuring the backend. With this change, the LLVM IR files
generated by e.g. tco will from now on contain the correct target
triple.
The code-gen.f90 test is replaced with code-gen-x86.f90 and
code-gen-aarch64.f90. With 2 seperate files we can verify that
--target is correctly taken into account. LIT configuration is updated
to enable e.g.:
! REQUIRES: aarch64-registered-target
You'll want to keep in mind that some class names are overloaded between llvm and Fortran::xyz namespaces and even between Fortran::uvw and Fortran::xyz namespaces.