Closed
Description
Description
A SWIFT_UNSAFE_REFERENCE class with a getter/setter for a bitfield member crashes the frontend when using `-emit-clang-header-path
Reproduction
Test.h
#pragma once
#include <swift/bridging>
class S {
public:
bool is_marked() const { return m_marked; }
void set_marked(bool b) { m_marked = b; }
private:
bool m_marked : 1 { false };
} SWIFT_UNSAFE_REFERENCE;
module.modulemap
module MyCxx {
header "Test.h"
requires cplusplus
export *
}
main.swift
import MyCxx
func doSomethingWith(_ s: S) {}
Test with:
swift-frontend -typecheck \
-I. \
-cxx-interoperability-mode=default \
-emit-clang-header-path MyModule-Swift.h \
-module-name MyModule \
-I$(swiftc -print-target-info | jq -r '.paths.runtimeResourcePath + "/../../include"') \
main.swift
Stack dump
mutating function in a class
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
0. Program arguments: swift-frontend -typecheck -I. -cxx-interoperability-mode=default -emit-clang-header-path MyModule-Swift.h -module-name MyModule -I/home/andrew/.local/share/swiftly/toolchains/main-snapshot-2025-03-14/usr/lib/swift/../../include main.swift
1. Swift version 6.2-dev (LLVM 162ee50b401fff2, Swift 57288d13c9f3c02)
2. Compiling with effective version 5.10
3. While verifying AccessorDecl setter for m_marked (at /home/andrew/ladybird-org/swift-test-apps/bitfield-member/./Test.h:10:8)
4. While verifying FuncDecl setter for m_marked (at /home/andrew/ladybird-org/swift-test-apps/bitfield-member/./Test.h:10:8)
#0 0x00005e42246d8498 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/andrew/.local/share/swiftly/toolchains/main-snapshot-2025-03-14/usr/bin/swift-frontend+0x8b29498)
#1 0x00005e42246d5fbe llvm::sys::RunSignalHandlers() (/home/andrew/.local/share/swiftly/toolchains/main-snapshot-2025-03-14/usr/bin/swift-frontend+0x8b26fbe)
#2 0x00005e42246d8b31 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x0000742adf845330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x0000742adf89eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x0000742adf89eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x0000742adf89eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x0000742adf84527e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x0000742adf8288ff abort ./stdlib/abort.c:81:7
#9 0x00005e421e70d1e3 (anonymous namespace)::Verifier::verifyChecked(swift::FuncDecl*) ASTVerifier.cpp:0:0
#10 0x00005e421e6f7388 (anonymous namespace)::Verifier::walkToDeclPost(swift::Decl*) ASTVerifier.cpp:0:0
#11 0x00005e421e70e223 (anonymous namespace)::Traversal::doIt(swift::Decl*) ASTWalker.cpp:0:0
#12 0x00005e421e712598 (anonymous namespace)::Traversal::visit(swift::Decl*) ASTWalker.cpp:0:0
#13 0x00005e421e70e213 (anonymous namespace)::Traversal::doIt(swift::Decl*) ASTWalker.cpp:0:0
#14 0x00005e421e70e113 swift::Decl::walk(swift::ASTWalker&) (/home/andrew/.local/share/swiftly/toolchains/main-snapshot-2025-03-14/usr/bin/swift-frontend+0x2b5f113)
#15 0x00005e421e6f4820 swift::verify(swift::Decl*) (/home/andrew/.local/share/swiftly/toolchains/main-snapshot-2025-03-14/usr/bin/swift-frontend+0x2b45820)
#16 0x00005e421e41ed19 swift::ClangImporter::verifyAllModules() (/home/andrew/.local/share/swiftly/toolchains/main-snapshot-2025-03-14/usr/bin/swift-frontend+0x286fd19)
#17 0x00005e421e62226a swift::ASTContext::verifyAllLoadedModules() const (/home/andrew/.local/share/swiftly/toolchains/main-snapshot-2025-03-14/usr/bin/swift-frontend+0x2a7326a)
#18 0x00005e421cad9491 performEndOfPipelineActions(swift::CompilerInstance&) FrontendTool.cpp:0:0
#19 0x00005e421cad58de performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) FrontendTool.cpp:0:0
#20 0x00005e421cad49b5 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/home/andrew/.local/share/swiftly/toolchains/main-snapshot-2025-03-14/usr/bin/swift-frontend+0xf259b5)
#21 0x00005e421c87012b swift::mainEntry(int, char const**) (/home/andrew/.local/share/swiftly/toolchains/main-snapshot-2025-03-14/usr/bin/swift-frontend+0xcc112b)
#22 0x0000742adf82a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#23 0x0000742adf82a28b call_init ./csu/../csu/libc-start.c:128:20
#24 0x0000742adf82a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#25 0x00005e421c86f125 _start (/home/andrew/.local/share/swiftly/toolchains/main-snapshot-2025-03-14/usr/bin/swift-frontend+0xcc0125)
Aborted (core dumped)
Expected behavior
Compiles with no issues
Environment
Swift version 6.2-dev (LLVM 162ee50b401fff2, Swift 57288d1)
Target: x86_64-unknown-linux-gnu
Build config: +assertions
Ubuntu 24.04
Additional information
No response