gpt4 book ai didi

optimization - clang优化错误?

转载 作者:行者123 更新时间:2023-12-03 17:04:34 24 4
gpt4 key购买 nike

我一直在尝试找出看起来像是 clang 中的错误的东西,并且我认为我已经得到了相当少的复制。这是我的程序:

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define x_Is_Digit(x) isdigit((unsigned char) (x))

void Odd_Behavior(char * version)
{
char * ptr, *tmp;

for (ptr = version; x_Is_Digit(*ptr); ptr++);
ptr++;

for (tmp = ptr; x_Is_Digit(*ptr); ptr++);
if (ptr == tmp)
printf("%08x == %08x! Really?\n", ptr, tmp);
}

int main()
{
char buffer[100];
strcpy(buffer, "3.8a");
Odd_Behavior(buffer);
return(0);
}

当我使用优化编译它时,在 Xcode 下载中包含的 clang(“Apple clang 2.1”)中:

clang++ -Os optimizebug.cpp

运行它,它会报告:

6b6f2be3 == 6b6f2be2! Really?

至少可以这么说,这让我觉得有点奇怪。如果我删除 x_Is_Digit 中的 (unsigned char) 转换,它可以正常工作。

我在 clang 中遇到了错误吗?还是我在这里做的事情会导致某种未定义的行为?如果我用 -O0 编译它,我不会得到问题。

最佳答案

对我来说,当然看起来像一个错误。 Clang 主线不显示这个(至少在 darwin/x86-64 上)。请在 llvm.org/bugs 提交一个错误,并提供有关如何重现此错误的完整详细信息。堆栈溢出不是报告编译器错误的好地方:)

关于optimization - clang优化错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com