• [^] # Re: bah non

    Posté par . En réponse au journal Le bon sens et le C++. Évalué à 3. Dernière modification le 18 novembre 2024 à 10:56.

    Les compilateurs font du :en:Single static assignment de nos jours donc ce type d'analyse est relativement simple je pense (après reformulation, une variable = une valeur, donc truc est toujours égal à 2 dans un tel cas). Après il suffit de propager les constantes et d'évaluer la condition, ici.

    On peut aller beaucoup plus loin avec des analyses plus sophistiquées comme l'interprétation symbolique et des solveur SMT comme :en:Z3 Theorem Prover on peut trouver des expérimentations sur ce thème assez facilement avec Z3, tu peux prouver par exemple qu'une condition complexe sur un if est toujours fausse, donc éliminer les arêtes de l'intérieur du if du graphe de flot de contrôle ou graphe d'appel du code, et donc en déduire que le code ne sera jamais utilisé si il est déconnecté en conséquence, avec les éléments dont il dépend au passage.

    Ça ne rend pas le problème décidable et les techniques absolument complètes, il y aura toujours des cas ou il sera impossible, mais potentiellement ça peut repousser l'horizon dans bien des cas raisonnables, voire la quasi totalité des cas ordinaires.