[GCC]PowerPC: probleme de comparaison signée
Bonjour tout le monde !
J'ai un GCC cross-compilé pour PowerPC entre les mains, et il me fait des manières :).
Explication:
J'ai un petit bout de code qui ressemble à ceci:
Code:
1 2 3 4
|
int ma_val;
char my_diff;
ma_val = (my_diff < 0); |
Et ce petit compilateur me répond gentillement:
Citation:
Envoyé par Petit gcc bien malin
warning: comparison is always false due to limited range of data type
Après une instant de réflexion, je décide de regarder le code généré, et je trouve:
En gros, lbz met à 0 les bits 0 à 23. Je perd mon info de signe, c'est la cata !
La solution simplissime consiste à transformer mon char en int, mais c'est hors de question.
Un cast ne suffit pas (ma_val = ((int)my_diff < 0)) : j'obtiens strictement la même chose.
Est-ce dû au compilateur ?
Merci d'avance !