aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_proc.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-11-22 15:49:27 +0000
committergingerBill <bill@gingerbill.org>2022-11-22 15:49:27 +0000
commit0a0db23b1751c0b7021cc1b3af3329b5d93cf9da (patch)
treeb037542de3eb8a04e0ba58f4d76857ec76fc8136 /src/llvm_backend_proc.cpp
parent6fa0679be934bd5aa83bb919454f3026a56ae09d (diff)
Remove copy elision code
Diffstat (limited to 'src/llvm_backend_proc.cpp')
-rw-r--r--src/llvm_backend_proc.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp
index 6e2345436..968a702e2 100644
--- a/src/llvm_backend_proc.cpp
+++ b/src/llvm_backend_proc.cpp
@@ -882,7 +882,7 @@ lbValue lb_emit_conjugate(lbProcedure *p, lbValue val, Type *type) {
return lb_emit_load(p, res);
}
-lbValue lb_emit_call(lbProcedure *p, lbValue value, Array<lbValue> const &args, ProcInlining inlining, bool use_copy_elision_hint) {
+lbValue lb_emit_call(lbProcedure *p, lbValue value, Array<lbValue> const &args, ProcInlining inlining) {
lbModule *m = p->module;
Type *pt = base_type(value.type);
@@ -981,11 +981,6 @@ lbValue lb_emit_call(lbProcedure *p, lbValue value, Array<lbValue> const &args,
Type *rt = reduce_tuple_to_single_type(results);
if (return_by_pointer) {
lbValue return_ptr = {};
- if (use_copy_elision_hint && p->copy_elision_hint.ptr.value != nullptr) {
- if (are_types_identical(type_deref(p->copy_elision_hint.ptr.type), rt)) {
- return_ptr = lb_consume_copy_elision_hint(p);
- }
- }
if (return_ptr.value == nullptr) {
lbAddr r = lb_add_local_generated(p, rt, true);
return_ptr = r.addr;
@@ -3032,7 +3027,7 @@ lbValue lb_build_call_expr_internal(lbProcedure *p, Ast *expr) {
}
}
- return lb_emit_call(p, value, args, ce->inlining, p->copy_elision_hint.ast == expr);
+ return lb_emit_call(p, value, args, ce->inlining);
}
isize arg_index = 0;
@@ -3213,6 +3208,6 @@ lbValue lb_build_call_expr_internal(lbProcedure *p, Ast *expr) {
}
auto call_args = array_slice(args, 0, final_count);
- return lb_emit_call(p, value, call_args, ce->inlining, p->copy_elision_hint.ast == expr);
+ return lb_emit_call(p, value, call_args, ce->inlining);
}