2011-09-27 73 views
1

在一些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>生成代碼,而不是指針?

回答

1

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);

0

一般來說,你不能。這是C標準/平臺ABI定義你的類型的佈局等

如果您想對IR發射這樣的精細控制你需要用手來做到這一點(或修改鐺等)