Skip to content

Commit 0bbaa35

Browse files
authored
Merge pull request #78100 from kubamracek/embedded-no-metadata-cxx
[embedded] Don't emit metadata references from C++ interop
2 parents 7946bf7 + 77c6494 commit 0bbaa35

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

lib/IRGen/IRGenSIL.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2564,7 +2564,7 @@ void IRGenModule::emitSILFunction(SILFunction *f) {
25642564
return;
25652565

25662566
// Type metadata for foreign references is not yet supported on Windows. Bug #76168.
2567-
if (Context.LangOpts.EnableCXXInterop &&
2567+
if (Context.LangOpts.EnableCXXInterop && !Context.LangOpts.hasFeature(Feature::Embedded) &&
25682568
f->getLinkage() == SILLinkage::Public &&
25692569
!Context.LangOpts.Target.isOSWindows())
25702570
noteUseOfMetadataByCXXInterop(IRGen, f, TypeExpansionContext(*f));

test/embedded/cxx-no-metadata.swift

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: %{python} %utils/split_file.py -o %t %s
3+
4+
// RUN: %target-swift-frontend -I %t %t/Main.swift -enable-experimental-feature Embedded -cxx-interoperability-mode=default -c -o %t/a.o -Rmodule-loading
5+
6+
// REQUIRES: swift_in_compiler
7+
// REQUIRES: OS=macosx || OS=linux-gnu
8+
// REQUIRES: swift_feature_Embedded
9+
10+
// BEGIN header.h
11+
12+
// C++
13+
struct CxxStruct {
14+
int field;
15+
};
16+
17+
// BEGIN module.modulemap
18+
19+
module MyModule {
20+
header "header.h"
21+
}
22+
23+
// BEGIN Main.swift
24+
25+
import MyModule
26+
27+
public func foo(ptr: UnsafeMutablePointer<CxxStruct>?) {
28+
}
29+
30+
foo(ptr: nil)

0 commit comments

Comments
 (0)