On "Compilazione file Swift" passo durante l'archiviazione, ha detto che un particolare file ha avuto questo errore:problema Swift utilizzando max() e min() in sequenza durante l'archiviazione su Xcode
PHI node has multiple entries for the same basic block with different incoming values!
%31 = phi i64 [ 3, %385 ], [ %386, %385 ], [ 1, %29 ], !dbg !1370
label %385
i64 3
%386 = phi i64 [ %23, %27 ], !dbg !1433
LLVM ERROR: Broken function found, compilation aborted!
Dopo aver commentato il codice del file per un po 'ho scoperto che le seguenti righe di codice sono stati il problema:
var normalizedStrikes = max(1, strikes)
normalizedStrikes = min(normalizedStrikes, 3)
Dopo aver provato un sacco di cose che ho scoperto che non potevo usare max() e poi min(), ecco che cosa risolto il problema per me:
var normalizedStrikes = strikes
if (normalizedStrikes <= 0) {
normalizedStrikes = 1
}
normalizedStrikes = min(normalizedStrikes, 3)
Un'altra cosa molto carina che ho trovato è che se cambio la condizione in "< 1", si genera lo stesso errore. Roba buona.
var normalizedStrikes = strikes
if (normalizedStrikes < 1) {
normalizedStrikes = 1
}
normalizedStrikes = min(normalizedStrikes, 3)
La mia domanda è: perché è successo?
Btw che sto usando Xcode Versione 6.1.1 (6A2008a)
Questo è un bug piuttosto interessante. L'ho duplicato sul mio ambiente di sviluppo. Il compilatore veloce è ancora abbastanza nuovo, ed è pieno di bug. Migliorerà col tempo. – HalR
Bel posto con questo, stavo ottenendo un errore simile: 'Nodo PHI ha più voci per lo stesso blocco di base con diversi valori in entrata!' '% 12 = phi double [% 9,% 8], [1.000000e +00,% 8], [0,000000e + 00,% 7], [1.000000e + 00,% 7],! Dbg! 254' 'label% 8' ' double 1.000000e + 00' '% 9 = phi doppia [% 5, voce%], DBG 252' 'LLVM ERRORE:!! funzione rotto trovata, la compilazione interrotta' E grazie al tuo post ho trovato il problema era con:! 'progresso = min (1 , max (0, progresso)) ' Inoltre, ho notato solo l'errore si è verificato durante la creazione della configurazione di rilascio che eseguiva Optimisations ... Ancora grazie! – Rich
Hai fatto un bug su questo? –