你这个是因为GCC识别到你的一些代码和memset功能相同,所以把这些代码变成了一个call memset,而刚好你的函数名叫memset,所以变成了一个递归。
你可以用GCC的-ffreestanding选项让GCC不生成这个调用。
【 在 shubao (书包) 的大作中提到: 】
: 安装riscv的官方工具链(.ident "GCC: (GNU) 7.2.0"),后对一个c文件进行编译,启动-O3选项时候,编译得到的汇编程序与c代码不一致。
: c代码为一个memset的实现,编译错误对应于第二个while语句对应的汇编:
: void* memset(void* dest, int byte, size_t len)
: ...................
--
FROM 59.109.217.*