mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #79833 from rastogishubham/FixHopToExe
[DebugInfo] Use Stmt EndLoc if SILLocation passed in is the Stmt EndLoc.
This commit is contained in:
@@ -290,8 +290,14 @@ RegularLocation::getDebugOnlyExtendedASTNodeLoc(SILLocation L,
|
||||
return new (Module) ExtendedASTNodeLoc(Empty, {D, 0});
|
||||
if (auto E = L.getAsASTNode<Expr>())
|
||||
return new (Module) ExtendedASTNodeLoc(Empty, {E, 0});
|
||||
if (auto S = L.getAsASTNode<Stmt>())
|
||||
if (auto S = L.getAsASTNode<Stmt>()) {
|
||||
// If the source location of the SILLocation passed in matches the EndLoc of
|
||||
// the Stmt, set the primary ASTNodeTy integer to 1, so that
|
||||
// SILLocation::getSourceLoc returns the EndLoc when queried.
|
||||
if (L.getSourceLocForDebugging() == S->getEndLoc())
|
||||
Empty.setInt(1);
|
||||
return new (Module) ExtendedASTNodeLoc(Empty, {S, 0});
|
||||
}
|
||||
auto P = L.getAsASTNode<Pattern>();
|
||||
return new (Module) ExtendedASTNodeLoc(Empty, {P, 0});
|
||||
}
|
||||
|
||||
24
test/DebugInfo/hop_to_executor.swift
Normal file
24
test/DebugInfo/hop_to_executor.swift
Normal file
@@ -0,0 +1,24 @@
|
||||
// RUN: %target-swiftc_driver %s -c -g -Onone -o - -Xllvm -sil-print-debuginfo -emit-sil -parse-as-library -module-name m | %FileCheck %s
|
||||
|
||||
// This test ensures that the hop_to_executor source location matches the end of the do block
|
||||
|
||||
func getTimestamp(x: Int) async -> Int {
|
||||
return 40 + x
|
||||
}
|
||||
func work() {}
|
||||
func foo() async {
|
||||
do {
|
||||
work()
|
||||
async let timestamp2 = getTimestamp(x:2)
|
||||
print(await timestamp2)
|
||||
// CHECK: %[[REG:[0-9]+]] = function_ref @swift_asyncLet_finish : $@convention(thin) @async (Builtin.RawPointer, Builtin.RawPointer) -> (), loc {{.*}}:[[@LINE+3]]
|
||||
// CHECK-NEXT: %{{[0-9]+}} = apply %[[REG]](%{{[0-9]+}}, %{{[0-9]+}}) : $@convention(thin) @async (Builtin.RawPointer, Builtin.RawPointer) -> (), loc{{.*}}:[[@LINE+2]]
|
||||
// CHECK-NEXT: hop_to_executor %0, loc * {{.*}}:[[@LINE+1]]
|
||||
}
|
||||
work()
|
||||
}
|
||||
@main enum entry {
|
||||
static func main() async {
|
||||
await foo()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user