| ... | ... | @@ -354,8 +354,12 @@ static void addLLVMFnAttrInt(LLVMValueRef fn_val, const char *attr_name, uint64_ |
| 354 | 354 | return addLLVMAttrInt(fn_val, -1, attr_name, attr_val); |
| 355 | 355 | } |
| 356 | 356 | |
| 357 | | static void addLLVMArgAttr(LLVMValueRef arg_val, unsigned param_index, const char *attr_name) { |
| 358 | | return addLLVMAttr(arg_val, param_index + 1, attr_name); |
| 357 | static void addLLVMArgAttr(LLVMValueRef fn_val, unsigned param_index, const char *attr_name) { |
| 358 | return addLLVMAttr(fn_val, param_index + 1, attr_name); |
| 359 | } |
| 360 | |
| 361 | static void addLLVMArgAttrInt(LLVMValueRef fn_val, unsigned param_index, const char *attr_name, uint64_t attr_val) { |
| 362 | return addLLVMAttrInt(fn_val, param_index + 1, attr_name, attr_val); |
| 359 | 363 | } |
| 360 | 364 | |
| 361 | 365 | static bool is_symbol_available(CodeGen *g, Buf *name) { |
| ... | ... | @@ -2096,6 +2100,7 @@ static bool iter_function_params_c_abi(CodeGen *g, ZigType *fn_type, FnWalk *fn_ |
| 2096 | 2100 | switch (fn_walk->id) { |
| 2097 | 2101 | case FnWalkIdAttrs: |
| 2098 | 2102 | addLLVMArgAttr(llvm_fn, fn_walk->data.attrs.gen_i, "nonnull"); |
| 2103 | addLLVMArgAttrInt(llvm_fn, fn_walk->data.attrs.gen_i, "align", get_abi_alignment(g, ty)); |
| 2099 | 2104 | fn_walk->data.attrs.gen_i += 1; |
| 2100 | 2105 | break; |
| 2101 | 2106 | case FnWalkIdCall: |
| ... | ... | @@ -2132,6 +2137,7 @@ static bool iter_function_params_c_abi(CodeGen *g, ZigType *fn_type, FnWalk *fn_ |
| 2132 | 2137 | switch (fn_walk->id) { |
| 2133 | 2138 | case FnWalkIdAttrs: |
| 2134 | 2139 | addLLVMArgAttr(llvm_fn, fn_walk->data.attrs.gen_i, "byval"); |
| 2140 | addLLVMArgAttrInt(llvm_fn, fn_walk->data.attrs.gen_i, "align", get_abi_alignment(g, ty)); |
| 2135 | 2141 | addLLVMArgAttr(llvm_fn, fn_walk->data.attrs.gen_i, "nonnull"); |
| 2136 | 2142 | fn_walk->data.attrs.gen_i += 1; |
| 2137 | 2143 | break; |
| ... | ... | @@ -2159,7 +2165,7 @@ static bool iter_function_params_c_abi(CodeGen *g, ZigType *fn_type, FnWalk *fn_ |
| 2159 | 2165 | break; |
| 2160 | 2166 | } |
| 2161 | 2167 | return true; |
| 2162 | | } else if (abi_class == X64CABIClass_INTEGER && ty_size <= 8) { |
| 2168 | } else if (abi_class == X64CABIClass_INTEGER) { |
| 2163 | 2169 | switch (fn_walk->id) { |
| 2164 | 2170 | case FnWalkIdAttrs: |
| 2165 | 2171 | fn_walk->data.attrs.gen_i += 1; |