在一些C代碼,我定義一個簡單的靜態陣列作爲函數參數,說:如何在使用llvm-gcc編譯時提示類型?
void foo(float color[3]);
當我與llvm-gcc
編譯,它產生以下LLVM彙編語言輸出:
define void @foo(float* %n1) nounwind ssp {
有沒有什麼辦法可以提示編譯器,我希望它使用LLVM數組[3 x float]
或向量<3 x float>
生成代碼,而不是指針?
在一些C代碼,我定義一個簡單的靜態陣列作爲函數參數,說:如何在使用llvm-gcc編譯時提示類型?
void foo(float color[3]);
當我與llvm-gcc
編譯,它產生以下LLVM彙編語言輸出:
define void @foo(float* %n1) nounwind ssp {
有沒有什麼辦法可以提示編譯器,我希望它使用LLVM數組[3 x float]
或向量<3 x float>
生成代碼,而不是指針?
void foo(float color[3]);
由C標準定義爲相當於void foo(float *color);
。也許你想要void foo(float (*color)[3])
或struct vec { float elems[3]; }; void foo(struct vec color);
?
一般來說,你不能。這是C標準/平臺ABI定義你的類型的佈局等
如果您想對IR發射這樣的精細控制你需要用手來做到這一點(或修改鐺等)