Open
Description
Describe the bug
When running the following script, the compiler crashes. Use swiftc file.swift -emit-module
to reproduce this behavior.
Reproducer
import _Differentiation
public struct Tensor: Differentiable & AdditiveArithmetic {
@inlinable
func subscriptIndexPath() -> Tensor {
fatalError()
}
@inlinable
@differentiable(reverse, wrt: self)
func subscriptRanges() -> Tensor {
subscriptIndexPath()
}
@usableFromInline
@derivative(of: subscriptIndexPath)
func _vjpSubscriptIndexPath() -> (
value: Tensor, pullback: (Tensor) -> Tensor
) {
fatalError()
}
}
Expected behavior
(base) philipturner@M1-Max-MacBook-Pro Desktop % swiftc file.swift -emit-module
error: emit-module command failed due to signal 6 (use -v to see invocation)
Assertion failed: (original->isExternalDeclaration() && "SILGen should create differentiability witnesses for all function " "definitions with explicit differentiable attributes"), function getOrCreateMinimalASTDifferentiabilityWitness, file Common.cpp, line 521.
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
Stack dump:
0. Program arguments: /Library/Developer/Toolchains/swift-5.7-DEVELOPMENT-SNAPSHOT-2022-05-18-a.xctoolchain/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types file.swift -target arm64-apple-macosx12.0 -Xllvm -aarch64-use-tbi -warn-on-potentially-unavailable-enum-case -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -color-diagnostics -new-driver-path /Library/Developer/Toolchains/swift-5.7-DEVELOPMENT-SNAPSHOT-2022-05-18-a.xctoolchain/usr/bin/swift-driver -empty-abi-descriptor -resource-dir /Library/Developer/Toolchains/swift-5.7-DEVELOPMENT-SNAPSHOT-2022-05-18-a.xctoolchain/usr/lib/swift -module-name file -target-sdk-version 12.3 -emit-module-doc-path file.swiftdoc -emit-module-source-info-path file.swiftsourceinfo -o file.swiftmodule -emit-abi-descriptor-path file.abi.json
1. Apple Swift version 5.7-dev (LLVM 9fde71b269b42b8, Swift ddc46e1f5bd885d)
2. Compiling with the current language version
3. While evaluating request ExecuteSILPipelineRequest(Run pipelines { Mandatory Diagnostic Passes + Enabling Optimization Passes } on SIL for file)
4. While running pass #110 SILModuleTransform "Differentiation".
5. While canonicalizing `differentiable_function` SIL node %3 = differentiable_function [parameters 0] [results 0] %2 : $@convention(method) (Tensor) -> Tensor // user: %4
6. While ...in SIL function "@$s4file6TensorV15subscriptRangesACyFTJrSpSr".
for 'subscriptRanges()' (at file.swift:11:3)
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 swift-frontend 0x000000010920e01c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1 swift-frontend 0x000000010920d27c llvm::sys::RunSignalHandlers() + 128
2 swift-frontend 0x000000010920e680 SignalHandler(int) + 304
3 libsystem_platform.dylib 0x000000019923f4a4 _sigtramp + 56
4 libsystem_pthread.dylib 0x0000000199227ee0 pthread_kill + 288
5 libsystem_c.dylib 0x0000000199162340 abort + 168
6 libsystem_c.dylib 0x0000000199161754 err + 0
7 swift-frontend 0x00000001093bc808 swift::autodiff::getOrCreateMinimalASTDifferentiabilityWitness(swift::SILModule&, swift::SILFunction*, swift::DifferentiabilityKind, swift::IndexSubset*, swift::IndexSubset*) (.cold.2) + 0
8 swift-frontend 0x000000010538c77c swift::autodiff::getOrCreateMinimalASTDifferentiabilityWitness(swift::SILModule&, swift::SILFunction*, swift::DifferentiabilityKind, swift::IndexSubset*, swift::IndexSubset*) + 724
9 swift-frontend 0x00000001054cff40 (anonymous namespace)::DifferentiationTransformer::promoteToDifferentiableFunction(swift::DifferentiableFunctionInst*, swift::SILBuilder&, swift::SILLocation, swift::autodiff::DifferentiationInvoker) + 1320
10 swift-frontend 0x00000001054cdefc (anonymous namespace)::DifferentiationTransformer::processDifferentiableFunctionInst(swift::DifferentiableFunctionInst*) + 484
11 swift-frontend 0x00000001054cbf88 (anonymous namespace)::Differentiation::run() + 1292
12 swift-frontend 0x000000010553f2fc swift::SILPassManager::runModulePass(unsigned int) + 956
13 swift-frontend 0x000000010554482c swift::SILPassManager::execute() + 624
14 swift-frontend 0x000000010553c3dc swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) + 68
15 swift-frontend 0x000000010553c364 swift::ExecuteSILPipelineRequest::evaluate(swift::Evaluator&, swift::SILPipelineExecutionDescriptor) const + 68
16 swift-frontend 0x000000010555c800 swift::SimpleRequest<swift::ExecuteSILPipelineRequest, std::__1::tuple<> (swift::SILPipelineExecutionDescriptor), (swift::RequestFlags)1>::evaluateRequest(swift::ExecuteSILPipelineRequest const&, swift::Evaluator&) + 28
17 swift-frontend 0x00000001055473e8 llvm::Expected<swift::ExecuteSILPipelineRequest::OutputType> swift::Evaluator::getResultUncached<swift::ExecuteSILPipelineRequest>(swift::ExecuteSILPipelineRequest const&) + 252
18 swift-frontend 0x000000010553c5d8 swift::executePassPipelinePlan(swift::SILModule*, swift::SILPassPipelinePlan const&, bool, swift::irgen::IRGenModule*) + 84
19 swift-frontend 0x000000010554aeec swift::runSILDiagnosticPasses(swift::SILModule&) + 92
20 swift-frontend 0x0000000104d8b0d0 swift::CompilerInstance::performSILProcessing(swift::SILModule*) + 72
21 swift-frontend 0x0000000104d2fae8 performCompileStepsPostSILGen(swift::CompilerInstance&, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule> >, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::PrimarySpecificPaths const&, int&, swift::FrontendObserver*) + 716
22 swift-frontend 0x0000000104d2f4ac swift::performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 1028
23 swift-frontend 0x0000000104d3c808 withSemanticAnalysis(swift::CompilerInstance&, swift::FrontendObserver*, llvm::function_ref<bool (swift::CompilerInstance&)>, bool) + 160
24 swift-frontend 0x0000000104d31108 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 3388
25 swift-frontend 0x0000000104c45bc0 swift::mainEntry(int, char const**) + 3764
26 dyld 0x0000000111b6908c start + 520
Environment (please complete the following information):
- OS: macOS 12.4
- Toolchain: Swift 5.7 Development Snapshot: May 18, 2022 (compiled from the release/5.7 branch)