Se un programma riceverà solo dati affidabili e se non dovesse soddisfare alcun requisito comportamentale quando gli vengono forniti dati dannosi, potrebbe essere possibile generare un codice leggermente più efficiente di quanto sarebbe richiesto se ci fossero alcuni comportamenti requisiti che doveva soddisfare per tutti i dati.
Poiché alcune attività implicano solo l'elaborazione di dati affidabili, mentre altre comportano l'elaborazione di dati da fonti inaffidabili, lo standard C consente implementazioni destinate solo alle attività precedenti ottimizzazioni che sarebbero inadeguate in quelle destinate a questi ultimi, e in quelle destinate ad essere adatte a questi ultimi compiti per offrire garanzie che impedirebbero inutilmente ottimizzazioni che potrebbero essere utili durante l'elaborazione del primo.
Sfortunatamente, il Lo Standard non fornisce alcun mezzo attraverso il quale le implementazioni possono indicare quali tipi di garanzie comportamentali offriranno oltre a quelle previste dallo Standard. Quando è stato scritto C89, gli autori si aspettavano che "il mercato" potesse fare un lavoro migliore degli autori dello Standard nel determinare quali tipi di implementazioni dovrebbero supportare quali "estensioni popolari" comportandosi almeno in qualche modo prevedibile nei casi in cui lo Standard imponeva no requisiti, e tale atteggiamento non è cambiato anche se non si adatta più al mercato dei compilatori di oggi.
Dato qualcosa del tipo:
if (x! = 0) launch_nuclear_missiles (); ... e poi, possibilmente in un'altra funzionez = y / x;
alcune persone vedrebbero un compilatore che sostituisce "if" con una chiamata incondizionata a launch_nuclear_missiles ()
come superiore a quello che chiama solo launch_nuclear_missiles
se x
è diverso da zero, ma tale comportamento sarebbe appropriato solo quando si elaborano attività che non coinvolgeranno mai input non affidabili.
Se si sa che i compilatori che si stanno utilizzando sosterranno il tipo di garanzie comportamentali deboli che i compilatori generici erano soliti offrire come una cosa ovvia e che facilitano la scrittura di programmi che potrebbero incontrare deboli vincoli comportamentali anche se somministrati in modo malizioso- input creati, quindi la divisione per zero potrebbe non porre punti deboli nella sicurezza. Con compilatori che ottimizzano in modo aggressivo che non sono progettati per essere adatti per attività che implicano input inaffidabili, tuttavia, sarà necessario aggiungere una logica di controllo della sicurezza sufficiente per negare qualsiasi vantaggio che tali "ottimizzazioni" avrebbero potuto offrire.