You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Polygeist(cgeist)转C代码为MLIR?输出仅含属性怎么办?

问题:Polygeist转换C代码到MLIR仅生成模块属性,无函数代码

在Windows 10系统中,已将cgeist.exe加入系统路径,执行命令:

cgeist aes.c -S -o aes.scf.mlir

输出文件仅包含模块属性,无实际代码内容:

module attributes {dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<"dlti.endianness", "little">, #dlti.dl_entry<i64, dense<64> : vector<2xi32>>, #dlti.dl_entry<f80, dense<128> : vector<2xi32>>, #dlti.dl_entry<i1, dense<8> : vector<2xi32>>, #dlti.dl_entry<i8, dense<8> : vector<2xi32>>, #dlti.dl_entry<i16, dense<16> : vector<2xi32>>, #dlti.dl_entry<i32, dense<32> : vector<2xi32>>, #dlti.dl_entry<f16, dense<16> : vector<2xi32>>, #dlti.dl_entry<f64, dense<64> : vector<2xi32>>, #dlti.dl_entry<f128, dense<128> : vector<2xi32>>>, llvm.data_layout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", llvm.target_triple = "x86_64-pc-windows-msvc19.34.31933", "polygeist.target-cpu" = "x86-64", "polygeist.target-features" = "+cx8,+fxsr,+mmx,+sse,+sse2,+x87", "polygeist.tune-cpu" = "generic"} {
}

请问需要调整哪些设置才能正常转换?是否还有其他支持MLIR的C/C++前端可以使用?


解决方案

一、修复Polygeist转换问题

可尝试以下几个调整方向:

  1. 确保C代码包含可导出的顶层函数
    如果aes.c仅包含头文件、宏定义或未被引用的静态函数,Polygeist会忽略这些内容。需要确保代码中有外部可见的函数(比如非static的main函数,或其他可被外部调用的函数),或者添加参数强制编译所有符号:

    cgeist aes.c -S -o aes.scf.mlir -fvisibility=default
    
  2. 指定C语言标准
    Windows下默认编译环境可能使用MSVC的非标准语法,显式指定C标准(如C99/C11)可避免兼容性问题:

    cgeist aes.c -S -o aes.scf.mlir -std=c99
    
  3. 查看编译过程的详细日志
    添加-v参数查看编译流程,确认是否有隐藏的编译错误或代码被跳过的原因:

    cgeist aes.c -S -o aes.scf.mlir -v
    
  4. 禁用代码优化
    若开启了默认优化,Polygeist可能会移除未被使用的代码,添加-O0参数禁用优化:

    cgeist aes.c -S -o aes.scf.mlir -O0
    

二、其他支持MLIR的C/C++前端

  1. MLIR官方Clang前端
    这是LLVM/MLIR生态中最成熟的C/C前端,直接通过clang命令即可生成MLIR,兼容性强,支持完整的C/C标准:

    clang -emit-mlir aes.c -o aes.mlir
    

    若要生成针对CPU的特定MLIR dialect,可使用:

    clang -emit-mlir-cpu aes.c -o aes.cpu.mlir
    
  2. CIRCT
    主要面向硬件设计场景,但也支持通用C/C++到MLIR的转换,适合需要对接硬件后端的场景。

  3. MLIR Toy Frontend
    官方提供的示例前端,仅适合MLIR学习使用,不适合生产环境的代码转换。


内容的提问来源于stack exchange,提问作者IzzyVicc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:40:14