tayloraswift / godot-swift

swift language support for the godot game engine
116 stars 5 forks source link

SIL verification failed: external declarations of SILFunctions with shared visibility is not allowed #6

Open tayloraswift opened 2 years ago

tayloraswift commented 2 years ago

package plugin seems to be running into a compiler crash:

error: plugin compilation failed: <PluginCompilationResult(
    exitStatus: terminated(code: 1),
    stdout: ,
    stderr: error: compile command failed due to signal 6 (use -v to see invocation)
SIL verification failed: external declarations of SILFunctions with shared visibility is not allowed: SingleFunction || !hasSharedVisibility(RefF->getLinkage()) || RefF->hasForeignBody()
Verifying instruction:
->   // function_ref specialized __RawDictionaryStorage.find<A>(_:)
  %39 = function_ref @$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSS_Tgq5 : $@convention(method) (@guaranteed String, @guaranteed __RawDictionaryStorage) -> (_HashTable.Bucket, Bool) // user: %48
     %48 = apply %39(%46, %18) : $@convention(method) (@guaranteed String, @guaranteed __RawDictionaryStorage) -> (_HashTable.Bucket, Bool) // users: %50, %49
In function:
// specialized Dictionary.init(dictionaryLiteral:)
sil shared_external [serializable] [readonly] [_semantics "optimize.sil.specialize.generic.size.never"] @$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SSTgq5 : $@convention(method) (@owned Array<(String, String)>, @thin Dictionary<String, String>.Type) -> @owned Dictionary<String, String> {
// %0                                             // users: %93, %88, %43, %22, %3
bb0(%0 : $Array<(String, String)>, %1 : $@thin Dictionary<String, String>.Type):
  // function_ref specialized Array._getCount()
  %2 = function_ref @$sSa9_getCountSiyFSS_SSt_Tgq5 : $@convention(method) (@guaranteed Array<(String, String)>) -> Int // user: %3
  %3 = apply %2(%0) : $@convention(method) (@guaranteed Array<(String, String)>) -> Int // users: %10, %5
  %4 = integer_literal $Builtin.Int64, 0          // users: %40, %34, %6
  %5 = struct_extract %3 : $Int, #Int._value      // users: %85, %34, %6
  %6 = builtin "cmp_eq_Int64"(%5 : $Builtin.Int64, %4 : $Builtin.Int64) : $Builtin.Int1 // users: %20, %7
  cond_br %6, bb2, bb1                            // id: %7

bb1:                                              // Preds: bb0
  %8 = metatype $@thick _DictionaryStorage<String, String>.Type // user: %10
  // function_ref static _DictionaryStorage.allocate(capacity:)
  %9 = function_ref @$ss18_DictionaryStorageC8allocate8capacityAByxq_GSi_tFZ : $@convention(method) <τ_0_0, τ_0_1 where τ_0_0 : Hashable> (Int, @thick _DictionaryStorage<τ_0_0, τ_0_1>.Type) -> @owned _DictionaryStorage<τ_0_0, τ_0_1> // user: %10
  %10 = apply %9<String, String>(%3, %8) : $@convention(method) <τ_0_0, τ_0_1 where τ_0_0 : Hashable> (Int, @thick _DictionaryStorage<τ_0_0, τ_0_1>.Type) -> @owned _DictionaryStorage<τ_0_0, τ_0_1> // user: %11
  %11 = upcast %10 : $_DictionaryStorage<String, String> to $__RawDictionaryStorage // user: %12
  br bb3(%11 : $__RawDictionaryStorage)           // id: %12

bb2:                                              // Preds: bb0
  %13 = global_addr @_swiftEmptyDictionarySingleton : $*_SwiftEmptyDictionarySingleton // user: %14
  %14 = address_to_pointer %13 : $*_SwiftEmptyDictionarySingleton to $Builtin.RawPointer // user: %15
  %15 = raw_pointer_to_ref %14 : $Builtin.RawPointer to $__EmptyDictionarySingleton // user: %16
  %16 = upcast %15 : $__EmptyDictionarySingleton to $__RawDictionaryStorage // user: %17
  br bb3(%16 : $__RawDictionaryStorage)           // id: %17

// %18                                            // users: %98, %97, %92, %48, %36, %30, %29, %28, %25, %19
bb3(%18 : $__RawDictionaryStorage):               // Preds: bb2 bb1
  %19 = struct $_NativeDictionary<String, String> (%18 : $__RawDictionaryStorage) // user: %77
  cond_br %6, bb8, bb4                            // id: %20

bb4:                                              // Preds: bb3
  // function_ref specialized Array._hoistableIsNativeTypeChecked()
  %21 = function_ref @$sSa29_hoistableIsNativeTypeCheckedSbyFSS_SSt_Tgq5 : $@convention(method) (@guaranteed Array<(String, String)>) -> Bool // user: %22
  %22 = apply %21(%0) : $@convention(method) (@guaranteed Array<(String, String)>) -> Bool // user: %43
  %23 = integer_literal $Builtin.Int64, 1         // users: %79, %60, %44
  %24 = integer_literal $Builtin.Int1, -1         // users: %79, %44
  %25 = ref_tail_addr %18 : $__RawDictionaryStorage, $_UnsafeBitset.Word // user: %58
  %26 = integer_literal $Builtin.Int64, 64        // users: %56, %55
  %27 = integer_literal $Builtin.Int64, 63        // user: %59
  %28 = ref_element_addr %18 : $__RawDictionaryStorage, #__RawDictionaryStorage._rawKeys // user: %31
  %29 = ref_element_addr %18 : $__RawDictionaryStorage, #__RawDictionaryStorage._rawValues // user: %32
  %30 = ref_element_addr %18 : $__RawDictionaryStorage, #__RawDictionaryStorage._count // users: %84, %33
  %31 = struct_element_addr %28 : $*UnsafeMutableRawPointer, #UnsafeMutableRawPointer._rawValue // user: %68
  %32 = struct_element_addr %29 : $*UnsafeMutableRawPointer, #UnsafeMutableRawPointer._rawValue // user: %73
  %33 = struct_element_addr %30 : $*Int, #Int._value // user: %78
  %34 = builtin "cmp_sge_Int64"(%4 : $Builtin.Int64, %5 : $Builtin.Int64) : $Builtin.Int1 // user: %35
  cond_fail %34 : $Builtin.Int1, "loop induction variable overflowed" // id: %35
  strong_retain %18 : $__RawDictionaryStorage     // id: %36
  %37 = struct $_DependenceToken ()               // user: %43
  // function_ref specialized Array._getElement(_:wasNativeTypeChecked:matchingSubscriptCheck:)
  %38 = function_ref @$sSa11_getElement_20wasNativeTypeChecked22matchingSubscriptCheckxSi_Sbs16_DependenceTokenVtFSS_SSt_Tgq5 : $@convention(method) (Int, Bool, _DependenceToken, @guaranteed Array<(String, String)>) -> @owned (String, String) // user: %43
  // function_ref specialized __RawDictionaryStorage.find<A>(_:)
  %39 = function_ref @$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSS_Tgq5 : $@convention(method) (@guaranteed String, @guaranteed __RawDictionaryStorage) -> (_HashTable.Bucket, Bool) // user: %48
  br bb5(%4 : $Builtin.Int64)                     // id: %40

// %41                                            // users: %44, %42
bb5(%41 : $Builtin.Int64):                        // Preds: bb6 bb4
  %42 = struct $Int (%41 : $Builtin.Int64)        // user: %43
  %43 = apply %38(%42, %22, %37, %0) : $@convention(method) (Int, Bool, _DependenceToken, @guaranteed Array<(String, String)>) -> @owned (String, String) // users: %47, %46
  %44 = builtin "sadd_with_overflow_Int64"(%41 : $Builtin.Int64, %23 : $Builtin.Int64, %24 : $Builtin.Int1) : $(Builtin.Int64, Builtin.Int1) // user: %45
  %45 = tuple_extract %44 : $(Builtin.Int64, Builtin.Int1), 0 // users: %87, %85
  %46 = tuple_extract %43 : $(String, String), 0  // users: %72, %48
  %47 = tuple_extract %43 : $(String, String), 1  // user: %76
  %48 = apply %39(%46, %18) : $@convention(method) (@guaranteed String, @guaranteed __RawDictionaryStorage) -> (_HashTable.Bucket, Bool) // users: %50, %49
  %49 = tuple_extract %48 : $(_HashTable.Bucket, Bool), 0 // user: %53
  %50 = tuple_extract %48 : $(_HashTable.Bucket, Bool), 1 // user: %51
  %51 = struct_extract %50 : $Bool, #Bool._value  // user: %52
  cond_fail %51 : $Builtin.Int1, "Dictionary literal contains duplicate keys" // id: %52
  %53 = struct_extract %49 : $_HashTable.Bucket, #_HashTable.Bucket.offset // user: %54
  %54 = struct_extract %53 : $Int, #Int._value    // users: %69, %56, %55
  %55 = builtin "udiv_Int64"(%54 : $Builtin.Int64, %26 : $Builtin.Int64) : $Builtin.Int64 // user: %57
  %56 = builtin "urem_Int64"(%54 : $Builtin.Int64, %26 : $Builtin.Int64) : $Builtin.Int64 // user: %59
  %57 = builtin "truncOrBitCast_Int64_Word"(%55 : $Builtin.Int64) : $Builtin.Word // user: %58
  %58 = index_addr %25 : $*_UnsafeBitset.Word, %57 : $Builtin.Word // users: %67, %61
  %59 = builtin "and_Int64"(%56 : $Builtin.Int64, %27 : $Builtin.Int64) : $Builtin.Int64 // user: %60
  %60 = builtin "shl_Int64"(%23 : $Builtin.Int64, %59 : $Builtin.Int64) : $Builtin.Int64 // user: %64
  %61 = struct_element_addr %58 : $*_UnsafeBitset.Word, #_UnsafeBitset.Word.value // user: %62
  %62 = struct_element_addr %61 : $*UInt, #UInt._value // user: %63
  %63 = load %62 : $*Builtin.Int64                // user: %64
  %64 = builtin "or_Int64"(%63 : $Builtin.Int64, %60 : $Builtin.Int64) : $Builtin.Int64 // user: %65
  %65 = struct $UInt (%64 : $Builtin.Int64)       // user: %66
  %66 = struct $_UnsafeBitset.Word (%65 : $UInt)  // user: %67
  store %66 to %58 : $*_UnsafeBitset.Word         // id: %67
  %68 = load %31 : $*Builtin.RawPointer           // user: %70
  %69 = builtin "truncOrBitCast_Int64_Word"(%54 : $Builtin.Int64) : $Builtin.Word // users: %75, %71
  %70 = pointer_to_address %68 : $Builtin.RawPointer to [strict] $*String // user: %71
  %71 = index_addr %70 : $*String, %69 : $Builtin.Word // user: %72
  store %46 to %71 : $*String                     // id: %72
  %73 = load %32 : $*Builtin.RawPointer           // user: %74
  %74 = pointer_to_address %73 : $Builtin.RawPointer to [strict] $*String // user: %75
  %75 = index_addr %74 : $*String, %69 : $Builtin.Word // user: %76
  store %47 to %75 : $*String                     // id: %76
  fix_lifetime %19 : $_NativeDictionary<String, String> // id: %77
  %78 = load %33 : $*Builtin.Int64                // user: %79
  %79 = builtin "sadd_with_overflow_Int64"(%78 : $Builtin.Int64, %23 : $Builtin.Int64, %24 : $Builtin.Int1) : $(Builtin.Int64, Builtin.Int1) // users: %81, %80
  %80 = tuple_extract %79 : $(Builtin.Int64, Builtin.Int1), 0 // user: %83
  %81 = tuple_extract %79 : $(Builtin.Int64, Builtin.Int1), 1 // user: %82
  cond_fail %81 : $Builtin.Int1, "arithmetic overflow" // id: %82
  %83 = struct $Int (%80 : $Builtin.Int64)        // user: %84
  store %83 to %30 : $*Int                        // id: %84
  %85 = builtin "cmp_eq_Int64"(%45 : $Builtin.Int64, %5 : $Builtin.Int64) : $Builtin.Int1 // user: %86
  cond_br %85, bb7, bb6                           // id: %86

bb6:                                              // Preds: bb5
  br bb5(%45 : $Builtin.Int64)                    // id: %87

bb7:                                              // Preds: bb5
  %88 = struct_extract %0 : $Array<(String, String)>, #Array._buffer // user: %89
  %89 = struct_extract %88 : $_ContiguousArrayBuffer<(String, String)>, #_ContiguousArrayBuffer._storage // user: %90
  strong_release %89 : $__ContiguousArrayStorageBase // id: %90
  br bb9                                          // id: %91

bb8:                                              // Preds: bb3
  strong_retain %18 : $__RawDictionaryStorage     // id: %92
  %93 = struct_extract %0 : $Array<(String, String)>, #Array._buffer // user: %94
  %94 = struct_extract %93 : $_ContiguousArrayBuffer<(String, String)>, #_ContiguousArrayBuffer._storage // user: %95
  strong_release %94 : $__ContiguousArrayStorageBase // id: %95
  br bb9                                          // id: %96

bb9:                                              // Preds: bb8 bb7
  strong_release %18 : $__RawDictionaryStorage    // id: %97
  %98 = unchecked_ref_cast %18 : $__RawDictionaryStorage to $Builtin.BridgeObject // user: %99
  %99 = struct $_BridgeStorage<__RawDictionaryStorage> (%98 : $Builtin.BridgeObject) // user: %100
  %100 = struct $Dictionary<String, String>._Variant (%99 : $_BridgeStorage<__RawDictionaryStorage>) // user: %101
  %101 = struct $Dictionary<String, String> (%100 : $Dictionary<String, String>._Variant) // user: %102
  return %101 : $Dictionary<String, String>       // id: %102
} // end sil function '$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SSTgq5'

Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.