2017-09-20 42 views
1

我們最近將代碼從Swift 2.3遷移到4.0。 在設備以及模擬器上以調試模式運行時,該應用工作正常。編譯和構建沒有問題。存儲值類型與指針操作數類型不匹配! - 存儲i64,swift.bridge,dictionaryUpCasts

但是,只要它是archived,編譯失敗時會出現以下錯誤。而且,更重要的是,它並沒有指向代碼中的任何位置(沒有文件,沒有函數,也沒有聲明)。

即使我發現難以推斷 - 問題出在哪裏以及是什麼。

它使用Xcode 9.0構建。以前,我認爲這是Beta版本的問題,因爲我在Mac OS Sierra上使用BetaGM seedXCode 9.0

Stored value type does not match pointer operand type! 
    store i64 %119, %swift.bridge** %128, align 8, !dbg !402 
%swift.bridge*<unknown>:0: error: fatal error encountered during compilation; please file a bug report with your project and the crash log 
<unknown>:0: note: Broken function found, compilation aborted! 
0 swift     0x000000010454adba PrintStackTraceSignalHandler(void*) + 42 
1 swift     0x000000010454a1f6 SignalHandler(int) + 662 
2 libsystem_platform.dylib 0x00007fffacd39b3a _sigtramp + 26 
3 libsystem_platform.dylib 0x0000000000000004 _sigtramp + 1395418340 
4 libsystem_c.dylib  0x00007fffacbbe420 abort + 129 
5 swift     0x0000000100eb9fe7 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*)::$_0::__invoke(void*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) + 551 
6 swift     0x00000001045083fb llvm::report_fatal_error(llvm::Twine const&, bool) + 571 
7 swift     0x00000001045081ba llvm::report_fatal_error(char const*, bool) + 42 
8 swift     0x00000001044de6b6 (anonymous namespace)::VerifierLegacyPass::runOnFunction(llvm::Function&) + 54 
9 swift     0x000000010448baaa llvm::FPPassManager::runOnFunction(llvm::Function&) + 506 
10 swift     0x0000000104493609 llvm::legacy::FunctionPassManagerImpl::run(llvm::Function&) + 377 
11 swift     0x00000001044933fa llvm::legacy::FunctionPassManager::run(llvm::Function&) + 410 
12 swift     0x0000000101033778 swift::performLLVM(swift::IRGenOptions&, swift::DiagnosticEngine*, llvm::sys::SmartMutex<false>*, llvm::GlobalVariable*, llvm::Module*, llvm::TargetMachine*, swift::version::Version const&, llvm::StringRef, swift::UnifiedStatsReporter*) + 5016 
13 swift     0x00000001010376d5 ThreadEntryPoint(swift::irgen::IRGenerator*, llvm::sys::SmartMutex<false>*, int) + 181 
14 swift     0x000000010103772f void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(swift::irgen::IRGenerator*, llvm::sys::SmartMutex<false>*, int), swift::irgen::IRGenerator*, llvm::sys::SmartMutex<false>*, int> >(void*) + 47 
15 libsystem_pthread.dylib 0x00007fffacd4393b _pthread_body + 180 
16 libsystem_pthread.dylib 0x00007fffacd43887 _pthread_body + 0 
17 libsystem_pthread.dylib 0x00007fffacd4308d thread_start + 13 
Stack dump: 
0. Running pass 'Module Verifier' on function '@_T0s17_dictionaryUpCasts10DictionaryVyq0_q1_GACyxq_Gs8HashableRzsAFR0_r2_lFTfq4g_nSi_SQySayACyS2SGGGSiAHSgTg5' 

回答

1

這是Swift代碼生成中的一個錯誤。

選擇項目,轉到您想要的目標,然後在構建設置下,您可以嘗試在編譯之前更改代碼優化級別。嘗試全模塊優化與相應的結構,如下所示:

enter image description here

與SWIFT 3.0這是默認值,並且夫特4.0不應該有任何不同,IMHO。

+0

非常感謝。我使用單一文件優化,並指出問題出在哪裏。 –