[all-commits] [llvm/llvm-project] 38101b: [flang][driver] Add support for -S and implement -...

Andrzej WarzyƄski via All-commits all-commits at lists.llvm.org
Wed Mar 9 07:49:55 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 38101b4e95aa4983b7acf1e6351309db9ce5761b
      https://github.com/llvm/llvm-project/commit/38101b4e95aa4983b7acf1e6351309db9ce5761b
  Author: Andrzej Warzynski <andrzej.warzynski at arm.com>
  Date:   2022-03-09 (Wed, 09 Mar 2022)

  Changed paths:
    M clang/include/clang/Driver/Options.td
    M flang/include/flang/Frontend/FrontendActions.h
    M flang/include/flang/Frontend/FrontendOptions.h
    M flang/lib/Frontend/CMakeLists.txt
    M flang/lib/Frontend/CompilerInvocation.cpp
    M flang/lib/Frontend/FrontendActions.cpp
    M flang/lib/FrontendTool/ExecuteCompilerInvocation.cpp
    M flang/lib/Optimizer/Support/FIRContext.cpp
    M flang/test/CMakeLists.txt
    A flang/test/Driver/code-gen-aarch64.f90
    A flang/test/Driver/code-gen-x86.f90
    R flang/test/Driver/code-gen.f90
    M flang/test/Driver/driver-help-hidden.f90
    M flang/test/Driver/driver-help.f90
    A flang/test/Driver/emit-asm-aarch64.f90
    A flang/test/Driver/emit-asm-x86.f90
    M flang/test/Driver/syntax-only.f90
    M flang/test/Fir/target-rewrite-triple.fir
    M flang/test/lit.cfg.py
    M flang/test/lit.site.cfg.py.in
    M flang/tools/flang-driver/fc1_main.cpp
    M flang/unittests/Frontend/CMakeLists.txt
    M flang/unittests/Frontend/FrontendActionTest.cpp

  Log Message:
  -----------
  [flang][driver] Add support for -S and implement -c/-emit-obj

This patch adds support for:
  * `-S` in Flang's compiler and frontend drivers,
and implements:
  * `-emit-obj` in Flang's frontend driver and `-c` in Flang's compiler
    driver (this is consistent with Clang).
(these options were already available before, but only as placeholders).
The semantics of these options in Clang and Flang are identical.

The `EmitObjAction` frontend action is renamed as `BackendAction`. This
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` from FirContext.cpp is deleted and, when a target triple is
required, `mlir::LLVM::LLVMDialect::getTargetTripleAttrName()` is used
instead. In practice, this means that `fir.triple` is replaced with
`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
it 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
```

Differential Revision: https://reviews.llvm.org/D120568




More information about the All-commits mailing list