Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion include/swift/AST/IRGenOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -608,6 +608,9 @@ class IRGenOptions {
/// Set to true if we support AArch64TBI.
bool HasAArch64TBI = false;

/// Generate verbose assembly output with comments.
bool VerboseAsm = true;

IRGenOptions()
: OutputKind(IRGenOutputKind::LLVMAssemblyAfterOptimization),
Verify(true), VerifyEach(false), OptMode(OptimizationMode::NotSet),
Expand Down Expand Up @@ -657,7 +660,8 @@ class IRGenOptions {
SanitizeCoverage(llvm::SanitizerCoverageOptions()),
TypeInfoFilter(TypeInfoDumpFilter::All),
PlatformCCallingConvention(llvm::CallingConv::C), UseCASBackend(false),
CASObjMode(llvm::CASBackendMode::Native), HasAArch64TBI(false) {
CASObjMode(llvm::CASBackendMode::Native), HasAArch64TBI(false),
VerboseAsm(true) {
DisableRoundTripDebugTypes = !CONDITIONAL_ASSERT_enabled();
}

Expand Down
6 changes: 6 additions & 0 deletions include/swift/Option/FrontendOptions.td
Original file line number Diff line number Diff line change
Expand Up @@ -689,6 +689,12 @@ def disable_modules_validate_system_headers : Flag<["-"], "disable-modules-valid
def emit_verbose_sil : Flag<["-"], "emit-verbose-sil">,
HelpText<"Emit locations during SIL emission">;

def verbose_asm : Flag<["-"], "verbose-asm">,
HelpText<"Generate verbose assembly output with comments">;

def no_verbose_asm : Flag<["-"], "no-verbose-asm">,
HelpText<"Disable verbose assembly output (default is enabled)">;

def emit_pch : Flag<["-"], "emit-pch">,
HelpText<"Emit PCH for imported Objective-C header file">, ModeOpt;

Expand Down
3 changes: 3 additions & 0 deletions lib/Frontend/CompilerInvocation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3497,6 +3497,9 @@ static bool ParseIRGenArgs(IRGenOptions &Opts, ArgList &Args,

Opts.FunctionSections = Args.hasArg(OPT_function_sections);

Opts.VerboseAsm = Args.hasFlag(OPT_verbose_asm, OPT_no_verbose_asm,
/*default*/ true);

if (Args.hasArg(OPT_autolink_force_load))
Opts.ForceLoadSymbolName = Args.getLastArgValue(OPT_module_link_name).str();

Expand Down
2 changes: 2 additions & 0 deletions lib/IRGen/IRGen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,8 @@ swift::getIRTargetOptions(const IRGenOptions &Opts, ASTContext &Ctx) {
// command-line flags.
TargetOpts.EmulatedTLS = Clang->getCodeGenOpts().EmulatedTLS;

TargetOpts.MCOptions.AsmVerbose = Opts.VerboseAsm;

// WebAssembly doesn't support atomics yet, see
// https://github.com/apple/swift/issues/54533 for more details.
if (Clang->getTargetInfo().getTriple().isOSBinFormatWasm())
Expand Down
12 changes: 12 additions & 0 deletions test/IRGen/verbose_asm.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// RUN: %target-swift-frontend -emit-assembly %s | %FileCheck %s --check-prefix=VERBOSE
// RUN: %target-swift-frontend -emit-assembly -verbose-asm %s | %FileCheck %s --check-prefix=VERBOSE
// RUN: %target-swift-frontend -emit-assembly -no-verbose-asm %s | %FileCheck %s --check-prefix=NO-VERBOSE

// Test that verbose assembly is enabled by default and can be disabled

func simpleFunction() -> Int {
return 42
}

// VERBOSE: {{;|#}} -- {{Begin|End}} function
// NO-VERBOSE-NOT: {{;|#}} -- {{Begin|End}} function
4 changes: 2 additions & 2 deletions test/Misc/tbi.sil
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
// respects this option and that we get the proper tbi behavior.

// RUN: %swiftc_driver -sdk "" -parse-sil -Xfrontend -disable-legacy-type-info -target arm64-apple-ios8.0 -target-cpu cyclone \
// RUN: -O -S %s -parse-as-library -parse-stdlib -module-name Swift \
// RUN: -O -S %s -parse-as-library -parse-stdlib -module-name Swift -Xfrontend -no-verbose-asm \
// RUN: | \
// RUN: %FileCheck --check-prefix=TBI %s

// RUN: %swiftc_driver -sdk "" -parse-sil -Xfrontend -disable-legacy-type-info -target arm64-apple-ios7.0 -target-cpu cyclone \
// RUN: -O -S %s -parse-as-library -parse-stdlib -module-name Swift \
// RUN: -O -S %s -parse-as-library -parse-stdlib -module-name Swift -Xfrontend -no-verbose-asm \
// RUN: | \
// RUN: %FileCheck --check-prefix=NO_TBI %s

Expand Down
3 changes: 2 additions & 1 deletion test/stdlib/Span/BoundsCheckOptimization.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
//
//===----------------------------------------------------------------------===//

// RUN: %target-swift-frontend -primary-file %s -O -emit-assembly | %FileCheck %s --check-prefix CHECK --check-prefix CHECK-%target-cpu
// RUN: %target-swift-frontend -primary-file %s -O -emit-assembly -no-verbose-asm | \
// RUN: %FileCheck %s --check-prefix CHECK --check-prefix CHECK-%target-cpu
// REQUIRES: swift_stdlib_no_asserts

import Swift
Expand Down