Browse Source

Add `noinline` LLVM attribute to static map procedures

gingerBill 2 years ago
parent
commit
22840ddf97
1 changed files with 6 additions and 0 deletions
  1. 6 0
      src/llvm_backend.cpp

+ 6 - 0
src/llvm_backend.cpp

@@ -496,6 +496,9 @@ lbValue lb_map_get_proc_for_type(lbModule *m, Type *type) {
 	LLVMSetLinkage(p->value, LLVMInternalLinkage);
 	LLVMSetLinkage(p->value, LLVMInternalLinkage);
 	lb_add_attribute_to_proc(m, p->value, "readonly");
 	lb_add_attribute_to_proc(m, p->value, "readonly");
 	lb_add_attribute_to_proc(m, p->value, "nounwind");
 	lb_add_attribute_to_proc(m, p->value, "nounwind");
+	if (build_context.ODIN_DEBUG) {
+		lb_add_attribute_to_proc(m, p->value, "noinline");
+	}
 
 
 	LLVMValueRef x = LLVMGetParam(p->value, 0);
 	LLVMValueRef x = LLVMGetParam(p->value, 0);
 	LLVMValueRef y = LLVMGetParam(p->value, 1);
 	LLVMValueRef y = LLVMGetParam(p->value, 1);
@@ -645,6 +648,9 @@ lbValue lb_map_set_proc_for_type(lbModule *m, Type *type) {
 
 
 	LLVMSetLinkage(p->value, LLVMInternalLinkage);
 	LLVMSetLinkage(p->value, LLVMInternalLinkage);
 	lb_add_attribute_to_proc(m, p->value, "nounwind");
 	lb_add_attribute_to_proc(m, p->value, "nounwind");
+	if (build_context.ODIN_DEBUG) {
+		lb_add_attribute_to_proc(m, p->value, "noinline");
+	}
 
 
 	lbValue map_ptr      = {LLVMGetParam(p->value, 0), t_rawptr};
 	lbValue map_ptr      = {LLVMGetParam(p->value, 0), t_rawptr};
 	lbValue hash         = {LLVMGetParam(p->value, 1), t_uintptr};
 	lbValue hash         = {LLVMGetParam(p->value, 1), t_uintptr};