clang でシフト演算のビット数超過を警告するには、-Wshift-count-overflow オプションを指定します。

#include <stdio.h>

int main()
{
    int x = 8;
    int y = x << 33;
    printf("%d\n", y);

    return 0;
}

シフト幅が左辺の整数型のビット数を超えた場合の動作は未定義です。 したがって、意図しない演算結果となることがあります。

$ # M1 Mac (Ventura) + Apple clang 14.0.0
$ clang sample.cpp -o sample -Wshift-count-overflow
sample.cpp:6:15: warning: shift count >= width of type [-Wshift-count-overflow]
    int y = x << 33;
              ^  ~~
1 warning generated.

$ ./sample
16

-Wshift-count-overflowデフォルトで有効になっている ため、警告は自動的に表示されます。

$ # M1 Mac (Ventura) + Apple clang 14.0.0
$ clang sample.cpp
sample.cpp:6:15: warning: shift count >= width of type [-Wshift-count-overflow]
    int y = x << 33;
              ^  ~~
1 warning generated.

警告を抑制する

逆に、警告を抑制したい場合は -Wno-shift-count-overflow を指定します。

$ # M1 Mac (Ventura) + Apple clang 14.0.0
$ clang sample.cpp -Wno-shift-count-overflow
$

参考資料