diff options
author | Tom Eccles <tom.eccles@arm.com> | 2025-03-13 15:22:13 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-13 15:22:13 +0000 |
commit | 01aca42363ac18f29580d21f6a30af677c2581b9 (patch) | |
tree | 5e1bcc286b54677e9551e4d1b3ca6624ce773667 | |
parent | 143bf95d41f427bb91335198d5eccd624b5b47d4 (diff) | |
download | llvm-01aca42363ac18f29580d21f6a30af677c2581b9.zip llvm-01aca42363ac18f29580d21f6a30af677c2581b9.tar.gz llvm-01aca42363ac18f29580d21f6a30af677c2581b9.tar.bz2 |
[flang] Add support for -f[no-]verbose-asm (#130788)
This flag provides extra commentary in the assembly output.
-rw-r--r-- | clang/include/clang/Driver/Options.td | 5 | ||||
-rw-r--r-- | clang/lib/Driver/ToolChains/Flang.cpp | 3 | ||||
-rw-r--r-- | flang/include/flang/Frontend/TargetOptions.h | 3 | ||||
-rw-r--r-- | flang/lib/Frontend/CompilerInvocation.cpp | 4 | ||||
-rw-r--r-- | flang/lib/Frontend/FrontendActions.cpp | 3 | ||||
-rw-r--r-- | flang/test/Driver/verbose-asm.f90 | 16 |
6 files changed, 32 insertions, 2 deletions
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index e69cd6b..ac6392f 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 3ee305f..5dbc5cb 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 4a85464..002d8d1 100644 --- a/flang/include/flang/Frontend/TargetOptions.h +++ b/flang/include/flang/Frontend/TargetOptions.h @@ -50,6 +50,9 @@ public: /// 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 1537122..edf7387 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 94de376..46ec755 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 0000000..7cadf19 --- /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 |