LLVM bug为怀旧童年游戏构建合成CPU

LLVM bug为怀旧童年游戏构建合成CPU,llvm,clang,Llvm,Clang,我一直在尝试编译——用于,运行(我小时候玩的一个游戏)。我是在我的MacBookPro(lion 10.7.4和最新的Xcode和命令行工具)上做这件事的。我将CC映射到gcc-m32以解决我遇到的几个问题,但我得到了以下结果: Making all in native/i386 make[2]: Nothing to be done for `all'. outgoing=;\ gcc -m32 -maccumulate-outgoing-args -c -x c /dev/null

我一直在尝试编译——用于,运行(我小时候玩的一个游戏)。我是在我的MacBookPro(lion 10.7.4和最新的Xcode和命令行工具)上做这件事的。我将
CC
映射到
gcc-m32
以解决我遇到的几个问题,但我得到了以下结果:

Making all in native/i386
make[2]: Nothing to be done for `all'.
outgoing=;\
    gcc -m32 -maccumulate-outgoing-args -c -x c /dev/null 2> /dev/null && outgoing=-maccumulate-outgoing-args; \
    gcc -m32 -S -O2 -fomit-frame-pointer  -Wall -static -fno-defer-pop -Wno-unused\ -I./include -I./../include -I. -I../include $outgoing syn68k.c -o ./syn68k.s
syn68k.c: In function ‘s68k_handle_opcode_0x07A3’:
syn68k.c:52968: internal compiler error: in EmitLV_DECL, at llvm-convert.cpp:7475
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://developer.apple.com/bugreporter> for instructions.
make[2]: *** [syn68k.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1
在本机/i386中实现所有功能
make[2]:对“所有人”都不做任何事情。
外向=\
gcc-m32-maccumulate传出args-c-xc/dev/null 2>/dev/null&&outing=-maccumulate传出args\
gcc-m32-S-O2-fomit帧指针-墙-静态-fno延迟弹出-Wno未使用\-I./include-I./../include-I.-I../include$outing syn68k.c-o./syn68k.S
syn68k.c:在函数“s68k_handle_opcode_0x07A3”中:
syn68k.c:52968:内部编译器错误:在EmitLV_DECL中,在llvm convert.cpp:7475处
请提交完整的bug报告,
如果合适,使用预处理源。
有关说明,请参阅。
生成[2]:***[syn68k.o]错误1
生成[1]:***[all recursive]错误1
make:**[all recursive]错误1
我去了URL,它看起来不像是一个放置关于LLVM的错误报告的地方。在预处理器完成后,文件'syn68k.c'大约有50k行,所以我真的不认为我可以制作一个可复制的测试用例来显示这个bug

事实证明,这已经出现在github项目中(这是列出的唯一问题,ha)。MaddTheSane说这是因为clang不支持全局寄存器变量(正如我所验证的)


我对键入
make
后编译的工作原理只有基本的了解,所以有没有办法跳过叮当声之类的?你有什么建议?

如果使用llvm的目的不需要构建clang,那么你肯定可以跳过它

llvm使用cmake进行配置和生成makefile。您可以修改.cmake文件以创建一个配置,该配置将禁用您不想创建的任何模块。

绝对是报告针对Apple分发的任何编译器的错误的正确位置,即使它看起来可能与之不同。也就是说,除了叮当声之外,没有必要对任何东西提交bug报告。(顺便说一句,测试用例的大小并不重要。)


如果您不了解足够的C语言来破解源代码,那么不妨尝试从macports或类似的地方获取更新版本的gcc。

不幸的是,您需要使用gcc,而不是llvm gcc来编译此程序。LLVM gcc的LLVM后端不支持全局寄存器变量。切换到clang不会有帮助,因为出于同样的原因,它也会阻塞全局寄存器变量。

我不明白你的意思;你是说在构建LLVM时不要使用叮当声吗?请注意,ICE是在LLVM gcc中触发的,而不是在叮当声中触发的。llvm gcc是EOL,所以他们很可能只是建议切换到clang;在对clang和LLVM进行了一些额外的研究之后,我了解到它是用来取代gcc的,并且
gcc
映射到我笔记本电脑上的
LLVM gcc
。根据caiustheory.com,我已经安装了gcc并再次尝试构建。