Erik Eckstein
ed67e36ce5
bridging: reduce #ifdef USED_IN_CPP_SOURCE in bridging headers
...
Especially avoid any constructors in `#ifdef USED_IN_CPP_SOURCE` blocks, because this breaks Windows ARM64.
2024-10-25 09:47:56 +02:00
Hiroshi Yamauchi
dedfb9e0ab
Ensure that bridged types are indirectly returned on Windows ARM64
...
On Windows ARM64, how a struct value type is returned is sensitive to
conditions including whether a user-defined constructor exists,
etc. See
https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#return-values
That caused a calling convention mismatch between the
non-USED_IN_CPP_SOURCE (Swift) side and the USE_IN_CPP_SOURCE (C++)
side and a crash.
Following https://github.com/swiftlang/swift/pull/76433 add
constructors to several bridged C++ struct/class types so that the
calling convention matches.
This is a partial fix for https://github.com/swiftlang/swift/issues/74866
2024-09-19 16:00:15 -07:00
Rintaro Ishizaki
7c195ef2ec
[ASTGen] Use C briding instead of C++ method
...
Apparently C++ method bridging doesn't work in Linux?
2023-11-12 21:43:09 -08:00
Rintaro Ishizaki
fb08a92f48
[ASTGen] Infrastructure to implment ASTGen Incrementally
...
* 'ASTGenVisitor' has a reference to a legacy C++ Parser configured for
ASTGen.
* If 'ASTGenVisitor' encounters a AST node that hasn't been migrated,
call parse(Decl|Stmt|Expr|Type) to parse the position using the legacy
parser.
* The legacy parser calls ASTGen's
'swift_ASTGen_build(Decl|Stmt|Expr|Type)' for each ASTNode "parsing"
(unless the call is not directly from the ASTGen.)
rdar://117151886
2023-11-12 21:43:08 -08:00