authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-02-26 13:47:33-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-02-26 13:47:33-07:00
log431801707fa661a70660787ee499530d093d513b
tree2bf0334734b9e2ae30a17f0af31f4066c2b8bbb5
parent685b5c26b703d54381a74b71361816ad85ec8584

Revert "stage1: upgrade to new LLVM sret attribute requirement"

This reverts commit 685b5c26b703d54381a74b71361816ad85ec8584. @LemonBoy has a better patch, so reverting this to merge that one.

3 files changed, 1 insertions(+), 12 deletions(-)

src/stage1/codegen.cpp+1-1
......@@ -549,7 +549,7 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) {
549549 } else if (want_first_arg_sret(g, &fn_type->data.fn.fn_type_id)) {
550550 // Sret pointers must not be address 0
551551 addLLVMArgAttr(llvm_fn, 0, "nonnull");
552 ZigLLVMAddSRetAttr(llvm_fn, get_llvm_type(g, fn_type->data.fn.fn_type_id.return_type));
552 addLLVMArgAttr(llvm_fn, 0, "sret");
553553 if (cc_want_sret_attr(cc)) {
554554 addLLVMArgAttr(llvm_fn, 0, "noalias");
555555 }
src/zig_llvm.cpp-10
......@@ -802,16 +802,6 @@ void ZigLLVMAddByValAttr(LLVMValueRef fn_ref, unsigned ArgNo, LLVMTypeRef type_v
802802 func->setAttributes(new_attr_set);
803803}
804804
805void ZigLLVMAddSRetAttr(LLVMValueRef fn_ref, LLVMTypeRef type_val) {
806 Function *func = unwrap<Function>(fn_ref);
807 const AttributeList attr_set = func->getAttributes();
808 AttrBuilder attr_builder;
809 Type *llvm_type = unwrap<Type>(type_val);
810 attr_builder.addStructRetAttr(llvm_type);
811 const AttributeList new_attr_set = attr_set.addAttributes(func->getContext(), 1, attr_builder);
812 func->setAttributes(new_attr_set);
813}
814
815805void ZigLLVMAddFunctionAttr(LLVMValueRef fn_ref, const char *attr_name, const char *attr_value) {
816806 Function *func = unwrap<Function>(fn_ref);
817807 const AttributeList attr_set = func->getAttributes();
src/zig_llvm.h-1
......@@ -269,7 +269,6 @@ ZIG_EXTERN_C void ZigLLVMFunctionSetCallingConv(LLVMValueRef function, enum ZigL
269269
270270ZIG_EXTERN_C void ZigLLVMAddFunctionAttr(LLVMValueRef fn, const char *attr_name, const char *attr_value);
271271ZIG_EXTERN_C void ZigLLVMAddByValAttr(LLVMValueRef fn_ref, unsigned ArgNo, LLVMTypeRef type_val);
272ZIG_EXTERN_C void ZigLLVMAddSRetAttr(LLVMValueRef fn_ref, LLVMTypeRef type_val);
273272ZIG_EXTERN_C void ZigLLVMAddFunctionAttrCold(LLVMValueRef fn);
274273
275274ZIG_EXTERN_C void ZigLLVMParseCommandLineOptions(size_t argc, const char *const *argv);