Dans le Quartus® Version 15.0 du logiciel II, Nios® Code ii compile à l’aide de la chaîne d’outils nios2-elf-gcc 4.9. Lors de la compilation du code à -O2 (ou supérieur) avec la chaîne d’outils nios2-elf-gcc 4.9, l’optimisation -fisolate-erroneous-paths-dereference sera activé par défaut.
Comme décrit dans
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#Optimize-Options,
-fisolate-erroneous-paths-dereference
Détectez les chemins qui déclenchent un comportement incorrect ou non défini en raison de la dereferencing d’un pointeur null. Isolez ces chemins du flux de contrôle principal et transformez la déclaration avec un comportement incorrect ou non défini dans un piège. Cet indicateur est activé par défaut à -O2 et supérieur.
Cette optimisation signifie que lorsque lachain d’outils détecte que le code essaie de charger ou de stocker via un pointeur null possible, il va changer la déclaration de charge ou de stockage en instruction trap. Cela peut entraîner un plantage du programme intégré sans avertissement de temps de compilation.
Si votre conception contient des données valides à l’adresse zéro, compilez votre code à l’aide du commutateur suivant pour éviter les problèmes liés aux déférences de pointage nuls :
-fno-delete-null-pointer-checks