[clang] 01aca42 - [flang] Add support for -f[no-]verbose-asm (#130788)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 13 08:22:18 PDT 2025
Author: Tom Eccles
Date: 2025-03-13T15:22:13Z
New Revision: 01aca42363ac18f29580d21f6a30af677c2581b9
URL: https://github.com/llvm/llvm-project/commit/01aca42363ac18f29580d21f6a30af677c2581b9
DIFF: https://github.com/llvm/llvm-project/commit/01aca42363ac18f29580d21f6a30af677c2581b9.diff
LOG: [flang] Add support for -f[no-]verbose-asm (#130788)
This flag provides extra commentary in the assembly output.
Added:
flang/test/Driver/verbose-asm.f90
Modified:
clang/include/clang/Driver/Options.td
clang/lib/Driver/ToolChains/Flang.cpp
flang/include/flang/Frontend/TargetOptions.h
flang/lib/Frontend/CompilerInvocation.cpp
flang/lib/Frontend/FrontendActions.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index e69cd6b833c3a..ac6392f92f311 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -3467,7 +3467,7 @@ defm use_cxa_atexit : BoolFOption<"use-cxa-atexit",
PosFlag<SetTrue>>;
def fno_unwind_tables : Flag<["-"], "fno-unwind-tables">, Group<f_Group>;
def fno_verbose_asm : Flag<["-"], "fno-verbose-asm">, Group<f_Group>,
- Visibility<[ClangOption, CC1Option]>,
+ Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>,
MarshallingInfoNegativeFlag<CodeGenOpts<"AsmVerbose">>;
def fno_working_directory : Flag<["-"], "fno-working-directory">, Group<f_Group>;
def fobjc_arc : Flag<["-"], "fobjc-arc">, Group<f_Group>,
@@ -4142,7 +4142,8 @@ defm use_init_array : BoolFOption<"use-init-array",
PosFlag<SetTrue>>;
def fno_var_tracking : Flag<["-"], "fno-var-tracking">, Group<clang_ignored_f_Group>;
def fverbose_asm : Flag<["-"], "fverbose-asm">, Group<f_Group>,
- HelpText<"Generate verbose assembly output">;
+ HelpText<"Generate verbose assembly output">,
+ Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>;
def dA : Flag<["-"], "dA">, Alias<fverbose_asm>;
defm visibility_from_dllstorageclass : BoolFOption<"visibility-from-dllstorageclass",
LangOpts<"VisibilityFromDLLStorageClass">, DefaultFalse,
diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp
index 3ee305fc0460d..5dbc5cbe77d0a 100644
--- a/clang/lib/Driver/ToolChains/Flang.cpp
+++ b/clang/lib/Driver/ToolChains/Flang.cpp
@@ -514,6 +514,9 @@ void Flang::addTargetOptions(const ArgList &Args,
else
CmdArgs.push_back(A->getValue());
}
+
+ Args.addAllArgs(CmdArgs,
+ {options::OPT_fverbose_asm, options::OPT_fno_verbose_asm});
}
void Flang::addOffloadOptions(Compilation &C, const InputInfoList &Inputs,
diff --git a/flang/include/flang/Frontend/TargetOptions.h b/flang/include/flang/Frontend/TargetOptions.h
index 4a854644e7ff6..002d8d158abd4 100644
--- a/flang/include/flang/Frontend/TargetOptions.h
+++ b/flang/include/flang/Frontend/TargetOptions.h
@@ -50,6 +50,9 @@ class TargetOptions {
/// Extended Altivec ABI on AIX
bool EnableAIXExtendedAltivecABI;
+
+ /// Print verbose assembly
+ bool asmVerbose = false;
};
} // end namespace Fortran::frontend
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 1537122ddced5..edf738785fb97 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -476,6 +476,10 @@ static void parseTargetArgs(TargetOptions &opts, llvm::opt::ArgList &args) {
opts.EnableAIXExtendedAltivecABI = false;
}
}
+
+ opts.asmVerbose =
+ args.hasFlag(clang::driver::options::OPT_fverbose_asm,
+ clang::driver::options::OPT_fno_verbose_asm, false);
}
// Tweak the frontend configuration based on the frontend action
static void setUpFrontendBasedOnAction(FrontendOptions &opts) {
diff --git a/flang/lib/Frontend/FrontendActions.cpp b/flang/lib/Frontend/FrontendActions.cpp
index 94de376aaf7d6..46ec7550e4140 100644
--- a/flang/lib/Frontend/FrontendActions.cpp
+++ b/flang/lib/Frontend/FrontendActions.cpp
@@ -1220,6 +1220,7 @@ void CodeGenAction::executeAction() {
clang::DiagnosticsEngine &diags = ci.getDiagnostics();
const CodeGenOptions &codeGenOpts = ci.getInvocation().getCodeGenOpts();
+ const TargetOptions &targetOpts = ci.getInvocation().getTargetOpts();
Fortran::lower::LoweringOptions &loweringOpts =
ci.getInvocation().getLoweringOpts();
mlir::DefaultTimingManager &timingMgr = ci.getTimingManager();
@@ -1284,6 +1285,8 @@ void CodeGenAction::executeAction() {
// given on the command-line).
llvm::TargetMachine &targetMachine = ci.getTargetMachine();
+ targetMachine.Options.MCOptions.AsmVerbose = targetOpts.asmVerbose;
+
const llvm::Triple &theTriple = targetMachine.getTargetTriple();
if (llvmModule->getTargetTriple() != theTriple) {
diff --git a/flang/test/Driver/verbose-asm.f90 b/flang/test/Driver/verbose-asm.f90
new file mode 100644
index 0000000000000..7cadf19b32d3c
--- /dev/null
+++ b/flang/test/Driver/verbose-asm.f90
@@ -0,0 +1,16 @@
+! RUN: %flang -### -S -o - -fverbose-asm %s 2>&1 | FileCheck %s --check-prefix=FORWARDING
+! FORWARDING: -fverbose-asm
+
+! RUN: %flang -S -o - -fverbose-asm %s | FileCheck %s --check-prefix=VERBOSE
+! RUN: %flang_fc1 -S -o - -fverbose-asm %s | FileCheck %s --check-prefix=VERBOSE
+
+! RUN: %flang -S -o - %s | FileCheck %s --check-prefix=QUIET
+! RUN: %flang_fc1 -S -o - %s | FileCheck %s --check-prefix=QUIET
+! RUN: %flang -S -o - -fverbose-asm -fno-verbose-asm %s | FileCheck %s --check-prefix=QUIET
+! RUN: %flang_fc1 -S -o - -fverbose-asm -fno-verbose-asm %s | FileCheck %s --check-prefix=QUIET
+
+! VERBOSE: -- Begin function _QQmain
+! QUIET-NOT: -- Begin function _QQmain
+program test
+
+end program
More information about the cfe-commits
mailing list