Clang 静态分析器意外的 NULL 指针警告

Clang Static Analyzer unexpected NULL pointer warning

我有以下代码:

int s[4096];
unsigned char o = 0;

int main(void) {
    int *n;
    return ((char *) (s + o)) == 0 ? *n : 0;
}

当我 运行 该代码上的 Clang 静态分析器时,它警告我我正在取消引用 n 因为 (char *) (s + o) 是一个空指针,它不是(我可以甚至打印它并得到一个绝对不为零的地址)。

我错过了什么?

我注意到删除 (char *) 转换会使警告消失。

我正在使用 Clang 静态分析器版本 8 进行测试。版本 10 不再报告警告。