Existe um aviso do GCC que detecta operações de troca de bits em tipos assinados?
Se eu ler a especificação ISO C ++ (seções 5.8.2 e 5.8.3) corretamente, o deslocamento à direita dos tipos assinados negativos é específico da implementação e o comportamento indefinido do deslocamento à esquerda.
Portanto, eu gostaria de encontrar operações de turno em tipos assinados em nosso código fonte herdado, que compilamos com o g ++ 4.8.2.
Infelizmente, não consegui encontrar essa opção nomanual. Por exemplo, eu posso compilar esse código com "g ++ -Wall -Wextra -pedantic" sem um aviso:
int si = -1;
int left = si << 1; // -2 (multiplication by 2, sign is preserved)
int right = si >> 1; // -1 (no change, only 1s)
Alguém pode me dizer se existe esse aviso e, se não, por que o gcc não se importa com isso?