- 所有 tcc 文件/内容/宏改名为 pcc (tcc.c->pcc.c, tccelf.c->pccelf.c, libtcc.c->libpcc.c 等) - 支持架构: i386, x86_64, ARM, ARM64, RISC-V, C67 - 支持格式: PE, ELF, Mach-O, COFF - 完整预处理、代码生成、链接器、调试信息 - 构建成功: pcc.exe (x86_64 Windows) - 功能测试通过: 递归/结构体/浮点/switch/循环 - 自编译测试通过: pcc 可以编译自身
46 行
761 B
C
46 行
761 B
C
#include <stdio.h>
|
|
|
|
/* This test segfaults as of April 27, 2015. */
|
|
void f1(int argc)
|
|
{
|
|
char test[argc];
|
|
if(0)
|
|
label:
|
|
printf("boom!\n");
|
|
if(argc-- == 0)
|
|
return;
|
|
goto label;
|
|
}
|
|
|
|
/* This segfaulted on 2015-11-19. */
|
|
void f2(void)
|
|
{
|
|
goto start;
|
|
{
|
|
int a[1 && 1]; /* not a variable-length array */
|
|
int b[1 || 1]; /* not a variable-length array */
|
|
int c[1 ? 1 : 1]; /* not a variable-length array */
|
|
start:
|
|
a[0] = 0;
|
|
b[0] = 0;
|
|
c[0] = 0;
|
|
}
|
|
}
|
|
|
|
void f3(void)
|
|
{
|
|
printf("%d\n", 0 ? printf("x1\n") : 11);
|
|
printf("%d\n", 1 ? 12 : printf("x2\n"));
|
|
printf("%d\n", 0 && printf("x3\n"));
|
|
printf("%d\n", 1 || printf("x4\n"));
|
|
}
|
|
|
|
int main()
|
|
{
|
|
f1(2);
|
|
f2();
|
|
f3();
|
|
|
|
return 0;
|
|
}
|