Skip to content

Commit 4bf1a44

Browse files
authored
Merge pull request #2236 from swiftwasm/main
[pull] swiftwasm from main
2 parents c8780f3 + 54144ac commit 4bf1a44

28 files changed

+475
-120
lines changed

include/swift/SIL/SILBuilder.h

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,9 @@ class SILBuilder {
268268
//===--------------------------------------------------------------------===//
269269

270270
bool hasValidInsertionPoint() const { return BB != nullptr; }
271-
SILBasicBlock *getInsertionBB() { return BB; }
272-
SILBasicBlock::iterator getInsertionPoint() { return InsertPt; }
271+
SILBasicBlock *getInsertionBB() const { return BB; }
272+
SILBasicBlock::iterator getInsertionPoint() const { return InsertPt; }
273+
SILLocation getInsertionPointLoc() const { return InsertPt->getLoc(); }
273274

274275
/// insertingAtEndOfBlock - Return true if the insertion point is at the end
275276
/// of the current basic block. False if we're inserting before an existing
@@ -320,8 +321,6 @@ class SILBuilder {
320321
setInsertionPoint(&*BBIter);
321322
}
322323

323-
SILBasicBlock *getInsertionPoint() const { return BB; }
324-
325324
//===--------------------------------------------------------------------===//
326325
// Instruction Tracking
327326
//===--------------------------------------------------------------------===//
@@ -2527,6 +2526,21 @@ class SILBuilderWithScope : public SILBuilder {
25272526
/// predecessor block: the parent of \p inst.
25282527
static void insertAfter(SILInstruction *inst,
25292528
function_ref<void(SILBuilder &)> func);
2529+
2530+
/// If \p is an inst, then this is equivalent to insertAfter(inst). If a
2531+
/// SILArgument is passed in, we use the first instruction in its parent
2532+
/// block. We assert on undef.
2533+
static void insertAfter(SILValue value,
2534+
function_ref<void(SILBuilder &)> func) {
2535+
if (auto *i = dyn_cast<SingleValueInstruction>(value))
2536+
return insertAfter(i, func);
2537+
if (auto *mvir = dyn_cast<MultipleValueInstructionResult>(value))
2538+
return insertAfter(mvir->getParent(), func);
2539+
if (auto *arg = dyn_cast<SILArgument>(value))
2540+
return insertAfter(&*arg->getParent()->begin(), func);
2541+
assert(!isa<SILUndef>(value) && "This API can not use undef");
2542+
llvm_unreachable("Unhandled case?!");
2543+
}
25302544
};
25312545

25322546
class SavedInsertionPointRAII {

lib/IRGen/GenThunk.cpp

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -64,34 +64,49 @@ IRGenModule::getAddrOfDispatchThunk(SILDeclRef declRef,
6464
static FunctionPointer lookupMethod(IRGenFunction &IGF, SILDeclRef declRef) {
6565
auto expansionContext = IGF.IGM.getMaximalTypeExpansionContext();
6666
auto *decl = cast<AbstractFunctionDecl>(declRef.getDecl());
67+
auto funcTy = IGF.IGM.getSILModule().Types.getConstantFunctionType(
68+
expansionContext, declRef);
69+
70+
auto getAsyncContextLayout = [&]() {
71+
auto originalType = funcTy;
72+
auto forwardingSubstitutionMap =
73+
decl->getGenericEnvironment()
74+
? decl->getGenericEnvironment()->getForwardingSubstitutionMap()
75+
: SubstitutionMap();
76+
auto substitutedType = originalType->substGenericArgs(
77+
IGF.IGM.getSILModule(), forwardingSubstitutionMap,
78+
IGF.IGM.getMaximalTypeExpansionContext());
79+
auto layout = irgen::getAsyncContextLayout(
80+
IGF.IGM, originalType, substitutedType, forwardingSubstitutionMap);
81+
return layout;
82+
};
6783

6884
// Protocol case.
6985
if (isa<ProtocolDecl>(decl->getDeclContext())) {
7086
// Find the witness table.
71-
llvm::Value *wtable = (IGF.CurFn->arg_end() - 1);
87+
llvm::Value *wtable;
88+
if (funcTy->isAsync()) {
89+
auto layout = getAsyncContextLayout();
90+
assert(layout.hasTrailingWitnesses());
91+
auto context = layout.emitCastTo(IGF, IGF.getAsyncContext());
92+
auto wtableAddr =
93+
layout.getSelfWitnessTableLayout().project(IGF, context, llvm::None);
94+
wtable = IGF.Builder.CreateLoad(wtableAddr);
95+
} else {
96+
wtable = (IGF.CurFn->arg_end() - 1);
97+
}
7298

7399
// Find the witness we're interested in.
74100
return emitWitnessMethodValue(IGF, wtable, declRef);
75101
}
76102

77103
// Class case.
78-
auto funcTy = IGF.IGM.getSILModule().Types.getConstantFunctionType(
79-
expansionContext, declRef);
80104

81105
// Load the metadata, or use the 'self' value if we have a static method.
82106
llvm::Value *self;
83107

84108
if (funcTy->isAsync()) {
85-
auto originalType = funcTy;
86-
auto forwardingSubstitutionMap =
87-
decl->getGenericEnvironment()
88-
? decl->getGenericEnvironment()->getForwardingSubstitutionMap()
89-
: SubstitutionMap();
90-
auto substitutedType = originalType->substGenericArgs(
91-
IGF.IGM.getSILModule(), forwardingSubstitutionMap,
92-
IGF.IGM.getMaximalTypeExpansionContext());
93-
auto layout = getAsyncContextLayout(IGF.IGM, originalType, substitutedType,
94-
forwardingSubstitutionMap);
109+
auto layout = getAsyncContextLayout();
95110
assert(layout.hasLocalContext());
96111
auto context = layout.emitCastTo(IGF, IGF.getAsyncContext());
97112
auto localContextAddr =

lib/SILOptimizer/Differentiation/PullbackCloner.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1445,7 +1445,7 @@ class PullbackCloner::Implementation final
14451445
auto adjVal = materializeAdjointDirect(getAdjointValue(bb, inst), loc);
14461446
// Allocate a local buffer and store the adjoint value. This buffer will
14471447
// be used for accumulation into the adjoint buffer.
1448-
auto adjBuf = builder.createAllocStack(loc, adjVal->getType());
1448+
auto adjBuf = builder.createAllocStack(loc, adjVal->getType(), SILDebugVariable());
14491449
auto copy = builder.emitCopyValueOperation(loc, adjVal);
14501450
builder.emitStoreValueOperation(loc, copy, adjBuf,
14511451
StoreOwnershipQualifier::Init);

lib/SILOptimizer/Transforms/AllocBoxToStack.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -920,16 +920,15 @@ specializeApplySite(SILOptFunctionBuilder &FuncBuilder, ApplySite Apply,
920920
continue;
921921
}
922922

923-
auto Box = O.get();
924-
assert(((isa<SingleValueInstruction>(Box) && isa<AllocBoxInst>(Box) ||
925-
isa<CopyValueInst>(Box)) ||
923+
SILValue Box = O.get();
924+
assert((isa<SingleValueInstruction>(Box) && isa<AllocBoxInst>(Box) ||
925+
isa<CopyValueInst>(Box) ||
926926
isa<SILFunctionArgument>(Box)) &&
927927
"Expected either an alloc box or a copy of an alloc box or a "
928928
"function argument");
929-
auto InsertPt = Box->getDefiningInsertionPoint();
930-
assert(InsertPt);
931-
SILBuilderWithScope B(InsertPt);
932-
Args.push_back(B.createProjectBox(Box.getLoc(), Box, 0));
929+
SILBuilderWithScope::insertAfter(Box, [&](SILBuilder &B) {
930+
Args.push_back(B.createProjectBox(Box.getLoc(), Box, 0));
931+
});
933932

934933
// For a partial_apply, if this argument is promoted, it is a box that we're
935934
// turning into an address because we've proven we can keep this value on
@@ -950,7 +949,7 @@ specializeApplySite(SILOptFunctionBuilder &FuncBuilder, ApplySite Apply,
950949
// becomes dead.
951950
for (SILInstruction *FrontierInst : PAFrontier) {
952951
SILBuilderWithScope Builder(FrontierInst);
953-
Builder.createDestroyValue(Apply.getLoc(), Box);
952+
Builder.emitDestroyValueOperation(Apply.getLoc(), Box);
954953
}
955954
}
956955
}

lib/Sema/TypeCheckAttr.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,26 +1051,26 @@ static void diagnoseObjCAttrWithoutFoundation(ObjCAttr *attr, Decl *decl) {
10511051
return;
10521052

10531053
auto &ctx = SF->getASTContext();
1054-
if (ctx.LangOpts.EnableObjCInterop) {
1055-
// Don't diagnose in a SIL file.
1056-
if (SF->Kind == SourceFileKind::SIL)
1057-
return;
10581054

1059-
// Don't diagnose for -disable-objc-attr-requires-foundation-module.
1060-
if (!ctx.LangOpts.EnableObjCAttrRequiresFoundation)
1061-
return;
1055+
if (!ctx.LangOpts.EnableObjCInterop) {
1056+
ctx.Diags.diagnose(attr->getLocation(), diag::objc_interop_disabled)
1057+
.fixItRemove(attr->getRangeWithAt());
1058+
return;
10621059
}
10631060

1061+
// Don't diagnose in a SIL file.
1062+
if (SF->Kind == SourceFileKind::SIL)
1063+
return;
1064+
1065+
// Don't diagnose for -disable-objc-attr-requires-foundation-module.
1066+
if (!ctx.LangOpts.EnableObjCAttrRequiresFoundation)
1067+
return;
1068+
10641069
// If we have the Foundation module, @objc is okay.
10651070
auto *foundation = ctx.getLoadedModule(ctx.Id_Foundation);
10661071
if (foundation && ctx.getImportCache().isImportedBy(foundation, SF))
10671072
return;
10681073

1069-
if (!ctx.LangOpts.EnableObjCInterop) {
1070-
ctx.Diags.diagnose(attr->getLocation(), diag::objc_interop_disabled)
1071-
.fixItRemove(attr->getRangeWithAt());
1072-
}
1073-
10741074
ctx.Diags.diagnose(attr->getLocation(),
10751075
diag::attr_used_without_required_module, attr,
10761076
ctx.Id_Foundation)

lib/Sema/TypeCheckStorage.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1362,7 +1362,8 @@ synthesizeLazyGetterBody(AccessorDecl *Get, VarDecl *VD, VarDecl *Storage,
13621362

13631363
Body.push_back(new (Ctx) ReturnStmt(SourceLoc(), Tmp2DRE, /*implicit*/true));
13641364

1365-
return { BraceStmt::create(Ctx, VD->getLoc(), Body, VD->getLoc(),
1365+
auto Range = InitValue->getSourceRange();
1366+
return { BraceStmt::create(Ctx, Range.Start, Body, Range.End,
13661367
/*implicit*/true),
13671368
/*isTypeChecked=*/true };
13681369
}

stdlib/public/Concurrency/Task.swift

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,11 @@ extension Task {
146146
public func cancel() {
147147
Builtin.cancelAsyncTask(task)
148148
}
149+
150+
@available(*, deprecated, message: "This is a temporary hack")
151+
public func run() {
152+
runTask(task)
153+
}
149154
}
150155
}
151156

@@ -267,9 +272,6 @@ extension Task {
267272
let (task, context) =
268273
Builtin.createAsyncTaskFuture(flags.bits, nil, operation)
269274

270-
// FIXME: Launch the task on an executor... somewhere....
271-
runTask(task)
272-
273275
return Handle<T>(task: task)
274276
}
275277

@@ -317,11 +319,6 @@ extension Task {
317319
let (task, context) =
318320
Builtin.createAsyncTaskFuture(flags.bits, nil, operation)
319321

320-
print(task)
321-
322-
// FIXME: Launch the task on an executor... somewhere....
323-
runTask(task)
324-
325322
return Handle<T>(task: task)
326323
}
327324
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// RUN: not --crash %target-swift-frontend -c -enable-library-evolution %s
2+
// REQUIRES: asserts
3+
4+
// SR-13866: TBDGen crasher on protocol with differentiable requirement
5+
6+
import _Differentiation
7+
8+
public protocol P: Differentiable {
9+
@differentiable(wrt: self)
10+
func foo(_ input: Float) -> Float
11+
}
12+
13+
// TBDGen duplicate symbol: ...
14+
// Assertion failed: (false && "TBDGen symbol appears twice"), function addSymbolInternal, file .../swift/lib/TBDGen/TBDGen.cpp, line 79.
15+
// Stack dump:
16+
// 0. Program arguments: swift-frontend -c test.swift -enable-library-evolution
17+
// 1. Swift version 5.3-dev (LLVM 618cb952e0f199a, Swift db830811093c5d2)
18+
// 2. While evaluating request PublicSymbolsRequest(Generate TBD for module test.test)
19+
// 0 swift-frontend 0x000000010d5fb0e5 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 37
20+
// 1 swift-frontend 0x000000010d5fa028 llvm::sys::RunSignalHandlers() + 248
21+
// 2 swift-frontend 0x000000010d5fb6c6 SignalHandler(int) + 262
22+
// 3 libsystem_platform.dylib 0x00007fff203dad7d _sigtramp + 29
23+
// 4 libsystem_platform.dylib 000000000000000000 _sigtramp + 18446603339975250592
24+
// 5 libsystem_c.dylib 0x00007fff202e9720 abort + 120
25+
// 6 libsystem_c.dylib 0x00007fff202e89d6 err + 0
26+
// 7 swift-frontend 0x000000010d76f5d7 swift::tbdgen::TBDGenVisitor::addSymbolInternal(llvm::StringRef, llvm::MachO::SymbolKind, swift::SymbolSource) (.cold.1) + 87
27+
// 8 swift-frontend 0x00000001090e084f swift::tbdgen::TBDGenVisitor::addSymbolInternal(llvm::StringRef, llvm::MachO::SymbolKind, swift::SymbolSource) + 111
28+
// 9 swift-frontend 0x00000001090e3287 swift::tbdgen::TBDGenVisitor::addSymbol(llvm::StringRef, swift::SymbolSource, llvm::MachO::SymbolKind) + 119
29+
// 10 swift-frontend 0x00000001090e34f0 swift::tbdgen::TBDGenVisitor::addDispatchThunk(swift::SILDeclRef) + 272
30+
// 11 swift-frontend 0x00000001090ea556 swift::SILWitnessVisitor<swift::tbdgen::TBDGenVisitor::visitProtocolDecl(swift::ProtocolDecl*)::WitnessVisitor>::addAutoDiffDerivativeMethodsIfRequired(swift::AbstractFunctionDecl*, swift::SILDeclRef::Kind) + 326
31+
// 12 swift-frontend 0x00000001090ea086 swift::SILWitnessVisitor<swift::tbdgen::TBDGenVisitor::visitProtocolDecl(swift::ProtocolDecl*)::WitnessVisitor>::visitProtocolDecl(swift::ProtocolDecl*) + 934
32+
// 13 swift-frontend 0x00000001090e786b swift::tbdgen::TBDGenVisitor::visitProtocolDecl(swift::ProtocolDecl*) + 283
33+
// 14 swift-frontend 0x00000001090e6c82 swift::tbdgen::TBDGenVisitor::visit(swift::Decl*) + 274
34+
// 15 swift-frontend 0x00000001090e7e7b swift::tbdgen::TBDGenVisitor::visitFile(swift::FileUnit*) + 283
35+
// 16 swift-frontend 0x00000001090e817c swift::tbdgen::TBDGenVisitor::visit(swift::TBDGenDescriptor const&) + 620
36+
// 17 swift-frontend 0x00000001090e88ca swift::PublicSymbolsRequest::evaluate(swift::Evaluator&, swift::TBDGenDescriptor) const + 250
37+
// 18 swift-frontend 0x00000001090ef0ed swift::SimpleRequest<swift::PublicSymbolsRequest, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > (swift::TBDGenDescriptor), (swift::RequestFlags)1>::evaluateRequest(swift::PublicSymbolsRequest const&, swift::Evaluator&) + 77
38+
// 19 swift-frontend 0x00000001090ebeee llvm::Expected<swift::PublicSymbolsRequest::OutputType> swift::Evaluator::getResultUncached<swift::PublicSymbolsRequest>(swift::PublicSymbolsRequest const&) + 494
39+
// 20 swift-frontend 0x00000001090e8977 swift::getPublicSymbols(swift::TBDGenDescriptor) + 135
40+
// 21 swift-frontend 0x0000000108d98481 swift::validateTBD(swift::ModuleDecl*, llvm::Module const&, swift::TBDGenOptions const&, bool) + 97
41+
// 22 swift-frontend 0x0000000108d8362d 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*) + 2925
42+
// 23 swift-frontend 0x0000000108d8289c performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 636
43+
// 24 swift-frontend 0x0000000108d7ae31 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 4625
44+
// 25 swift-frontend 0x0000000108d127fe main + 846
45+
// 26 libdyld.dylib 0x00007fff203b1631 start + 1
46+
// [1] 77664 abort xcrun $SWIFT_NINJA_BUILD_DIR/bin/swift-frontend -c test.swift
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// RUN: %target-swift-frontend -c -enable-library-evolution %s
2+
// REQUIRES: asserts
3+
4+
// SR-13865: AutoDiff crasher on property derivatives in library evolution mode.
5+
6+
import _Differentiation
7+
8+
public struct Struct: Differentiable {
9+
var stored: Float
10+
11+
// Test property.
12+
@differentiable
13+
public var property: Float {
14+
stored
15+
}
16+
17+
@differentiable
18+
public var property2: Float {
19+
stored + stored
20+
}
21+
22+
@differentiable
23+
public var property3: Float {
24+
stored.squareRoot()
25+
}
26+
}
27+
28+
// Original crasher:
29+
// Assertion failed: ((!dyn_cast_or_null<VarDecl>(Loc.getAsASTNode<Decl>()) || Var) && "location is a VarDecl, but SILDebugVariable is empty"), function createAllocStack, file .../swift/include/swift/SIL/SILBuilder.h, line 418.
30+
// Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
31+
// Stack dump:
32+
// 0. Program arguments: swift-frontend -c test2.swift -enable-library-evolution
33+
// 1. Swift version 5.3-dev (LLVM f681f671e2e9538, Swift 36090faaded56c2)
34+
// 2. While evaluating request ExecuteSILPipelineRequest(Run pipelines { Mandatory Diagnostic Passes + Enabling Optimization Passes } on SIL for test2.test2)
35+
// 3. While running pass #157 SILModuleTransform "Differentiation".
36+
// 4. While processing // differentiability witness for Struct.property.getter
37+
// sil_differentiability_witness [serialized] [parameters 0] [results 0] @$s5test26StructV8propertySfvg : $@convention(method) (@in_guaranteed Struct) -> Float {
38+
// }
39+
//
40+
// on SIL function "@$s5test26StructV8propertySfvg".
41+
// for getter for property (at test2.swift:8:14)
42+
// 5. While generating VJP for SIL function "@$s5test26StructV8propertySfvg".
43+
// for getter for property (at test2.swift:8:14)
44+
// 6. While generating pullback for SIL function "@$s5test26StructV8propertySfvg".
45+
// for getter for property (at test2.swift:8:14)
46+
// 0 swift-frontend 0x000000010de4a185 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 37
47+
// 1 swift-frontend 0x000000010de490c8 llvm::sys::RunSignalHandlers() + 248
48+
// 2 swift-frontend 0x000000010de4a766 SignalHandler(int) + 262
49+
// 3 libsystem_platform.dylib 0x00007fff2035bd7d _sigtramp + 29
50+
// 4 libsystem_platform.dylib 000000000000000000 _sigtramp + 18446603339975770784
51+
// 5 libsystem_c.dylib 0x00007fff2026c741 abort + 120
52+
// 6 libsystem_c.dylib 0x00007fff2026bb18 err + 0
53+
// 7 swift-frontend 0x000000010e1cb063 swift::SILBuilder::createAllocStack(swift::SILLocation, swift::SILType, llvm::Optional<swift::SILDebugVariable>, bool) (.cold.2) + 35
54+
// 8 swift-frontend 0x000000010a06716b swift::SILBuilder::createAllocStack(swift::SILLocation, swift::SILType, llvm::Optional<swift::SILDebugVariable>, bool) + 315
55+
// 9 swift-frontend 0x0000000109af96d3 swift::autodiff::PullbackCloner::Implementation::visitLoadOperation(swift::SingleValueInstruction*) + 275
56+
// 10 swift-frontend 0x0000000109aec37b swift::autodiff::PullbackCloner::Implementation::visit(swift::SILInstruction*) + 203
57+
// 11 swift-frontend 0x0000000109ae8196 swift::autodiff::PullbackCloner::Implementation::visitSILBasicBlock(swift::SILBasicBlock*) + 838
58+
// 12 swift-frontend 0x0000000109ae5504 swift::autodiff::PullbackCloner::Implementation::run() + 7268
59+
// 13 swift-frontend 0x0000000109b077d3 swift::autodiff::VJPCloner::Implementation::run() + 1539
60+
// 14 swift-frontend 0x0000000109c4e0b4 (anonymous namespace)::DifferentiationTransformer::canonicalizeDifferentiabilityWitness(swift::SILFunction*, swift::SILDifferentiabilityWitness*, swift::autodiff::DifferentiationInvoker, swift::IsSerialized_t) + 7172
61+
// 15 swift-frontend 0x0000000109c4bafa (anonymous namespace)::Differentiation::run() + 1530
62+
// 16 swift-frontend 0x0000000109c9c86e swift::SILPassManager::runModulePass(unsigned int) + 558
63+
// 17 swift-frontend 0x0000000109ca144a swift::SILPassManager::execute() + 666
64+
// 18 swift-frontend 0x0000000109c996a8 swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) + 72
65+
// 19 swift-frontend 0x0000000109c99643 swift::ExecuteSILPipelineRequest::evaluate(swift::Evaluator&, swift::SILPipelineExecutionDescriptor) const + 51
66+
// 20 swift-frontend 0x0000000109cbc83d swift::SimpleRequest<swift::ExecuteSILPipelineRequest, std::__1::tuple<> (swift::SILPipelineExecutionDescriptor), (swift::RequestFlags)1>::evaluateRequest(swift::ExecuteSILPipelineRequest const&, swift::Evaluator&) + 29
67+
// 21 swift-frontend 0x0000000109ca3a37 llvm::Expected<swift::ExecuteSILPipelineRequest::OutputType> swift::Evaluator::getResultUncached<swift::ExecuteSILPipelineRequest>(swift::ExecuteSILPipelineRequest const&) + 375
68+
// 22 swift-frontend 0x0000000109c998d4 swift::executePassPipelinePlan(swift::SILModule*, swift::SILPassPipelinePlan const&, bool, swift::irgen::IRGenModule*) + 68
69+
// 23 swift-frontend 0x0000000109ca6507 swift::runSILDiagnosticPasses(swift::SILModule&) + 87
70+
// 24 swift-frontend 0x00000001096dd7bc swift::CompilerInstance::performSILProcessing(swift::SILModule*) + 60
71+
// 25 swift-frontend 0x00000001095c4aa5 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*) + 901
72+
// 26 swift-frontend 0x00000001095c44fc performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 636
73+
// 27 swift-frontend 0x00000001095ba328 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 4632
74+
// 28 swift-frontend 0x0000000109551fee main + 846
75+
// 29 libdyld.dylib 0x00007fff20332689 start + 1
76+
// 30 libdyld.dylib 0x0000000000000004 start + 18446603339975940476
77+
// [1] 21458 abort xcrun $SWIFT_NINJA_BUILD_DIR/bin/swift-frontend -c test2.swift

0 commit comments

Comments
 (0)